Regina - Deprecation Guide

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

Over the years, several outdated routines and classes within Regina's calculation engine have become deprecated, and have been marked for deletion at some future date.

That future date is now approaching. With the release of Regina 5.0, all of the deprecated code will be removed. If you use any of this deprecated code, your Python scripts or C++ programs will no longer work.

When will this change happen?

There is still a lot to do before Regina 5.0 — realistically, this release will not happen until 2010 at the earliest. There will be point releases before then (such as 4.6.1 which is expected in late 2009), but no code will be removed until Regina 5.0.

How do I fix my code?

The following table lists the routines and classes that will be removed, as well as the 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
Namespaces
stdhash To improve portability, all references to the non-standard STL classes hash_set and hash_map will be removed from Regina.
Headers
utilities/nmatrix2.h maths/nmatrix2.h The header has simply been moved. The classes that it provides remain the same.
utilities/nmpi.h maths/nlargeinteger.h The header has simply been renamed. The classes that it provides remain the same.
utilities/nrational.h maths/nrational.h The header has simply been moved. The classes that it provides remain the same.
Classes
HashPointer, HashString See the comments above for the stdhash namespace.
NDoubleDescriptor NDoubleDescription  
NFile The NFile class exists purely to support the old binary file format that was phased out back in 2002. Regina 5.0 will drop support for this old binary file format entirely.
NFilePropertyReader See the comments above for the NFile class.
NIndexedArray NMarkedVector does a similar job (and is smaller and faster), though it requires changes to the data types in your array.
NIsomorphismDirect NIsomorphism NIsomorphism now contains all the functionality of the old NIsomorphismDirect class.
NIsomorphismIndexed Instead, use NIsomorphism in conjunction with the NPerm::S4 array.
NPermItS4 Instead, just loop through the elements of NPerm::S4 directly.
NRandomAccessResource, NLocalFileResource See the comments above for the NFile class.
Member Routines
...::readFromFile(NFile&, ...) See the comments above for the NFile class.
...::writeToFile(NFile&) See the comments above for the NFile class.
NLayeredLoop::getIndex() NLayeredLoop::getLength()  
NPacket::readPacket() See the comments above for the NFile class.
NPacket::writePacket() See the comments above for the NFile class.
NPerm::setPerm() Instead, just use the assignment operator, as in p = NPerm(1,2).
NSurfaceFilter::readFilter() See the comments above for the NFile class.
NSurfaceFilter::writeFilter() See the comments above for the NFile class.
NSurfaceFilter::writeProperties() See the comments above for the NFile class.
NTriangulation::getAdjacentFace() NTriangulation::adjacentFace()  
NTriangulation::getAdjacentTetrahedron() NTriangulation::adjacentTetrahedron()  
NTriangulation::getAdjacentTetrahedronGluing() NTriangulation::adjacentGluing()  
NTriangulation::getBoundaryComponentIndex() NTriangulation::boundaryComponentIndex() The new routine is faster, but has an extra precondition that the given boundary component must belong to the triangulation.
NTriangulation::getComponentIndex() NTriangulation::componentIndex() The new routine is faster, but has an extra precondition that the given component must belong to the triangulation.
NTriangulation::getEdgeIndex() NTriangulation::edgeIndex() The new routine is faster, but has an extra precondition that the given edge must belong to the triangulation.
NTriangulation::getEulerCharacteristic() NTriangulation::getEulerCharTri() or NTriangulation::getEulerCharManifold() Note that the two replacement routines give different results for ideal triangulations. The old getEulerCharacteristic() was equivalent to the new getEulerCharTri().
NTriangulation::getFaceIndex() NTriangulation::faceIndex() The new routine is faster, but has an extra precondition that the given face must belong to the triangulation.
NTriangulation::getTetrahedronIndex() NTriangulation::tetrahedronIndex() The new routine is faster, but has an extra precondition that the given tetrahedron must belong to the triangulation.
NTriangulation::getVertexIndex() NTriangulation::vertexIndex() The new routine is faster, but has an extra precondition that the given vertex must belong to the triangulation.
Global Routines
edgeDescription() NPerm::trunc2()  
edgeOrdering() NEdge::ordering[]  
faceDescription() NPerm::trunc3()  
faceOrdering() NFace::ordering[]  
factorise() NPrimes::primeDecomp(), NPrimes::primePowerDecomp()  
primesUpTo() NPrimes::prime()  
readFromFile() See the comments above for the NFile class.
writeToFile() See the comments above for the NFile class.
Global Arrays
edgeNumber[], edgeStart[], edgeEnd[] NEdge::edgeNumber[], NEdge::edgeVertex[]  
allPermsS2[], allPermsS2Inv[] NPerm::S2[], NPerm::invS2[]  
allPermsS3[], allPermsS3Inv[], orderedPermsS3[] NPerm::S3[], NPerm::invS3[], NPerm::orderedS3  
allPermsS4[], allPermsS4Inv[], orderedPermsS4[] NPerm::S4[], NPerm::invS4[], NPerm::orderedS4  

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