Regina Calculation Engine
Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
regina Namespace Reference

Contains the entire Regina calculation engine. More...

Namespaces

namespace  boost
 Miscellaneous utility classes taken or modified from the Boost C++ libraries.
 
namespace  i18n
 Various classes and routines for working with internationalisation and character encodings.
 
namespace  python
 Utility classes and routines to assist with Python bindings for the calculation engine.
 
namespace  stl
 Miscellaneous utility classes and routines taken or modified from the Standard Template Library.
 
namespace  xml
 Various classes and routines for XML manipulation, some taken or modified from the libxml++ library.
 

Classes

class  NAbelianGroup
 Represents a finitely generated abelian group. More...
 
struct  NGroupExpressionTerm
 Represents a power of a generator in a group presentation. More...
 
class  NGroupExpression
 Represents an expression involving generators from a group presentation or a free group. More...
 
class  NGroupPresentation
 Represents a finite presentation of a group. More...
 
class  NHomGroupPresentation
 Represents a homomorphism between groups which are described via finite presentations. More...
 
class  NMarkedAbelianGroup
 Represents a finitely generated abelian group given by a chain complex. More...
 
class  NHomMarkedAbelianGroup
 Represents a homomorphism of finitely generated abelian groups. More...
 
class  NXMLAbelianGroupReader
 An XML element reader that reads a single abelian group. More...
 
class  NXMLGroupPresentationReader
 An XML element reader that reads a single group presentation. More...
 
class  NAngleStructureVector
 A vector of integers used to indirectly store the individual angles in an angle structure. More...
 
class  NAngleStructure
 Represents an angle structure on a triangulation. More...
 
struct  PacketInfo< PACKET_ANGLESTRUCTURELIST >
 Stores information about the angle structure list packet. More...
 
class  NAngleStructureList
 A packet representing a collection of angle structures on a triangulation. More...
 
class  NXMLAngleStructureReader
 An XML element reader that reads a single angle structure. More...
 
class  NXMLAngleStructureListReader
 An XML packet reader that reads a single angle structure list. More...
 
class  Dim2Census
 A utility class used to form a complete census of 2-manifold triangulations satisfying certain constraints. More...
 
class  Dim2EdgePairing
 Represents a specific pairwise matching of edges of triangles. More...
 
class  Dim2GluingPerms
 Represents a specific set of gluing permutations to complement a particular pairwise matching of triangle edges. More...
 
class  Dim2GluingPermSearcher
 A utility class for searching through all possible gluing permutation sets that correspond to a given triangle edge pairing. More...
 
class  NCensus
 A utility class used to form a complete census of 3-manifold triangulations satisfying certain constraints. More...
 
class  NFacePairing
 Represents a specific pairwise matching of tetrahedron faces. More...
 
class  NGenericFacetPairing
 A dimension-agnostic base class that represents a pairwise matching of facets of dim-dimensional simplices. More...
 
class  NGenericGluingPerms
 A dimension-agnostic base class that represents a specific set of gluing permutations to complement a particular pairwise matching of simplex facets. More...
 
class  NGluingPerms
 Represents a specific set of gluing permutations to complement a particular pairwise matching of tetrahedron faces. More...
 
class  NGluingPermSearcher
 A utility class for searching through all possible gluing permutation sets that correspond to a given tetrahedron face pairing. More...
 
class  NEulerSearcher
 A gluing permutation search class that offers a specialised search algorithm for when all vertex links must all have a given fixed Euler characteristic. More...
 
class  NCompactSearcher
 A gluing permutation search class that offers a specialised search algorithm for when only compact (finite) 3-manifold triangulations are required. More...
 
class  NClosedPrimeMinSearcher
 A gluing permutation search class that offers a specialised search algorithm for when (i) only closed prime minimal P2-irreducible triangulations are required, and (ii) the given face pairing has order at least three. More...
 
class  Dim2BoundaryComponent
 Represents a component of the boundary of a 2-manifold triangulation. More...
 
class  Dim2Component
 Represents a component of a 2-manifold triangulation. More...
 
class  Dim2EdgeEmbedding
 Details how an edge in the 1-skeleton of a 2-manifold triangulation forms part of an individual triangle. More...
 
class  Dim2Edge
 Represents an edge in the 1-skeleton of a 2-manifold triangulation. More...
 
class  Dim2ExampleTriangulation
 This class offers routines for constructing sample 2-manifold triangulations of various types. More...
 
class  Dim2Isomorphism
 Represents a combinatorial isomorphism from one 2-manifold triangulation into another. More...
 
class  Dim2Triangle
 Represents a triangular face in a 2-manifold triangulation. More...
 
struct  PacketInfo< PACKET_DIM2TRIANGULATION >
 Stores information about the 2-manifold triangulation packet. More...
 
class  Dim2Triangulation
 Stores the triangulation of a 2-manifold along with its various cellular structures and other information. More...
 
class  Dim2VertexEmbedding
 Details how a vertex in the skeleton of a 2-manifold triangulation forms part of an individual triangle. More...
 
class  Dim2Vertex
 Represents a vertex in the skeleton of a 2-manifold triangulation. More...
 
class  NXMLDim2TriangulationReader
 An XML packet reader that reads a single 2-manifold triangulation. More...
 
class  NDoubleDescription
 Implements a modified double description method for polytope vertex enumeration. More...
 
class  NEnumConstraintList
 Represents an individual validity constraint for use with polytope vertex enumeration. More...
 
class  NHilbertCD
 Implements a modified Contejean-Devie algorithm for enumerating Hilbert bases. More...
 
class  NHilbertDual
 Implements a modified dual algorithm for enumerating Hilbert bases. More...
 
class  NHilbertPrimal
 Implements a modified primal algorithm for enumerating Hilbert bases. More...
 
class  NMaxAdmissible
 Used to enumerate all maximal admissible faces of a polyhedral cone under a given set of admissibility constraints. More...
 
class  LPMatrix
 A matrix class for use with linear programming. More...
 
class  LPConstraintBase
 A base class for additional linear constraints that we can add to the tableaux of normal surface matching equations. More...
 
class  LPConstraintSubspace
 A subclass of LPConstraintBase used for constraints defined entirely by homogeneous linear equations. More...
 
class  LPConstraintNone
 A do-nothing class that imposes no additional linear constraints on the tableaux of normal surface matching equations. More...
 
class  LPConstraintEuler
 A class that constraints the tableaux of normal surface matching equations to ensure that Euler characteristic is strictly positive. More...
 
class  LPConstraintNonSpun
 A class that constraints the tableaux of normal surface matching equations to ensure that normal surfaces in an ideal triangulation are compact (thereby avoiding spun normal surfaces with infinitely many triangles). More...
 
class  BanConstraintBase
 A base class for additional banning and marking constraints that we can place on tree traversal algorithms. More...
 
class  BanNone
 A do-nothing class that bans no disc types and marks no disc types. More...
 
class  BanBoundary
 A class that bans normal disc types that meet the boundary of the underlying triangulation. More...
 
class  BanTorusBoundary
 A class that bans and marks disc types associated with torus boundary components. More...
 
class  LPInitialTableaux
 Stores an adjusted matrix of matching equations from the underlying triangulation, in sparse form. More...
 
class  LPData
 Stores an intermediate tableaux for the dual simplex method, and contains all of the core machinery for using the dual simplex method. More...
 
class  NTreeTraversal
 A base class for searches that employ the tree traversal algorithm for enumerating and locating vertex normal surfaces. More...
 
class  NTreeEnumeration
 The main entry point for the tree traversal algorithm to enumerate all vertex normal or almost normal surfaces in a 3-manifold triangulation. More...
 
class  NTreeSingleSoln
 The main entry point for the tree traversal / branching algorithm to locate a single non-trivial normal surface satisfying given constraints within a 3-manifold triangulation. More...
 
class  NTypeTrie
 A trie that stores a set of type vectors of a fixed length. More...
 
class  NPosOrder
 A comparison object that sorts hyperplanes by position vectors. More...
 
class  NFileInfo
 Stores information about a Regina data file, including file type and version. More...
 
class  NGlobalDirs
 Provides global routines that return directories in which various components of Regina are installed on the system. More...
 
class  NXMLCallback
 Provides the callbacks for an XMLParser required to parse an entire file using a series of NXMLElementReader objects. More...
 
class  NXMLElementReader
 Used to read the contents of a single XML element. More...
 
class  NXMLCharsReader
 A reader for an XML element that contains only characters. More...
 
struct  DimTraits
 A template class that provides typedefs and other information about working in each of the supported dimensions. More...
 
struct  NFacetSpec
 A lightweight class used to refer to a particular facet of a particular simplex in a triangulation. More...
 
class  NGenericIsomorphism
 A dimension-agnostic base class that represents a combinatorial isomorphism from one dim-manifold triangulation into another. More...
 
class  NGenericTriangulation
 A generic helper class for working with triangulations of arbitrary dimension. More...
 
class  NGraphLoop
 Represents a closed graph manifold formed by joining a single bounded Seifert fibred space to itself along a torus. More...
 
class  NGraphPair
 Represents a closed graph manifold formed by joining two bounded Seifert fibred spaces along a common torus. More...
 
class  NGraphTriple
 Represents a closed graph manifold formed by joining three bounded Seifert fibred spaces along their torus boundaries. More...
 
class  NHandlebody
 Represents an arbitrary handlebody. More...
 
class  NLensSpace
 Represents a general lens space. More...
 
class  NManifold
 Represents a particular 3-manifold. More...
 
struct  NSFSFibre
 Represents an exceptional (alpha, beta) fibre in a Seifert fibred space. More...
 
class  NSFSpace
 Represents a general Seifert fibred space, which may be orientable or non-orientable. More...
 
class  NSFSAltSet
 Provides a variety of alternative representations of a single bounded Seifert fibred space. More...
 
class  NSimpleSurfaceBundle
 Represents a particularly simple closed surface bundle over the circle. More...
 
class  NSnapPeaCensusManifold
 Represents a 3-manifold from the SnapPea cusped census. More...
 
class  NTorusBundle
 Represents a torus bundle over the circle. More...
 
class  NNativeInteger
 A wrapper class for a native, fixed-precision integer type of the given size. More...
 
struct  InfinityBase
 Internal base classes for use with NIntegerBase, templated on whether we should support infinity as an allowed value. More...
 
class  NIntegerBase
 Represents an arbitrary precision integer. More...
 
class  NMatrix
 Represents a matrix of elements of the given type T. More...
 
class  NMatrixRing
 Represents a matrix of elements from a given ring T. More...
 
class  NMatrix2
 Represents a 2-by-2 integer matrix. More...
 
class  NMatrixInt
 Represents a matrix of arbitrary precision integers. More...
 
class  NPerm3
 Represents a permutation of {0,1,2}. More...
 
class  NPerm4
 Represents a permutation of {0,1,2,3}. More...
 
class  NPerm5
 Represents a permutation of {0,1,2,3,4}. More...
 
class  NPrimes
 A helper class for finding primes and factorising integers. More...
 
class  NRational
 Represents an arbitrary precision rational number. More...
 
class  NRay
 A fast class for storing a ray rooted at the origin whose coordinates are rational. More...
 
class  NVector
 An optimised vector class of elements from a given ring T. More...
 
struct  PacketInfo< PACKET_CONTAINER >
 Stores information about the container packet. More...
 
class  NContainer
 A packet that simply contains other packets. More...
 
struct  PacketInfo
 A template that stores information about a particular type of packet. More...
 
class  NPacket
 Represents a packet of information that may be individually edited or operated upon. More...
 
class  NPacketListener
 An object that can be registered to listen for packet events. More...
 
struct  PacketInfo< PACKET_PDF >
 Stores information about the PDF packet. More...
 
class  NPDF
 A packet that can hold a PDF document. More...
 
struct  PacketInfo< PACKET_SCRIPT >
 Stores information about the script packet. More...
 
class  NScript
 A packet representing a Python script that can be run. More...
 
struct  PacketInfo< PACKET_TEXT >
 Stores information about the text packet. More...
 
class  NText
 A packet representing a text string. More...
 
class  NXMLPacketReader
 An XML element reader that reads the data for an individual packet. More...
 
class  NXMLContainerReader
 An XML packet reader that reads a single container. More...
 
class  NXMLPDFReader
 An XML packet reader that reads a single PDF packet. More...
 
class  NXMLScriptReader
 An XML packet reader that reads a single script. More...
 
class  NXMLTextReader
 An XML packet reader that reads a single text packet. More...
 
class  NXMLTreeResolutionTask
 An individual task for resolving dangling packet references after an XML data file has been read. More...
 
class  NXMLTreeResolver
 Provides a mechanism to resolve dangling packet references after a complete packet tree has been read from an XML data file. More...
 
class  NProgress
 An object through which external interfaces can obtain progress reports when running long calculations. More...
 
class  NProgressFinished
 A progress report that immediately claims it is finished. More...
 
class  NProgressManager
 Manages the sharing of an NProgress object between reading and writing threads. More...
 
class  NProgressTracker
 Manages progress tracking and cancellation polling for long operations. More...
 
class  NProgressMessage
 A progress report in which the current state of progress is stored as a string message. More...
 
struct  NProgressStateNumeric
 A simple structure used for passing around a numeric state of progress. More...
 
class  NProgressNumber
 A progress report in which the current state of progress is stored as a number of items completed. More...
 
class  ShareableObject
 Facilitates mirroring objects in the underlying C++ calculation engine using the various wrapper classes provided in the various external interfaces (such as the Python interface). More...
 
class  NSnapPeaTriangulation
 Offers direct access to the SnapPea kernel from within Regina. More...
 
class  NSigCensus
 A utility class used by formSigCensus(). More...
 
class  NSigPartialIsomorphism
 Represents a partial isomorphism between two splitting surface signatures. More...
 
class  NSignature
 Represents a signature of a splitting surface in a closed 3-manifold triangulation. More...
 
class  NAugTriSolidTorus
 Represents an augmented triangular solid torus component of a triangulation. More...
 
class  NBlockedSFS
 Represents a blocked Seifert fibred space (possibly with boundary). More...
 
class  NBlockedSFSLoop
 Represents a blocked Seifert fibred space with two boundary tori that are joined together. More...
 
class  NBlockedSFSPair
 Represents a blocked pair of Seifert fibred spaces joined along a single connecting torus. More...
 
class  NBlockedSFSTriple
 Represents a blocked sequence of three Seifert fibred spaces joined along connecting tori. More...
 
class  NL31Pillow
 Represents a triangular pillow L(3,1) component of a triangulation. More...
 
class  NLayeredChain
 Represents a layered chain in a triangulation. More...
 
class  NLayeredChainPair
 Represents a layered chain pair component of a triangulation. More...
 
class  NLayeredLensSpace
 Represents a layered lens space component of a triangulation. More...
 
class  NLayeredLoop
 Represents a layered loop component of a triangulation. More...
 
class  NLayeredSolidTorus
 Represents a layered solid torus in a triangulation. More...
 
class  NLayeredTorusBundle
 Describes a layered torus bundle. More...
 
class  NLayering
 Represents a layering of zero or more tetrahedra upon a torus boundary. More...
 
class  NPillowTwoSphere
 Represents a 2-sphere made from two triangles glued together along their three edges. More...
 
class  NPluggedTorusBundle
 Describes a triangulation of a graph manifold formed by joining a bounded saturated region with a thin I-bundle over the torus, possibly with layerings in between. More...
 
class  NPlugTriSolidTorus
 Represents a plugged triangular solid torus component of a triangulation. More...
 
struct  NSatAnnulus
 Represents an annulus formed from a pair of triangles in a Seifert fibred space. More...
 
class  NSatBlock
 Represents a saturated block in a Seifert fibred space. More...
 
class  NSatBlockStarter
 Contains a triangulation of a saturated block along with the accompanying saturated block description. More...
 
class  NSatBlockStarterSet
 Represents a set of starter blocks that can be used for identifying triangulations of Seifert fibred spaces. More...
 
class  NSatBlockStarterSearcher
 A helper class for locating and using starter blocks within a triangulation. More...
 
class  NSatMobius
 A degenerate zero-tetrahedron saturated block that corresponds to attaching a Mobius band to a single annulus boundary. More...
 
class  NSatLST
 A saturated block that is a layered solid torus. More...
 
class  NSatTriPrism
 A saturated block that is a three-tetrahedron triangular prism. More...
 
class  NSatCube
 A saturated block that is a six-tetrahedron cube. More...
 
class  NSatReflectorStrip
 A saturated block that is a reflector strip. More...
 
class  NSatLayering
 A degenerate saturated block that is a single tetrahedron wrapped around so that two opposite edges touch. More...
 
struct  NSatBlockSpec
 Describes how a single saturated block forms a part of a larger saturated region. More...
 
class  NSatRegion
 A large saturated region in a Seifert fibred space formed by joining together saturated blocks. More...
 
class  NSnapPeaCensusTri
 Represents a 3-manifold triangulation from the SnapPea cusped census. More...
 
class  NSnappedBall
 Represents a snapped 3-ball in a triangulation. More...
 
class  NSnappedTwoSphere
 Represents a 2-sphere made from two snapped 3-balls in a triangulation. More...
 
class  NSpiralSolidTorus
 Represents a spiralled solid torus in a triangulation. More...
 
class  NStandardTriangulation
 Describes a triangulation or subcomplex of a triangulation whose structure is well-understood. More...
 
class  NTriSolidTorus
 Represents a three-tetrahedron triangular solid torus in a triangulation. More...
 
class  NTrivialTri
 Represents one of a few particular hard-coded trivial triangulations that do not belong to any of the other larger families. More...
 
class  NTxICore
 Provides a triangulation of the product T x I (the product of the torus and the interval). More...
 
class  NTxIDiagonalCore
 One of a family of thin T x I triangulations that typically appear at the centres of layered torus bundles. More...
 
class  NTxIParallelCore
 A specific six-tetrahedron NTxICore triangulation that does not fit neatly into other families. More...
 
struct  NDiscSpec
 Specifies a single normal disc in a normal surface. More...
 
class  NDiscSetTet
 Represents a set of normal discs inside a single tetrahedron. More...
 
class  NDiscSetTetData
 Stores data of type T for every normal disc inside a single tetrahedron. More...
 
class  NDiscSetSurface
 Represents the set of all normal discs forming a normal surface. More...
 
class  NDiscSetSurfaceData
 Stores data of type T for every normal disc within a particular normal surface. More...
 
class  NDiscSpecIterator
 An iterator used for running through all normal discs in a normal surface. More...
 
struct  NDiscType
 Identifies a single normal or almost normal disc type within a triangulation. More...
 
struct  NormalInfo
 A template that stores information about a particular normal coordinate system. More...
 
class  NNormalSurfaceVector
 Stores the vector of a single normal surface in a 3-manifold. More...
 
class  NNormalSurface
 Represents a single normal surface in a 3-manifold. More...
 
struct  PacketInfo< PACKET_NORMALSURFACELIST >
 Stores information about the normal surface list packet. More...
 
class  NNormalSurfaceList
 A packet representing a collection of normal surfaces in a 3-manifold. More...
 
struct  NPrismSpec
 Specifies a single triangular prism in a tetrahedron. More...
 
class  NPrismSetSurface
 Represents the set of prisms defined by slicing along all the quads in a particular normal surface. More...
 
struct  NormalInfo< NS_AN_STANDARD >
 Stores information about standard almost normal coordinates. More...
 
class  NNormalSurfaceVectorANStandard
 An almost normal surface vector using standard triangle-quad-oct coordinates. More...
 
class  NNormalSurfaceVectorMirrored
 A normal surface vector that is mirrored in another coordinate system to avoid frequent lengthy calculations. More...
 
struct  NormalInfo< NS_ORIENTED >
 Stores information about transversely oriented standard normal coordinates. More...
 
class  NNormalSurfaceVectorOriented
 A normal surface vector using transversely oriented standard (triangle-quad) coordinates. More...
 
struct  NormalInfo< NS_ORIENTED_QUAD >
 Stores information about transversely oriented quad normal coordinates. More...
 
class  NNormalSurfaceVectorOrientedQuad
 A normal surface vector using transversely oriented quadrilateral coordinates. More...
 
struct  NormalInfo< NS_QUAD >
 Stores information about quad normal coordinates. More...
 
class  NNormalSurfaceVectorQuad
 A normal surface vector using quad coordinates. More...
 
struct  NormalInfo< NS_AN_QUAD_OCT >
 Stores information about quad-oct almost normal coordinates. More...
 
class  NNormalSurfaceVectorQuadOct
 An almost normal surface vector using quad-oct coordinates. More...
 
struct  NormalInfo< NS_STANDARD >
 Stores information about standard normal coordinates. More...
 
class  NNormalSurfaceVectorStandard
 A normal surface vector using standard triangle-quad coordinates. More...
 
struct  SurfaceFilterInfo
 A template that stores information about a particular type of normal surface filter. More...
 
struct  PacketInfo< PACKET_SURFACEFILTER >
 Stores information about the normal surface filter packet type. More...
 
struct  SurfaceFilterInfo< NS_FILTER_DEFAULT >
 Stores information about the default accept-all surface filter. More...
 
class  NSurfaceFilter
 A packet that accepts or rejects normal surfaces. More...
 
class  NSurfaceSubset
 Represents a subset of a normal surface list. More...
 
class  NXMLFilterReader
 An XML element reader that reads the specific details of a normal surface filter. More...
 
class  NXMLFilterPacketReader
 An XML packet reader that reads a single surface filter. More...
 
class  NXMLNormalSurfaceReader
 An XML element reader that reads a single normal surface. More...
 
class  NXMLNormalSurfaceListReader
 An XML packet reader that reads a single normal surface list. More...
 
struct  SurfaceFilterInfo< NS_FILTER_COMBINATION >
 Stores information about the combination surface filter. More...
 
class  NSurfaceFilterCombination
 A normal surface filter that simply combines other filters. More...
 
struct  SurfaceFilterInfo< NS_FILTER_PROPERTIES >
 Stores information about the property-based surface filter. More...
 
class  NSurfaceFilterProperties
 A normal surface filter that filters by basic properties of the normal surface. More...
 
class  NBoundaryComponent
 Represents a component of the boundary of a triangulation. More...
 
class  NComponent
 Represents a component of a triangulation. More...
 
class  NEdgeEmbedding
 Details how an edge in the skeleton forms part of an individual tetrahedron. More...
 
class  NEdge
 Represents an edge in the skeleton of a triangulation. More...
 
class  NExampleTriangulation
 This class offers routines for constructing sample 3-manifold triangulations of various types. More...
 
class  NFacePair
 Represents a pair of tetrahedron face numbers. More...
 
class  NHomologicalData
 Data type that deals with all the detailed homological information in a manifold. More...
 
class  NIsomorphism
 Represents a combinatorial isomorphism from one triangulation into another. More...
 
class  NIsomorphismDirect
 A deprecated synonym for NIsomorphism, provided for backward compatibility only. More...
 
class  NPermItS4
 An iterator class that runs through all 24 permutations of four elements. More...
 
class  NTetrahedron
 Represents a tetrahedron in a triangulation. More...
 
class  NTriangleEmbedding
 Details how a triangle in the skeleton forms part of an individual tetrahedron. More...
 
class  NTriangle
 Represents a triangle in the skeleton of a triangulation. More...
 
struct  PacketInfo< PACKET_TRIANGULATION >
 Stores information about the 3-manifold triangulation packet. More...
 
class  NTriangulation
 Stores the triangulation of a 3-manifold along with its various cellular structures and other information. More...
 
class  NVertexEmbedding
 Details how a vertex in the skeleton forms part of an individual tetrahedron. More...
 
class  NVertex
 Represents a vertex in the skeleton of a triangulation. More...
 
class  NXMLTriangulationReader
 An XML packet reader that reads a single triangulation. More...
 
class  GenericBitManipulator
 A generic class for bitwise analysis and manipulation of native data types. More...
 
class  BitManipulator
 An optimised class for bitwise analysis and manipulation of native data types. More...
 
class  Flags
 A class representing a bitwise combination of flags defined by an enumeration type. More...
 
struct  IntOfSize
 Gives access to k-byte integer types, where k is a constant that is not known until compile time. More...
 
struct  FuncNew
 An adaptable generator used to create objects using default constructors. More...
 
struct  FuncNewCopyPtr
 An adaptable unary function used to create objects using copy constructors. More...
 
struct  FuncNewCopyRef
 An adaptable unary function used to create objects using copy constructors. More...
 
struct  FuncNewClonePtr
 An adaptable unary function used to create objects using the clone() method. More...
 
struct  FuncDelete
 An adaptable unary function used to deallocate objects. More...
 
class  NBitmask
 A bitmask that can store arbitrarily many true-or-false bits. More...
 
class  NBitmask1
 A small but extremely fast bitmask class that can store up to 8 * sizeof(T) true-or-false bits. More...
 
class  NBitmask2
 A small but extremely fast bitmask class that can store up to 8 * sizeof(T) + 8 * sizeof(U) true-or-false bits. More...
 
class  NTriBool
 A three-way extension of the boolean type. More...
 
class  NTriBool_Illegal_Integer_Conversion
 An exception thrown when an illegal integer conversion is attempted with NTriBool. More...
 
class  NBoolSet
 A set of booleans. More...
 
class  NListOnCall
 Offers a hard-coded list of expensive objects that should only be created if they are required. More...
 
class  NMarkedElement
 A base class for elements of NMarkedVector. More...
 
class  NMarkedVector
 A vector of objects with fast, space-efficient reverse lookup of array indices. More...
 
class  StoreValue
 An NProperty storage policy indicating that the property should be held by value. More...
 
class  StoreConstPtr
 An NProperty storage policy indicating that the property should be held by constant pointer. More...
 
class  StoreManagedPtr
 An NProperty storage policy indicating that the property should be held by pointer and that the property wrapper will also take responsibility for memory management. More...
 
class  NPropertyBase
 A base class that provides routines shared by all properties, regardless of their individual NProperty template parameters. More...
 
class  NProperty
 Stores a calculable property of an object. More...
 
class  NQitmask1
 A small but extremely fast "base 4 bitmask" class that can store up to 8 * sizeof(T) "qits", each equal to 0, 1, 2 or 3. More...
 
class  NQitmask2
 A small but extremely fast "base 4 bitmask" class that can store up to 8 * sizeof(T) + 8 * sizeof(U) "qits", each equal to 0, 1, 2 or 3. More...
 
class  NMutex
 A mutual exclusion device (mutex) used to ensure that different threads do not interfere when working with the same data. More...
 
class  NThread
 Provides very basic thread handling. More...
 
class  NTrieSet
 A trie-like data structure for storing and retriving sets. More...
 
class  NTritmask1
 A small but extremely fast "ternary bitmask" class that can store up to 8 * sizeof(T) "trits", each equal to 0, 1 or 2. More...
 
class  NTritmask2
 A small but extremely fast "ternary bitmask" class that can store up to 8 * sizeof(T) + 8 * sizeof(U) "trits", each equal to 0, 1 or 2. More...
 
class  LessDeref
 An adaptable binary function used to compare the objects to which pointers are pointing. More...
 
struct  Returns
 A convenience base class for a function object, which does nothing beyond provide a ReturnType typedef. More...
 
struct  NewFunction1
 A function object that creates a new object subclassed from Base, where the particular subclass is chosen according to the template argument to operator(). More...
 
class  ZBuffer
 A common base class for compression/decompression stream buffers. More...
 
class  CompressionBuffer
 An output stream buffer that compresses data as it is written. More...
 
class  DecompressionBuffer
 An input stream buffer that decompresses data as it is read. More...
 
class  CompressionStream
 An output stream that compresses data as it is written. More...
 
class  DecompressionStream
 An input stream that decompresses data as it is read. More...
 

Typedefs

typedef void(* UseDim2GluingPerms )(const Dim2GluingPermSearcher *, void *)
 A routine used to do arbitrary processing upon a particular set of triangle gluing permutations. More...
 
typedef bool(* AcceptTriangulation )(NTriangulation *, void *)
 A legacy typedef that is identical to NCensus::AcceptTriangulation. More...
 
typedef std::list< NIsomorphism * > NFacePairingIsoList
 A legacy typedef provided for backward compatibility only. More...
 
typedef void(* UseFacePairing )(const NFacePairing *, const NFacePairingIsoList *, void *)
 A legacy typedef provided for backward compatibility only. More...
 
typedef void(* UseGluingPerms )(const NGluingPermSearcher *, void *)
 A routine used to do arbitrary processing upon a particular set of tetrahedron gluing permutations. More...
 
typedef NDoubleDescription NDoubleDescriptor
 A legacy typedef provided for backward compatibility only. More...
 
typedef NFacetSpec< 2 > Dim2TriangleEdge
 A lightweight class used to refer to a particular edge of a particular triangle in a 2-manifold triangulation. More...
 
typedef NFacetSpec< 3 > NTetFace
 A lightweight class used to refer to a particular face of a particular tetrahedron in a 3-manifold triangulation. More...
 
typedef NIntegerBase< true > NLargeInteger
 NLargeInteger is a typedef for NIntegerBase<true>, which offers arbitrary precision integers with support for infinity. More...
 
typedef NIntegerBase< false > NInteger
 NInteger is a typedef for NIntegerBase<false>, which offers arbitrary precision integers without support for infinity. More...
 
typedef NNativeInteger< sizeof(long)> NNativeLong
 NNativeLong is a typedef for the NNativeInteger template class whose underlying integer type is a native long. More...
 
typedef std::list
< NSigPartialIsomorphism * > 
NSigIsoList
 A list of partial isomorphisms on splitting surface signatures. More...
 
typedef void(* UseSignature )(const NSignature &, const NSigIsoList &, void *)
 A routine used to do arbitrary processing upon a splitting surface signature and its automorphisms. More...
 
typedef NewFunction1
< NNormalSurfaceVector, size_t > 
NewNormalSurfaceVector
 A legacy typedef provided for backward compatibility only. More...
 
typedef regina::Flags
< NormalListFlags
NormalList
 A combination of flags for types of normal surface lists. More...
 
typedef regina::Flags
< NormalAlgFlags
NormalAlg
 A combination of flags for types of normal surface lists. More...
 
typedef NPerm4 NPerm
 A legacy typedef provided for backward compatibility only. More...
 
typedef NBitmask1< unsigned char > NBitmaskLen8
 A convenience typedef that gives a small and extremely fast bitmask class capable of holding at least 8 true-or-false bits. More...
 
typedef NBitmask1< unsigned int > NBitmaskLen16
 A convenience typedef that gives a small and extremely fast bitmask class capable of holding at least 16 true-or-false bits. More...
 
typedef InternalBitmaskLen32::Type NBitmaskLen32
 A convenience typedef that gives a small and extremely fast bitmask class capable of holding at least 32 true-or-false bits. More...
 
typedef InternalBitmaskLen64::Type NBitmaskLen64
 A convenience typedef that gives a small and extremely fast bitmask class capable of holding at least 64 true-or-false bits. More...
 
typedef NQitmask1< unsigned char > NQitmaskLen8
 A convenience typedef that gives a small and extremely fast qitmask class capable of holding at least 8 true-or-false bits. More...
 
typedef NQitmask1< unsigned int > NQitmaskLen16
 A convenience typedef that gives a small and extremely fast qitmask class capable of holding at least 16 true-or-false bits. More...
 
typedef InternalQitmaskLen32::Type NQitmaskLen32
 A convenience typedef that gives a small and extremely fast qitmask class capable of holding at least 32 true-or-false bits. More...
 
typedef InternalQitmaskLen64::Type NQitmaskLen64
 A convenience typedef that gives a small and extremely fast qitmask class capable of holding at least 64 true-or-false bits. More...
 
typedef pthread_t NThreadID
 The type used for a thread identifier. More...
 
typedef NTritmask1< unsigned char > NTritmaskLen8
 A convenience typedef that gives a small and extremely fast tritmask class capable of holding at least 8 true-or-false bits. More...
 
typedef NTritmask1< unsigned int > NTritmaskLen16
 A convenience typedef that gives a small and extremely fast tritmask class capable of holding at least 16 true-or-false bits. More...
 
typedef InternalTritmaskLen32::Type NTritmaskLen32
 A convenience typedef that gives a small and extremely fast tritmask class capable of holding at least 32 true-or-false bits. More...
 
typedef InternalTritmaskLen64::Type NTritmaskLen64
 A convenience typedef that gives a small and extremely fast tritmask class capable of holding at least 64 true-or-false bits. More...
 

Enumerations

enum  SurfaceExportFields {
  surfaceExportName = 0x0001, surfaceExportEuler = 0x0002, surfaceExportOrient = 0x0004, surfaceExportSides = 0x0008,
  surfaceExportBdry = 0x0010, surfaceExportLink = 0x0020, surfaceExportType = 0x0040, surfaceExportNone = 0,
  surfaceExportAllButName = 0x007e, surfaceExportAll = 0x007f
}
 Indicates a set of additional fields that can be exported as part of a normal surface list. More...
 
enum  PacketType {
  PACKET_CONTAINER = 1, PACKET_TEXT = 2, PACKET_TRIANGULATION = 3, PACKET_NORMALSURFACELIST = 6,
  PACKET_SCRIPT = 7, PACKET_SURFACEFILTER = 8, PACKET_ANGLESTRUCTURELIST = 9, PACKET_PDF = 10,
  PACKET_DIM2TRIANGULATION = 15
}
 Represents the different types of packet that are available in Regina. More...
 
enum  NormalCoords {
  NS_STANDARD = 0, NS_QUAD = 1, NS_AN_LEGACY = 100, NS_AN_QUAD_OCT = 101,
  NS_AN_STANDARD = 102, NS_EDGE_WEIGHT = 200, NS_TRIANGLE_ARCS = 201, NS_FACE_ARCS = 201,
  NS_ORIENTED = 300, NS_ORIENTED_QUAD = 301
}
 Represents different coordinate systems that can be used for enumerating and displaying normal surfaces. More...
 
enum  NormalListFlags {
  NS_LIST_DEFAULT = 0x0000, NS_EMBEDDED_ONLY = 0x0001, NS_IMMERSED_SINGULAR = 0x0002, NS_VERTEX = 0x0004,
  NS_FUNDAMENTAL = 0x0008, NS_LEGACY = 0x4000, NS_CUSTOM = 0x8000
}
 Represents different lists of normal surfaces that might be constructed for a given triangulation. More...
 
enum  NormalAlgFlags {
  NS_ALG_DEFAULT = 0x0000, NS_VERTEX_VIA_REDUCED = 0x0001, NS_VERTEX_STD_DIRECT = 0x0002, NS_VERTEX_TREE = 0x0010,
  NS_VERTEX_DD = 0x0020, NS_HILBERT_PRIMAL = 0x0100, NS_HILBERT_DUAL = 0x0200, NS_HILBERT_CD = 0x0400,
  NS_HILBERT_FULLCONE = 0x0800, NS_ALG_LEGACY = 0x4000, NS_ALG_CUSTOM = 0x8000
}
 Represents options and variants of algorithms for enumerating various types of normal surfaces. More...
 
enum  SurfaceFilterType { NS_FILTER_DEFAULT = 0, NS_FILTER_PROPERTIES = 1, NS_FILTER_COMBINATION = 2 }
 Represents different types of filter classes that can be used to filter lists of normal surfaces in 3-manifold triangulations. More...
 

Functions

REGINA_API std::ostream & operator<< (std::ostream &out, const NGroupExpressionTerm &term)
 Writes the given term to the given output stream. More...
 
REGINA_API const char * getVersionString ()
 Returns the full version number of this calculation engine. More...
 
REGINA_API int getVersionMajor ()
 Returns the major version number of this calculation engine. More...
 
REGINA_API int getVersionMinor ()
 Returns the minor version number of this calculation engine. More...
 
REGINA_API bool versionUsesUTF8 (const char *version)
 Did the given version of Regina consistently use UTF-8 in its data files? More...
 
REGINA_API int testEngine (int value)
 Tests to see if an interface can successfully communicate with the underlying C++ calculation engine. More...
 
REGINA_API bool writeXMLFile (const char *fileName, NPacket *subtree, bool compressed=true)
 Writes the subtree with the given packet as matriarch to disk as a complete XML file. More...
 
REGINA_API NPacketreadXMLFile (const char *fileName)
 Reads the packet tree stored in the given XML file. More...
 
REGINA_API NPacketreadFileMagic (const std::string &fileName)
 Reads a packet tree from a file whose format is unknown. More...
 
REGINA_API bool writeCSVStandard (const char *filename, NNormalSurfaceList &surfaces, int additionalFields=surfaceExportAll)
 Exports the given list of normal surfaces as a plain text CSV (comma-separated value) file. More...
 
REGINA_API bool writeCSVEdgeWeight (const char *filename, NNormalSurfaceList &surfaces, int additionalFields=surfaceExportAll)
 Exports the given list of normal surfaces as a plain text CSV (comma-separated value) file. More...
 
REGINA_API NContainerreadDehydrationList (const char *filename, unsigned colDehydrations=0, int colLabels=-1, unsigned long ignoreLines=0)
 Reads a list of dehydrated triangulations from the given text file. More...
 
REGINA_API NContainerreadIsoSigList (const char *filename, unsigned dimension=3, unsigned colSigs=0, int colLabels=-1, unsigned long ignoreLines=0)
 Reads a list of isomorphism signatures from the given text file. More...
 
REGINA_API NTriangulationreadOrb (const char *filename)
 Reads a triangulation from the given Orb / Casson file. More...
 
REGINA_API NPDFreadPDF (const char *filename)
 Reads a PDF document from the given file. More...
 
REGINA_API bool writePDF (const char *filename, const NPDF &pdf)
 Writes the given PDF document to the given file. More...
 
REGINA_API bool writeRecogniser (const char *filename, NTriangulation &tri)
 Writes the given triangulation to the given file in Matveev's 3-manifold recogniser format. More...
 
REGINA_API bool writeRecognizer (const char *filename, NTriangulation &tri)
 A synonym for writeRecogniser(). More...
 
REGINA_API NTriangulationreadSnapPea (const char *filename)
 Reads a triangulation from the given SnapPea file. More...
 
REGINA_API NTriangulationreadSnapPea (std::istream &in)
 Reads a triangulation from an input stream that contains the contents of a SnapPea file. More...
 
REGINA_API bool writeSnapPea (const char *filename, const NTriangulation &tri)
 Writes the given triangulation to the given file in SnapPea format. More...
 
REGINA_API void writeSnapPea (std::ostream &out, const NTriangulation &tri)
 Writes the given triangulation to the given output stream using SnapPea's file format. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NSFSFibre &f)
 Writes the given fibre in human-readable format to the given output stream. More...
 
template<class R >
bool isZero (R x)
 Determines whether the given real number is zero. More...
 
template<class R >
bool isNonZero (R x)
 Determines whether the given real number is non-zero. More...
 
template<class R >
bool isPositive (R x)
 Determines whether the given real number is strictly positive. More...
 
template<class R >
bool isNegative (R x)
 Determines whether the given real number is strictly negative. More...
 
template<class R >
bool isNonNegative (R x)
 Determines whether the given real number is non-negative. More...
 
template<class R >
bool isNonPositive (R x)
 Determines whether the given real number is non-positive. More...
 
REGINA_API void smithNormalForm (NMatrixInt &matrix)
 Transforms the given integer matrix into Smith normal form. More...
 
REGINA_API void smithNormalForm (NMatrixInt &matrix, NMatrixInt &rowSpaceBasis, NMatrixInt &rowSpaceBasisInv, NMatrixInt &colSpaceBasis, NMatrixInt &colSpaceBasisInv)
 A Smith normal form algorithm that also returns change of basis matrices. More...
 
REGINA_API void metricalSmithNormalForm (NMatrixInt &matrix, NMatrixInt *rowSpaceBasis=0, NMatrixInt *rowSpaceBasisInv=0, NMatrixInt *colSpaceBasis=0, NMatrixInt *colSpaceBasisInv=0)
 An alternative Smith normal form algorithm that also returns change of basis matrices. More...
 
REGINA_API unsigned rowBasis (NMatrixInt &matrix)
 Find a basis for the row space of the given matrix. More...
 
REGINA_API unsigned rowBasisAndOrthComp (NMatrixInt &input, NMatrixInt &complement)
 Finds a basis for the row space of the given matrix, as well as an "incremental" basis for its orthogonal complement. More...
 
REGINA_API void columnEchelonForm (NMatrixInt &M, NMatrixInt &R, NMatrixInt &Ri, const std::vector< unsigned > &rowList)
 Transforms a given matrix into column echelon form with respect to a collection of rows. More...
 
REGINA_API std::auto_ptr
< NMatrixInt
preImageOfLattice (const NMatrixInt &hom, const std::vector< NLargeInteger > &sublattice)
 Given a homomorphism from Z^n to Z^k and a sublattice of Z^k, compute the preimage of this sublattice under this homomorphism. More...
 
REGINA_API std::auto_ptr
< NMatrixInt
torsionAutInverse (const NMatrixInt &input, const std::vector< NLargeInteger > &invF)
 Given an automorphism of an abelian group, this procedure computes the inverse automorphism. More...
 
template<bool supportInfinity>
REGINA_API std::ostream & operator<< (std::ostream &out, const NIntegerBase< supportInfinity > &i)
 Writes the given integer to the given output stream. More...
 
template<bool supportInfinity>
REGINA_API NIntegerBase
< supportInfinity > 
operator+ (long lhs, const NIntegerBase< supportInfinity > &rhs)
 Adds the given native integer to the given large integer. More...
 
template<bool supportInfinity>
REGINA_API NIntegerBase
< supportInfinity > 
operator* (long lhs, const NIntegerBase< supportInfinity > &rhs)
 Multiplies the given native integer with the given large integer. More...
 
template<int bytes>
REGINA_API std::ostream & operator<< (std::ostream &out, const NNativeInteger< bytes > &i)
 Writes the given integer to the given output stream. More...
 
template<bool supportInfinity>
NIntegerBase< supportInfinity > operator+ (long lhs, const NIntegerBase< supportInfinity > &rhs)
 Adds the given native integer to the given large integer. More...
 
template<bool supportInfinity>
NIntegerBase< supportInfinity > operator* (long lhs, const NIntegerBase< supportInfinity > &rhs)
 Multiplies the given native integer with the given large integer. More...
 
template<int bytes>
std::ostream & operator<< (std::ostream &out, const NNativeInteger< bytes > &i)
 Writes the given integer to the given output stream. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NMatrix2 &mat)
 Writes the given matrix to the given output stream. More...
 
REGINA_API bool simpler (const NMatrix2 &m1, const NMatrix2 &m2)
 Determines whether the first given matrix is more aesthetically pleasing than the second. More...
 
REGINA_API bool simpler (const NMatrix2 &pair1first, const NMatrix2 &pair1second, const NMatrix2 &pair2first, const NMatrix2 &pair2second)
 Determines whether the first given pair of matrices is more aesthetically pleasing than the second pair. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NPerm3 &p)
 Writes a string representation of the given permutation to the given output stream. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NPerm4 &p)
 Writes a string representation of the given permutation to the given output stream. More...
 
REGINA_API NPerm4 faceOrdering (int face)
 Returns a permutation mapping (0,1,2) to the vertices of the given tetrahedron face in their canonical order. More...
 
REGINA_API NPerm4 edgeOrdering (int edge)
 Returns a permutation mapping (0,1) to the vertices of the given tetrahedron edge in their canonical order. More...
 
REGINA_API std::string faceDescription (int face)
 Returns a string representation of the permutation mapping (0,1,2) to the vertices of the given tetrahedron face in their canonical order, as described in faceOrdering(). More...
 
REGINA_API std::string faceDescription (const NPerm4 &facePerm)
 Returns a string representation of the given permutation with only the images of 0, 1 and 2 included. More...
 
REGINA_API std::string edgeDescription (int edge)
 Returns a string representation of the permutation mapping (0,1) to the vertices of the given tetrahedron edge in their canonical order, as described in edgeOrdering(). More...
 
REGINA_API std::string edgeDescription (const NPerm4 &edgePerm)
 Returns a string representation of the given permutation with only the images of 0 and 1 included. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NPerm5 &p)
 Writes a string representation of the given permutation to the given output stream. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NRational &rat)
 Writes the given rational to the given output stream. More...
 
REGINA_API long reducedMod (long k, long modBase)
 Reduces k modulo modBase to give the smallest possible absolute value. More...
 
REGINA_API long gcd (long a, long b)
 Calculates the greatest common divisor of two signed integers. More...
 
REGINA_API long gcdWithCoeffs (long a, long b, long &u, long &v)
 Calculates the greatest common divisor of two given integers and finds the smallest coefficients with which these integers combine to give their gcd. More...
 
REGINA_API long lcm (long a, long b)
 Calculates the lowest common multiple of two signed integers. More...
 
REGINA_API unsigned long modularInverse (unsigned long n, unsigned long k)
 Calculates the multiplicative inverse of one integer modulo another. More...
 
REGINA_API void factorise (unsigned long n, std::list< unsigned long > &factors)
 Calculates the prime factorisation of the given integer. More...
 
REGINA_API void primesUpTo (const NLargeInteger &roof, std::list< NLargeInteger > &primes)
 Determines all primes up to and including the given upper bound. More...
 
template<class T >
std::ostream & operator<< (std::ostream &out, const NVector< T > &vector)
 Writes the given vector to the given output stream. More...
 
REGINA_API NPerm5 perm4to5 (const NPerm4 &p)
 Converts the given 4-element permutation to a 5-element permutation. More...
 
REGINA_API NPerm4 perm5to4 (const NPerm5 &p)
 Expresses the given 5-element permutation as a 4-element permutation. More...
 
REGINA_API NPerm4 perm3to4 (const NPerm3 &p)
 Converts the given 3-element permutation to a 4-element permutation. More...
 
REGINA_API NPerm3 perm4to3 (const NPerm4 &p)
 Expresses the given 4-element permutation as a 3-element permutation. More...
 
template<typename FunctionObject >
FunctionObject::ReturnType forPacket (PacketType packetType, FunctionObject func, typename FunctionObject::ReturnType defaultReturn)
 Allows the user to call a template function whose template parameter matches a given value of PacketType, which is not known until runtime. More...
 
template<typename VoidFunctionObject >
void forPacket (PacketType packetType, VoidFunctionObject func)
 Allows the user to call a template function whose template parameter matches a given value of PacketType, which is not known until runtime. More...
 
REGINA_API unsigned long formSigCensus (unsigned order, UseSignature use, void *useArgs=0)
 Forms a census of all splitting surface signatures of the given order. More...
 
template<typename FunctionObject >
FunctionObject::ReturnType forCoords (NormalCoords coords, FunctionObject func, typename FunctionObject::ReturnType defaultReturn)
 Allows the user to call a template function whose template parameter matches a given value of NormalCoords, which is not known until runtime. More...
 
template<typename VoidFunctionObject >
void forCoords (NormalCoords coords, VoidFunctionObject func)
 Allows the user to call a template function whose template parameter matches a given value of NormalCoords, which is not known until runtime. More...
 
template<typename FunctionObject >
FunctionObject::ReturnType forFlavour (NormalCoords coords, FunctionObject func, typename FunctionObject::ReturnType defaultReturn)
 A deprecated alias for the registry-based template function forCoords(). More...
 
template<typename VoidFunctionObject >
void forFlavour (NormalCoords coords, VoidFunctionObject func)
 A deprecated alias for the registry-based template function forCoords(). More...
 
template<typename FunctionObject >
FunctionObject::ReturnType forFilter (SurfaceFilterType filter, FunctionObject func, typename FunctionObject::ReturnType defaultReturn)
 Allows the user to call a template function whose template parameter matches a given value of SurfaceFilterType, which is not known until runtime. More...
 
template<typename VoidFunctionObject >
void forFilter (SurfaceFilterType filter, VoidFunctionObject func)
 Allows the user to call a template function whose template parameter matches a given value of SurfaceFilterType, which is not known until runtime. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NDiscSpec &spec)
 Writes the given disc specifier to the given output stream. More...
 
REGINA_API bool numberDiscsAwayFromVertex (int discType, int vertex)
 Determines whether or not normal discs of the given type are numbered away from the given vertex. More...
 
REGINA_API bool discOrientationFollowsEdge (int discType, int vertex, int edgeStart, int edgeEnd)
 Determines whether or not the natural boundary orientation of a normal disc of the given type follows the given directed normal arc. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NDiscType &type)
 Writes the given disc type to the given output stream. More...
 
REGINA_API NNormalSurfaceVectormakeZeroVector (const NTriangulation *triangulation, NormalCoords coords)
 Returns a new normal surface vector of the appropriate length for the given triangulation and the given coordinate system. More...
 
REGINA_API NMatrixIntmakeMatchingEquations (NTriangulation *triangulation, NormalCoords coords)
 Creates a new set of normal surface matching equations for the given triangulation using the given coordinate system. More...
 
REGINA_API NEnumConstraintListmakeEmbeddedConstraints (NTriangulation *triangulation, NormalCoords coords)
 Creates a new set of validity constraints representing the condition that normal surfaces be embedded. More...
 
NormalList operator| (NormalListFlags lhs, NormalListFlags rhs)
 Returns the bitwise OR of the two given flags. More...
 
NormalAlg operator| (NormalAlgFlags lhs, NormalAlgFlags rhs)
 Returns the bitwise OR of the two given flags. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NPrismSpec &spec)
 Writes the given prism specifier to the given output stream. More...
 
REGINA_API size_t base64Length (size_t bytes)
 Returns the number of base64 characters required to encode the given number of bytes. More...
 
REGINA_API bool isBase64 (char ch)
 Determines whether the given character is a base64 printable character as used by the base64 routines in Regina. More...
 
REGINA_API void base64Encode (const char *in, size_t inlen, char *out, size_t outlen)
 Encodes the given sequence of raw bytes in base64, and writes the results into a preallocated output buffer. More...
 
REGINA_API size_t base64Encode (const char *in, size_t inlen, char **out)
 Encodes the given sequence of raw bytes in base64, and passes back a newly allocated array containing the results. More...
 
REGINA_API bool base64Decode (const char *in, size_t inlen, char *out, size_t *outlen)
 Decodes the given sequence of base64 characters, and writes the resulting raw bytes into a preallocated output buffer. More...
 
REGINA_API bool base64Decode (const char *in, size_t inlen, char **out, size_t *outlen)
 Decodes the given sequence of base64 characters, and passes back a newly allocated array containing the results. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NBitmask &mask)
 Writes the given bitmask to the given output stream as a sequence of zeroes and ones. More...
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const NBitmask1< T > &mask)
 Writes the given bitmask to the given output stream as a sequence of zeroes and ones. More...
 
template<typename T , typename U >
std::ostream & operator<< (std::ostream &out, const NBitmask2< T, U > &mask)
 Writes the given bitmask to the given output stream as a sequence of zeroes and ones. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NTriBool &set)
 Writes the given three-way boolean to the given output stream. More...
 
REGINA_API std::ostream & operator<< (std::ostream &out, const NBoolSet &set)
 Writes the given boolean set to the given output stream. More...
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const NQitmask1< T > &mask)
 Writes the given qitmask to the given output stream as a sequence of digits (0, 1, 2 and/or 3). More...
 
template<typename T , typename U >
std::ostream & operator<< (std::ostream &out, const NQitmask2< T, U > &mask)
 Writes the given qitmask to the given output stream as a sequence of digits (0, 1, 2 and/or 3). More...
 
template<typename T >
std::ostream & operator<< (std::ostream &out, const NTritmask1< T > &mask)
 Writes the given tritmask to the given output stream as a sequence of digits (0, 1 and/or 2). More...
 
template<typename T , typename U >
std::ostream & operator<< (std::ostream &out, const NTritmask2< T, U > &mask)
 Writes the given tritmask to the given output stream as a sequence of digits (0, 1 and/or 2). More...
 
REGINA_API void writeResUsage (std::ostream &out)
 Writes time and memory usage for the current process to the given output stream. More...
 
template<typename T >
T * clonePtr (T *cloneMe)
 A simple routine for cloning an object if and only if it exists. More...
 
template<typename T >
T * clonePtr (const std::auto_ptr< T > &cloneMe)
 A simple routine for cloning an object if and only if it exists. More...
 
REGINA_API char * duplicate (const std::string &str)
 Creates a new C string that is a duplicate of the given C++ string. More...
 
REGINA_API bool startsWith (const std::string &str, const std::string &prefix)
 Determines whether the given C++ string begins with the given prefix. More...
 
REGINA_API std::string stripWhitespace (const std::string &str)
 Strips all whitespace from the beginning and end of the given C++ string. More...
 
REGINA_API bool valueOf (const std::string &str, int &dest)
 Converts the entire given string to an integer and reports whether this conversion was successful. More...
 
REGINA_API bool valueOf (const std::string &str, unsigned &dest)
 Converts the entire given string to an unsigned integer and reports whether this conversion was successful. More...
 
REGINA_API bool valueOf (const std::string &str, long &dest)
 Converts the entire given string to a long integer and reports whether this conversion was successful. More...
 
REGINA_API bool valueOf (const std::string &str, unsigned long &dest)
 Converts the entire given string to an unsigned long integer and reports whether this conversion was successful. More...
 
template<bool supportInfinity>
REGINA_API bool valueOf (const std::string &str, NIntegerBase< supportInfinity > &dest)
 Converts the entire given string to an arbitrary precision integer and reports whether this conversion was successful. More...
 
REGINA_API bool valueOf (const std::string &str, double &dest)
 Converts the entire given string to a double precision real number and reports whether this conversion was successful. More...
 
REGINA_API bool valueOf (const std::string &str, bool &dest)
 Converts the entire given string to a boolean and reports whether this conversion was successful. More...
 
REGINA_API bool valueOf (const std::string &str, NTriBool &dest)
 Converts the entire given string to a three-way boolean (true, false or unknown) and reports whether this conversion was successful. More...
 
REGINA_API bool valueOf (const std::string &str, NBoolSet &dest)
 Converts the entire given string to a set of booleans and reports whether this conversion was successful. More...
 
template<class OutputIterator >
REGINA_API unsigned basicTokenise (OutputIterator results, const std::string &str)
 Decomposes the given string into tokens. More...
 
REGINA_API std::string stringToToken (const char *str)
 Returns a token derived from the given string. More...
 
REGINA_API std::string stringToToken (const std::string &str)
 Returns a token derived from the given string. More...
 

Variables

REGINA_API const double epsilon
 A very small positive real designed to accommodate for rounding error. More...
 
REGINA_API const NPerm4allPermsS4
 An array of size 24 containing all possible permutations of four elements. More...
 
REGINA_API const unsigned * allPermsS4Inv
 An array of size 24 containing the inverses of the permutations in the array allPermsS4. More...
 
REGINA_API const NPerm4orderedPermsS4
 An array of size 24 containing all possible permutations of four elements in lexicographical order. More...
 
REGINA_API const NPerm4allPermsS3
 An array of size 6 containing all possible permutations of three elements. More...
 
REGINA_API const unsigned * allPermsS3Inv
 An array of size 6 containing the inverses of the permutations in the array allPermsS3. More...
 
REGINA_API const NPerm4orderedPermsS3
 An array of size 6 containing all possible permutations of three elements in lexicographical order. More...
 
REGINA_API const NPerm4allPermsS2
 An array of size 2 containing all possible permutations of two elements. More...
 
REGINA_API const unsigned * allPermsS2Inv
 An array of size 2 containing the inverses of the permutations in the array allPermsS2. More...
 
REGINA_API const int vertexSplit [4][4]
 Lists which vertex splits separate which pairs of vertices. More...
 
REGINA_API const int vertexSplitMeeting [4][4][2]
 Lists which vertex splits meet which edges. More...
 
REGINA_API const int vertexSplitDefn [3][4]
 Lists the vertices which each vertex split splits. More...
 
REGINA_API const int vertexSplitPartner [3][4]
 Lists the second vertex with which each vertex is paired under each vertex split. More...
 
REGINA_API const char vertexSplitString [3][6]
 Contains strings describing which vertices each vertex split splits. More...
 
REGINA_API const NPerm4 triDiscArcs [4][3]
 Lists in consecutive order the directed normal arcs that form the boundary of each type of triangular normal disc. More...
 
REGINA_API const NPerm4 quadDiscArcs [3][4]
 Lists in consecutive order the directed normal arcs that form the boundary of each type of quadrilateral normal disc. More...
 
REGINA_API const NPerm4 octDiscArcs [3][8]
 Lists in consecutive order the directed normal arcs that form the boundary of each type of octagonal normal disc. More...
 
REGINA_API const int edgeNumber [4][4]
 edgeNumber[i][j] is the number of the edge linking vertices i and j in a tetrahedron. More...
 
REGINA_API const int edgeStart [6]
 edgeStart[k] is the vertex of a tetrahedron at which edge k of the tetrahedron begins. More...
 
REGINA_API const int edgeEnd [6]
 edgeEnd[k] is the vertex of a tetrahedron at which edge k of the tetrahedron ends. More...
 

Detailed Description

Contains the entire Regina calculation engine.

Define REGINA_VERIFY_LPDATA to check invariants as the algorithm runs.

Todo:

Bug: Derive from regina::boost::noncopyable where appropriate.

Feature (long-term): Enhance the test suite for the calculation engine.

This checking is slow and can increase the running time significantly.

Typedef Documentation

typedef NNativeInteger<sizeof(long)> regina::NNativeLong

NNativeLong is a typedef for the NNativeInteger template class whose underlying integer type is a native long.

Python:
Not present.

Function Documentation

template<int bytes>
REGINA_API std::ostream& regina::operator<< ( std::ostream &  out,
const NNativeInteger< bytes > &  i 
)
inline

Writes the given integer to the given output stream.

Parameters
outthe output stream to which to write.
ithe integer to write.
Returns
a reference to out.
template<int bytes>
std::ostream& regina::operator<< ( std::ostream &  out,
const NNativeInteger< bytes > &  i 
)
inline

Writes the given integer to the given output stream.

Parameters
outthe output stream to which to write.
ithe integer to write.
Returns
a reference to out.
REGINA_API void regina::writeResUsage ( std::ostream &  out)

Writes time and memory usage for the current process to the given output stream.

Information is gathered from the /proc filesystem, which means that this routine will only write meaningful information under a Linux system where /proc is mounted.

Specifically, this routine reads information on the running process from /proc/self/stat, and writes a short string to the given output stream of the form:

utime=..., stime=..., vsize=...

The three ellipses in the example above will be replaced with integers, representing:

  • the number jiffies that this process has been scheduled in user mode (the utime field);
  • the number jiffies that this process has been scheduled in kernel mode (the stime field);
  • the the virtual memory size in bytes (the vsize field).

The description of these three fields is taken directly from the proc(5) manpage. Note that the length of a jiffy can differ from system to system; see the time(7) manpage for details.

The output will not contain a newline, and the given output stream will not be flushed.

If /proc/self/stat cannot be read, this routine will write a short message to that effect to the given output stream (which means that this utility is safe to call under non-Linux operating systems, although it will of course be useless in such scenarios).

If /proc/self/stat can be read but contains unexpected information, the behaviour of this routine is undefined.

Python:
This routine does not take any arguments; instead the stream out is assumed to be standard output.
Warning
Currently this routine allows at most 255 characters for the comm field in /proc/self/stat (which stores the executable filename along with surrounding parentheses). If the comm field is too long (i.e., the executable filename is too long), then this routine will not be able to parse /proc/self/stat, and will write a note to this effect to the given output stream. If you encounter this problem, you should be able to fix it by renaming your executable to something shorter.
Parameters
outthe output stream to which usage information will be written.

Copyright © 1999-2013, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@debian.org).