Regina - Preparing for Regina 6.x

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

Regina is undergoing major changes to its C++ and Python interfaces. These changes are happening in two stages:

  1. Over many years, Regina's classes and routines have been simplified and improved in many ways, and much of its old code has become unnecessary. Nevertheless, the old classes and routines were kept around until Regina 5.0 so that old scripts would still work. All of this old code was removed in Regina 5.1.
  2. A second (much simpler) round of changes is now underway, mostly to simplify class names and C++ header locations. These changes were implemented in Regina 5.1. Again the old class names and headers were kept for backward compatibility. This old code will be removed in Regina 6.1 (most likely in mid-2021).

How do I fix my code?

Second-round changes (Regina 5.x to 6.x)

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.

The blue cells indicate code that is still present in Regina, and the red cells indicate code that has already been removed from the latest release.

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
Removed in Regina 5.1
 
NSurfaceSubset
Removed in Regina 5.1
 
NPropertyBase
Removed in Regina 5.1
 
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
Removed in Regina 5.1
 
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)
Removed in Regina 5.96
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 ...