Regina - Moving from 5.x to 6.0

This page relates only to C++ and Python programmers.

Over time, Regina makes changes and improvements to its C++ and Python interfaces. This page explains how you will need to update your C++ code and/or Python scripts to work with Regina 6.0 and later.

Now that Regina 7.0 is available, you should also read the separate pages on:

If you have older code (from 2016 or earlier), you can also read:

Changes from Regina 5.x to 6.0

There are some general rules that cover most of the changes:

Beyond these general rules, there are some additional changes and/or special cases. These are listed in the table below, along with suggested replacements that you can use instead. Any changes in the behaviour of these routines or classes are noted in the comments column.

Deprecated code Replacement Comments
Headers
approx.h These functions for managing round-off error are very coarse, and will be removed because they should not be used.
engine.h,
output.h
core/engine.h,
core/output.h
 
nbooleans.h boolset.h  
nlayeredsurfacebundle.h layeredtorusbundle.h  
nmatrixint.h matrix.h  
nperm2.h, nperm3.h, nperm4.h, nperm5.h perm.h  
packetlistener.h packet.h  
sfcombination.h, sfproperties.h surfacefilter.h  
Classes
Dim2EdgePairing,
NFacePairing,
Dim4FacetPairing
FacetPairing<2>,
FacetPairing<3>,
FacetPairing<4>
 
Dim2ExampleTriangulation,
NExampleTriangulation,
Dim4ExampleTriangulation
Example<2>,
Example<3>,
Example<4>
 
Dim2TriangleEdge,
NTetFace,
Dim4PentFacet
FacetSpec<2>,
FacetSpec<3>,
FacetSpec<4>
 
MatrixIntDomain, MatrixRing Matrix These have been merged into the main Matrix class, and the extra functionality that they provided is now handled using template arguments.
NExampleSnapPeaTriangulation ExampleSnapPea  
NNormalHypersurfaceVectorMirrored  
NSurfaceSubset  
NPropertyBase  
Types
TuraevViroAlg Algorithm  
UseDim2GluingPerms,
UseGluingPerms,
UseDim4GluingPerms
GluingPermSearcher<2>::Use,
GluingPermSearcher<3>::Use,
GluingPermSearcher<4>::Use
 
Member Routines
Matrix::multiplyAs() operator *= Now that the Matrix class is unified, there is no need for the type-specific multiplyAs().
NSVectorMirrored copy constructor  
Triangulation<2>::oneThreeMove(),
Triangulation<2>::twoTwoMove(),
Triangulation<2>::threeOneMove()
Triangulation<2>::pachner()  
Triangulation<3>::drillEdge() Triangulation<3>::pinchEdge() In all cases that matter, this performs the same topological operation with vastly fewer tetrahedra.
Triangulation<3>::knowsSplittingSurface() The routine hasSplittingSurface() is now fast, and so there is no need to pre-query whether the result is already known.
Triangulation<3>::oneFourMove(),
Triangulation<3>::twoThreeMove(),
Triangulation<3>::threeTwoMove(),
Triangulation<3>::fourOneMove()
Triangulation<3>::pachner()  
Triangulation<4>::oneFiveMove(),
Triangulation<4>::twoFourMove(),
Triangulation<4>::threeThreeMove(),
Triangulation<4>::fourTwoMove(),
Triangulation<4>::fiveOneMove()
Triangulation<4>::pachner()  
Global Routines
isZero(), isNonZero(), isPositive(), isNegative(), isNonPositive(), isNonNegative() These methods for managing round-off error are very coarse, and will be removed because they should not be used.
Constants
Matrix::zero, Matrix::one 0, 1  
PACKET_DIM2TRIANGULATION,
PACKET_TRIANGULATION,
PACKET_DIM4TRIANGULATION
PACKET_TRIANGULATION2,
PACKET_TRIANGULATION3,
PACKET_TRIANGULATION4
 
PACKET_NORMALSURFACELIST,
PACKET_NORMALHYPERSURFACELIST,
PACKET_ANGLESTRUCTURELIST
PACKET_NORMALSURFACES,
PACKET_NORMALHYPERSURFACES,
PACKET_ANGLESTRUCTURES
 
TV_DEFAULT,
TV_BACKTRACK,
TV_TREEWIDTH,
TV_NAIVE
ALG_DEFAULT,
ALG_BACKTRACK,
ALG_TREEWIDTH,
ALG_NAIVE
The corresponding enum type has changed from TuraevViroAlg to the more general Algorithm.
Command-Line Utilities
All MPI utilities (e.g., tricensus-mpi) These have been phased out in favour of other approaches to large-scale parallelisation. See the tricensus-mpi manual page for suggestions.

Back to main page ... Back to main page ...