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.
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.
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 | ||