Regina Calculation Engine
Classes | Typedefs | Functions | Variables | Friends
Standard Triangulations and Subcomplexes

Standard triangulations and subcomplexes of triangulations whose structures are well-understood. More...

Classes

class  regina::AugTriSolidTorus
 Represents an augmented triangular solid torus component of a triangulation. More...
 
class  regina::BlockedSFS
 Represents a blocked Seifert fibred space (possibly with boundary). More...
 
class  regina::BlockedSFSLoop
 Represents a blocked Seifert fibred space with two boundary tori that are joined together. More...
 
class  regina::BlockedSFSPair
 Represents a blocked pair of Seifert fibred spaces joined along a single connecting torus. More...
 
class  regina::BlockedSFSTriple
 Represents a blocked sequence of three Seifert fibred spaces joined along connecting tori. More...
 
class  regina::L31Pillow
 Represents a triangular pillow L(3,1) component of a triangulation. More...
 
class  regina::LayeredChain
 Represents a layered chain in a triangulation. More...
 
class  regina::LayeredChainPair
 Represents a layered chain pair component of a triangulation. More...
 
class  regina::LayeredLensSpace
 Represents a layered lens space component of a triangulation. More...
 
class  regina::LayeredLoop
 Represents a layered loop component of a triangulation. More...
 
class  regina::LayeredSolidTorus
 Represents a layered solid torus in a triangulation. More...
 
class  regina::LayeredTorusBundle
 Describes a layered torus bundle. More...
 
class  regina::Layering
 Represents a layering of zero or more tetrahedra upon a torus boundary. More...
 
class  regina::PillowTwoSphere
 Represents a 2-sphere made from two triangles glued together along their three edges. More...
 
class  regina::PluggedTorusBundle
 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  regina::PlugTriSolidTorus
 Represents a plugged triangular solid torus component of a triangulation. More...
 
struct  regina::SatAnnulus
 Represents an annulus formed from a pair of triangles in a Seifert fibred space. More...
 
class  regina::SatBlock
 Represents a saturated block in a Seifert fibred space. More...
 
class  regina::SatBlockStarter
 Contains a triangulation of a saturated block along with the accompanying saturated block description. More...
 
class  regina::SatBlockStarterSet
 Represents a set of starter blocks that can be used for identifying triangulations of Seifert fibred spaces. More...
 
class  regina::SatBlockStarterSearcher
 A helper class for locating and using starter blocks within a triangulation. More...
 
class  regina::SatMobius
 A degenerate zero-tetrahedron saturated block that corresponds to attaching a Mobius band to a single annulus boundary. More...
 
class  regina::SatLST
 A saturated block that is a layered solid torus. More...
 
class  regina::SatTriPrism
 A saturated block that is a three-tetrahedron triangular prism. More...
 
class  regina::SatCube
 A saturated block that is a six-tetrahedron cube. More...
 
class  regina::SatReflectorStrip
 A saturated block that is a reflector strip. More...
 
class  regina::SatLayering
 A degenerate saturated block that is a single tetrahedron wrapped around so that two opposite edges touch. More...
 
struct  regina::SatBlockSpec
 Describes how a single saturated block forms a part of a larger saturated region. More...
 
class  regina::SatRegion
 A large saturated region in a Seifert fibred space formed by joining together saturated blocks. More...
 
class  regina::SnapPeaCensusTri
 Represents a 3-manifold triangulation from the SnapPea cusped census. More...
 
class  regina::SnappedBall
 Represents a snapped 3-ball in a triangulation. More...
 
class  regina::SnappedTwoSphere
 Represents a 2-sphere made from two snapped 3-balls in a triangulation. More...
 
class  regina::SpiralSolidTorus
 Represents a spiralled solid torus in a triangulation. More...
 
class  regina::StandardTriangulation
 Describes a triangulation or subcomplex of a triangulation whose structure is well-understood. More...
 
class  regina::TriSolidTorus
 Represents a three-tetrahedron triangular solid torus in a triangulation. More...
 
class  regina::TrivialTri
 Represents one of a few particular hard-coded trivial triangulations that do not belong to any of the other larger families. More...
 
class  regina::TxICore
 Provides a triangulation of the product T x I (the product of the torus and the interval). More...
 
class  regina::TxIDiagonalCore
 One of a family of thin T x I triangulations that typically appear at the centres of layered torus bundles. More...
 
class  regina::TxIParallelCore
 A specific six-tetrahedron TxICore triangulation that does not fit neatly into other families. More...
 

Typedefs

typedef AugTriSolidTorus regina::NAugTriSolidTorus
 Deprecated typedef for backward compatibility. More...
 
typedef BlockedSFS regina::NBlockedSFS
 Deprecated typedef for backward compatibility. More...
 
typedef BlockedSFSLoop regina::NBlockedSFSLoop
 Deprecated typedef for backward compatibility. More...
 
typedef BlockedSFSPair regina::NBlockedSFSPair
 Deprecated typedef for backward compatibility. More...
 
typedef BlockedSFSTriple regina::NBlockedSFSTriple
 Deprecated typedef for backward compatibility. More...
 
typedef L31Pillow regina::NL31Pillow
 Deprecated typedef for backward compatibility. More...
 
typedef LayeredChain regina::NLayeredChain
 Deprecated typedef for backward compatibility. More...
 
typedef LayeredChainPair regina::NLayeredChainPair
 Deprecated typedef for backward compatibility. More...
 
typedef LayeredLensSpace regina::NLayeredLensSpace
 Deprecated typedef for backward compatibility. More...
 
typedef LayeredLoop regina::NLayeredLoop
 Deprecated typedef for backward compatibility. More...
 
typedef LayeredSolidTorus regina::NLayeredSolidTorus
 Deprecated typedef for backward compatibility. More...
 
typedef LayeredTorusBundle regina::NLayeredTorusBundle
 Deprecated typedef for backward compatibility. More...
 
typedef Layering regina::NLayering
 Deprecated typedef for backward compatibility. More...
 
typedef PillowTwoSphere regina::NPillowTwoSphere
 Deprecated typedef for backward compatibility. More...
 
typedef PluggedTorusBundle regina::NPluggedTorusBundle
 Deprecated typedef for backward compatibility. More...
 
typedef PlugTriSolidTorus regina::NPlugTriSolidTorus
 Deprecated typedef for backward compatibility. More...
 
typedef SatAnnulus regina::NSatAnnulus
 Deprecated typedef for backward compatibility. More...
 
typedef std::set< Tetrahedron< 3 > * > regina::SatBlock::TetList
 The data structure used to store a list of tetrahedra that should not be examined by isBlock(). More...
 
typedef SatBlock regina::NSatBlock
 Deprecated typedef for backward compatibility. More...
 
typedef SatBlockStarter regina::NSatBlockStarter
 Deprecated typedef for backward compatibility. More...
 
typedef ListOnCall< SatBlockStarter >::iterator regina::SatBlockStarterSet::iterator
 An iterator over the starter blocks in this list. More...
 
typedef SatBlockStarterSet regina::NSatBlockStarterSet
 Deprecated typedef for backward compatibility. More...
 
typedef SatBlockStarterSearcher regina::NSatBlockStarterSearcher
 Deprecated typedef for backward compatibility. More...
 
typedef SatMobius regina::NSatMobius
 Deprecated typedef for backward compatibility. More...
 
typedef SatLST regina::NSatLST
 Deprecated typedef for backward compatibility. More...
 
typedef SatTriPrism regina::NSatTriPrism
 Deprecated typedef for backward compatibility. More...
 
typedef SatCube regina::NSatCube
 Deprecated typedef for backward compatibility. More...
 
typedef SatReflectorStrip regina::NSatReflectorStrip
 Deprecated typedef for backward compatibility. More...
 
typedef SatLayering regina::NSatLayering
 Deprecated typedef for backward compatibility. More...
 
typedef SatBlockSpec regina::NSatBlockSpec
 Deprecated typedef for backward compatibility. More...
 
typedef SatRegion regina::NSatRegion
 Deprecated typedef for backward compatibility. More...
 
typedef SnapPeaCensusTri regina::NSnapPeaCensusTri
 Deprecated typedef for backward compatibility. More...
 
typedef SnappedBall regina::NSnappedBall
 Deprecated typedef for backward compatibility. More...
 
typedef SnappedTwoSphere regina::NSnappedTwoSphere
 Deprecated typedef for backward compatibility. More...
 
typedef SpiralSolidTorus regina::NSpiralSolidTorus
 Deprecated typedef for backward compatibility. More...
 
typedef StandardTriangulation regina::NStandardTriangulation
 Deprecated typedef for backward compatibility. More...
 
typedef TriSolidTorus regina::NTriSolidTorus
 Deprecated typedef for backward compatibility. More...
 
typedef TrivialTri regina::NTrivialTri
 Deprecated typedef for backward compatibility. More...
 
typedef TxICore regina::NTxICore
 Deprecated typedef for backward compatibility. More...
 
typedef TxIDiagonalCore regina::NTxIDiagonalCore
 Deprecated typedef for backward compatibility. More...
 
typedef TxIParallelCore regina::NTxIParallelCore
 Deprecated typedef for backward compatibility. More...
 

Functions

virtual regina::AugTriSolidTorus::~AugTriSolidTorus ()
 Destroys this augmented solid torus; note that the corresponding triangular and layered solid tori will also be destroyed. More...
 
AugTriSolidTorusregina::AugTriSolidTorus::clone () const
 Returns a newly created clone of this structure. More...
 
const TriSolidTorusregina::AugTriSolidTorus::core () const
 Returns the triangular solid torus at the core of this triangulation. More...
 
const LayeredSolidTorusregina::AugTriSolidTorus::augTorus (int annulus) const
 Returns the layered solid torus attached to the requested annulus on the boundary of the core triangular solid torus. More...
 
Perm< 4 > regina::AugTriSolidTorus::edgeGroupRoles (int annulus) const
 Returns a permutation describing the role played by each top level edge group of the layered solid torus glued to the requested annulus of the core triangular solid torus. More...
 
unsigned long regina::AugTriSolidTorus::chainLength () const
 Returns the number of tetrahedra in the layered chain linking two of the boundary annuli of the core triangular solid torus. More...
 
int regina::AugTriSolidTorus::chainType () const
 Returns the way in which a layered chain links two of the boundary annuli of the core triangular solid torus. More...
 
int regina::AugTriSolidTorus::torusAnnulus () const
 Returns the single boundary annulus of the core triangular solid torus to which a layered solid torus is attached. More...
 
bool regina::AugTriSolidTorus::hasLayeredChain () const
 Determines whether the core triangular solid torus has two of its boundary annuli linked by a layered chain as described in the general class notes. More...
 
static AugTriSolidTorusregina::AugTriSolidTorus::isAugTriSolidTorus (const Component< 3 > *comp)
 Determines if the given triangulation component is an augmented triangular solid torus. More...
 
Manifoldregina::AugTriSolidTorus::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
std::ostream & regina::AugTriSolidTorus::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::AugTriSolidTorus::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::AugTriSolidTorus::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
 regina::BlockedSFS::~BlockedSFS ()
 Destroys this structure and its constituent components. More...
 
const SatRegionregina::BlockedSFS::region () const
 Returns details of the single saturated region that fills this triangulation. More...
 
bool regina::BlockedSFS::isPluggedIBundle (std::string &name) const
 Determines whether this triangulation is a plugged thin I-bundle or a plugged thick I-bundle. More...
 
Manifoldregina::BlockedSFS::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
std::ostream & regina::BlockedSFS::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::BlockedSFS::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::BlockedSFS::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
static BlockedSFSregina::BlockedSFS::isBlockedSFS (Triangulation< 3 > *tri)
 Determines if the given triangulation is a blocked Seifert fibred space. More...
 
 regina::BlockedSFSLoop::~BlockedSFSLoop ()
 Destroys this structure and its constituent components. More...
 
const SatRegionregina::BlockedSFSLoop::region () const
 Returns details of the saturated region from which this triangulation is formed. More...
 
const Matrix2regina::BlockedSFSLoop::matchingReln () const
 Returns the matrix describing how the two torus boundaries of the saturated region are joined. More...
 
Manifoldregina::BlockedSFSLoop::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
std::ostream & regina::BlockedSFSLoop::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::BlockedSFSLoop::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::BlockedSFSLoop::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
static BlockedSFSLoopregina::BlockedSFSLoop::isBlockedSFSLoop (Triangulation< 3 > *tri)
 Determines if the given triangulation is a blocked Seifert fibred space with identified boundaries, as described by this class. More...
 
 regina::BlockedSFSPair::~BlockedSFSPair ()
 Destroys this structure and its constituent components. More...
 
const SatRegionregina::BlockedSFSPair::region (int which) const
 Returns details of one of the two bounded saturated regions that form this triangulation. More...
 
const Matrix2regina::BlockedSFSPair::matchingReln () const
 Returns the matrix describing how the two saturated region boundaries are joined. More...
 
Manifoldregina::BlockedSFSPair::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
std::ostream & regina::BlockedSFSPair::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::BlockedSFSPair::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::BlockedSFSPair::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
static BlockedSFSPairregina::BlockedSFSPair::isBlockedSFSPair (Triangulation< 3 > *tri)
 Determines if the given triangulation is a blocked pair of Seifert fibred spaces, as described by this class. More...
 
 regina::BlockedSFSTriple::~BlockedSFSTriple ()
 Destroys this structure and its constituent components. More...
 
const SatRegionregina::BlockedSFSTriple::end (int which) const
 Returns details of the requested end region, as described in the class notes above. More...
 
const SatRegionregina::BlockedSFSTriple::centre () const
 Returns details of the central saturated region, as described in the class notes above. More...
 
const Matrix2regina::BlockedSFSTriple::matchingReln (int which) const
 Returns the matrix describing how the given end region is joined to the central region. More...
 
Manifoldregina::BlockedSFSTriple::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
std::ostream & regina::BlockedSFSTriple::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::BlockedSFSTriple::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::BlockedSFSTriple::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
static BlockedSFSTripleregina::BlockedSFSTriple::isBlockedSFSTriple (Triangulation< 3 > *tri)
 Determines if the given triangulation is a blocked sequence of three Seifert fibred spaces, as described in the class notes above. More...
 
virtual regina::L31Pillow::~L31Pillow ()
 Destroys this structure. More...
 
L31Pillowregina::L31Pillow::clone () const
 Returns a newly created clone of this structure. More...
 
Tetrahedron< 3 > * regina::L31Pillow::tetrahedron (int whichTet) const
 Returns one of the two tetrahedra involved in this structure. More...
 
unsigned regina::L31Pillow::interiorVertex (int whichTet) const
 Returns the vertex number of the given tetrahedron corresponding to the degree three vertex in the interior of the triangular pillow. More...
 
static L31Pillowregina::L31Pillow::isL31Pillow (const Component< 3 > *comp)
 Determines if the given triangulation component is a triangular pillow L(3,1). More...
 
Manifoldregina::L31Pillow::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::L31Pillow::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::L31Pillow::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::L31Pillow::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::L31Pillow::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
 regina::LayeredChain::LayeredChain (Tetrahedron< 3 > *tet, Perm< 4 > vertexRoles)
 Creates a new layered chain containing only the given tetrahedron. More...
 
 regina::LayeredChain::LayeredChain (const LayeredChain &cloneMe)=default
 Creates a new layered chain that is a clone of the given structure. More...
 
virtual regina::LayeredChain::~LayeredChain ()
 Destroys this layered chain. More...
 
Tetrahedron< 3 > * regina::LayeredChain::bottom () const
 Returns the bottom tetrahedron of this layered chain. More...
 
Tetrahedron< 3 > * regina::LayeredChain::top () const
 Returns the top tetrahedron of this layered chain. More...
 
unsigned long regina::LayeredChain::index () const
 Returns the number of tetrahedra in this layered chain. More...
 
Perm< 4 > regina::LayeredChain::bottomVertexRoles () const
 Returns a permutation represeting the role that each vertex of the bottom tetrahedron plays in the layered chain. More...
 
Perm< 4 > regina::LayeredChain::topVertexRoles () const
 Returns a permutation represeting the role that each vertex of the top tetrahedron plays in the layered chain. More...
 
bool regina::LayeredChain::extendAbove ()
 Checks to see whether this layered chain can be extended to include the tetrahedron above the top tetrahedron (and still remain a layered chain). More...
 
bool regina::LayeredChain::extendBelow ()
 Checks to see whether this layered chain can be extended to include the tetrahedron below the bottom tetrahedron (and still remain a layered chain). More...
 
bool regina::LayeredChain::extendMaximal ()
 Extends this layered chain to a maximal length layered chain. More...
 
void regina::LayeredChain::reverse ()
 Reverses this layered chain so the top tetrahedron becomes the bottom and vice versa. More...
 
void regina::LayeredChain::invert ()
 Inverts this layered chain so the upper hinge becomes the lower and vice versa. More...
 
Manifoldregina::LayeredChain::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::LayeredChain::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::LayeredChain::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::LayeredChain::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::LayeredChain::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
virtual regina::LayeredChainPair::~LayeredChainPair ()
 Destroys this layered chain pair. More...
 
LayeredChainPairregina::LayeredChainPair::clone () const
 Returns a newly created clone of this structure. More...
 
const LayeredChainregina::LayeredChainPair::chain (int which) const
 Returns the requested layered chain used to form this structure. More...
 
static LayeredChainPairregina::LayeredChainPair::isLayeredChainPair (const Component< 3 > *comp)
 Determines if the given triangulation component is a layered chain pair. More...
 
Manifoldregina::LayeredChainPair::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::LayeredChainPair::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::LayeredChainPair::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::LayeredChainPair::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::LayeredChainPair::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
virtual regina::LayeredLensSpace::~LayeredLensSpace ()
 Destroys this lens space; note that the corresponding layered solid torus will also be destroyed. More...
 
LayeredLensSpaceregina::LayeredLensSpace::clone () const
 Returns a newly created clone of this structure. More...
 
unsigned long regina::LayeredLensSpace::p () const
 Returns the first parameter p of this lens space L(p,q). More...
 
unsigned long regina::LayeredLensSpace::q () const
 Returns the second parameter q of this lens space L(p,q). More...
 
const LayeredSolidTorusregina::LayeredLensSpace::torus () const
 Returns the layered solid torus to which the mobius strip is glued. More...
 
int regina::LayeredLensSpace::mobiusBoundaryGroup () const
 Determines which edge of the layered solid torus is glued to the boundary of the mobius strip (i.e., the weight 2 edge of the degenerate (2,1,1) layered solid torus). More...
 
bool regina::LayeredLensSpace::isSnapped () const
 Determines if the layered solid torus that forms the basis for this lens space is snapped shut (folded closed without a twist). More...
 
bool regina::LayeredLensSpace::isTwisted () const
 Determines if the layered solid torus that forms the basis for this lens space is twisted shut (folded closed with a twist). More...
 
static LayeredLensSpaceregina::LayeredLensSpace::isLayeredLensSpace (const Component< 3 > *comp)
 Determines if the given triangulation component is a layered lens space. More...
 
Manifoldregina::LayeredLensSpace::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::LayeredLensSpace::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::LayeredLensSpace::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::LayeredLensSpace::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::LayeredLensSpace::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
virtual regina::LayeredLoop::~LayeredLoop ()
 Destroys this layered loop. More...
 
LayeredLoopregina::LayeredLoop::clone () const
 Returns a newly created clone of this structure. More...
 
unsigned long regina::LayeredLoop::length () const
 Returns the length of this layered loop. More...
 
bool regina::LayeredLoop::isTwisted () const
 Determines if this layered loop contains a twist. More...
 
Edge< 3 > * regina::LayeredLoop::hinge (int which) const
 Returns the requested hinge edge of this layered loop. More...
 
static LayeredLoopregina::LayeredLoop::isLayeredLoop (const Component< 3 > *comp)
 Determines if the given triangulation component is a layered loop. More...
 
Manifoldregina::LayeredLoop::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::LayeredLoop::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::LayeredLoop::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::LayeredLoop::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::LayeredLoop::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
LayeredSolidTorusregina::LayeredSolidTorus::clone () const
 Returns a newly created clone of this structure. More...
 
size_t regina::LayeredSolidTorus::size () const
 Returns the number of tetrahedra in this layered solid torus. More...
 
Tetrahedron< 3 > * regina::LayeredSolidTorus::base () const
 Returns the tetrahedron that is glued to itself at the base of this layered solid torus. More...
 
int regina::LayeredSolidTorus::baseEdge (int group, int index) const
 Returns the requested edge of the base tetrahedron belonging to the given group. More...
 
int regina::LayeredSolidTorus::baseEdgeGroup (int edge) const
 Returns the group that the given edge of the base tetrahedron belongs to. More...
 
int regina::LayeredSolidTorus::baseFace (int index) const
 Returns one of the two faces of the base tetrahedron that are glued to each other. More...
 
Tetrahedron< 3 > * regina::LayeredSolidTorus::topLevel () const
 Returns the top level tetrahedron in this layered solid torus. More...
 
unsigned long regina::LayeredSolidTorus::meridinalCuts (int group) const
 Returns the number of times the meridinal disc of the torus cuts the top level tetrahedron edges in the given group. More...
 
int regina::LayeredSolidTorus::topEdge (int group, int index) const
 Returns the requested edge of the top level tetrahedron belonging to the given group. More...
 
int regina::LayeredSolidTorus::topEdgeGroup (int edge) const
 Returns the group that the given edge of the top level tetrahedron belongs to. More...
 
int regina::LayeredSolidTorus::topFace (int index) const
 Returns one of the two faces of the top level tetrahedron that form the boundary of this layered solid torus. More...
 
Triangulation< 3 > * regina::LayeredSolidTorus::flatten (const Triangulation< 3 > *original, int mobiusBandBdry) const
 Flattens this layered solid torus to a Mobius band. More...
 
void regina::LayeredSolidTorus::transform (const Triangulation< 3 > *originalTri, const Isomorphism< 3 > *iso, Triangulation< 3 > *newTri)
 Adjusts the details of this layered solid torus according to the given isomorphism between triangulations. More...
 
static LayeredSolidTorusregina::LayeredSolidTorus::formsLayeredSolidTorusBase (Tetrahedron< 3 > *tet)
 Determines if the given tetrahedron forms the base of a layered solid torus within a triangulation. More...
 
static LayeredSolidTorusregina::LayeredSolidTorus::formsLayeredSolidTorusTop (Tetrahedron< 3 > *tet, unsigned topFace1, unsigned topFace2)
 Determines if the given tetrahedron forms the top level tetrahedron of a layered solid torus, with the two given faces of this tetrahedron representing the boundary of the layered solid torus. More...
 
static LayeredSolidTorusregina::LayeredSolidTorus::isLayeredSolidTorus (Component< 3 > *comp)
 Determines if the given triangulation component forms a layered solid torus in its entirity. More...
 
Manifoldregina::LayeredSolidTorus::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::LayeredSolidTorus::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::LayeredSolidTorus::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::LayeredSolidTorus::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::LayeredSolidTorus::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
virtual regina::LayeredTorusBundle::~LayeredTorusBundle ()
 Destroys this layered torus bundle and all of its internal components. More...
 
const TxICoreregina::LayeredTorusBundle::core () const
 Returns the T x I triangulation at the core of this layered surface bundle. More...
 
const Isomorphism< 3 > * regina::LayeredTorusBundle::coreIso () const
 Returns the isomorphism describing how the core T x I appears as a subcomplex of this layered surface bundle. More...
 
const Matrix2regina::LayeredTorusBundle::layeringReln () const
 Returns a 2-by-2 matrix describing how the layering of tetrahedra relates curves on the two torus boundaries of the core T x I. More...
 
static LayeredTorusBundleregina::LayeredTorusBundle::isLayeredTorusBundle (Triangulation< 3 > *tri)
 Determines if the given triangulation is a layered surface bundle. More...
 
Manifoldregina::LayeredTorusBundle::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::LayeredTorusBundle::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::LayeredTorusBundle::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::LayeredTorusBundle::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::LayeredTorusBundle::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
 regina::Layering::Layering (Tetrahedron< 3 > *bdry0, Perm< 4 > roles0, Tetrahedron< 3 > *bdry1, Perm< 4 > roles1)
 Creates a new trivial (zero-tetrahedron) layering upon the given boundary. More...
 
unsigned long regina::Layering::size () const
 Returns the number of individual tetrahedra that have been layered onto the original boundary, according to the data stored in this structure. More...
 
Tetrahedron< 3 > * regina::Layering::oldBoundaryTet (unsigned which) const
 Returns the tetrahedra that provide the old boundary triangles. More...
 
Perm< 4 > regina::Layering::oldBoundaryRoles (unsigned which) const
 Returns the permutations that describe the old boundary triangles. More...
 
Tetrahedron< 3 > * regina::Layering::newBoundaryTet (unsigned which) const
 Returns the tetrahedra that provide the new boundary triangles. More...
 
Perm< 4 > regina::Layering::newBoundaryRoles (unsigned which) const
 Returns the permutations that describe the new boundary triangles. More...
 
const Matrix2regina::Layering::boundaryReln () const
 Returns a 2-by-2 matrix describing the relationship between curves on the old and new boundary tori. More...
 
bool regina::Layering::extendOne ()
 Examines whether a single additional tetrahedron has been layered upon the current new boundary. More...
 
unsigned long regina::Layering::extend ()
 Examines whether one or more additional tetrahedra have been layered upon the current new boundary. More...
 
bool regina::Layering::matchesTop (Tetrahedron< 3 > *upperBdry0, Perm< 4 > upperRoles0, Tetrahedron< 3 > *upperBdry1, Perm< 4 > upperRoles1, Matrix2 &upperReln) const
 Determines whether the new torus boundary of this structure is identified with the given torus boundary. More...
 
 regina::Layering::Layering (const Layering &)=delete
 
Layeringregina::Layering::operator= (const Layering &)=delete
 
PillowTwoSphereregina::PillowTwoSphere::clone () const
 Returns a newly created clone of this structure. More...
 
Triangle< 3 > * regina::PillowTwoSphere::triangle (int index) const
 Returns one of the two triangles whose boundaries are joined. More...
 
Perm< 4 > regina::PillowTwoSphere::triangleMapping () const
 Returns a permutation describing how the boundaries of the two triangles are joined. More...
 
static PillowTwoSphereregina::PillowTwoSphere::formsPillowTwoSphere (Triangle< 3 > *tri1, Triangle< 3 > *tri2)
 Determines if the two given triangles together form a pillow 2-sphere. More...
 
void regina::PillowTwoSphere::writeTextShort (std::ostream &out) const
 Writes a short text representation of this object to the given output stream. More...
 
 regina::PillowTwoSphere::PillowTwoSphere (const PillowTwoSphere &)=delete
 
PillowTwoSphereregina::PillowTwoSphere::operator= (const PillowTwoSphere &)=delete
 
 regina::PluggedTorusBundle::~PluggedTorusBundle ()
 Destroys this structure and its constituent components. More...
 
const TxICoreregina::PluggedTorusBundle::bundle () const
 Returns an isomorphic copy of the thin I-bundle that forms part of this triangulation. More...
 
const Isomorphism< 3 > & regina::PluggedTorusBundle::bundleIso () const
 Returns an isomorphism describing how the thin I-bundle forms a subcomplex of this triangulation. More...
 
const SatRegionregina::PluggedTorusBundle::region () const
 Returns the saturated region that forms part of this triangulation. More...
 
const Matrix2regina::PluggedTorusBundle::matchingReln () const
 Returns the matrix describing how the two torus boundaries of the saturated region are joined by the thin I-bundle and layerings. More...
 
Manifoldregina::PluggedTorusBundle::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
std::ostream & regina::PluggedTorusBundle::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::PluggedTorusBundle::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::PluggedTorusBundle::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
static PluggedTorusBundleregina::PluggedTorusBundle::isPluggedTorusBundle (Triangulation< 3 > *tri)
 Determines if the given triangulation is a saturated region joined to a thin I-bundle via optional layerings, as described in the class notes above. More...
 
virtual regina::PlugTriSolidTorus::~PlugTriSolidTorus ()
 Destroys this plugged solid torus; note that the corresponding triangular solid torus and layered chains will also be destroyed. More...
 
PlugTriSolidTorusregina::PlugTriSolidTorus::clone () const
 Returns a newly created clone of this structure. More...
 
const TriSolidTorusregina::PlugTriSolidTorus::core () const
 Returns the triangular solid torus at the core of this triangulation. More...
 
const LayeredChainregina::PlugTriSolidTorus::chain (int annulus) const
 Returns the layered chain attached to the requested annulus on the boundary of the core triangular solid torus. More...
 
int regina::PlugTriSolidTorus::chainType (int annulus) const
 Returns the way in which a layered chain is attached to the requested annulus on the boundary of the core triangular solid torus. More...
 
int regina::PlugTriSolidTorus::equatorType () const
 Returns which types of edges form the equator of the plug. More...
 
static PlugTriSolidTorusregina::PlugTriSolidTorus::isPlugTriSolidTorus (Component< 3 > *comp)
 Determines if the given triangulation component is a plugged triangular solid torus. More...
 
Manifoldregina::PlugTriSolidTorus::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
std::ostream & regina::PlugTriSolidTorus::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::PlugTriSolidTorus::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::PlugTriSolidTorus::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
 regina::SatAnnulus::SatAnnulus ()
 Creates a new uninitialised structure. More...
 
 regina::SatAnnulus::SatAnnulus (const SatAnnulus &cloneMe)
 Creates a clone of the given structure. More...
 
 regina::SatAnnulus::SatAnnulus (Tetrahedron< 3 > *t0, Perm< 4 > r0, Tetrahedron< 3 > *t1, Perm< 4 > r1)
 Creates a new structure initialised to the given values. More...
 
SatAnnulusregina::SatAnnulus::operator= (const SatAnnulus &cloneMe)
 Makes this equal to a clone of the given structure. More...
 
bool regina::SatAnnulus::operator== (const SatAnnulus &other) const
 Determines whether or not this and the given structure describe the same annulus with the same representation. More...
 
bool regina::SatAnnulus::operator!= (const SatAnnulus &other) const
 Determines whether or not this and the given structure describe the same annulus with the same representation. More...
 
unsigned regina::SatAnnulus::meetsBoundary () const
 Determines how many triangles of this annulus lie on the boundary of the triangulation. More...
 
void regina::SatAnnulus::switchSides ()
 Converts this into a representation of the same annulus from the other side. More...
 
SatAnnulus regina::SatAnnulus::otherSide () const
 Returns a representation of the same annulus from the other side. More...
 
void regina::SatAnnulus::reflectVertical ()
 Reverses the direction of the vertical fibres in this annulus representation. More...
 
SatAnnulus regina::SatAnnulus::verticalReflection () const
 Returns a representation of this annulus in which the vertical direction of the fibres has been reversed. More...
 
void regina::SatAnnulus::reflectHorizontal ()
 Performs a left-to-right reflection of this annulus representation. More...
 
SatAnnulus regina::SatAnnulus::horizontalReflection () const
 Returns a left-to-right reflected representation of this annulus. More...
 
void regina::SatAnnulus::rotateHalfTurn ()
 Rotates the representation of this annulus by 180 degrees. More...
 
SatAnnulus regina::SatAnnulus::halfTurnRotation () const
 Returns a 180 degree rotated representation of this annulus. More...
 
bool regina::SatAnnulus::isAdjacent (const SatAnnulus &other, bool *refVert, bool *refHoriz) const
 Determines whether this and the given annulus are adjacent, possibly modulo vertical or horizontal reflections. More...
 
bool regina::SatAnnulus::isJoined (const SatAnnulus &other, Matrix2 &matching) const
 Determines whether this and the given annulus are joined in some form, even if the fibres on each annulus are not consistent. More...
 
bool regina::SatAnnulus::isTwoSidedTorus () const
 Determines whether this annulus has its boundaries identified to form an embedded two-sided torus within the surrounding triangulation. More...
 
void regina::SatAnnulus::transform (const Triangulation< 3 > *originalTri, const Isomorphism< 3 > *iso, Triangulation< 3 > *newTri)
 Adjusts this annulus representation according to the given isomorphism between triangulations. More...
 
SatAnnulus regina::SatAnnulus::image (const Triangulation< 3 > *originalTri, const Isomorphism< 3 > *iso, Triangulation< 3 > *newTri) const
 Returns the image of this annulus representation under the given isomorphism between triangulations. More...
 
void regina::SatAnnulus::attachLST (Triangulation< 3 > *tri, long alpha, long beta) const
 Attaches a layered solid torus to the this saturated annulus. More...
 
 regina::SatBlock::SatBlock (const SatBlock &cloneMe)
 Creates a new clone of the given block. More...
 
virtual regina::SatBlock::~SatBlock ()
 Destroys all internal arrays. More...
 
virtual SatBlockregina::SatBlock::clone () const =0
 Returns a newly created clone of this saturated block structure. More...
 
unsigned regina::SatBlock::nAnnuli () const
 Returns the number of annuli on the boundary of this saturated block. More...
 
const SatAnnulusregina::SatBlock::annulus (unsigned which) const
 Returns details of the requested annulus on the boundary of this saturated block. More...
 
bool regina::SatBlock::twistedBoundary () const
 Is the ring of boundary annuli twisted to form a long Mobius strip? More...
 
bool regina::SatBlock::hasAdjacentBlock (unsigned whichAnnulus) const
 Returns whether there is another saturated block listed as being adjacent to the given boundary annulus of this block. More...
 
SatBlockregina::SatBlock::adjacentBlock (unsigned whichAnnulus) const
 Returns the saturated block listed as being adjacent to the given boundary annulus of this block. More...
 
unsigned regina::SatBlock::adjacentAnnulus (unsigned whichAnnulus) const
 Returns which specific annulus of the adjacent block is listed as being adjacent to the given boundary annulus of this block. More...
 
bool regina::SatBlock::adjacentReflected (unsigned whichAnnulus) const
 Returns whether the adjacency along the given boundary annulus of this block is reflected. More...
 
bool regina::SatBlock::adjacentBackwards (unsigned whichAnnulus) const
 Returns whether the adjacency along the given boundary annulus of this block is backwards. More...
 
void regina::SatBlock::setAdjacent (unsigned whichAnnulus, SatBlock *adjBlock, unsigned adjAnnulus, bool adjReflected, bool adjBackwards)
 Lists the given saturated block as being adjacent to the given boundary annulus of this block. More...
 
virtual void regina::SatBlock::adjustSFS (SFSpace &sfs, bool reflect) const =0
 Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
 
virtual void regina::SatBlock::transform (const Triangulation< 3 > *originalTri, const Isomorphism< 3 > *iso, Triangulation< 3 > *newTri)
 Adjusts the structure of this block according to the given isomorphism between triangulations. More...
 
void regina::SatBlock::nextBoundaryAnnulus (unsigned thisAnnulus, SatBlock *&nextBlock, unsigned &nextAnnulus, bool &refVert, bool &refHoriz, bool followPrev)
 Finds the next (or previous) boundary annulus around from this, treating all adjacent blocks as part of a single large saturated region. More...
 
std::string regina::SatBlock::abbr (bool tex=false) const
 Returns an abbreviated name or symbol for this block. More...
 
virtual void regina::SatBlock::writeAbbr (std::ostream &out, bool tex=false) const =0
 Writes an abbreviated name or symbol for this block to the given output stream. More...
 
bool regina::SatBlock::operator< (const SatBlock &compare) const
 Implements a consistent ordering of saturated blocks. More...
 
static SatBlockregina::SatBlock::isBlock (const SatAnnulus &annulus, TetList &avoidTets)
 Determines whether the given annulus is in fact a boundary annulus for a recognised type of saturated block. More...
 
virtual void regina::SatBlock::writeTextShort (std::ostream &out) const =0
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::SatBlock::writeTextLong (std::ostream &out) const
 Writes a detailed text representation of this object to the given output stream. More...
 
SatBlockregina::SatBlock::operator= (const SatBlock &)=delete
 
 regina::SatBlock::SatBlock (unsigned nAnnuli, bool twistedBoundary=false)
 Constructor for a block with the given number of annuli on the boundary. More...
 
static bool regina::SatBlock::isBad (Tetrahedron< 3 > *t, const TetList &list)
 Determines whether the given tetrahedron is contained within the given list. More...
 
template<class List >
static bool regina::SatBlock::isBad (Tetrahedron< 3 > *t, const List &list)
 Determines whether the given tetrahedron is contained within the given list. More...
 
static bool regina::SatBlock::notUnique (Tetrahedron< 3 > *test)
 Determines whether the given tetrahedron pointer is null. More...
 
static bool regina::SatBlock::notUnique (Tetrahedron< 3 > *test, Tetrahedron< 3 > *other1)
 Determines whether the given tetrahedron pointer is null or equal to another from the given list. More...
 
static bool regina::SatBlock::notUnique (Tetrahedron< 3 > *test, Tetrahedron< 3 > *other1, Tetrahedron< 3 > *other2)
 Determines whether the given tetrahedron pointer is null or equal to another from the given list. More...
 
static bool regina::SatBlock::notUnique (Tetrahedron< 3 > *test, Tetrahedron< 3 > *other1, Tetrahedron< 3 > *other2, Tetrahedron< 3 > *other3)
 Determines whether the given tetrahedron pointer is null or equal to another from the given list. More...
 
static bool regina::SatBlock::notUnique (Tetrahedron< 3 > *test, Tetrahedron< 3 > *other1, Tetrahedron< 3 > *other2, Tetrahedron< 3 > *other3, Tetrahedron< 3 > *other4)
 Determines whether the given tetrahedron pointer is null or equal to another from the given list. More...
 
 regina::SatBlockStarter::~SatBlockStarter ()
 Destroys both the internal triangulation and block structure. More...
 
const Triangulation< 3 > & regina::SatBlockStarter::triangulation () const
 Returns a reference to the triangulation of the saturated block. More...
 
const SatBlockregina::SatBlockStarter::block () const
 Returns details that describe the structure of the saturated block. More...
 
 regina::SatBlockStarter::SatBlockStarter (const SatBlockStarter &)=delete
 
SatBlockStarterregina::SatBlockStarter::operator= (const SatBlockStarter &)=delete
 
static iterator regina::SatBlockStarterSet::begin ()
 Returns an iterator pointing to the first block in the hard-coded list. More...
 
static iterator regina::SatBlockStarterSet::end ()
 Returns an iterator pointing past the end of the hard-coded list (i.e., just after the last item). More...
 
void regina::SatBlockStarterSet::initialise () override
 Fills this list with items. More...
 
virtual regina::SatBlockStarterSearcher::~SatBlockStarterSearcher ()
 Destroys this object and its internal structures. More...
 
void regina::SatBlockStarterSearcher::findStarterBlocks (Triangulation< 3 > *tri)
 Runs a search for every isomorphic embedding of every starter block from the global SatBlockStarterSet within the given triangulation. More...
 
 regina::SatBlockStarterSearcher::SatBlockStarterSearcher (const SatBlockStarterSearcher &)=delete
 
SatBlockStarterSearcherregina::SatBlockStarterSearcher::operator= (const SatBlockStarterSearcher &)=delete
 
 regina::SatBlockStarterSearcher::SatBlockStarterSearcher ()=default
 Default constructor, for use by subclasses. More...
 
virtual bool regina::SatBlockStarterSearcher::useStarterBlock (SatBlock *starter)=0
 Used by subclasses to process each starter block embedding that is found. More...
 
 regina::SatMobius::SatMobius (const SatMobius &cloneMe)=default
 Constructs a clone of the given block structure. More...
 
int regina::SatMobius::position () const
 Describes how the Mobius band is attached to the boundary annulus. More...
 
virtual SatBlockregina::SatMobius::clone () const override
 Returns a newly created clone of this saturated block structure. More...
 
virtual void regina::SatMobius::adjustSFS (SFSpace &sfs, bool reflect) const override
 Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
 
virtual void regina::SatMobius::writeTextShort (std::ostream &out) const override
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::SatMobius::writeAbbr (std::ostream &out, bool tex=false) const override
 Writes an abbreviated name or symbol for this block to the given output stream. More...
 
static SatMobiusregina::SatMobius::isBlockMobius (const SatAnnulus &annulus, TetList &avoidTets)
 Determines whether the given annulus is a boundary annulus for a block of this type (Mobius band). More...
 
 regina::SatLST::SatLST (const SatLST &cloneMe)
 Constructs a clone of the given block structure. More...
 
 regina::SatLST::~SatLST ()
 Destroys this structure and its internal components. More...
 
const LayeredSolidTorusregina::SatLST::lst () const
 Returns details of the layered solid torus that this block represents. More...
 
Perm< 4 > regina::SatLST::roles () const
 Describes how the layered solid torus is attached to the boundary annulus. More...
 
virtual SatBlockregina::SatLST::clone () const override
 Returns a newly created clone of this saturated block structure. More...
 
virtual void regina::SatLST::adjustSFS (SFSpace &sfs, bool reflect) const override
 Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
 
virtual void regina::SatLST::transform (const Triangulation< 3 > *originalTri, const Isomorphism< 3 > *iso, Triangulation< 3 > *newTri) override
 Adjusts the structure of this block according to the given isomorphism between triangulations. More...
 
virtual void regina::SatLST::writeTextShort (std::ostream &out) const override
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::SatLST::writeAbbr (std::ostream &out, bool tex=false) const override
 Writes an abbreviated name or symbol for this block to the given output stream. More...
 
static SatLSTregina::SatLST::isBlockLST (const SatAnnulus &annulus, TetList &avoidTets)
 Determines whether the given annulus is a boundary annulus for a block of this type (layered solid torus). More...
 
 regina::SatTriPrism::SatTriPrism (const SatTriPrism &cloneMe)=default
 Constructs a clone of the given block structure. More...
 
bool regina::SatTriPrism::isMajor () const
 Is this prism of major type or minor type? See the class notes for further details. More...
 
virtual SatBlockregina::SatTriPrism::clone () const override
 Returns a newly created clone of this saturated block structure. More...
 
virtual void regina::SatTriPrism::adjustSFS (SFSpace &sfs, bool reflect) const override
 Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
 
virtual void regina::SatTriPrism::writeTextShort (std::ostream &out) const override
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::SatTriPrism::writeAbbr (std::ostream &out, bool tex=false) const override
 Writes an abbreviated name or symbol for this block to the given output stream. More...
 
static SatTriPrismregina::SatTriPrism::isBlockTriPrism (const SatAnnulus &annulus, TetList &avoidTets)
 Determines whether the given annulus is a boundary annulus for a block of this type (triangular prism). More...
 
static SatTriPrismregina::SatTriPrism::insertBlock (Triangulation< 3 > &tri, bool major)
 Inserts a new copy of a triangular prism block into the given triangulation, and returns the corresponding block structure. More...
 
 regina::SatTriPrism::SatTriPrism (bool major)
 Constructs a partially initialised block. More...
 
 regina::SatCube::SatCube (const SatCube &cloneMe)=default
 Constructs a clone of the given block structure. More...
 
virtual SatBlockregina::SatCube::clone () const override
 Returns a newly created clone of this saturated block structure. More...
 
virtual void regina::SatCube::adjustSFS (SFSpace &sfs, bool reflect) const override
 Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
 
virtual void regina::SatCube::writeTextShort (std::ostream &out) const override
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::SatCube::writeAbbr (std::ostream &out, bool tex=false) const override
 Writes an abbreviated name or symbol for this block to the given output stream. More...
 
static SatCuberegina::SatCube::isBlockCube (const SatAnnulus &annulus, TetList &avoidTets)
 Determines whether the given annulus is a boundary annulus for a block of this type (cube). More...
 
static SatCuberegina::SatCube::insertBlock (Triangulation< 3 > &tri)
 Inserts a new copy of a cube block into the given triangulation, and returns the corresponding block structure. More...
 
 regina::SatCube::SatCube ()
 Constructs an uninitialised block. More...
 
 regina::SatReflectorStrip::SatReflectorStrip (const SatReflectorStrip &cloneMe)=default
 Constructs a clone of the given block structure. More...
 
virtual SatBlockregina::SatReflectorStrip::clone () const override
 Returns a newly created clone of this saturated block structure. More...
 
virtual void regina::SatReflectorStrip::adjustSFS (SFSpace &sfs, bool reflect) const override
 Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
 
virtual void regina::SatReflectorStrip::writeTextShort (std::ostream &out) const override
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::SatReflectorStrip::writeAbbr (std::ostream &out, bool tex=false) const override
 Writes an abbreviated name or symbol for this block to the given output stream. More...
 
static SatReflectorStripregina::SatReflectorStrip::isBlockReflectorStrip (const SatAnnulus &annulus, TetList &avoidTets)
 Determines whether the given annulus is a boundary annulus for a block of this type (reflector strip). More...
 
static SatReflectorStripregina::SatReflectorStrip::insertBlock (Triangulation< 3 > &tri, unsigned length, bool twisted)
 Inserts a new reflector strip into the given triangulation, and returns the corresponding block structure. More...
 
 regina::SatReflectorStrip::SatReflectorStrip (unsigned length, bool twisted)
 Constructs a partially initialised block of the given length. More...
 
 regina::SatLayering::SatLayering (const SatLayering &cloneMe)=default
 Constructs a clone of the given block structure. More...
 
bool regina::SatLayering::overHorizontal () const
 Does this describe a layering over the horizontal edge of the boundary annulus, or a layering over the diagonal edge? More...
 
virtual SatBlockregina::SatLayering::clone () const override
 Returns a newly created clone of this saturated block structure. More...
 
virtual void regina::SatLayering::adjustSFS (SFSpace &sfs, bool reflect) const override
 Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
 
virtual void regina::SatLayering::writeTextShort (std::ostream &out) const override
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::SatLayering::writeAbbr (std::ostream &out, bool tex=false) const override
 Writes an abbreviated name or symbol for this block to the given output stream. More...
 
static SatLayeringregina::SatLayering::isBlockLayering (const SatAnnulus &annulus, TetList &avoidTets)
 Determines whether the given annulus is a boundary annulus for a block of this type (single layering). More...
 
 regina::SatLayering::SatLayering (bool overHorizontal)
 Constructs a partially initialised block. More...
 
 regina::SatBlockSpec::SatBlockSpec ()
 Creates a new structure that is completely uninitialised. More...
 
 regina::SatBlockSpec::SatBlockSpec (SatBlock *useBlock, bool useRefVert, bool useRefHoriz)
 Creates a new structure that is initialised to the given set of values. More...
 
 regina::SatBlockSpec::SatBlockSpec (const SatBlockSpec &)=default
 Creates a new structure that is a clone of the given structure. More...
 
bool regina::SatBlockSpec::operator== (const SatBlockSpec &other) const
 Determines whether this and the given structure contain identical information. More...
 
bool regina::SatBlockSpec::operator!= (const SatBlockSpec &other) const
 Determines whether this and the given structure contain different information. More...
 
SatBlockSpecregina::SatBlockSpec::operator= (const SatBlockSpec &)=default
 Sets this to be a clone of the given structure. More...
 
 regina::SatRegion::SatRegion (SatBlock *starter)
 Constructs a new region containing just the given block. More...
 
 regina::SatRegion::~SatRegion ()
 Destroys this structure and all of its internal data, including the individual blocks that make up this region. More...
 
unsigned long regina::SatRegion::numberOfBlocks () const
 Returns the number of saturated blocks that come together to form this saturated region. More...
 
const SatBlockSpecregina::SatRegion::block (unsigned long which) const
 Returns details of the requested saturated block within this region. More...
 
long regina::SatRegion::blockIndex (const SatBlock *block) const
 Returns the index of the given block within this region. More...
 
unsigned long regina::SatRegion::numberOfBoundaryAnnuli () const
 Returns the number of saturated annuli that together form the boundary components of this region. More...
 
const SatAnnulusregina::SatRegion::boundaryAnnulus (unsigned long which, bool &blockRefVert, bool &blockRefHoriz) const
 Returns the requested saturated annulus on the boundary of this region. More...
 
void regina::SatRegion::boundaryAnnulus (unsigned long which, SatBlock *&block, unsigned &annulus, bool &blockRefVert, bool &blockRefHoriz) const
 Returns fine details of the requested saturated annulus on the boundary of this region. More...
 
SFSpaceregina::SatRegion::createSFS (bool reflect) const
 Returns details of the Seifert fibred space represented by this region. More...
 
bool regina::SatRegion::expand (SatBlock::TetList &avoidTets, bool stopIfIncomplete=false)
 Expands this region as far as possible within the overall triangulation. More...
 
void regina::SatRegion::writeBlockAbbrs (std::ostream &out, bool tex=false) const
 Writes an abbreviated list of blocks within this region to the given output stream. More...
 
void regina::SatRegion::writeDetail (std::ostream &out, const std::string &title) const
 Writes details of the composition of this region to the given output stream. More...
 
void regina::SatRegion::writeTextShort (std::ostream &out) const
 Writes a short text representation of this object to the given output stream. More...
 
void regina::SatRegion::writeTextLong (std::ostream &out) const
 Writes a detailed text representation of this object to the given output stream. More...
 
 regina::SatRegion::SatRegion (const SatRegion &)=delete
 
SatRegionregina::SatRegion::operator= (const SatRegion &)=delete
 
SnapPeaCensusTriregina::SnapPeaCensusTri::clone () const
 Returns a newly created clone of this structure. More...
 
char regina::SnapPeaCensusTri::section () const
 Returns the section of the SnapPea census to which this triangulation belongs. More...
 
unsigned long regina::SnapPeaCensusTri::index () const
 Returns the index of this triangulation within its particular section of the SnapPea census. More...
 
bool regina::SnapPeaCensusTri::operator== (const SnapPeaCensusTri &compare) const
 Determines whether this and the given structure represent the same triangulation from the SnapPea census. More...
 
bool regina::SnapPeaCensusTri::operator!= (const SnapPeaCensusTri &compare) const
 Determines whether this and the given structure represent different triangulations from the SnapPea census. More...
 
static SnapPeaCensusTriregina::SnapPeaCensusTri::isSmallSnapPeaCensusTri (const Component< 3 > *comp)
 Determines if the given triangulation component is one of the smallest SnapPea census triangulations. More...
 
Manifoldregina::SnapPeaCensusTri::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::SnapPeaCensusTri::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::SnapPeaCensusTri::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::SnapPeaCensusTri::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
SnappedBallregina::SnappedBall::clone () const
 Returns a newly created clone of this structure. More...
 
Tetrahedron< 3 > * regina::SnappedBall::tetrahedron () const
 Returns the tetrahedron that forms this snapped ball. More...
 
int regina::SnappedBall::boundaryFace (int index) const
 Returns one of the two tetrahedron faces that forms the boundary of this snapped ball. More...
 
int regina::SnappedBall::internalFace (int index) const
 Returns one of the two tetrahedron faces internal to this snapped ball. More...
 
int regina::SnappedBall::equatorEdge () const
 Returns the edge that forms the equator of the boundary sphere of this ball. More...
 
int regina::SnappedBall::internalEdge () const
 Returns the edge internal to this snapped ball. More...
 
static SnappedBallregina::SnappedBall::formsSnappedBall (Tetrahedron< 3 > *tet)
 Determines if the given tetrahedron forms a snapped 3-ball within a triangulation. More...
 
Manifoldregina::SnappedBall::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::SnappedBall::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::SnappedBall::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::SnappedBall::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::SnappedBall::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
 regina::SnappedTwoSphere::~SnappedTwoSphere ()
 Destroys this snapped 2-sphere; note that the corresponding snapped 3-balls will also be destroyed. More...
 
SnappedTwoSphereregina::SnappedTwoSphere::clone () const
 Returns a newly created clone of this structure. More...
 
const SnappedBallregina::SnappedTwoSphere::snappedBall (int index) const
 Returns one of the two snapped 3-balls whose equators are joined. More...
 
static SnappedTwoSphereregina::SnappedTwoSphere::formsSnappedTwoSphere (Tetrahedron< 3 > *tet1, Tetrahedron< 3 > *tet2)
 Determines if the two given tetrahedra together form a snapped 2-sphere. More...
 
static SnappedTwoSphereregina::SnappedTwoSphere::formsSnappedTwoSphere (SnappedBall *ball1, SnappedBall *ball2)
 Determines if the two given snapped 3-balls together form a snapped 2-sphere. More...
 
void regina::SnappedTwoSphere::writeTextShort (std::ostream &out) const
 Writes a short text representation of this object to the given output stream. More...
 
 regina::SnappedTwoSphere::SnappedTwoSphere (const SnappedTwoSphere &)=delete
 
SnappedTwoSphereregina::SnappedTwoSphere::operator= (const SnappedTwoSphere &)=delete
 
virtual regina::SpiralSolidTorus::~SpiralSolidTorus ()
 Destroys this spiralled solid torus. More...
 
SpiralSolidTorusregina::SpiralSolidTorus::clone () const
 Returns a newly created clone of this structure. More...
 
size_t regina::SpiralSolidTorus::size () const
 Returns the number of tetrahedra in this spiralled solid torus. More...
 
Tetrahedron< 3 > * regina::SpiralSolidTorus::tetrahedron (size_t index) const
 Returns the requested tetrahedron in this spiralled solid torus. More...
 
Perm< 4 > regina::SpiralSolidTorus::vertexRoles (size_t index) const
 Returns a permutation represeting the role that each vertex of the requested tetrahedron plays in the solid torus. More...
 
void regina::SpiralSolidTorus::reverse ()
 Reverses this spiralled solid torus. More...
 
void regina::SpiralSolidTorus::cycle (size_t k)
 Cycles this spiralled solid torus by the given number of tetrahedra. More...
 
bool regina::SpiralSolidTorus::makeCanonical (const Triangulation< 3 > *tri)
 Converts this spiralled solid torus into its canonical representation. More...
 
bool regina::SpiralSolidTorus::isCanonical (const Triangulation< 3 > *tri) const
 Determines whether this spiralled solid torus is in canonical form. More...
 
static SpiralSolidTorusregina::SpiralSolidTorus::formsSpiralSolidTorus (Tetrahedron< 3 > *tet, Perm< 4 > useVertexRoles)
 Determines if the given tetrahedron forms part of a spiralled solid torus with its vertices playing the given roles in the solid torus. More...
 
Manifoldregina::SpiralSolidTorus::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::SpiralSolidTorus::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::SpiralSolidTorus::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::SpiralSolidTorus::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::SpiralSolidTorus::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
virtual regina::StandardTriangulation::~StandardTriangulation ()
 A destructor that does nothing. More...
 
std::string regina::StandardTriangulation::name () const
 Returns the name of this specific triangulation as a human-readable string. More...
 
std::string regina::StandardTriangulation::TeXName () const
 Returns the name of this specific triangulation in TeX format. More...
 
virtual Manifoldregina::StandardTriangulation::manifold () const
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
virtual AbelianGroupregina::StandardTriangulation::homology () const
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
AbelianGroupregina::StandardTriangulation::homologyH1 () const
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
virtual std::ostream & regina::StandardTriangulation::writeName (std::ostream &out) const =0
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
virtual std::ostream & regina::StandardTriangulation::writeTeXName (std::ostream &out) const =0
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
virtual void regina::StandardTriangulation::writeTextShort (std::ostream &out) const
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::StandardTriangulation::writeTextLong (std::ostream &out) const
 Writes a detailed text representation of this object to the given output stream. More...
 
static StandardTriangulationregina::StandardTriangulation::isStandardTriangulation (Component< 3 > *component)
 Determines whether the given component represents one of the standard triangulations understood by Regina. More...
 
static StandardTriangulationregina::StandardTriangulation::isStandardTriangulation (Triangulation< 3 > *tri)
 Determines whether the given triangulation represents one of the standard triangulations understood by Regina. More...
 
StandardTriangulationregina::StandardTriangulation::operator= (const StandardTriangulation &)=delete
 
 regina::StandardTriangulation::StandardTriangulation ()=default
 Default constructor. More...
 
 regina::StandardTriangulation::StandardTriangulation (const StandardTriangulation &)=default
 Do-nothing copy constructor. More...
 
virtual regina::TriSolidTorus::~TriSolidTorus ()
 Destroys this solid torus. More...
 
TriSolidTorusregina::TriSolidTorus::clone () const
 Returns a newly created clone of this structure. More...
 
Tetrahedron< 3 > * regina::TriSolidTorus::tetrahedron (int index) const
 Returns the requested tetrahedron in this solid torus. More...
 
Perm< 4 > regina::TriSolidTorus::vertexRoles (int index) const
 Returns a permutation represeting the role that each vertex of the requested tetrahedron plays in the solid torus. More...
 
bool regina::TriSolidTorus::isAnnulusSelfIdentified (int index, Perm< 4 > *roleMap) const
 Determines whether the two triangles of the requested annulus are glued to each other. More...
 
unsigned long regina::TriSolidTorus::areAnnuliLinkedMajor (int otherAnnulus) const
 Determines whether the two given annuli are linked in a particular fashion by a layered chain. More...
 
unsigned long regina::TriSolidTorus::areAnnuliLinkedAxis (int otherAnnulus) const
 Determines whether the two given annuli are linked in a particular fashion by a layered chain. More...
 
static TriSolidTorusregina::TriSolidTorus::formsTriSolidTorus (Tetrahedron< 3 > *tet, Perm< 4 > useVertexRoles)
 Determines if the given tetrahedron forms part of a three-tetrahedron triangular solid torus with its vertices playing the given roles in the solid torus. More...
 
Manifoldregina::TriSolidTorus::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::TriSolidTorus::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::TriSolidTorus::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::TriSolidTorus::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::TriSolidTorus::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
TrivialTriregina::TrivialTri::clone () const
 Returns a newly created clone of this structure. More...
 
int regina::TrivialTri::type () const
 Returns the specific trivial triangulation being represented. More...
 
static TrivialTriregina::TrivialTri::isTrivialTriangulation (const Component< 3 > *comp)
 Determines if the given triangulation component is one of the trivial triangulations recognised by this class. More...
 
Manifoldregina::TrivialTri::manifold () const override
 Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
 
AbelianGroupregina::TrivialTri::homology () const override
 Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
 
std::ostream & regina::TrivialTri::writeName (std::ostream &out) const override
 Writes the name of this triangulation as a human-readable string to the given output stream. More...
 
std::ostream & regina::TrivialTri::writeTeXName (std::ostream &out) const override
 Writes the name of this triangulation in TeX format to the given output stream. More...
 
void regina::TrivialTri::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
virtual regina::TxICore::~TxICore ()
 Destroys this object. More...
 
const Triangulation< 3 > & regina::TxICore::core () const
 Returns a full copy of the T x I triangulation that this object describes. More...
 
unsigned regina::TxICore::bdryTet (unsigned whichBdry, unsigned whichTri) const
 Determines which tetrahedron provides the requested boundary triangle. More...
 
Perm< 4 > regina::TxICore::bdryRoles (unsigned whichBdry, unsigned whichTri) const
 Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles. More...
 
const Matrix2regina::TxICore::bdryReln (unsigned whichBdry) const
 Returns a 2-by-2 matrix describing the alpha and beta curves on a torus boundary in terms of specific tetrahedron edges. More...
 
const Matrix2regina::TxICore::parallelReln () const
 Returns a 2-by-2 matrix describing the parallel relationship between the upper and lower boundary curves. More...
 
std::string regina::TxICore::name () const
 Returns the name of this specific triangulation of T x I as a human-readable string. More...
 
std::string regina::TxICore::TeXName () const
 Returns the name of this specific triangulation of T x I in TeX format. More...
 
virtual std::ostream & regina::TxICore::writeName (std::ostream &out) const =0
 Writes the name of this specific triangulation of T x I to the given output stream. More...
 
virtual std::ostream & regina::TxICore::writeTeXName (std::ostream &out) const =0
 Writes the name of this specific triangulation of T x I in TeX format to the given output stream. More...
 
void regina::TxICore::writeTextShort (std::ostream &out) const
 Writes a short text representation of this object to the given output stream. More...
 
void regina::TxICore::writeTextLong (std::ostream &out) const
 Writes a detailed text representation of this object to the given output stream. More...
 
 regina::TxICore::TxICore (const TxICore &)=delete
 
TxICoreregina::TxICore::operator= (const TxICore &)=delete
 
 regina::TxICore::TxICore ()
 Default constructor that performs no initialisation. More...
 
 regina::TxIDiagonalCore::TxIDiagonalCore (unsigned long newSize, unsigned long newK)
 Creates a new T x I triangulation with the given parameters. More...
 
unsigned long regina::TxIDiagonalCore::size () const
 Returns the total number of tetrahedra in this T x I triangulation. More...
 
unsigned long regina::TxIDiagonalCore::k () const
 Returns the additional parameter k as described in the class notes. More...
 
std::ostream & regina::TxIDiagonalCore::writeName (std::ostream &out) const override
 Writes the name of this specific triangulation of T x I to the given output stream. More...
 
std::ostream & regina::TxIDiagonalCore::writeTeXName (std::ostream &out) const override
 Writes the name of this specific triangulation of T x I in TeX format to the given output stream. More...
 
 regina::TxIParallelCore::TxIParallelCore ()
 Creates a new copy of this T x I triangulation. More...
 
std::ostream & regina::TxIParallelCore::writeName (std::ostream &out) const override
 Writes the name of this specific triangulation of T x I to the given output stream. More...
 
std::ostream & regina::TxIParallelCore::writeTeXName (std::ostream &out) const override
 Writes the name of this specific triangulation of T x I in TeX format to the given output stream. More...
 

Variables

static const int regina::AugTriSolidTorus::CHAIN_NONE
 Indicates that this augmented triangular solid torus contains no layered chain. More...
 
static const int regina::AugTriSolidTorus::CHAIN_MAJOR
 Indicates that this augmented triangular solid torus contains a layered chain attached as described by TriSolidTorus::areAnnuliLinkedMajor(). More...
 
static const int regina::AugTriSolidTorus::CHAIN_AXIS
 Indicates that this augmented triangular solid torus contains a layered chain attached as described by TriSolidTorus::areAnnuliLinkedAxis(). More...
 
static const int regina::PlugTriSolidTorus::CHAIN_NONE
 Indicates an annulus on the triangular solid torus boundary with no attached layered chain. More...
 
static const int regina::PlugTriSolidTorus::CHAIN_MAJOR
 Indicates an annulus on the triangular solid torus boundary with an attached layered chain layered over the major edge of the annulus. More...
 
static const int regina::PlugTriSolidTorus::CHAIN_MINOR
 Indicates an annulus on the triangular solid torus boundary with an attached layered chain layered over the minor edge of the annulus. More...
 
static const int regina::PlugTriSolidTorus::EQUATOR_MAJOR
 Indicates that, if no layered chains were present, the equator of the plug would consist of major edges of the core triangular solid torus. More...
 
static const int regina::PlugTriSolidTorus::EQUATOR_MINOR
 Indicates that, if no layered chains were present, the equator of the plug would consist of minor edges of the core triangular solid torus. More...
 
Tetrahedron< 3 > * regina::SatAnnulus::tet [2]
 Describes which tetrahedra provide the first and second triangles. More...
 
Perm< 4 > regina::SatAnnulus::roles [2]
 Describes how the first and second triangles match up with individual tetrahedron vertices. More...
 
unsigned regina::SatBlock::nAnnuli_
 The number of boundary annuli. More...
 
SatAnnulusregina::SatBlock::annulus_
 Details of each boundary annulus, as seen from the inside of this saturated block. More...
 
bool regina::SatBlock::twistedBoundary_
 Is the ring of boundary annuli twisted to form a Mobius band? More...
 
SatBlock ** regina::SatBlock::adjBlock_
 The saturated block joined to each boundary annulus; this may be null if there is no adjacency or if this information is not known. More...
 
unsigned * regina::SatBlock::adjAnnulus_
 Describes which specific annulus of the adjacent saturated block is joined to each boundary annulus of this block. More...
 
bool * regina::SatBlock::adjReflected_
 Describes whether the adjacency for each boundary annulus is reflected (see the class notes above). More...
 
bool * regina::SatBlock::adjBackwards_
 Describes whether the adjacency for each boundary annulus is backwards (see the class notes above). More...
 
SatBlock::TetList regina::SatBlockStarterSearcher::usedTets
 Keeps track of which tetrahedra have used by the current embedding of the current starter block. More...
 
SatBlockregina::SatBlockSpec::block
 Details of the saturated block structure. More...
 
bool regina::SatBlockSpec::refVert
 Indicates whether the block is reflected vertically within the larger region. More...
 
bool regina::SatBlockSpec::refHoriz
 Indicates whether the block is reflected horizontally within the larger region. More...
 
static const char regina::SnapPeaCensusTri::SEC_5
 Represents the collection of triangulations formed from five or fewer tetrahedra (both orientable and non-orientable). More...
 
static const char regina::SnapPeaCensusTri::SEC_6_OR
 Represents the collection of orientable triangulations formed from six tetrahedra. More...
 
static const char regina::SnapPeaCensusTri::SEC_6_NOR
 Represents the collection of non-orientable triangulations formed from six tetrahedra. More...
 
static const char regina::SnapPeaCensusTri::SEC_7_OR
 Represents the collection of orientable triangulations formed from seven tetrahedra. More...
 
static const char regina::SnapPeaCensusTri::SEC_7_NOR
 Represents the collection of non-orientable triangulations formed from seven tetrahedra. More...
 
static const int regina::TrivialTri::SPHERE_4_VERTEX
 Represents the two-tetrahedron four-vertex triangulation of the 3-sphere. More...
 
static const int regina::TrivialTri::BALL_3_VERTEX
 Represents the one-tetrahedron three-vertex triangulation of the ball. More...
 
static const int regina::TrivialTri::BALL_4_VERTEX
 Represents the one-tetrahedron four-vertex triangulation of the ball. More...
 
static const int regina::TrivialTri::N2
 Represents the two-tetrahedron triangulation N(2) of the twisted 2-sphere bundle over the circle. More...
 
static const int regina::TrivialTri::N3_1
 Represents the three-tetrahedron triangulation N(3,1) of the projective plane bundle over the circle. More...
 
static const int regina::TrivialTri::N3_2
 Represents the three-tetrahedron triangulation N(3,2) of the projective plane bundle over the circle. More...
 
Triangulation< 3 > regina::TxICore::core_
 A full copy of the T x I triangulation that is described. More...
 
unsigned regina::TxICore::bdryTet_ [2][2]
 The tetrahedra that provide the upper and lower boundary triangles. More...
 
Perm< 4 > regina::TxICore::bdryRoles_ [2][2]
 Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles. More...
 
Matrix2 regina::TxICore::bdryReln_ [2]
 Expresses the alpha and beta curves for each torus boundary in terms of specific tetrahedron edges and vertices. More...
 
Matrix2 regina::TxICore::parallelReln_
 Expresses the lower alpha and beta curves in terms of the upper alpha and beta curves. More...
 

Friends

class regina::SatBlockStarter::SatBlockStarterSet
 
class regina::SnapPeaCensusTri::SnapPeaCensusManifold
 

Detailed Description

Standard triangulations and subcomplexes of triangulations whose structures are well-understood.

Typedef Documentation

◆ iterator

An iterator over the starter blocks in this list.

This operates as a forward iterator in a manner consistent with the standard C++ library.

◆ NAugTriSolidTorus

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NAugTriSolidTorus has now been renamed to AugTriSolidTorus.

◆ NBlockedSFS

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NBlockedSFS has now been renamed to BlockedSFS.

◆ NBlockedSFSLoop

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NBlockedSFSLoop has now been renamed to BlockedSFSLoop.

◆ NBlockedSFSPair

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NBlockedSFSPair has now been renamed to BlockedSFSPair.

◆ NBlockedSFSTriple

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NBlockedSFSTriple has now been renamed to BlockedSFSTriple.

◆ NL31Pillow

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NL31Pillow has now been renamed to L31Pillow.

◆ NLayeredChain

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NLayeredChain has now been renamed to LayeredChain.

◆ NLayeredChainPair

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NLayeredChainPair has now been renamed to LayeredChainPair.

◆ NLayeredLensSpace

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NLayeredLensSpace has now been renamed to LayeredLensSpace.

◆ NLayeredLoop

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NLayeredLoop has now been renamed to LayeredLoop.

◆ NLayeredSolidTorus

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NLayeredSolidTorus has now been renamed to LayeredSolidTorus.

◆ NLayeredTorusBundle

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NLayeredTorusBundle has now been renamed to LayeredTorusBundle.

◆ NLayering

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NLayering has now been renamed to * Layering.

◆ NPillowTwoSphere

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NPillowTwoSphere has now been renamed to PillowTwoSphere.

◆ NPluggedTorusBundle

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NPluggedTorusBundle has now been renamed to PluggedTorusBundle.

◆ NPlugTriSolidTorus

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NPlugTriSolidTorus has now been renamed to PlugTriSolidTorus.

◆ NSatAnnulus

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatAnnulus has now been renamed to SatAnnulus.

◆ NSatBlock

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatBlock has now been renamed to SatBlock.

◆ NSatBlockSpec

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatBlockSpec has now been renamed to SatBlockSpec.

◆ NSatBlockStarter

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatBlockStarter has now been renamed to SatBlockStarter.

◆ NSatBlockStarterSearcher

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatBlockStarterSearcher has now been renamed to SatBlockStarterSearcher.

◆ NSatBlockStarterSet

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatBlockStarterSet has now been renamed to SatBlockStarterSet.

◆ NSatCube

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatCube has now been renamed to SatCube.

◆ NSatLayering

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatLayering has now been renamed to SatLayering.

◆ NSatLST

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatLST has now been renamed to SatLST.

◆ NSatMobius

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatMobius has now been renamed to SatMobius.

◆ NSatReflectorStrip

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatReflectorStrip has now been renamed to SatReflectorStrip.

◆ NSatRegion

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatRegion has now been renamed to SatRegion.

◆ NSatTriPrism

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSatTriPrism has now been renamed to SatTriPrism.

◆ NSnapPeaCensusTri

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSnapPeaCensusTri has now been renamed to SnapPeaCensusTri.

◆ NSnappedBall

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSnappedBall has now been renamed to SnappedBall.

◆ NSnappedTwoSphere

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSnappedTwoSphere has now been renamed to SnappedTwoSphere.

◆ NSpiralSolidTorus

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NSpiralSolidTorus has now been renamed to SpiralSolidTorus.

◆ NStandardTriangulation

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NStandardTriangulation has now been renamed to StandardTriangulation.

◆ NTriSolidTorus

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NTriSolidTorus has now been renamed to TriSolidTorus.

◆ NTrivialTri

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NTrivialTri has now been renamed to TrivialTri.

◆ NTxICore

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NTxICore has now been renamed to TxICore.

◆ NTxIDiagonalCore

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NTxIDiagonalCore has now been renamed to TxIDiagonalCore.

◆ NTxIParallelCore

Deprecated typedef for backward compatibility.

This typedef will be removed in a future release of Regina.

Deprecated:
The class NTxIParallelCore has now been renamed to TxIParallelCore.

◆ TetList

typedef std::set<Tetrahedron<3>*> regina::SatBlock::TetList

The data structure used to store a list of tetrahedra that should not be examined by isBlock().

Function Documentation

◆ abbr()

std::string regina::SatBlock::abbr ( bool  tex = false) const

Returns an abbreviated name or symbol for this block.

This name will reflect the particular block type, but may not provide thorough details.

The name will be no more than a handful of characters long, and will not include a newline (or surrounding dollar signs in TeX mode).

Parameters
textrue if the name should be formatted for TeX, or false if it should be in plain text format.
Returns
an abbreviated name for this block.

◆ adjacentAnnulus()

unsigned regina::SatBlock::adjacentAnnulus ( unsigned  whichAnnulus) const
inline

Returns which specific annulus of the adjacent block is listed as being adjacent to the given boundary annulus of this block.

Precondition
The given annulus of this block actually has an adjacent block listed.
Parameters
whichAnnulusindicates which boundary annulus of this block should be examined; this must be between 0 and nAnnuli()-1 inclusive.
Returns
the corresponding annulus number on the other block that is adjacent along this annulus.

◆ adjacentBackwards()

bool regina::SatBlock::adjacentBackwards ( unsigned  whichAnnulus) const
inline

Returns whether the adjacency along the given boundary annulus of this block is backwards.

See the class notes for a discussion of backwards adjacencies.

Precondition
The given annulus of this block actually has an adjacent block listed.
Parameters
whichAnnulusindicates which boundary annulus of this block should be examined; this must be between 0 and nAnnuli()-1 inclusive.
Returns
true if the corresponding adjacency is backwards, or false if it is not.

◆ adjacentBlock()

SatBlock * regina::SatBlock::adjacentBlock ( unsigned  whichAnnulus) const
inline

Returns the saturated block listed as being adjacent to the given boundary annulus of this block.

Parameters
whichAnnulusindicates which boundary annulus of this block should be examined; this must be between 0 and nAnnuli()-1 inclusive.
Returns
the other block adjacent along this annulus, or 0 if there is no adjacent block listed.

◆ adjacentReflected()

bool regina::SatBlock::adjacentReflected ( unsigned  whichAnnulus) const
inline

Returns whether the adjacency along the given boundary annulus of this block is reflected.

See the class notes for a discussion of reflected adjacencies.

Precondition
The given annulus of this block actually has an adjacent block listed.
Parameters
whichAnnulusindicates which boundary annulus of this block should be examined; this must be between 0 and nAnnuli()-1 inclusive.
Returns
true if the corresponding adjacency is reflected, or false if it is not.

◆ adjustSFS() [1/7]

virtual void regina::SatBlock::adjustSFS ( SFSpace sfs,
bool  reflect 
) const
pure virtual

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is true, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the SatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters
sfsthe Seifert fibred space to adjust.
reflecttrue if this block is to be reflected, or false if it should be inserted directly.

Implemented in regina::SatLayering, regina::SatReflectorStrip, regina::SatCube, regina::SatTriPrism, regina::SatLST, and regina::SatMobius.

◆ adjustSFS() [2/7]

virtual void regina::SatMobius::adjustSFS ( SFSpace sfs,
bool  reflect 
) const
overridevirtual

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is true, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the SatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters
sfsthe Seifert fibred space to adjust.
reflecttrue if this block is to be reflected, or false if it should be inserted directly.

Implements regina::SatBlock.

◆ adjustSFS() [3/7]

virtual void regina::SatLST::adjustSFS ( SFSpace sfs,
bool  reflect 
) const
overridevirtual

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is true, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the SatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters
sfsthe Seifert fibred space to adjust.
reflecttrue if this block is to be reflected, or false if it should be inserted directly.

Implements regina::SatBlock.

◆ adjustSFS() [4/7]

virtual void regina::SatTriPrism::adjustSFS ( SFSpace sfs,
bool  reflect 
) const
overridevirtual

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is true, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the SatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters
sfsthe Seifert fibred space to adjust.
reflecttrue if this block is to be reflected, or false if it should be inserted directly.

Implements regina::SatBlock.

◆ adjustSFS() [5/7]

virtual void regina::SatCube::adjustSFS ( SFSpace sfs,
bool  reflect 
) const
overridevirtual

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is true, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the SatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters
sfsthe Seifert fibred space to adjust.
reflecttrue if this block is to be reflected, or false if it should be inserted directly.

Implements regina::SatBlock.

◆ adjustSFS() [6/7]

virtual void regina::SatReflectorStrip::adjustSFS ( SFSpace sfs,
bool  reflect 
) const
overridevirtual

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is true, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the SatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters
sfsthe Seifert fibred space to adjust.
reflecttrue if this block is to be reflected, or false if it should be inserted directly.

Implements regina::SatBlock.

◆ adjustSFS() [7/7]

virtual void regina::SatLayering::adjustSFS ( SFSpace sfs,
bool  reflect 
) const
overridevirtual

Adjusts the given Seifert fibred space to insert the contents of this saturated block.

In particular, the space should be adjusted as though an ordinary solid torus (base orbifold a disc, no twists or exceptional fibres) had been replaced by this block. This description does not make sense for blocks with twisted boundary; the twisted case is discussed below.

If the argument reflect is true, it should be assumed that this saturated block is being reflected before being inserted into the larger Seifert fibred space. That is, any twists or exceptional fibres should be negated before being added.

Regarding the signs of exceptional fibres: Consider a saturated block containing a solid torus whose meridinal curve runs p times horizontally around the boundary in order through annuli 0,1,... and follows the fibres q times from bottom to top (as depicted in the diagram in the SatBlock class notes). Then this saturated block adds a positive (p, q) fibre to the underlying Seifert fibred space.

If the ring of saturated annuli bounding this block is twisted then the situation becomes more complex. It can be proven that such a block must contain a twisted reflector boundary in the base orbifold (use Z_2 homology with fibre-reversing paths to show that the base orbifold must contain another twisted boundary component, and then recall that real boundaries are not allowed inside blocks).

In this twisted boundary case, it should be assumed that the twisted reflector boundary is already stored in the given Seifert fibred space. This routine should make any further changes that are required (there may well be none). That is, the space should be adjusted as though a trivial Seifert fibred space over the annulus with one twisted reflector boundary (and one twisted puncture corresponding to the block boundary) had been replaced by this block. In particular, this routine should not add the reflector boundary itself.

Parameters
sfsthe Seifert fibred space to adjust.
reflecttrue if this block is to be reflected, or false if it should be inserted directly.

Implements regina::SatBlock.

◆ annulus()

const SatAnnulus & regina::SatBlock::annulus ( unsigned  which) const
inline

Returns details of the requested annulus on the boundary of this saturated block.

Annuli are numbered from 0 to nAnnuli()-1 as described in the class notes.

Parameters
whichindicates which boundary annulus is requested; this must be between 0 and nAnnuli()-1 inclusive.
Returns
a reference to the requested boundary annulus.

◆ areAnnuliLinkedAxis()

unsigned long regina::TriSolidTorus::areAnnuliLinkedAxis ( int  otherAnnulus) const

Determines whether the two given annuli are linked in a particular fashion by a layered chain.

In this scenario, one of the given annuli meets both faces of the top tetrahedron and the other annulus meets both faces of the bottom tetrahedron of the layered chain.

To be identified by this routine, the layered chain (described by LayeredChain) must be attached as follows. We shall refer to the two hinge edges of the layered chain as first and second.

The two diagonals of the layered chain (between the two top faces and between the two bottom faces) should correspond to the two directed major edges of the two annuli, with the major edges both pointing from top hinge edge to bottom hinge edge. The other boundary edges of the layered chain that are not hinge edges should correspond to the two directed minor edges of the two annuli, with the minor edges both pointing from bottom hinge edge to top hinge edge. The hinge edges themselves should correspond to the axis edges of the triangular solid torus (this correspondence is determined by the previous identifications; the axis edge between the two annuli will be identified to both of the others in reverse).

Parameters
otherAnnulusthe annulus on the solid torus boundary not to be examined; this must be 0, 1 or 2.
Returns
the number of tetrahedra in the layered chain if the two annuli are linked as described, or 0 otherwise.

◆ areAnnuliLinkedMajor()

unsigned long regina::TriSolidTorus::areAnnuliLinkedMajor ( int  otherAnnulus) const

Determines whether the two given annuli are linked in a particular fashion by a layered chain.

In this scenario, both of the given annuli meet one face of the top tetrahedron and one face of the bottom tetrahedron of the layered chain.

To be identified by this routine, the layered chain (described by LayeredChain) must be attached as follows. The two directed major edges of the two annuli should correspond to the two hinge edges of the layered chain (with both hinge edges pointing in the same direction around the solid torus formed by the layered chain). The two directed diagonals of the layered chain (between the two top faces and between the two bottom faces, each pointing in the opposite direction to the hinge edges around the solid torus formed by the layered chain) should be identified and must correspond to the (identified) two directed minor edges of the two annuli. The remaining boundary edges of the layered chain should correspond to the axis edges of the triangular solid torus (this correspondence is determined by the previous identifications).

Parameters
otherAnnulusthe annulus on the solid torus boundary not to be examined; this must be 0, 1 or 2.
Returns
the number of tetrahedra in the layered chain if the two annuli are linked as described, or 0 otherwise.

◆ attachLST()

void regina::SatAnnulus::attachLST ( Triangulation< 3 > *  tri,
long  alpha,
long  beta 
) const

Attaches a layered solid torus to the this saturated annulus.

The layered solid torus will be attached so that the given values alpha and beta describe how the meridinal disc cuts the vertical and horizontal edges of the annulus respectively.

The result will effectively insert an (alpha, beta) exceptional fibre into the Seifert fibred space space, where the vertical edges run parallel to the fibres and the horizontal edges represent the base orbifold. The sign of the fibre is consistent with the fibre inserted by SatLST::adjustSFS() (in particular, negating beta will negate the fibre).

In the case of a (2,1) fibre, the layered solid torus will be degenerate (i.e., the two triangles of the annulus will simply be joined together).

Precondition
The given value alpha is not zero.
The given values alpha and beta are coprime.
Parameters
trithe triangulation into which the new tetrahedra should be inserted.
alphadescribes how the meridinal disc of the torus should cut the vertical edges. This may be positive or negative.
betadescribes how the meridinal disc of the torus should cut the horizontal edges. Again this may be positive or negative.

◆ augTorus()

const LayeredSolidTorus * regina::AugTriSolidTorus::augTorus ( int  annulus) const
inline

Returns the layered solid torus attached to the requested annulus on the boundary of the core triangular solid torus.

If the layered solid torus is a degenerate (2,1,1) mobius band (i.e., the two triangles of the corresponding annulus have simply been glued together), null will be returned.

Parameters
annulusspecifies which annulus to examine; this must be 0, 1 or 2.
Returns
the corresponding layered solid torus.

◆ base()

Tetrahedron< 3 > * regina::LayeredSolidTorus::base ( ) const
inline

Returns the tetrahedron that is glued to itself at the base of this layered solid torus.

Returns
the base tetrahedron.

◆ baseEdge()

int regina::LayeredSolidTorus::baseEdge ( int  group,
int  index 
) const
inline

Returns the requested edge of the base tetrahedron belonging to the given group.

The layering identifies the six edges of the base tetrahedron into a group of three, a group of two and a single unidentified edge; these are referred to as groups 3, 2 and 1 respectively.

Note that baseEdgeGroup(baseEdge(group, index)) == group for all values of group and index.

Edges baseEdge(2,0) and baseEdge(3,0) will both belong to face baseFace(0). Edges baseEdge(2,1) and baseEdge(3,2) will both belong to face baseFace(1).

Parameters
groupthe group that the requested edge should belong to; this must be 1, 2 or 3.
indexthe index within the given group of the requested edge; this must be between 0 and group-1 inclusive. Note that in group 3 the edge at index 1 is adjacent to both the edges at indexes 0 and 2.
Returns
the edge number in the base tetrahedron of the requested edge; this will be between 0 and 5 inclusive.

◆ baseEdgeGroup()

int regina::LayeredSolidTorus::baseEdgeGroup ( int  edge) const
inline

Returns the group that the given edge of the base tetrahedron belongs to.

See baseEdge() for further details about groups.

Note that baseEdgeGroup(baseEdge(group, index)) == group for all values of group and index.

Parameters
edgethe edge number in the base tetrahedron of the given edge; this must be between 0 and 5 inclusive.
Returns
the group to which the given edge belongs; this will be 1, 2 or 3.

◆ baseFace()

int regina::LayeredSolidTorus::baseFace ( int  index) const
inline

Returns one of the two faces of the base tetrahedron that are glued to each other.

Parameters
indexspecifies which of the two faces to return; this must be 0 or 1.
Returns
the requested face number in the base tetrahedron; this will be between 0 and 3 inclusive.

◆ bdryReln()

const Matrix2 & regina::TxICore::bdryReln ( unsigned  whichBdry) const
inline

Returns a 2-by-2 matrix describing the alpha and beta curves on a torus boundary in terms of specific tetrahedron edges.

Consider the first triangle of the given boundary. Let t be the tetrahedron returned by bdryTet(whichBdry, 0) and let p be the permutation returned by bdryRoles(whichBdry, 0).

Let edge01 be the directed edge from vertex p[0] to p[1] of tetrahedron t, and let edge02 be the directed edge from vertex p[0] to p[2] of tetrahedron t. Then the matrix returned by this routine describes how the directed edges edge01 and edge02 relate to the alpha and beta curves on the given boundary. Specifically:

    [ alpha ]                  [ edge01 ]
    [       ]  =  bdryReln() * [        ] .
    [ beta  ]                  [ edge02 ]

It is guaranteed that this matrix has determinant +1 or -1.

Parameters
whichBdry0 if the upper boundary should be examined, or 1 if the lower boundary should be examined.
Returns
the relationship between the boundary curves and tetrahedron edges.

◆ bdryRoles()

Perm< 4 > regina::TxICore::bdryRoles ( unsigned  whichBdry,
unsigned  whichTri 
) const
inline

Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles.

Each boundary torus contains two triangles, whose vertices can be numbered 0, 1 and 2 according to the following diagram. This diagram is completely symmetric, in that edges 1-2 are no more special than edges 0-2 or 0-1. The important observations are that edges 1-2 and 2-1 of each triangle are identified, edges 0-2 and 2-0 of each triangle are identified and edges 0-1 and 1-0 of each triangle are identified.

          *--->>--*
          |0  2 / |
  First   |    / 1|  Second
 triangle v   /   v triangle
          |1 /    |
          | / 2  0|
          *--->>--*

This routine returns a permutation that maps these integers 0,1,2 to real tetrahedron vertices. Let t be the tetrahedron returned by bdryTet(whichBdry, whichTri) and let p be the permutation returned by bdryRoles(whichBdry, whichTri). Then vertices p[0], p[1] and p[2] of tetrahedron t correspond to the markings 0, 1 and 2 respectively in the diagram above (and therefore the boundary triangle is face p[3] of the tetrahedron).

The arguments to this routine affect whether we examine the upper or lower boundary and whether we examine the first or second triangle of this boundary

Parameters
whichBdry0 if the upper boundary should be examined, or 1 if the lower boundary should be examined.
whichTri0 if the first boundary triangle should be examined, or 1 if the second boundary triangle should be examined.
Returns
the permutation mapping roles 0, 1 and 2 in the diagram above to real tetrahedron vertex numbers.

◆ bdryTet()

unsigned regina::TxICore::bdryTet ( unsigned  whichBdry,
unsigned  whichTri 
) const
inline

Determines which tetrahedron provides the requested boundary triangle.

Recall that the T x I triangulation has two torus boundaries, each consisting of two boundary triangles. This routine returns the specific tetrahedron that provides the given triangle of the given torus boundary.

What is returned is the index number of the tetrahedron within the triangulation. To access the tetrahedron itself, you may call core().tetrahedron(bdryTet(...)).

Note that the same tetrahedron may provide more than one boundary triangle.

Parameters
whichBdry0 if the upper boundary should be examined, or 1 if the lower boundary should be examined.
whichTri0 if the first boundary triangle should be examined, or 1 if the second boundary triangle should be examined.

◆ begin()

SatBlockStarterSet::iterator regina::SatBlockStarterSet::begin ( )
inlinestatic

Returns an iterator pointing to the first block in the hard-coded list.

The very first time this routine is called, the list will be filled with items (and as such the call will be expensive). Every subsequent call will be very cheap.

Returns
an iterator pointing to the first starter block.

◆ block() [1/2]

const SatBlock * regina::SatBlockStarter::block ( ) const
inline

Returns details that describe the structure of the saturated block.

Returns
the block structure.

◆ block() [2/2]

const SatBlockSpec & regina::SatRegion::block ( unsigned long  which) const
inline

Returns details of the requested saturated block within this region.

The information will returned will include structural information for the block, along with details of how the block is aligned (e.g., reflected vertically or horizontally) within the larger region.

Parameters
whichindicates which of the constituent blocks should be returned; this must be between 0 and numberOfBlocks()-1 inclusive.
Returns
details of the requested saturated block.

◆ blockIndex()

long regina::SatRegion::blockIndex ( const SatBlock block) const

Returns the index of the given block within this region.

This index corresponds to the integer parameter that is passed to the routine block().

Warning
This routine is slow, since it simply scans through the blocks in this region one by one until the given block is found (or until all blocks are exhausted).
Returns
the index of the given block (as an integer between 0 and numberOfBlocks()-1 inclusive), or -1 if the block is not part of this region.

◆ bottom()

Tetrahedron< 3 > * regina::LayeredChain::bottom ( ) const
inline

Returns the bottom tetrahedron of this layered chain.

Returns
the bottom tetrahedron.

◆ bottomVertexRoles()

Perm< 4 > regina::LayeredChain::bottomVertexRoles ( ) const
inline

Returns a permutation represeting the role that each vertex of the bottom tetrahedron plays in the layered chain.

The permutation returned (call this p) maps 0, 1, 2 and 3 to the four vertices of the bottom tetrahedron so that the edge from p[0] to p[1] is the top hinge, the edge from p[2] to p[3] is the bottom hinge, faces p[1] and p[2] are the (boundary) bottom faces and faces p[0] and p[3] are the top faces.

See the general class notes for further details.

Returns
a permutation representing the roles of the vertices of the bottom tetrahedron.

◆ boundaryAnnulus() [1/2]

const SatAnnulus& regina::SatRegion::boundaryAnnulus ( unsigned long  which,
bool &  blockRefVert,
bool &  blockRefHoriz 
) const

Returns the requested saturated annulus on the boundary of this region.

The saturated annuli that together form the boundary components of this region are numbered from 0 to numberOfBoundaryAnnuli()-1 inclusive. The argument which specifies which one of these annuli should be returned.

Currently the annuli are numbered lexicographically by block and then by annulus number within the block, although this ordering is subject to change in future versions of Regina. In particular, the annuli are not necessarily numbered in order around the region boundaries, and each region boundary component might not even be given a consecutive range of numbers.

It is guaranteed however that, if the starter block passed to the SatRegion constructor provides any boundary annuli for the overall region, then the first such annulus in the starter block will be numbered 0 here.

The structure returned will be the annulus precisely as it appears within its particular saturated block. As discussed in the SatBlockSpec class notes, the block might be reflected horizontally and/or vertically within the overall region, which will affect how the annulus is positioned as part of the overall region boundary (e.g., the annulus might be positioned upside-down in the overall region boundary, or it might be positioned with its second triangle appearing before its first triangle as one walks around the boundary). To account for this, the two boolean arguments blockRefVert and blockRefHoriz will be modified to indicate if and how the block is reflected.

Warning
This routine is quite slow, since it currently scans through every annulus of every saturated block. Use it sparingly!
Python:\n Both variants of boundaryAnnulus() are
combined into a single routine, which takes the integer which as its only argument and returns its results as a tuple. See the alternate version of boundaryAnnulus() for details on how the return tuple is structured.
Parameters
whichspecifies which boundary annulus of this region to return; this must be between 0 and numberOfBoundaryAnnuli()-1 inclusive.
blockRefVertused to return whether the block containing the requested annulus is vertically reflected within this region (see SatBlockSpec for details). This will be set to true if the block is vertically reflected, or false if not.
blockRefHorizused to return whether the block containing the requested annulus is horizontally reflected within this region (see SatBlockSpec for details). This will be set to true if the block is horizontally reflected, or false if not.
Returns
details of the requested boundary annulus, precisely as it appears within its particular saturated block.

◆ boundaryAnnulus() [2/2]

void regina::SatRegion::boundaryAnnulus ( unsigned long  which,
SatBlock *&  block,
unsigned &  annulus,
bool &  blockRefVert,
bool &  blockRefHoriz 
) const

Returns fine details of the requested saturated annulus on the boundary of this region.

The argument which specifies which one of these annuli should be returned. See the boundaryAnnulus(unsigned long, bool&, bool&) documentation for details on how the boundary annuli are numbered.

Various details of the requested boundary annulus are returned in the various arguments, as described below.

Be aware that the block containing the requested annulus might be reflected horizontally and/or vertically within the overall region, as discussed in the SatBlockSpec class notes. This will affect how the annulus is positioned as part of the overall region boundary (e.g., the annulus might be positioned upside-down in the overall region boundary, or it might be positioned with its second triangle appearing before its first triangle as one walks around the boundary). The two boolean arguments blockRefVert and blockRefHoriz will be modified to indicate if and how the block is reflected.

Warning
This routine is quite slow, since it currently scans through every annulus of every saturated block. Use it sparingly!
Python:\n This routine only takes a single argument (the
integer which). The return value is a tuple of four values: the block returned in block, the integer returned in annulus, the boolean returned in blockRefVert, and the boolean returned in blockRefHoriz.
Parameters
whichspecifies which boundary annulus of this region to return; this must be between 0 and numberOfBoundaryAnnuli()-1 inclusive.
blockused to return the particular saturated block containing the requested annulus.
annulusused to return which annulus number in the returned block is the requested annulus; this will be between 0 and block->nAnnuli() inclusive.
blockRefVertused to return whether the block containing the requested annulus is vertically reflected within this region (see SatBlockSpec for details). This will be set to true if the block is vertically reflected, or false if not.
blockRefHorizused to return whether the block containing the requested annulus is horizontally reflected within this region (see SatBlockSpec for details). This will be set to true if the block is horizontally reflected, or false if not.

◆ boundaryFace()

int regina::SnappedBall::boundaryFace ( int  index) const
inline

Returns one of the two tetrahedron faces that forms the boundary of this snapped ball.

You are guaranteed that index 0 will return a smaller face number than index 1.

Parameters
indexspecifies which of the two boundary faces to return; this must be either 0 or 1.
Returns
the corresponding face number in the tetrahedron.

◆ boundaryReln()

const Matrix2 & regina::Layering::boundaryReln ( ) const
inline

Returns a 2-by-2 matrix describing the relationship between curves on the old and new boundary tori.

Note that this relationship will often be non-trivial, since one of the key reasons for layering is to modify boundary curves.

Let t and p be the first tetrahedron and permutation of the old boundary (as returned by oldBoundaryTet(0) and oldBoundaryRoles(0)), and let old_x and old_y be the directed edges p[0]-p[1] and p[0]-p[2] respectively of tetrahedron t (these are the leftmost and uppermost edges of the diagram below). Likewise, let s and q be the first tetrahedron and permutation of the new boundary (as returned by newBoundaryTet(0) and newBoundaryRoles(0)), and let new_x and new_y be the directed edges q[0]-q[1] and q[0]-q[2] respectively of tetrahedron s.

    *--->>--*
    |0  2 / |
    |    / 1|
    v   /   v
    |1 /    |
    | / 2  0|
    *--->>--*

Assuming both boundaries are tori, edges old_x and old_y are generators of the old boundary torus and edges new_x and new_y are generators of the new boundary torus. Suppose that this routine returns the matrix M. This signifies that, using additive notation:

    [new_x]         [old_x]
    [     ]  =  M * [     ] .
    [new_y]         [old_y]

In other words, the matrix that is returned expresses the generator curves of the new boundary in terms of the generator curves of the old boundary.

Note that the determinant of this matrix will always be 1.

Returns
the matrix relating the old and new boundary curves.

◆ bundle()

const TxICore & regina::PluggedTorusBundle::bundle ( ) const
inline

Returns an isomorphic copy of the thin I-bundle that forms part of this triangulation.

Like all objects of class TxICore, the thin I-bundle that is returned is an external object with its own separate triangulation of the product T x I. For information on how the thin I-bundle is embedded within this triangulation, see the routine bundleIso().

Returns
the an isomorphic copy of the thin I-bundle within this triangulation.

◆ bundleIso()

const Isomorphism< 3 > & regina::PluggedTorusBundle::bundleIso ( ) const
inline

Returns an isomorphism describing how the thin I-bundle forms a subcomplex of this triangulation.

The thin I-bundle returned by bundle() does not directly refer to tetrahedra within this triangulation. Instead it contains its own isomorphic copy of the thin I-bundle triangulation (as is usual for objects of class TxICore).

The isomorphism returned by this routine is a mapping from the triangulation bundle().core() to this triangulation, showing how the thin I-bundle appears as a subcomplex of this structure.

Returns
an isomorphism from the thin I-bundle described by bundle() to the tetrahedra of this triangulation.

◆ centre()

const SatRegion & regina::BlockedSFSTriple::centre ( ) const
inline

Returns details of the central saturated region, as described in the class notes above.

This is the saturated region with two boundary annuli, each of which is joined to one of the end regions.

Returns
details of the central region.

◆ chain() [1/2]

const LayeredChain * regina::PlugTriSolidTorus::chain ( int  annulus) const
inline

Returns the layered chain attached to the requested annulus on the boundary of the core triangular solid torus.

If there is no attached layered chain, null will be returned.

Note that the core triangular solid torus will be attached to the bottom (as opposed to the top) of the layered chain.

Parameters
annulusspecifies which annulus to examine; this must be 0, 1 or 2.
Returns
the corresponding layered chain.

◆ chain() [2/2]

const LayeredChain * regina::LayeredChainPair::chain ( int  which) const
inline

Returns the requested layered chain used to form this structure.

If the two chains have different lengths, the shorter chain will be chain 0 and the longer chain will be chain 1.

Parameters
whichspecifies which chain to return; this must be 0 or 1.
Returns
the requested layered chain.

◆ chainLength()

unsigned long regina::AugTriSolidTorus::chainLength ( ) const
inline

Returns the number of tetrahedra in the layered chain linking two of the boundary annuli of the core triangular solid torus.

Note that this count does not include any of the tetrahedra actually belonging to the triangular solid torus.

Returns
the number of tetrahedra in the layered chain, or 0 if there is no layered chain linking two boundary annuli.

◆ chainType() [1/2]

int regina::AugTriSolidTorus::chainType ( ) const
inline

Returns the way in which a layered chain links two of the boundary annuli of the core triangular solid torus.

This will be one of the chain type constants defined in this class.

Returns
the type of layered chain, or CHAIN_NONE if there is no layered chain linking two boundary annuli.

◆ chainType() [2/2]

int regina::PlugTriSolidTorus::chainType ( int  annulus) const
inline

Returns the way in which a layered chain is attached to the requested annulus on the boundary of the core triangular solid torus.

This will be one of the chain type constants defined in this class.

Parameters
annulusspecifies which annulus to examine; this must be 0, 1 or 2.
Returns
the type of layered chain, or CHAIN_NONE if there is no layered chain attached to the requested annulus.

◆ clone() [1/21]

AugTriSolidTorus* regina::AugTriSolidTorus::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [2/21]

L31Pillow* regina::L31Pillow::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [3/21]

LayeredChainPair* regina::LayeredChainPair::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [4/21]

LayeredLensSpace* regina::LayeredLensSpace::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [5/21]

LayeredLoop* regina::LayeredLoop::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [6/21]

LayeredSolidTorus* regina::LayeredSolidTorus::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [7/21]

PillowTwoSphere* regina::PillowTwoSphere::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [8/21]

PlugTriSolidTorus* regina::PlugTriSolidTorus::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [9/21]

SnapPeaCensusTri * regina::SnapPeaCensusTri::clone ( ) const
inline

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [10/21]

SnappedBall* regina::SnappedBall::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [11/21]

SnappedTwoSphere* regina::SnappedTwoSphere::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [12/21]

SpiralSolidTorus* regina::SpiralSolidTorus::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [13/21]

TriSolidTorus* regina::TriSolidTorus::clone ( ) const

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [14/21]

TrivialTri * regina::TrivialTri::clone ( ) const
inline

Returns a newly created clone of this structure.

Returns
a newly created clone.

◆ clone() [15/21]

virtual SatBlock* regina::SatBlock::clone ( ) const
pure virtual

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of SatBlock will be returned. For this reason, each subclass of SatBlock must implement this routine.

Returns
a new clone of this block.

Implemented in regina::SatLayering, regina::SatReflectorStrip, regina::SatCube, regina::SatTriPrism, regina::SatLST, and regina::SatMobius.

◆ clone() [16/21]

SatBlock * regina::SatMobius::clone ( ) const
inlineoverridevirtual

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of SatBlock will be returned. For this reason, each subclass of SatBlock must implement this routine.

Returns
a new clone of this block.

Implements regina::SatBlock.

◆ clone() [17/21]

SatBlock * regina::SatLST::clone ( ) const
inlineoverridevirtual

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of SatBlock will be returned. For this reason, each subclass of SatBlock must implement this routine.

Returns
a new clone of this block.

Implements regina::SatBlock.

◆ clone() [18/21]

SatBlock * regina::SatTriPrism::clone ( ) const
inlineoverridevirtual

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of SatBlock will be returned. For this reason, each subclass of SatBlock must implement this routine.

Returns
a new clone of this block.

Implements regina::SatBlock.

◆ clone() [19/21]

SatBlock * regina::SatCube::clone ( ) const
inlineoverridevirtual

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of SatBlock will be returned. For this reason, each subclass of SatBlock must implement this routine.

Returns
a new clone of this block.

Implements regina::SatBlock.

◆ clone() [20/21]

SatBlock * regina::SatReflectorStrip::clone ( ) const
inlineoverridevirtual

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of SatBlock will be returned. For this reason, each subclass of SatBlock must implement this routine.

Returns
a new clone of this block.

Implements regina::SatBlock.

◆ clone() [21/21]

SatBlock * regina::SatLayering::clone ( ) const
inlineoverridevirtual

Returns a newly created clone of this saturated block structure.

A clone of the correct subclass of SatBlock will be returned. For this reason, each subclass of SatBlock must implement this routine.

Returns
a new clone of this block.

Implements regina::SatBlock.

◆ core() [1/4]

const TriSolidTorus & regina::AugTriSolidTorus::core ( ) const
inline

Returns the triangular solid torus at the core of this triangulation.

Returns
the core triangular solid torus.

◆ core() [2/4]

const TxICore & regina::LayeredTorusBundle::core ( ) const
inline

Returns the T x I triangulation at the core of this layered surface bundle.

This is the product T x I whose boundaries are joined (possibly via some layering of tetrahedra).

Note that the triangulation returned by TxICore::core() (that is, LayeredTorusBundle::core().core()) may well use different tetrahedron and vertex numbers. That is, an isomorphic copy of it appears within this layered surface bundle but the individual tetrahedra and vertices may have been permuted. For a precise mapping from the TxICore::core() triangulation to this triangulation, see the routine coreIso().

Returns
the core T x I triangulation.

◆ core() [3/4]

const TriSolidTorus & regina::PlugTriSolidTorus::core ( ) const
inline

Returns the triangular solid torus at the core of this triangulation.

Returns
the core triangular solid torus.

◆ core() [4/4]

const Triangulation< 3 > & regina::TxICore::core ( ) const
inline

Returns a full copy of the T x I triangulation that this object describes.

Successive calls to this routine will returns the same triangulation (i.e., it is not recreated each time). The triangulation that is returned may not be modified or destroyed.

Python:\n This routine returns a new clone of the triangulation
each time it is called, since Python will claim ownership of the triangulation that is returned.
Returns
the full triangulation.

◆ coreIso()

const Isomorphism< 3 > * regina::LayeredTorusBundle::coreIso ( ) const
inline

Returns the isomorphism describing how the core T x I appears as a subcomplex of this layered surface bundle.

As described in the core() notes, the core T x I triangulation returned by TxICore::core() appears within this layered surface bundle, but not necessarily with the same tetrahedron or vertex numbers.

This routine returns an isomorphism that maps the tetrahedra and vertices of the core T x I triangulation (as returned by LayeredTorusBundle::core().core()) to the tetrahedra and vertices of this overall layered surface bundle.

The isomorphism that is returned belongs to this object, and should not be modified or destroyed.

Returns
the isomorphism from the core T x I to this layered surface bundle.

◆ createSFS()

SFSpace* regina::SatRegion::createSFS ( bool  reflect) const

Returns details of the Seifert fibred space represented by this region.

Each boundary component of this region will be formed from a ring of saturated annuli, which together form a torus or a Klein bottle. For torus boundary components, the oriented curves representing the fibres and base orbifold on the boundary (see Notation for Seifert fibred spaces) will be as follows.

  • Consider the 0/1/2 markings on the first and second triangles of each saturated annulus, as described in the SatAnnulus class notes.
  • The fibres are represented by the oriented edge joining markings 1 and 0 on the first triangle (or 0 and 1 on the second triangle). This is reversed if the block containing the boundary annulus is vertically reflected.
  • The curve representing the base orbifold run along the oriented edge joining markings 0 and 2 on the first triangle (or 2 and 0 on the second triangle). This is reversed if the block containing the boundary annulus is horizontally reflected.
  • See the SatBlockSpec overview for descriptions of horizontal and vertical reflection.

If the argument reflect is true, the Seifert fibred space will be created as though the entire region had been reflected. In particular, each twist or exceptional fibre will be negated before being added to the Seifert structure.

For Klein bottle boundary components, these curves must (for now) be analysed by hand.

Parameters
reflecttrue if this region is to be reflected as the Seifert fibred space is created, or false if not.
Returns
the newly created structure of the underlying Seifert fibred space.

◆ cycle()

void regina::SpiralSolidTorus::cycle ( size_t  k)

Cycles this spiralled solid torus by the given number of tetrahedra.

Tetrahedra k, k+1, k+2 and so on will become tetrahedra 0, 1, 2 and so on respectively. Note that this operation will not change the vertex roles.

The underlying triangulation is not changed; all that changes is how this spiralled solid torus is represented.

Parameters
kthe number of tetrahedra through which we should cycle.

◆ edgeGroupRoles()

Perm< 4 > regina::AugTriSolidTorus::edgeGroupRoles ( int  annulus) const
inline

Returns a permutation describing the role played by each top level edge group of the layered solid torus glued to the requested annulus of the core triangular solid torus.

See LayeredSolidTorus::topEdge() for details regarding edge groups.

If the permutation returned is p, edge group p[0] will be glued to an axis edge, group p[1] will be glued to a major edge and group p[2] will be glued to a minor edge. p[3] will always be 3.

Even if the corresponding layered solid torus is a degenerate (2,1,1) mobius band (i.e., augTorus() returns null), the concept of edge groups is still meaningful and this routine will return correct results.

Parameters
annulusspecifies which annulus to examine; this must be 0, 1 or 2. It is the layered solid torus glued to this annulus whose edge groups will be described.
Returns
a permutation describing the roles of the corresponding top level edge groups.

◆ end() [1/2]

SatBlockStarterSet::iterator regina::SatBlockStarterSet::end ( )
inlinestatic

Returns an iterator pointing past the end of the hard-coded list (i.e., just after the last item).

Precondition
The begin() routine has been called at least once.
Returns
a past-the-end iterator.

◆ end() [2/2]

const SatRegion & regina::BlockedSFSTriple::end ( int  which) const
inline

Returns details of the requested end region, as described in the class notes above.

The end regions are the two saturated regions with one boundary annulus each, which are both joined to the central region.

Parameters
which0 if the first end region should be returned (marked as end region 0 in the class notes), or 1 if the second end region should be returned (marked as end region 1 in the class notes).
Returns
details of the requested end region.

◆ equatorEdge()

int regina::SnappedBall::equatorEdge ( ) const
inline

Returns the edge that forms the equator of the boundary sphere of this ball.

Returns
the corresponding edge number in the tetrahedron.

◆ equatorType()

int regina::PlugTriSolidTorus::equatorType ( ) const
inline

Returns which types of edges form the equator of the plug.

In the absence of layered chains these will either all be major edges or all be minor edges.

Layered chains complicate matters, but the roles that the major and minor edges play on the boundary annuli of the triangular solid torus can be carried up to the annuli at the top of each layered chain; the edges filling the corresponding major or minor roles will then form the equator of the plug.

Returns
the types of edges that form the equator of the plug; this will be one of the equator type constants defined in this class.

◆ expand()

bool regina::SatRegion::expand ( SatBlock::TetList avoidTets,
bool  stopIfIncomplete = false 
)

Expands this region as far as possible within the overall triangulation.

This routine will hunt for new saturated blocks, and will also hunt for new adjacencies between existing blocks.

The first argument to this routine is the tetrahedron list avoidTets. This is a list of tetrahedra that will not be considered when examining potential new blocks. This list will be modified by this routine; in particular, it will be expanded to include all tetrahedra for any new blocks that are found. Before calling this routine it should contain tetrahedra for blocks already in this region, as discussed in the preconditions below.

It may be that you are searching for a region that fills an entire triangulation component (i.e., every boundary annulus of the region in fact forms part of the boundary of the triangulation). In this case you may pass the optional argument stopIfIncomplete as true. This means that if this routine ever discovers an annulus that is not part of the triangulation boundary and that it cannot match with some adjacent block, it will exit immediately and return false. Note that the region structure will be incomplete and/or inconsistent if this happens; in this case the unfinished region should be destroyed completely and never used.

For internal purposes, it should be noted that any new blocks that are discovered will be added to the end of the internal block list (thus the indices of existing blocks will not change).

Warning
When joining blocks together, it is possible to create invalid edges (e.g., by joining a one-annulus untwisted boundary to a one-annulus twisted boundary). This routine does not check for such conditions. It is recommended that you run Triangulation<3>::isValid() before calling this routine.
Precondition
If any blocks already belonging to this region have adjacencies listed in their SatBlock structures, then these adjacent blocks belong to this region also. This precondition is easily satisfied if you let the SatRegion constructor and expand() do all of the adjacency handling, as described in the class notes.
The list avoidTets includes all tetrahedra on the boundaries of any blocks already contained in this region.
Python:\n The first argument avoidTets is not present.
An empty list will be passed instead.
Parameters
avoidTetsa list of tetrahedra that should not be considered for new blocks, as discussed above. Note that this list may be modified by this routine.
stopIfIncompletetrue if you are filling an entire triangulation component with this region and you wish this routine to exit early if this is not possible, or false (the default) if you simply wish to expand this region as far as you can. See above for further discussion.
Returns
false if the optional argument stopIfIncomplete was passed as true but expansion did not fill the entire triangulation component as described above, or true in all other cases.

◆ extend()

unsigned long regina::Layering::extend ( )

Examines whether one or more additional tetrahedra have been layered upon the current new boundary.

Specifically, this routine calls extendOne() as many times as possible. If k additional layerings are discovered as a result, the size of this structure will have grown by k and the new boundary will be changed to describe the remaining two faces of the kth layered tetrahedron.

It is guaranteed that, once this routine is finished, the new boundary will not have any additional tetrahedron layered upon it. That is, if extendOne() were called again then it would return false.

Returns
the number of additional layered tetrahedra that were discovered.

◆ extendAbove()

bool regina::LayeredChain::extendAbove ( )

Checks to see whether this layered chain can be extended to include the tetrahedron above the top tetrahedron (and still remain a layered chain).

If so, this layered chain will be modified accordingly (note that its index will be increased by one and its top tetrahedron will change).

Returns
true if and only if this layered chain was extended.

◆ extendBelow()

bool regina::LayeredChain::extendBelow ( )

Checks to see whether this layered chain can be extended to include the tetrahedron below the bottom tetrahedron (and still remain a layered chain).

If so, this layered chain will be modified accordingly (note that its index will be increased by one and its bottom tetrahedron will change).

Returns
true if and only if this layered chain was extended.

◆ extendMaximal()

bool regina::LayeredChain::extendMaximal ( )

Extends this layered chain to a maximal length layered chain.

Both extendAbove() and extendBelow() will be used until this layered chain can be extended no further.

Returns
true if and only if this layered chain was extended.

◆ extendOne()

bool regina::Layering::extendOne ( )

Examines whether a single additional tetrahedron has been layered upon the current new boundary.

The new boundary triangles are assumed to form a torus as described in the class notes (this is not verified, and there are degenerate cases where this will likely be false). This defines three possible ways in which an additional tetrahedron may be layered (over the three boundary edges respectively).

If it is found that an additional tetrahedron does exist and has been joined to the new boundary in one of these three possible ways, this structure is extended to incorporate the additional tetrahedron. The size will grow by one, and the new boundary will become the remaining two faces of this additional tetrahedron.

Returns
true if a tetrahedron was found as described above and this structure was extended accordingly, or false otherwise.

◆ findStarterBlocks()

void regina::SatBlockStarterSearcher::findStarterBlocks ( Triangulation< 3 > *  tri)

Runs a search for every isomorphic embedding of every starter block from the global SatBlockStarterSet within the given triangulation.

Each time an embedding is discovered, the pure virtual routine useStarterBlock() will be called.

See the SatBlockStarterSearcher class notes for greater detail on what this search does and how it runs.

For subclasses that make use of the usedTets data member, it is worth noting that this routine empties the usedTets list on both entry and exit, as well as every time that useStarterBlock() returns after each new embedding is found.

Parameters
trithe triangulation in which to search for starter blocks.

◆ flatten()

Triangulation<3>* regina::LayeredSolidTorus::flatten ( const Triangulation< 3 > *  original,
int  mobiusBandBdry 
) const

Flattens this layered solid torus to a Mobius band.

A newly created modified triangulation is returned; the original triangulation is unchanged.

Note that there are three different ways in which this layered solid torus can be flattened, corresponding to the three different edges of the boundary torus that could become the boundary edge of the new Mobius band.

Parameters
originalthe triangulation containing this layered solid torus; this triangulation will not be changed.
mobiusBandBdrythe edge group on the boundary of this layered solid torus that will become the boundary of the new Mobius band (the remaining edge groups will become internal edges of the new Mobius band). This must be 0, 1 or 2. See topEdge() for further details about edge groups.
Returns
a newly created triangulation in which this layered solid torus has been flattened to a Mobius band.

◆ formsLayeredSolidTorusBase()

static LayeredSolidTorus* regina::LayeredSolidTorus::formsLayeredSolidTorusBase ( Tetrahedron< 3 > *  tet)
static

Determines if the given tetrahedron forms the base of a layered solid torus within a triangulation.

The torus need not be the entire triangulation; the top level tetrahedron of the torus may be glued to something else (or to itself).

Note that the base tetrahedron of a layered solid torus is the tetrahedron furthest from the boundary of the torus, i.e. the tetrahedron glued to itself with a twist.

Parameters
tetthe tetrahedron to examine as a potential base.
Returns
a newly created structure containing details of the layered solid torus, or null if the given tetrahedron is not the base of a layered solid torus.

◆ formsLayeredSolidTorusTop()

static LayeredSolidTorus* regina::LayeredSolidTorus::formsLayeredSolidTorusTop ( Tetrahedron< 3 > *  tet,
unsigned  topFace1,
unsigned  topFace2 
)
static

Determines if the given tetrahedron forms the top level tetrahedron of a layered solid torus, with the two given faces of this tetrahedron representing the boundary of the layered solid torus.

Note that the two given faces need not be boundary triangles in the overall triangulation. That is, the layered solid torus may be a subcomplex of some larger triangulation. For example, the two given faces may be joined to some other tetrahedra outside the layered solid torus or they may be joined to each other. In fact, they may even extend this smaller layered solid torus to a larger layered solid torus.

Parameters
tetthe tetrahedron to examine as a potential top level of a layered solid torus.
topFace1the face number of the given tetrahedron that should represent the first boundary triangle of the layered solid torus. This should be between 0 and 3 inclusive.
topFace2the face number of the given tetrahedron that should represent the second boundary triangle of the layered solid torus. This should be between 0 and 3 inclusive, and should not be equal to topFace1.
Returns
a newly created structure containing details of the layered solid torus, or null if the given tetrahedron with its two faces do not form the top level of a layered solid torus.

◆ formsPillowTwoSphere()

static PillowTwoSphere* regina::PillowTwoSphere::formsPillowTwoSphere ( Triangle< 3 > *  tri1,
Triangle< 3 > *  tri2 
)
static

Determines if the two given triangles together form a pillow 2-sphere.

Precondition
The two given triangles are distinct.
Parameters
tri1the first triangle to examine.
tri2the second triangle to examine.
Returns
a newly created structure containing details of the pillow 2-sphere, or null if the given triangles do not form a pillow 2-sphere.

◆ formsSnappedBall()

static SnappedBall* regina::SnappedBall::formsSnappedBall ( Tetrahedron< 3 > *  tet)
static

Determines if the given tetrahedron forms a snapped 3-ball within a triangulation.

The ball need not be the entire triangulation; the boundary triangles may be glued to something else (or to each other).

Note that the two boundary triangles of the snapped 3-ball need not be boundary triangles within the overall triangulation, i.e., they may be identified with each other or with triangles of other tetrahedra.

Parameters
tetthe tetrahedron to examine as a potential 3-ball.
Returns
a newly created structure containing details of the snapped 3-ball, or null if the given tetrahedron is not a snapped 3-ball.

◆ formsSnappedTwoSphere() [1/2]

static SnappedTwoSphere* regina::SnappedTwoSphere::formsSnappedTwoSphere ( SnappedBall ball1,
SnappedBall ball2 
)
static

Determines if the two given snapped 3-balls together form a snapped 2-sphere.

If this is the case, the snapped 3-balls stored in the structure returned will be clones of the original 3-balls, not the original 3-balls themselves.

Precondition
The two given snapped 3-balls use distinct tetrahedra.
Parameters
ball1the first snapped 3-ball to examine.
ball2the second snapped 3-ball to examine.
Returns
a newly created structure containing details of the snapped 2-sphere, or null if the given snapped 3-balls do not form a snapped 2-sphere.

◆ formsSnappedTwoSphere() [2/2]

static SnappedTwoSphere* regina::SnappedTwoSphere::formsSnappedTwoSphere ( Tetrahedron< 3 > *  tet1,
Tetrahedron< 3 > *  tet2 
)
static

Determines if the two given tetrahedra together form a snapped 2-sphere.

Precondition
The two given tetrahedra are distinct.
Parameters
tet1the first tetrahedron to examine.
tet2the second tetrahedron to examine.
Returns
a newly created structure containing details of the snapped 2-sphere, or null if the given tetrahedra do not form a snapped 2-sphere.

◆ formsSpiralSolidTorus()

static SpiralSolidTorus* regina::SpiralSolidTorus::formsSpiralSolidTorus ( Tetrahedron< 3 > *  tet,
Perm< 4 >  useVertexRoles 
)
static

Determines if the given tetrahedron forms part of a spiralled solid torus with its vertices playing the given roles in the solid torus.

Note that the boundary triangles of the spiralled solid torus need not be boundary triangles within the overall triangulation, i.e., they may be identified with each other or with triangles of other tetrahedra.

Parameters
tetthe tetrahedron to examine.
useVertexRolesa permutation describing the role each tetrahedron vertex must play in the solid torus; this must be in the same format as the permutation returned by vertexRoles().
Returns
a newly created structure containing details of the solid torus with the given tetrahedron as tetrahedron 0, or null if the given tetrahedron is not part of a spiralled solid torus with the given vertex roles.

◆ formsTriSolidTorus()

static TriSolidTorus* regina::TriSolidTorus::formsTriSolidTorus ( Tetrahedron< 3 > *  tet,
Perm< 4 >  useVertexRoles 
)
static

Determines if the given tetrahedron forms part of a three-tetrahedron triangular solid torus with its vertices playing the given roles in the solid torus.

Note that the six boundary triangles of the triangular solid torus need not be boundary triangles within the overall triangulation, i.e., they may be identified with each other or with faces of other tetrahedra.

Parameters
tetthe tetrahedron to examine.
useVertexRolesa permutation describing the role each tetrahedron vertex must play in the solid torus; this must be in the same format as the permutation returned by vertexRoles().
Returns
a newly created structure containing details of the solid torus with the given tetrahedron as tetrahedron 0, or null if the given tetrahedron is not part of a triangular solid torus with the given vertex roles.

◆ halfTurnRotation()

SatAnnulus regina::SatAnnulus::halfTurnRotation ( ) const
inline

Returns a 180 degree rotated representation of this annulus.

This structure will not be changed. See rotateHalfTurn() for further details.

Returns
a new 180 degree rotation of this annulus.

◆ hasAdjacentBlock()

bool regina::SatBlock::hasAdjacentBlock ( unsigned  whichAnnulus) const
inline

Returns whether there is another saturated block listed as being adjacent to the given boundary annulus of this block.

Parameters
whichAnnulusindicates which boundary annulus of this block should be examined; this must be between 0 and nAnnuli()-1 inclusive.
Returns
true if the given boundary annulus has an adjacent block listed, or false otherwise.

◆ hasLayeredChain()

bool regina::AugTriSolidTorus::hasLayeredChain ( ) const
inline

Determines whether the core triangular solid torus has two of its boundary annuli linked by a layered chain as described in the general class notes.

Returns
true if and only if the layered chain described in the class notes is present.

◆ hinge()

Edge< 3 > * regina::LayeredLoop::hinge ( int  which) const
inline

Returns the requested hinge edge of this layered loop.

See the general class notes for further details. If there is only one hinge but parameter which is 1, null will be returned.

Parameters
whichspecifies which hinge to return; this must be 0 or 1.
Returns
the requested hinge edge.

◆ homology() [1/13]

AbelianGroup * regina::StandardTriangulation::homology ( ) const
inlinevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented in regina::TrivialTri, regina::TriSolidTorus, regina::SpiralSolidTorus, regina::SnappedBall, regina::SnapPeaCensusTri, regina::LayeredTorusBundle, regina::LayeredSolidTorus, regina::LayeredLoop, regina::LayeredLensSpace, regina::LayeredChainPair, regina::LayeredChain, and regina::L31Pillow.

◆ homology() [2/13]

AbelianGroup* regina::L31Pillow::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [3/13]

AbelianGroup* regina::LayeredChain::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [4/13]

AbelianGroup* regina::LayeredChainPair::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [5/13]

AbelianGroup* regina::LayeredLensSpace::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [6/13]

AbelianGroup* regina::LayeredLoop::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [7/13]

AbelianGroup* regina::LayeredSolidTorus::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [8/13]

AbelianGroup* regina::LayeredTorusBundle::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [9/13]

AbelianGroup* regina::SnapPeaCensusTri::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [10/13]

AbelianGroup* regina::SnappedBall::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [11/13]

AbelianGroup* regina::SpiralSolidTorus::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [12/13]

AbelianGroup* regina::TriSolidTorus::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homology() [13/13]

AbelianGroup* regina::TrivialTri::homology ( ) const
overridevirtual

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homologyH1() (a name that is more specific, but a little longer to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

Reimplemented from regina::StandardTriangulation.

◆ homologyH1()

AbelianGroup * regina::StandardTriangulation::homologyH1 ( ) const
inline

Returns the expected first homology group of this triangulation, if such a routine has been implemented.

If the calculation of homology has not yet been implemented for this triangulation then this routine will return 0.

This routine does not work by calling Triangulation<3>::homology() on the associated real triangulation. Instead the homology is calculated directly from the known properties of this standard triangulation.

The details of which standard triangulations have homology calculation routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

The homology group will be newly allocated and must be destroyed by the caller of this routine.

If this StandardTriangulation describes an entire Triangulation<3> (and not just a part thereof) then the results of this routine should be identical to the homology group obtained by calling Triangulation<3>::homology() upon the associated real triangulation.

This routine can also be accessed via the alias homology() (a name that is less specific, but a little easier to type).

Returns
the first homology group of this triangulation, or 0 if the appropriate calculation routine has not yet been implemented.

◆ horizontalReflection()

SatAnnulus regina::SatAnnulus::horizontalReflection ( ) const
inline

Returns a left-to-right reflected representation of this annulus.

This structure will not be changed. See reflectHorizontal() for further details.

Returns
a new left-to-right reflection of this annulus.

◆ image()

SatAnnulus regina::SatAnnulus::image ( const Triangulation< 3 > *  originalTri,
const Isomorphism< 3 > *  iso,
Triangulation< 3 > *  newTri 
) const
inline

Returns the image of this annulus representation under the given isomorphism between triangulations.

This annulus representation will not be changed. See transform() for further details.

Parameters
originalTrithe triangulation currently used by this annulus representation.
isothe mapping from originalTri to newTri.
newTrithe triangulation to be used by the new annulus representation.

◆ index() [1/2]

unsigned long regina::LayeredChain::index ( ) const
inline

Returns the number of tetrahedra in this layered chain.

Returns
the number of tetrahedra.

◆ index() [2/2]

unsigned long regina::SnapPeaCensusTri::index ( ) const
inline

Returns the index of this triangulation within its particular section of the SnapPea census.

Note that indices for each section begin counting at zero.

Returns
the index of this triangulation within its section.

◆ initialise()

void regina::SatBlockStarterSet::initialise ( )
overrideprotectedvirtual

Fills this list with items.

The particular set of items to use will typically depend on the particular subclass of ListOnCall that is being defined.

This routine will be run the first time that begin() is called on each list, and will not be run again.

Implements regina::ListOnCall< SatBlockStarter >.

◆ insertBlock() [1/3]

static SatCube* regina::SatCube::insertBlock ( Triangulation< 3 > &  tri)
static

Inserts a new copy of a cube block into the given triangulation, and returns the corresponding block structure.

The given triangulation will not be emptied before the new tetrahedra are inserted.

Parameters
trithe triangulation into which the new block should be inserted.
Returns
structural details of the newly inserted block.

◆ insertBlock() [2/3]

static SatTriPrism* regina::SatTriPrism::insertBlock ( Triangulation< 3 > &  tri,
bool  major 
)
static

Inserts a new copy of a triangular prism block into the given triangulation, and returns the corresponding block structure.

The given triangulation will not be emptied before the new tetrahedra are inserted.

Parameters
trithe triangulation into which the new block should be inserted.
majortrue if a block of major type should be inserted, or false if a block of minor type should be inserted.
Returns
structural details of the newly inserted block.

◆ insertBlock() [3/3]

static SatReflectorStrip* regina::SatReflectorStrip::insertBlock ( Triangulation< 3 > &  tri,
unsigned  length,
bool  twisted 
)
static

Inserts a new reflector strip into the given triangulation, and returns the corresponding block structure.

The given triangulation will not be emptied before the new tetrahedra are inserted.

Parameters
trithe triangulation into which the new block should be inserted.
lengththe length of the new reflector strip, i.e., the number of boundary annuli; this must be strictly positive.
twistedtrue if the new reflector strip should be twisted (causing its ring of boundary annuli to be twisted also), or false if the new strip should not be twisted.
Returns
structural details of the newly inserted block.

◆ interiorVertex()

unsigned regina::L31Pillow::interiorVertex ( int  whichTet) const
inline

Returns the vertex number of the given tetrahedron corresponding to the degree three vertex in the interior of the triangular pillow.

See the general class notes for further details.

The specific tetrahedron to examine is determined by the argument whichTet; this will be the tetrahedron tetrahedron(whichTet).

Parameters
whichTetspecifies which tetrahedron to examine; this must be either 0 or 1.
Returns
the vertex of tetrahedron whichTet corresponding to the vertex in the interior of the triangular pillow; this will be between 0 and 3 inclusive.

◆ internalEdge()

int regina::SnappedBall::internalEdge ( ) const
inline

Returns the edge internal to this snapped ball.

Returns
the corresponding edge number in the tetrahedron.

◆ internalFace()

int regina::SnappedBall::internalFace ( int  index) const
inline

Returns one of the two tetrahedron faces internal to this snapped ball.

You are guaranteed that index 0 will return a smaller face number than index 1.

Parameters
indexspecifies which of the two internal faces to return; this must be either 0 or 1.
Returns
the corresponding face number in the tetrahedron.

◆ invert()

void regina::LayeredChain::invert ( )

Inverts this layered chain so the upper hinge becomes the lower and vice versa.

The top and bottom tetrahedra will remain the top and bottom tetrahedra respectively.

Note that this operation will cause the hinge edges to point in the opposite direction around the solid torus formed by this layered chain.

Note that only the representation of the chain is altered; the underlying triangulation is not changed.

◆ isAdjacent()

bool regina::SatAnnulus::isAdjacent ( const SatAnnulus other,
bool *  refVert,
bool *  refHoriz 
) const

Determines whether this and the given annulus are adjacent, possibly modulo vertical or horizontal reflections.

That is, this routine determines whether this and the given structure represent opposite sides of the same saturated annulus, where the fibres for both structures are consistent (though possibly reversed). See switchSides() for details on what "opposite sides" means in this context, and see reflectVertical() and reflectHorizontal() for descriptions of the various types of reflection.

Information regarding reflections is returned via the two boolean pointers refVert and refHoriz. If the two annuli are identically opposite each other as described by switchSides(), both booleans will be set to false. If the two annuli are identically opposite after one undergoes a vertical and/or horizontal reflection, then the booleans refVert and/or refHoriz will be set to true accordingly.

The critical difference between this routine and isJoined() is that this routine insists that the fibres on each annulus be consistent. This routine is thus suitable for examining joins between different sections of the same Seifert fibred space, for example.

Python:\n This routine only takes a single argument (the
annulus other). The return value is a tuple of three booleans: the usual return value, the value returned in refVert, and the value returned in refHoriz.
Parameters
otherthe annulus to compare with this.
refVertreturns information on whether the annuli are adjacent modulo a vertical reflection. This is set to true if a vertical reflection is required and false if it is not. If no adjacency was found at all, this boolean is not touched. A null pointer may be passed, in which case this information will not be returned at all.
refHorizreturns information on whether the annuli are adjacent modulo a horizontal reflection. This is set to true if a horizontal reflection is required and false if it is not. If no adjacency was found at all, this boolean is not touched. A null pointer may be passed, in which case this information will not be returned at all.
Returns
true if some adjacency was found (either with or without reflections), or false if no adjacency was found at all.

◆ isAnnulusSelfIdentified()

bool regina::TriSolidTorus::isAnnulusSelfIdentified ( int  index,
Perm< 4 > *  roleMap 
) const

Determines whether the two triangles of the requested annulus are glued to each other.

If the two triangles are glued, parameter roleMap will be modified to return a permutation describing how the vertex roles are glued to each other. This will describe directly how axis edges, major edges and minor edges map to each other without having to worry about the specific assignment of tetrahedron vertex numbers. For a discussion of vertex roles, see vertexRoles().

Note that annulus index uses faces from tetrahedra index+1 and index+2. The gluing permutation that maps vertices of tetrahedron index+1 to vertices of tetrahedron index+2 will be vertexRoles(index+2) * roleMap * vertexRoles(index+1).inverse().

Parameters
indexspecifies which annulus on the solid torus boundary to examine; this must be 0, 1 or 2.
roleMapa pointer to a permutation that, if this routine returns true, will be modified to describe the gluing of vertex roles. This parameter may be null.
Returns
true if and only if the two triangles of the requested annulus are glued together.

◆ isAugTriSolidTorus()

static AugTriSolidTorus* regina::AugTriSolidTorus::isAugTriSolidTorus ( const Component< 3 > *  comp)
static

Determines if the given triangulation component is an augmented triangular solid torus.

Parameters
compthe triangulation component to examine.
Returns
a newly created structure containing details of the augmented triangular solid torus, or null if the given component is not an augmented triangular solid torus.

◆ isBad() [1/2]

template<class List >
static bool regina::SatBlock::isBad ( Tetrahedron< 3 > *  t,
const List &  list 
)
inlinestaticprotected

Determines whether the given tetrahedron is contained within the given list.

This is intended as a helper routine for isBlock() and related routines. It is a generic routine for working with arbitrary list types.

Precondition
Forward iterators of type List::const_iterator that span the given list can be obtained by calling list.begin() and list.end().
Parameters
tthe tetrahedron to search for.
listthe list in which to search.
Returns
true if and only if the given tetrahedron was found.

◆ isBad() [2/2]

static bool regina::SatBlock::isBad ( Tetrahedron< 3 > *  t,
const TetList list 
)
staticprotected

Determines whether the given tetrahedron is contained within the given list.

This is intended as a helper routine for isBlock() and related routines.

Parameters
tthe tetrahedron to search for.
listthe list in which to search.
Returns
true if and only if the given tetrahedron was found.

◆ isBlock()

static SatBlock* regina::SatBlock::isBlock ( const SatAnnulus annulus,
TetList avoidTets 
)
static

Determines whether the given annulus is in fact a boundary annulus for a recognised type of saturated block.

The annulus should be represented from the inside of the proposed saturated block.

Only certain types of saturated block are recognised by this routine. More exotic saturated blocks will not be identified, and this routine will return null in such cases.

The given list of tetrahedra will not be examined by this routine. That is, only saturated blocks that do not contain any of these tetrahedra will be considered. As a consequence, if the given annulus uses any of these tetrahedra then null will be returned.

If a block is found on the other hand, all of the tetrahedra within this block will be added to the given list.

In the event that a block is found, it is guaranteed that the given annulus will be listed as annulus number 0 in the block structure, without any horizontal or vertical reflection.

Python:\n The second argument avoidTets is not
present. An empty list will be passed instead.
Parameters
annulusthe proposed boundary annulus that should form part of the new saturated block.
avoidTetsthe list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.
Returns
details of the saturated block if one was found, or null if none was found.

◆ isBlockCube()

static SatCube* regina::SatCube::isBlockCube ( const SatAnnulus annulus,
TetList avoidTets 
)
static

Determines whether the given annulus is a boundary annulus for a block of this type (cube).

This routine is a specific case of SatBlock::isBlock(); see that routine for further details.

Parameters
annulusthe proposed boundary annulus that should form part of the new saturated block.
avoidTetsthe list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.
Returns
details of the saturated block if one was found, or null if none was found.

◆ isBlockedSFS()

static BlockedSFS* regina::BlockedSFS::isBlockedSFS ( Triangulation< 3 > *  tri)
static

Determines if the given triangulation is a blocked Seifert fibred space.

Parameters
trithe triangulation to examine.
Returns
a newly created structure containing details of the blocked Seifert fibred space, or null if the given triangulation is not a blocked Seifert fibred space.

◆ isBlockedSFSLoop()

static BlockedSFSLoop* regina::BlockedSFSLoop::isBlockedSFSLoop ( Triangulation< 3 > *  tri)
static

Determines if the given triangulation is a blocked Seifert fibred space with identified boundaries, as described by this class.

Parameters
trithe triangulation to examine.
Returns
a newly created structure containing details of the blocked self-identified Seifert fibred space, or null if the given triangulation is not of this form.

◆ isBlockedSFSPair()

static BlockedSFSPair* regina::BlockedSFSPair::isBlockedSFSPair ( Triangulation< 3 > *  tri)
static

Determines if the given triangulation is a blocked pair of Seifert fibred spaces, as described by this class.

Parameters
trithe triangulation to examine.
Returns
a newly created structure containing details of the blocked pair, or null if the given triangulation is not of this form.

◆ isBlockedSFSTriple()

static BlockedSFSTriple* regina::BlockedSFSTriple::isBlockedSFSTriple ( Triangulation< 3 > *  tri)
static

Determines if the given triangulation is a blocked sequence of three Seifert fibred spaces, as described in the class notes above.

Parameters
trithe triangulation to examine.
Returns
a newly created structure containing details of the blocked triple, or null if the given triangulation is not of this form.

◆ isBlockLayering()

static SatLayering* regina::SatLayering::isBlockLayering ( const SatAnnulus annulus,
TetList avoidTets 
)
static

Determines whether the given annulus is a boundary annulus for a block of this type (single layering).

This routine is a specific case of SatBlock::isBlock(); see that routine for further details.

Parameters
annulusthe proposed boundary annulus that should form part of the new saturated block.
avoidTetsthe list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.
Returns
details of the saturated block if one was found, or null if none was found.

◆ isBlockLST()

static SatLST* regina::SatLST::isBlockLST ( const SatAnnulus annulus,
TetList avoidTets 
)
static

Determines whether the given annulus is a boundary annulus for a block of this type (layered solid torus).

This routine is a specific case of SatBlock::isBlock(); see that routine for further details.

Parameters
annulusthe proposed boundary annulus that should form part of the new saturated block.
avoidTetsthe list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.
Returns
details of the saturated block if one was found, or null if none was found.

◆ isBlockMobius()

static SatMobius* regina::SatMobius::isBlockMobius ( const SatAnnulus annulus,
TetList avoidTets 
)
static

Determines whether the given annulus is a boundary annulus for a block of this type (Mobius band).

This routine is a specific case of SatBlock::isBlock(); see that routine for further details.

Parameters
annulusthe proposed boundary annulus that should form part of the new saturated block.
avoidTetsthe list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.
Returns
details of the saturated block if one was found, or null if none was found.

◆ isBlockReflectorStrip()

static SatReflectorStrip* regina::SatReflectorStrip::isBlockReflectorStrip ( const SatAnnulus annulus,
TetList avoidTets 
)
static

Determines whether the given annulus is a boundary annulus for a block of this type (reflector strip).

This routine is a specific case of SatBlock::isBlock(); see that routine for further details.

Parameters
annulusthe proposed boundary annulus that should form part of the new saturated block.
avoidTetsthe list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.
Returns
details of the saturated block if one was found, or null if none was found.

◆ isBlockTriPrism()

static SatTriPrism* regina::SatTriPrism::isBlockTriPrism ( const SatAnnulus annulus,
TetList avoidTets 
)
static

Determines whether the given annulus is a boundary annulus for a block of this type (triangular prism).

This routine is a specific case of SatBlock::isBlock(); see that routine for further details.

Parameters
annulusthe proposed boundary annulus that should form part of the new saturated block.
avoidTetsthe list of tetrahedra that should not be considered, and to which any new tetrahedra will be added.
Returns
details of the saturated block if one was found, or null if none was found.

◆ isCanonical()

bool regina::SpiralSolidTorus::isCanonical ( const Triangulation< 3 > *  tri) const

Determines whether this spiralled solid torus is in canonical form.

Canonical form is described in detail in the description for makeCanonical().

Parameters
trithe triangulation in which this solid torus lives.
Returns
true if and only if this spiralled solid torus is in canonical form.

◆ isJoined()

bool regina::SatAnnulus::isJoined ( const SatAnnulus other,
Matrix2 matching 
) const

Determines whether this and the given annulus are joined in some form, even if the fibres on each annulus are not consistent.

This routine treats each annulus as though its boundaries are identified to form a torus (though it does not actually test whether this is true). It then examines whether this and the given annulus represent opposite sides of the same torus. More specifically, it tests whether both annuli are formed from the same pair of triangles, and whether the mapping of 0/1/2 markings from one annulus to the other is the same for each triangle. Note that the triangles are allowed to be switched (i.e., the first triangle of one annulus may be the second triangle of the other).

The critical difference between this routine and isAdjacent() is that this routine allows the fibres on each annulus to be inconsistent. This routine is thus suitable for examining joins between different Seifert fibred blocks in a graph manifold, for example.

If the two annuli are joined, the precise relationship between the curves on each annulus will be returned in the matrix matching. Specifically, let x and y be the oriented curves running from markings 0-1 and 0-2 respectively on the first triangle of this annulus. Likewise, let x' and y' run from markings 0-1 and 0-2 respectively on the first triangle of the annulus other. Then the joining between the two annuli can be expressed as follows:

    [x ]                [x']
    [  ]  =  matching * [  ].
    [y ]                [y']
Parameters
otherthe annulus to compare with this.
matchingreturns details on how the curves on each annulus are related. If the this and the given annulus are not joined, then this matrix is not touched.
Returns
true if this and the given annulus are found to be joined, or false if they are not.

◆ isL31Pillow()

static L31Pillow* regina::L31Pillow::isL31Pillow ( const Component< 3 > *  comp)
static

Determines if the given triangulation component is a triangular pillow L(3,1).

Parameters
compthe triangulation component to examine.
Returns
a newly created structure containing details of the triangular pillow L(3,1), or null if the given component is not a triangular pillow L(3,1).

◆ isLayeredChainPair()

static LayeredChainPair* regina::LayeredChainPair::isLayeredChainPair ( const Component< 3 > *  comp)
static

Determines if the given triangulation component is a layered chain pair.

Parameters
compthe triangulation component to examine.
Returns
a newly created structure containing details of the layered chain pair, or null if the given component is not a layered chain pair.

◆ isLayeredLensSpace()

static LayeredLensSpace* regina::LayeredLensSpace::isLayeredLensSpace ( const Component< 3 > *  comp)
static

Determines if the given triangulation component is a layered lens space.

Parameters
compthe triangulation component to examine.
Returns
a newly created structure containing details of the layered lens space, or null if the given component is not a layered lens space.

◆ isLayeredLoop()

static LayeredLoop* regina::LayeredLoop::isLayeredLoop ( const Component< 3 > *  comp)
static

Determines if the given triangulation component is a layered loop.

Parameters
compthe triangulation component to examine.
Returns
a newly created structure containing details of the layered loop, or null if the given component is not a layered loop.

◆ isLayeredSolidTorus()

static LayeredSolidTorus* regina::LayeredSolidTorus::isLayeredSolidTorus ( Component< 3 > *  comp)
static

Determines if the given triangulation component forms a layered solid torus in its entirity.

Note that, unlike formsLayeredSolidTorusBase(), this routine tests for a component that is a layered solid torus with no additional tetrahedra or gluings. That is, the two boundary triangles of the layered solid torus must in fact be boundary triangles of the component.

Parameters
compthe triangulation component to examine.
Returns
a newly created structure containing details of the layered solid torus, or null if the given component is not a layered solid torus.

◆ isLayeredTorusBundle()

static LayeredTorusBundle* regina::LayeredTorusBundle::isLayeredTorusBundle ( Triangulation< 3 > *  tri)
static

Determines if the given triangulation is a layered surface bundle.

Parameters
trithe triangulation to examine.
Returns
a newly created structure containing details of the layered surface bundle, or null if the given triangulation is not a layered surface bundle.

◆ isMajor()

bool regina::SatTriPrism::isMajor ( ) const
inline

Is this prism of major type or minor type? See the class notes for further details.

Note that this routine cannot be called major(), since on some compilers that name clashes with a macro for isolating major/minor bytes.

Returns
true if this prism is of major type, or false if it is of minor type.

◆ isPluggedIBundle()

bool regina::BlockedSFS::isPluggedIBundle ( std::string &  name) const

Determines whether this triangulation is a plugged thin I-bundle or a plugged thick I-bundle.

These structures are described in "Structures of small closed non-orientable 3-manifold triangulations", Benjamin A. Burton, J. Knot Theory Ramifications 16 (2007), 545–574.

Python:\n The argument name is not present. Instead,
this routine returns a tuple of size two: the boolean usually returned from this function, and the string usually returned in the argument name.
Parameters
nameused to return the name of the plugged thin/thick I-bundle, if the triangulation is of this form. If the triangulation is not of this form, this string is not touched.
Returns
true if this triangulation is indeed a plugged thin I-bundle or a plugged thick I-bundle.

◆ isPluggedTorusBundle()

static PluggedTorusBundle* regina::PluggedTorusBundle::isPluggedTorusBundle ( Triangulation< 3 > *  tri)
static

Determines if the given triangulation is a saturated region joined to a thin I-bundle via optional layerings, as described in the class notes above.

Parameters
trithe triangulation to examine.
Returns
a newly created object containing details of the structure that was found, or null if the given triangulation is not of the form described by this class.

◆ isPlugTriSolidTorus()

static PlugTriSolidTorus* regina::PlugTriSolidTorus::isPlugTriSolidTorus ( Component< 3 > *  comp)
static

Determines if the given triangulation component is a plugged triangular solid torus.

Parameters
compthe triangulation component to examine.
Returns
a newly created structure containing details of the plugged triangular solid torus, or null if the given component is not a plugged triangular solid torus.

◆ isSmallSnapPeaCensusTri()

static SnapPeaCensusTri* regina::SnapPeaCensusTri::isSmallSnapPeaCensusTri ( const Component< 3 > *  comp)
static

Determines if the given triangulation component is one of the smallest SnapPea census triangulations.

This routine is able to recognise a small selection of triangulations from the beginning of the SnapPea census, by way of hard-coding their structures and properties. Most triangulations from the census however will not be recognised by this routine.

Parameters
compthe triangulation component to examine.
Returns
a newly created structure representing the small SnapPea census triangulation, or null if the given component is not one of the few SnapPea census triangulations recognised by this routine.

◆ isSnapped()

bool regina::LayeredLensSpace::isSnapped ( ) const
inline

Determines if the layered solid torus that forms the basis for this lens space is snapped shut (folded closed without a twist).

Returns
true if and only if the torus is snapped shut.

◆ isStandardTriangulation() [1/2]

static StandardTriangulation* regina::StandardTriangulation::isStandardTriangulation ( Component< 3 > *  component)
static

Determines whether the given component represents one of the standard triangulations understood by Regina.

The list of recognised triangulations is expected to grow between releases.

If the standard triangulation returned has boundary triangles then the given component must have the same corresponding boundary triangles, i.e., the component cannot have any further identifications of these boundary triangles with each other.

Note that the triangulation-based routine isStandardTriangulation(Triangulation<3>*) may recognise more triangulations than this routine, since passing an entire triangulation allows access to more information.

Parameters
componentthe triangulation component under examination.
Returns
the details of the standard triangulation if the given component is recognised, or 0 otherwise.

◆ isStandardTriangulation() [2/2]

static StandardTriangulation* regina::StandardTriangulation::isStandardTriangulation ( Triangulation< 3 > *  tri)
static

Determines whether the given triangulation represents one of the standard triangulations understood by Regina.

The list of recognised triangulations is expected to grow between releases.

If the standard triangulation returned has boundary triangles then the given triangulation must have the same corresponding boundary triangles, i.e., the triangulation cannot have any further identifications of these boundary triangles with each other.

This routine may recognise more triangulations than the component-based isStandardTriangulation(Component<3>*), since passing an entire triangulation allows access to more information.

Parameters
trithe triangulation under examination.
Returns
the details of the standard triangualation if the given triangulation is recognised, or 0 otherwise.

◆ isTrivialTriangulation()

static TrivialTri* regina::TrivialTri::isTrivialTriangulation ( const Component< 3 > *  comp)
static

Determines if the given triangulation component is one of the trivial triangulations recognised by this class.

Parameters
compthe triangulation component to examine.
Returns
a newly created structure representing the trivial triangulation, or null if the given component is not one of the triangulations recognised by this class.

◆ isTwisted() [1/2]

bool regina::LayeredLensSpace::isTwisted ( ) const
inline

Determines if the layered solid torus that forms the basis for this lens space is twisted shut (folded closed with a twist).

Returns
true if and only if the torus is twisted shut.

◆ isTwisted() [2/2]

bool regina::LayeredLoop::isTwisted ( ) const
inline

Determines if this layered loop contains a twist.

See the general class notes for further details.

Returns
true if and only if this layered loop contains a twist.

◆ isTwoSidedTorus()

bool regina::SatAnnulus::isTwoSidedTorus ( ) const

Determines whether this annulus has its boundaries identified to form an embedded two-sided torus within the surrounding triangulation.

It will be verified that:

  • the two triangles of this annulus are joined along all three pairs of edges to form a torus;
  • the three edges of this torus remain distinct (i.e., different edges of the torus do not become identified within the larger triangulation);
  • this torus is two-sided within the surrounding triangulation.
Returns
true if this annulus forms an embedded two-sided torus as described above, or false if it does not.

◆ k()

unsigned long regina::TxIDiagonalCore::k ( ) const
inline

Returns the additional parameter k as described in the class notes.

Returns
the additional parameter k.

◆ LayeredChain() [1/2]

regina::LayeredChain::LayeredChain ( const LayeredChain cloneMe)
default

Creates a new layered chain that is a clone of the given structure.

Parameters
cloneMethe layered chain to clone.

◆ LayeredChain() [2/2]

regina::LayeredChain::LayeredChain ( Tetrahedron< 3 > *  tet,
Perm< 4 >  vertexRoles 
)
inline

Creates a new layered chain containing only the given tetrahedron.

This new layered chain will have index 1, but may be extended using extendAbove(), extendBelow() or extendMaximal().

Parameters
tetthe tetrahedron that will make up this layered chain.
vertexRolesa permutation describing the role each tetrahedron vertex must play in the layered chain; this must be in the same format as the permutation returned by bottomVertexRoles() and topVertexRoles().

◆ Layering()

regina::Layering::Layering ( Tetrahedron< 3 > *  bdry0,
Perm< 4 >  roles0,
Tetrahedron< 3 > *  bdry1,
Perm< 4 >  roles1 
)

Creates a new trivial (zero-tetrahedron) layering upon the given boundary.

The boundary is described by two tetrahedra and two permutations as explained in the class notes. Note that the given tetrahedra need not be boundary triangles in the triangulation (and if search routines such as extend() are called then they almost certainly should not be).

Parameters
bdry0the tetrahedron providing the first triangle of the boundary.
roles0the permutation describing how this first triangle is formed from three vertices of tetrahedron bdry0, as described in the class notes.
bdry1the tetrahedron providing the second triangle of the boundary.
roles1the permutation describing how this second triangle is formed from three vertices of tetrahedron bdry1.

◆ layeringReln()

const Matrix2 & regina::LayeredTorusBundle::layeringReln ( ) const
inline

Returns a 2-by-2 matrix describing how the layering of tetrahedra relates curves on the two torus boundaries of the core T x I.

The TxICore class documentation describes generating alpha and beta curves on the two torus boundaries of the core T x I (which are referred to as the upper and lower boundaries). The two boundary tori are parallel in two directions: through the core, and through the layering. It is desirable to know the parallel relationship between the two sets of boundary curves in each direction.

The relationship through the core is already described by TxICore::parallelReln(). This routine describes the relationship through the layering.

Let a_u and b_u be the alpha and beta curves on the upper boundary torus, and let a_l and b_l be the alpha and beta curves on the lower boundary torus. Suppose that the upper alpha is parallel to w.a_l + x.b_l, and that the upper beta is parallel to y.a_l + z.b_l. Then the matrix returned will be

    [ w  x ]
    [      ] .
    [ y  z ]

In other words,

    [ a_u ]                      [ a_l ]
    [     ]  =  layeringReln() * [     ] .
    [ b_u ]                      [ b_l ]

It can be observed that this matrix expresses the upper boundary curves in terms of the lower, whereas TxICore::parallelReln() expresses the lower boundary curves in terms of the upper. This means that the monodromy describing the overall torus bundle over the circle can be calculated as

    M  =  layeringReln() * core().parallelReln()

or alternatively using the similar matrix

    M'  =  core().parallelReln() * layeringReln() .

Note that in the degenerate case where there is no layering at all, this matrix is still perfectly well defined; in this case it describes a direct identification between the upper and lower boundary tori.

Returns
the relationship through the layering between the upper and lower boundary curves of the core T x I.

◆ length()

unsigned long regina::LayeredLoop::length ( ) const
inline

Returns the length of this layered loop.

See the general class notes for further details.

Returns
the length of this layered loop.

◆ lst()

const LayeredSolidTorus * regina::SatLST::lst ( ) const
inline

Returns details of the layered solid torus that this block represents.

Returns
details of the layered solid torus.

◆ makeCanonical()

bool regina::SpiralSolidTorus::makeCanonical ( const Triangulation< 3 > *  tri)

Converts this spiralled solid torus into its canonical representation.

The canonical representation of a spiralled solid torus is unique in a given triangulation.

Tetrahedron 0 in the spiralled solid torus will be the tetrahedron with the lowest index in the triangulation, and under permutation vertexRoles(0) the image of 0 will be less than the image of 3.

Parameters
trithe triangulation in which this solid torus lives.
Returns
true if and only if the representation of this spiralled solid torus was actually changed.

◆ manifold() [1/20]

Manifold * regina::StandardTriangulation::manifold ( ) const
inlinevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented in regina::TrivialTri, regina::TriSolidTorus, regina::SpiralSolidTorus, regina::SnappedBall, regina::SnapPeaCensusTri, regina::PlugTriSolidTorus, regina::PluggedTorusBundle, regina::LayeredTorusBundle, regina::LayeredSolidTorus, regina::LayeredLoop, regina::LayeredLensSpace, regina::LayeredChainPair, regina::LayeredChain, regina::L31Pillow, regina::BlockedSFSTriple, regina::BlockedSFSPair, regina::BlockedSFSLoop, regina::BlockedSFS, and regina::AugTriSolidTorus.

◆ manifold() [2/20]

Manifold* regina::AugTriSolidTorus::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [3/20]

Manifold* regina::BlockedSFS::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [4/20]

Manifold* regina::BlockedSFSLoop::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [5/20]

Manifold* regina::BlockedSFSPair::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [6/20]

Manifold* regina::BlockedSFSTriple::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [7/20]

Manifold* regina::L31Pillow::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [8/20]

Manifold* regina::LayeredChain::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [9/20]

Manifold* regina::LayeredChainPair::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [10/20]

Manifold* regina::LayeredLensSpace::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [11/20]

Manifold* regina::LayeredLoop::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [12/20]

Manifold* regina::LayeredSolidTorus::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [13/20]

Manifold* regina::LayeredTorusBundle::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [14/20]

Manifold* regina::PluggedTorusBundle::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [15/20]

Manifold* regina::PlugTriSolidTorus::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [16/20]

Manifold* regina::SnapPeaCensusTri::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [17/20]

Manifold* regina::SnappedBall::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [18/20]

Manifold* regina::SpiralSolidTorus::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [19/20]

Manifold* regina::TriSolidTorus::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ manifold() [20/20]

Manifold* regina::TrivialTri::manifold ( ) const
overridevirtual

Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented.

If the 3-manifold cannot be recognised then this routine will return 0.

The details of which standard triangulations have 3-manifold recognition routines can be found in the notes for the corresponding subclasses of StandardTriangulation. The default implementation of this routine returns 0.

It is expected that the number of triangulations whose underlying 3-manifolds can be recognised will grow between releases.

The 3-manifold will be newly allocated and must be destroyed by the caller of this routine.

Returns
the underlying 3-manifold.

Reimplemented from regina::StandardTriangulation.

◆ matchesTop()

bool regina::Layering::matchesTop ( Tetrahedron< 3 > *  upperBdry0,
Perm< 4 >  upperRoles0,
Tetrahedron< 3 > *  upperBdry1,
Perm< 4 >  upperRoles1,
Matrix2 upperReln 
) const

Determines whether the new torus boundary of this structure is identified with the given torus boundary.

In other words, this routine determines whether the new torus boundary of this structure and the given torus boundary represent opposite sides of the same two triangles.

The two boundaries must be identified according to some homeomorphism of the torus. Note that there are 12 different ways in which this can be done (two choices for which tetrahedron face joins with which, and then six possible rotations and reflections).

As with the other routines in this class, this routine does not verify that either boundary in fact forms a torus. Instead, it uses this assumption to define the rules of what identifications are allowable.

If there is a match, the given matrix upperReln will be modified to describe how the edges of the given boundary relate to the edges of the old boundary torus. Note that this relationship depends on how the intermediate tetrahedra are layered (and in fact the purpose of a layering is often to produce such a non-trivial relationship).

Specifically, let t0 and p0 be the first tetrahedron and permutation of the old boundary (as returned by oldBoundaryTet(0) and oldBoundaryRoles(0)), and let x and y be the directed edges p0[0]-p0[1] and p0[0]-p0[2] of tetrahedron t0 respectively (these are the leftmost and uppermost edges of the diagram below). Likewise, let u and q be the first tetrahedron and permutation of the given boundary (as passed by parameters upperBdry0 and upperRoles0), and let a and b be the directed edges q[0]-q[1] and q[0]-q[2] of tetrahedron u respectively.

    *--->>--*
    |0  2 / |
    |    / 1|
    v   /   v
    |1 /    |
    | / 2  0|
    *--->>--*

Assuming both boundaries are tori, edges x and y are generators of the original torus boundary and edges a and b are generators of the given torus boundary. Using additive notation, the matrix upperReln is modified so that

    [a]                 [x]
    [ ]  =  upperReln * [ ] .
    [b]                 [y]

In other words, the modified upperReln matrix expresses the generator curves of the given boundary in terms of the generator curves of the old boundary.

If no match is found, the matrix upperReln is not touched.

Parameters
upperBdry0the tetrahedron providing the first triangle of the given boundary.
upperRoles0the permutation describing how this first triangle is formed from three vertices of tetrahedron upperBdry0, as described in the class notes.
upperBdry1the tetrahedron providing the second triangle of the given boundary.
upperRoles1the permutation describing how this second triangle is formed from three vertices of tetrahedron upperBdry1.
upperRelnthe matrix that is changed to reflect the relationship between the old boundary of this structure and the given boundary.
Returns
true if the given boundary is found to matche the new boundary of this structure, or false otherwise.

◆ matchingReln() [1/4]

const Matrix2 & regina::BlockedSFSLoop::matchingReln ( ) const
inline

Returns the matrix describing how the two torus boundaries of the saturated region are joined.

Note that if a layering is placed between the two boundary tori, then any changes to the boundary relationships caused by the layering are included in this matrix.

See the class notes above for precise information on how this matrix is presented.

Returns
the matrix describing how the boundaries of the region are joined.

◆ matchingReln() [2/4]

const Matrix2 & regina::BlockedSFSPair::matchingReln ( ) const
inline

Returns the matrix describing how the two saturated region boundaries are joined.

Note that if a layering is placed between the two region boundaries, then any changes to the boundary relationships caused by the layering are included in this matrix.

See the class notes above for precise information on how this matrix is presented.

Returns
the matrix describing how the region boundaries are joined.

◆ matchingReln() [3/4]

const Matrix2 & regina::PluggedTorusBundle::matchingReln ( ) const
inline

Returns the matrix describing how the two torus boundaries of the saturated region are joined by the thin I-bundle and layerings.

See the class notes above for details.

Returns
the matching relation between the two region boundaries.

◆ matchingReln() [4/4]

const Matrix2 & regina::BlockedSFSTriple::matchingReln ( int  which) const
inline

Returns the matrix describing how the given end region is joined to the central region.

Note that if a layering is placed between the two respective region boundaries, then any changes to the boundary relationships caused by the layering are included in this matrix.

See the class notes above for precise information on how each matrix is presented.

Parameters
which0 if the matrix returned should describe how the central region is joined to the first end region (marked end region 0 in the class notes), or 1 if the matrix returned should describe how the central region is joined to the second end region (marked end region 1 in the class notes).
Returns
the matrix describing how the requested region boundaries are joined.

◆ meetsBoundary()

unsigned regina::SatAnnulus::meetsBoundary ( ) const

Determines how many triangles of this annulus lie on the boundary of the triangulation.

Note that this routine can also be used as a boolean function to determine whether any triangles of the annulus lie on the triangulation boundary.

Returns
the number of triangles of this annulus that lie on the boundary of the triangulation; this will be 0, 1 or 2.

◆ meridinalCuts()

unsigned long regina::LayeredSolidTorus::meridinalCuts ( int  group) const
inline

Returns the number of times the meridinal disc of the torus cuts the top level tetrahedron edges in the given group.

See topEdge() for further details about groups.

Parameters
groupthe given edge group; this must be 0, 1 or 2.
Returns
the number of times the meridinal disc cuts the edges in the given group.

◆ mobiusBoundaryGroup()

int regina::LayeredLensSpace::mobiusBoundaryGroup ( ) const
inline

Determines which edge of the layered solid torus is glued to the boundary of the mobius strip (i.e., the weight 2 edge of the degenerate (2,1,1) layered solid torus).

The return value will be one of the three top level tetrahedron edge groups in the layered solid torus; see LayeredSolidTorus::topEdge() for further details about edge groups.

Returns
the top level edge group of the layered solid torus to which the mobius strip boundary is glued.

◆ name() [1/2]

std::string regina::StandardTriangulation::name ( ) const

Returns the name of this specific triangulation as a human-readable string.

Returns
the name of this triangulation.

◆ name() [2/2]

std::string regina::TxICore::name ( ) const

Returns the name of this specific triangulation of T x I as a human-readable string.

Returns
the name of this triangulation.

◆ nAnnuli()

unsigned regina::SatBlock::nAnnuli ( ) const
inline

Returns the number of annuli on the boundary of this saturated block.

Returns
the number of boundary annuli.

◆ newBoundaryRoles()

Perm< 4 > regina::Layering::newBoundaryRoles ( unsigned  which) const
inline

Returns the permutations that describe the new boundary triangles.

These refer to the final boundary after layerings have been performed.

See the Layering class notes for details on how a torus boundary is formed from two tetrahedra and two permutations.

Parameters
whichspecifies which permutation to return; this must be either 0 or 1.
Returns
the requested permutation describing the new boundary.

◆ newBoundaryTet()

Tetrahedron< 3 > * regina::Layering::newBoundaryTet ( unsigned  which) const
inline

Returns the tetrahedra that provide the new boundary triangles.

These belong to the final boundary after layerings have been performed.

See the Layering class notes for details on how a torus boundary is formed from two tetrahedra and two permutations.

Parameters
whichspecifies which tetrahedron to return; this must be either 0 or 1.
Returns
the requested tetrahedron of the new boundary.

◆ nextBoundaryAnnulus()

void regina::SatBlock::nextBoundaryAnnulus ( unsigned  thisAnnulus,
SatBlock *&  nextBlock,
unsigned &  nextAnnulus,
bool &  refVert,
bool &  refHoriz,
bool  followPrev 
)

Finds the next (or previous) boundary annulus around from this, treating all adjacent blocks as part of a single large saturated region.

Suppose that all saturated blocks are merged together according to adjacent boundary annuli, forming larger saturated structures. The remaining annuli that do not have adjacent blocks will group together to form several large boundary rings. Note that each boundary ring might involve annuli from several different blocks, and might or might not have a twist (thus forming a large Klein bottle instead of a large torus).

This routine is used to trace around such a boundary ring. It is assumed that annulus thisAnnulus of this block forms part of a boundary ring (i.e., it has no adjacent block). This routine will then return the next/previous annulus around from this in the large boundary ring. Here "next" means in the direction following from the second triangle of this annulus, and "previous" means in the direction following from the first triangle; the boolean argument followPrev controls which we will be used. This next/previous annulus might belong to another block, or it might even be this original annulus again.

The next/previous annulus itself is not returned, but rather a reference as to how it appears within its enclosing saturated block. Specifically, a block and corresponding annulus number will be returned in the arguments nextBlock and nextAnnulus respectively.

It is possible that the next/previous annulus as it appears within the returned block is oriented differently from how it appears within this large boundary ring. For this reason, two booleans are returned also. The argument refVert will describe whether the annulus is reflected vertically as it appears within the large boundary ring (i.e., the first and second triangles remain the same but the fibre direction is reversed). Similarly, the argument refHoriz will describe whether the annulus is reflected horizontally as it appears within the large boundary ring (i.e., first and second triangles are switched but the fibre direction is unchanged).

It is possible that both a horizontal and vertical reflection take place. Note that any kind of reflection will also affect the locations of the 0/1/2 markings as described in the SatAnnulus class notes.

Finally, note that if the large boundary ring is twisted (i.e., it forms a Klein bottle), then following the entire boundary ring around using this routine will bring you back to the starting annulus but with the refVert flag set.

Precondition
Annulus thisAnnulus of this block has no block adjacent to it.
Warning
If you wish to trace around an entire boundary ring, you will need to adjust the argument followPrev according to whether or not the current annulus is reflected horizontally (since, under a horizontal reflection, "next" becomes "previous" and vice versa).
Python:\n This routine only takes two arguments (thisAnnulus
and followPrev). The return value is a tuple of four values: the block returned in nextBlock, the integer returned in nextAnnulus, the boolean returned in refVert, and the boolean returned in refHoriz.
Parameters
thisAnnulusdescribes which original boundary annulus of this block to examine; this must be between 0 and nAnnuli()-1 inclusive.
nextBlocka reference used to return the block containing the next boundary annulus around from thisAnnulus.
nextAnnulusa reference used to return the specific annulus number within nextBlock of the next annulus around; this will be between 0 and nextBlock->nAnnuli()-1 inclusive, and the corresponding annulus will have no block adjacent to it.
refVerta reference used to return true if the next annulus around is vertically reflected, or false if not; see above for details.
refHoriza reference used to return true if the next annulus around is horizontally reflected, or false if not; see above for details.
followPrevtrue if we should find the previous boundary annulus, or false if we should find the next boundary annulus.

◆ notUnique() [1/5]

bool regina::SatBlock::notUnique ( Tetrahedron< 3 > *  test)
inlinestaticprotected

Determines whether the given tetrahedron pointer is null.

This is intended as a helper routine for isBlock() and related routines. Despite its trivial implementation, it is provided to make long blocks of code easier to read and distinguish by functionality.

The name notUnique() may seem strang for what is essentially a nullity test; in fact this routine is offered as a degenerate case of other variants of notUnique() that take more tetrahedra as arguments.

Parameters
testthe tetrahedron pointer to test.
Returns
true if test is null, or false otherwise.

◆ notUnique() [2/5]

bool regina::SatBlock::notUnique ( Tetrahedron< 3 > *  test,
Tetrahedron< 3 > *  other1 
)
inlinestaticprotected

Determines whether the given tetrahedron pointer is null or equal to another from the given list.

This is intended as a helper routine for isBlock() and related routines. Despite its trivial implementation, it is provided to make long blocks of code easier to read and distinguish by functionality.

Parameters
testthe tetrahedron pointer to test.
other1another tetrahedron that will be compared with test.
Returns
true if test is null or equal to other1, or false otherwise.

◆ notUnique() [3/5]

bool regina::SatBlock::notUnique ( Tetrahedron< 3 > *  test,
Tetrahedron< 3 > *  other1,
Tetrahedron< 3 > *  other2 
)
inlinestaticprotected

Determines whether the given tetrahedron pointer is null or equal to another from the given list.

This is intended as a helper routine for isBlock() and related routines. Despite its trivial implementation, it is provided to make long blocks of code easier to read and distinguish by functionality.

Parameters
testthe tetrahedron pointer to test.
other1another tetrahedron that will be compared with test.
other2another tetrahedron that will be compared with test.
Returns
true if test is null or equal to other1 or other2, or false otherwise.

◆ notUnique() [4/5]

bool regina::SatBlock::notUnique ( Tetrahedron< 3 > *  test,
Tetrahedron< 3 > *  other1,
Tetrahedron< 3 > *  other2,
Tetrahedron< 3 > *  other3 
)
inlinestaticprotected

Determines whether the given tetrahedron pointer is null or equal to another from the given list.

This is intended as a helper routine for isBlock() and related routines. Despite its trivial implementation, it is provided to make long blocks of code easier to read and distinguish by functionality.

Parameters
testthe tetrahedron pointer to test.
other1another tetrahedron that will be compared with test.
other2another tetrahedron that will be compared with test.
other3another tetrahedron that will be compared with test.
Returns
true if test is null or equal to other1, other2 or other3, or false otherwise.

◆ notUnique() [5/5]

bool regina::SatBlock::notUnique ( Tetrahedron< 3 > *  test,
Tetrahedron< 3 > *  other1,
Tetrahedron< 3 > *  other2,
Tetrahedron< 3 > *  other3,
Tetrahedron< 3 > *  other4 
)
inlinestaticprotected

Determines whether the given tetrahedron pointer is null or equal to another from the given list.

This is intended as a helper routine for isBlock() and related routines. Despite its trivial implementation, it is provided to make long blocks of code easier to read and distinguish by functionality.

Parameters
testthe tetrahedron pointer to test.
other1another tetrahedron that will be compared with test.
other2another tetrahedron that will be compared with test.
other3another tetrahedron that will be compared with test.
other4another tetrahedron that will be compared with test.
Returns
true if test is null or equal to other1, other2, other3 or other4, or false otherwise.

◆ numberOfBlocks()

unsigned long regina::SatRegion::numberOfBlocks ( ) const
inline

Returns the number of saturated blocks that come together to form this saturated region.

◆ numberOfBoundaryAnnuli()

unsigned long regina::SatRegion::numberOfBoundaryAnnuli ( ) const
inline

Returns the number of saturated annuli that together form the boundary components of this region.

Returns
the number of boundary annuli.

◆ oldBoundaryRoles()

Perm< 4 > regina::Layering::oldBoundaryRoles ( unsigned  which) const
inline

Returns the permutations that describe the old boundary triangles.

These refer to the original boundary before any layerings take place.

See the Layering class notes for details on how a torus boundary is formed from two tetrahedra and two permutations.

Parameters
whichspecifies which permutation to return; this must be either 0 or 1.
Returns
the requested permutation describing the old boundary.

◆ oldBoundaryTet()

Tetrahedron< 3 > * regina::Layering::oldBoundaryTet ( unsigned  which) const
inline

Returns the tetrahedra that provide the old boundary triangles.

These belong to the original boundary before any layerings take place.

See the Layering class notes for details on how a torus boundary is formed from two tetrahedra and two permutations.

Parameters
whichspecifies which tetrahedron to return; this must be either 0 or 1.
Returns
the requested tetrahedron of the old boundary.

◆ operator!=() [1/3]

bool regina::SatAnnulus::operator!= ( const SatAnnulus other) const
inline

Determines whether or not this and the given structure describe the same annulus with the same representation.

This requires both structures to have identical tet[] and roles[] arrays.

Parameters
otherthe structure to compare with this.
Returns
true if the structures do not describe the same annulus with the same representation, or false if they do.

◆ operator!=() [2/3]

bool regina::SatBlockSpec::operator!= ( const SatBlockSpec other) const
inline

Determines whether this and the given structure contain different information.

In particular, they are considered different if their block pointers are different (even if they point to different blocks with the same contents).

Parameters
otherthe structure to compare against this.
Returns
true if and only if this and other contain different information.

◆ operator!=() [3/3]

bool regina::SnapPeaCensusTri::operator!= ( const SnapPeaCensusTri compare) const
inline

Determines whether this and the given structure represent different triangulations from the SnapPea census.

Parameters
comparethe structure with which this will be compared.
Returns
true if and only if this and the given structure represent different SnapPea census triangulations.

◆ operator<()

bool regina::SatBlock::operator< ( const SatBlock compare) const

Implements a consistent ordering of saturated blocks.

This ordering is purely aesthetic on the part of the author, and is subject to change in future versions of Regina.

Parameters
comparethe saturated block with which this will be compared.
Returns
true if this block comes before the given block according to the ordering of saturated blocks, or false if either the blocks are identical or this block comes after the given block.

◆ operator=() [1/2]

SatAnnulus & regina::SatAnnulus::operator= ( const SatAnnulus cloneMe)
inline

Makes this equal to a clone of the given structure.

Parameters
cloneMethe structure to clone.
Returns
a reference to this structure.

◆ operator=() [2/2]

SatBlockSpec& regina::SatBlockSpec::operator= ( const SatBlockSpec )
default

Sets this to be a clone of the given structure.

◆ operator==() [1/3]

bool regina::SatAnnulus::operator== ( const SatAnnulus other) const
inline

Determines whether or not this and the given structure describe the same annulus with the same representation.

This requires both structures to have identical tet[] and roles[] arrays.

Parameters
otherthe structure to compare with this.
Returns
true if the structures describe the same annulus with the same representation, or false if they do not.

◆ operator==() [2/3]

bool regina::SatBlockSpec::operator== ( const SatBlockSpec other) const
inline

Determines whether this and the given structure contain identical information.

In particular, their block pointers must be identical (not pointing to different blocks with the same contents).

Parameters
otherthe structure to compare against this.
Returns
true if and only if this and other contain identical information.

◆ operator==() [3/3]

bool regina::SnapPeaCensusTri::operator== ( const SnapPeaCensusTri compare) const
inline

Determines whether this and the given structure represent the same triangulation from the SnapPea census.

Parameters
comparethe structure with which this will be compared.
Returns
true if and only if this and the given structure represent the same SnapPea census triangulation.

◆ otherSide()

SatAnnulus regina::SatAnnulus::otherSide ( ) const
inline

Returns a representation of the same annulus from the other side.

This structure will not be changed. See switchSides() for further details.

Precondition
Neither triangle of this annulus is a boundary triangle of the triangulation.
Returns
a new representation of this annulus from the other side.

◆ overHorizontal()

bool regina::SatLayering::overHorizontal ( ) const
inline

Does this describe a layering over the horizontal edge of the boundary annulus, or a layering over the diagonal edge?

See the SatAnnulus class notes for definitions of horizontal and diagonal in this context.

◆ p()

unsigned long regina::LayeredLensSpace::p ( ) const
inline

Returns the first parameter p of this lens space L(p,q).

Returns
the first parameter p.

◆ parallelReln()

const Matrix2 & regina::TxICore::parallelReln ( ) const
inline

Returns a 2-by-2 matrix describing the parallel relationship between the upper and lower boundary curves.

Let a_u and b_u be the upper alpha and beta boundary curves. Suppose that the lower alpha is parallel to w.a_u + x.b_u, and that the lower beta is parallel to y.a_u + z.b_u. Then the matrix returned will be

    [ w  x ]
    [      ] .
    [ y  z ]

In other words, if a_l and b_l are the lower alpha and beta curves respectively, we have

    [ a_l ]                      [ a_u ]
    [     ]  =  parallelReln() * [     ] .
    [ b_l ]                      [ b_u ]
Returns
the relationship between the upper and lower boundary curves.

◆ position()

int regina::SatMobius::position ( ) const
inline

Describes how the Mobius band is attached to the boundary annulus.

The class notes discuss the weight two edge of the Mobius band (or equivalently the boundary edge of the Mobius band). The return value of this routine indicates which edge of the boundary annulus this weight two edge is joined to.

In the SatAnnulus class notes, the three edges of the annulus are denoted vertical, horizontal and boundary, and the vertices of each triangle are given markings 0, 1 and 2.

The return value of this routine takes the value 0, 1 or 2 as follows:

  • 0 means that the weight two edge is joined to the diagonal edge of the annulus (markings 1 and 2);
  • 1 means that the weight two edge is joined to the horizontal edge of the annulus (markings 0 and 2);
  • 2 means that the weight two edge is joined to the vertical edge of the annulus (markings 0 and 1).
Returns
the value 0, 1 or 2 as described above.

◆ q()

unsigned long regina::LayeredLensSpace::q ( ) const
inline

Returns the second parameter q of this lens space L(p,q).

Returns
the second parameter q.

◆ reflectHorizontal()

void regina::SatAnnulus::reflectHorizontal ( )
inline

Performs a left-to-right reflection of this annulus representation.

The vertical direction of the fibres will remain unchanged, but the first and second triangles will be switched (and the 0..2 markings changed to compensate).

◆ reflectVertical()

void regina::SatAnnulus::reflectVertical ( )
inline

Reverses the direction of the vertical fibres in this annulus representation.

The first and second triangles (as described in the class notes) will remain unchanged, but the markings 0 and 1 on each triangle will be switched.

◆ region() [1/4]

const SatRegion & regina::BlockedSFS::region ( ) const
inline

Returns details of the single saturated region that fills this triangulation.

Returns
the single saturated region.

◆ region() [2/4]

const SatRegion & regina::BlockedSFSLoop::region ( ) const
inline

Returns details of the saturated region from which this triangulation is formed.

See the class notes above for further information.

Returns
details of the saturated region.

◆ region() [3/4]

const SatRegion & regina::PluggedTorusBundle::region ( ) const
inline

Returns the saturated region that forms part of this triangulation.

The region refers directly to tetrahedra within this triangulation (as opposed to the thin I-bundle, which refers to a separate external triangulation).

Returns
the saturated region.

◆ region() [4/4]

const SatRegion & regina::BlockedSFSPair::region ( int  which) const
inline

Returns details of one of the two bounded saturated regions that form this triangulation.

See the class notes above for further information.

Parameters
which0 if the first region should be returned, or 1 if the second region should be returned.
Returns
details of the requested saturated region.

◆ reverse() [1/2]

void regina::LayeredChain::reverse ( )

Reverses this layered chain so the top tetrahedron becomes the bottom and vice versa.

The upper and lower hinges will remain the upper and lower hinges respectively.

Note that this operation will cause the hinge edges to point in the opposite direction around the solid torus formed by this layered chain.

Note that only the representation of the chain is altered; the underlying triangulation is not changed.

◆ reverse() [2/2]

void regina::SpiralSolidTorus::reverse ( )

Reverses this spiralled solid torus.

Tetrahedra 0, 1, 2, ..., size()-1 will become tetrahedra size()-1, ..., 2, 1, 0 respectively. Note that this operation will change the vertex roles as well.

The underlying triangulation is not changed; all that changes is how this spiralled solid torus is represented.

◆ roles()

Perm< 4 > regina::SatLST::roles ( ) const
inline

Describes how the layered solid torus is attached to the boundary annulus.

The LayeredSolidTorus class notes describe top-level edge groups 0, 1 and 2 for a layered solid torus. On the other hand, the SatAnnulus class notes define vertical, horizontal and diagonal edges on the boundary annulus.

Suppose that the permutation returned by this routine is r. This indicates that:

  • edge group r[0] is attached to the vertical annulus edges;
  • edge group r[1] is attached to the horizontal annulus edges;
  • edge group r[2] is attached to the diagonal annulus edges.

The image r[3] will always be 3.

Returns
a description of how the layered solid torus is attached to the boundary annulus.

◆ rotateHalfTurn()

void regina::SatAnnulus::rotateHalfTurn ( )
inline

Rotates the representation of this annulus by 180 degrees.

This has the effect of switching the first and second triangles and also reversing the direction of the vertical fibres.

Calling this routine is equivalent to calling reflectVertical() and then reflectHorizontal().

◆ SatAnnulus() [1/3]

regina::SatAnnulus::SatAnnulus ( )
inline

Creates a new uninitialised structure.

Both tetrahedra will be set to null pointers.

◆ SatAnnulus() [2/3]

regina::SatAnnulus::SatAnnulus ( const SatAnnulus cloneMe)
inline

Creates a clone of the given structure.

Parameters
cloneMethe structure to clone.

◆ SatAnnulus() [3/3]

regina::SatAnnulus::SatAnnulus ( Tetrahedron< 3 > *  t0,
Perm< 4 >  r0,
Tetrahedron< 3 > *  t1,
Perm< 4 >  r1 
)
inline

Creates a new structure initialised to the given values.

See the class notes for what the various tetrahedra and permutations mean.

Parameters
t0the tetrahedron to assign to tet[0].
r0the permutation to assign to roles[0].
t1the tetrahedron to assign to tet[1].
r1the permutation to assign to roles[1].

◆ SatBlock() [1/2]

regina::SatBlock::SatBlock ( const SatBlock cloneMe)

Creates a new clone of the given block.

Note that the new adjBlock_ array will contain pointers to the same adjacent blocks as the original. That is, adjacent blocks will not be cloned also; instead pointers to adjacent blocks will simply be copied across.

Parameters
cloneMethe saturated block to clone.

◆ SatBlock() [2/2]

regina::SatBlock::SatBlock ( unsigned  nAnnuli,
bool  twistedBoundary = false 
)
inlineprotected

Constructor for a block with the given number of annuli on the boundary.

All arrays will be constructed but their contents will remain uninitialised, with the exception that the adjBlock array will be filled with null pointers.

Parameters
nAnnulithe number of annuli on the boundary of this block; this must be strictly positive.
twistedBoundarytrue if the ring of boundary annuli is twisted to form a long Mobius band, or false (the default) if it is not.

◆ SatBlockSpec() [1/3]

regina::SatBlockSpec::SatBlockSpec ( )
inline

Creates a new structure that is completely uninitialised.

◆ SatBlockSpec() [2/3]

regina::SatBlockSpec::SatBlockSpec ( const SatBlockSpec )
default

Creates a new structure that is a clone of the given structure.

◆ SatBlockSpec() [3/3]

regina::SatBlockSpec::SatBlockSpec ( SatBlock useBlock,
bool  useRefVert,
bool  useRefHoriz 
)
inline

Creates a new structure that is initialised to the given set of values.

Parameters
useBlockdetails of the saturated block structure.
useRefVerttrue if the block is reflected vertically within the larger region, or false otherwise.
useRefHoriztrue if the block is reflected horizontally within the larger region, or false otherwise.

◆ SatBlockStarterSearcher()

regina::SatBlockStarterSearcher::SatBlockStarterSearcher ( )
protecteddefault

Default constructor, for use by subclasses.

◆ SatCube() [1/2]

regina::SatCube::SatCube ( )
inlineprotected

Constructs an uninitialised block.

The boundary annuli must be initialised before this block can be used.

◆ SatCube() [2/2]

regina::SatCube::SatCube ( const SatCube cloneMe)
default

Constructs a clone of the given block structure.

Parameters
cloneMethe block structure to clone.

◆ SatLayering() [1/2]

regina::SatLayering::SatLayering ( bool  overHorizontal)
inlineprotected

Constructs a partially initialised block.

The boundary annuli will remain uninitialised, and must be initialised before this block can be used.

Parameters
overHorizontaltrue if this block describes a layering over the horizontal edge of the boundary annulus, or false if it describes a layering over the diagonal edge.

◆ SatLayering() [2/2]

regina::SatLayering::SatLayering ( const SatLayering cloneMe)
default

Constructs a clone of the given block structure.

Parameters
cloneMethe block structure to clone.

◆ SatLST()

regina::SatLST::SatLST ( const SatLST cloneMe)

Constructs a clone of the given block structure.

Parameters
cloneMethe block structure to clone.

◆ SatMobius()

regina::SatMobius::SatMobius ( const SatMobius cloneMe)
default

Constructs a clone of the given block structure.

Parameters
cloneMethe block structure to clone.

◆ SatReflectorStrip() [1/2]

regina::SatReflectorStrip::SatReflectorStrip ( const SatReflectorStrip cloneMe)
default

Constructs a clone of the given block structure.

Parameters
cloneMethe block structure to clone.

◆ SatReflectorStrip() [2/2]

regina::SatReflectorStrip::SatReflectorStrip ( unsigned  length,
bool  twisted 
)
inlineprotected

Constructs a partially initialised block of the given length.

The boundary annuli will remain uninitialised, and must be initialised before this block can be used.

Parameters
lengththe length of the new reflector strip, i.e., the number of boundary annuli; this must be strictly positive.
twistedtrue if the strip should be twisted (giving a twisted ring of boundary annuli), or false if not.

◆ SatRegion()

regina::SatRegion::SatRegion ( SatBlock starter)

Constructs a new region containing just the given block.

All boundary annuli of the given block will become boundary annuli of this region. It is guaranteed that this block will be stored in the region without any kind of reflection (see SatBlockSpec for details).

Typically a region is initialised using this constructor, and then grown using the expand() routine. For help in finding an initial starter block, see the SatBlockStarterSearcher class.

This region will claim ownership of the given block, and upon destruction it will destroy this block also.

Precondition
The given block has no adjacencies listed. That is, for every boundary annulus of the given block, SatBlock::hasAdjacentBlock() returns false.
Parameters
starterthe single block that this region will describe.

◆ SatTriPrism() [1/2]

regina::SatTriPrism::SatTriPrism ( bool  major)
inlineprotected

Constructs a partially initialised block.

The boundary annuli will remain uninitialised, and must be initialised before this block can be used.

Parameters
majortrue if this block is of major type, or false if it is of minor type.

◆ SatTriPrism() [2/2]

regina::SatTriPrism::SatTriPrism ( const SatTriPrism cloneMe)
default

Constructs a clone of the given block structure.

Parameters
cloneMethe block structure to clone.

◆ section()

char regina::SnapPeaCensusTri::section ( ) const
inline

Returns the section of the SnapPea census to which this triangulation belongs.

This will be one of the section constants defined in this class.

Returns
the section of the SnapPea census.

◆ setAdjacent()

void regina::SatBlock::setAdjacent ( unsigned  whichAnnulus,
SatBlock adjBlock,
unsigned  adjAnnulus,
bool  adjReflected,
bool  adjBackwards 
)
inline

Lists the given saturated block as being adjacent to the given boundary annulus of this block.

Both block structures (this and the given block) will be updated.

Parameters
whichAnnulusindicates which boundary annulus of this block has the new adjacency; this must be between 0 and nAnnuli()-1 inclusive.
adjBlockthe other saturated block that is adjacent to this.
adjAnnulusindicates which boundary annulus of the adjacent block meets the given boundary annulus of this block; this must be between 0 and adjBlock->nAnnuli()-1 inclusive.
adjReflectedindicates whether the new adjacency is reflected (see the class notes for details).
adjBackwardsindicates whether the new adjacency is backwards (see the class notes for details).

◆ size() [1/4]

size_t regina::LayeredSolidTorus::size ( ) const
inline

Returns the number of tetrahedra in this layered solid torus.

Returns
the number of tetrahedra.

◆ size() [2/4]

unsigned long regina::Layering::size ( ) const
inline

Returns the number of individual tetrahedra that have been layered onto the original boundary, according to the data stored in this structure.

This begins at zero when the class constructor is called, and it increases if the routines extend() or extendOne() find that additional layerings have taken place.

Returns
the number of layered tetrahedra.

◆ size() [3/4]

size_t regina::SpiralSolidTorus::size ( ) const
inline

Returns the number of tetrahedra in this spiralled solid torus.

Returns
the number of tetrahedra.

◆ size() [4/4]

unsigned long regina::TxIDiagonalCore::size ( ) const
inline

Returns the total number of tetrahedra in this T x I triangulation.

Returns
the total number of tetrahedra.

◆ snappedBall()

const SnappedBall * regina::SnappedTwoSphere::snappedBall ( int  index) const
inline

Returns one of the two snapped 3-balls whose equators are joined.

Parameters
indexspecifies which of the two 3-balls to return; this must be either 0 or 1.
Returns
the corresponding snapped 3-ball.

◆ StandardTriangulation() [1/2]

regina::StandardTriangulation::StandardTriangulation ( )
protecteddefault

Default constructor.

This is needed for subclasses to implicitly call from their own constructors.

◆ StandardTriangulation() [2/2]

regina::StandardTriangulation::StandardTriangulation ( const StandardTriangulation )
protecteddefault

Do-nothing copy constructor.

This is needed for subclasses to implicitly call from their own default copy constructors.

◆ switchSides()

void regina::SatAnnulus::switchSides ( )

Converts this into a representation of the same annulus from the other side.

The first and second triangles and their 0..2 markings (as described in the class notes) remain unchanged. However, the two tetrahedra that are used to describe the annulus will be replaced by their counterparts on the other side of the annulus (i.e., the two new tetrahedra that meet the two original tetrahedra along the annulus itself).

Precondition
Neither triangle of this annulus is a boundary triangle of the triangulation.

◆ tetrahedron() [1/4]

Tetrahedron< 3 > * regina::SnappedBall::tetrahedron ( ) const
inline

Returns the tetrahedron that forms this snapped ball.

Returns
the tetrahedron.

◆ tetrahedron() [2/4]

Tetrahedron< 3 > * regina::TriSolidTorus::tetrahedron ( int  index) const
inline

Returns the requested tetrahedron in this solid torus.

See the general class notes for further details.

Parameters
indexspecifies which tetrahedron in the solid torus to return; this must be 0, 1 or 2.
Returns
the requested tetrahedron.

◆ tetrahedron() [3/4]

Tetrahedron< 3 > * regina::L31Pillow::tetrahedron ( int  whichTet) const
inline

Returns one of the two tetrahedra involved in this structure.

Parameters
whichTetspecifies which tetrahedron to return; this must be either 0 or 1.
Returns
the requested tetrahedron.

◆ tetrahedron() [4/4]

Tetrahedron< 3 > * regina::SpiralSolidTorus::tetrahedron ( size_t  index) const
inline

Returns the requested tetrahedron in this spiralled solid torus.

Tetrahedra are numbered from 0 to size()-1 inclusive, with tetrahedron i+1 being placed above tetrahedron i.

Parameters
indexspecifies which tetrahedron to return; this must be between 0 and size()-1 inclusive.
Returns
the requested tetrahedron.

◆ TeXName() [1/2]

std::string regina::StandardTriangulation::TeXName ( ) const

Returns the name of this specific triangulation in TeX format.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Returns
the name of this triangulation in TeX format.

◆ TeXName() [2/2]

std::string regina::TxICore::TeXName ( ) const

Returns the name of this specific triangulation of T x I in TeX format.

No leading or trailing dollar signs will be included.

Returns
the name of this triangulation in TeX format.

◆ top()

Tetrahedron< 3 > * regina::LayeredChain::top ( ) const
inline

Returns the top tetrahedron of this layered chain.

Returns
the top tetrahedron.

◆ topEdge()

int regina::LayeredSolidTorus::topEdge ( int  group,
int  index 
) const
inline

Returns the requested edge of the top level tetrahedron belonging to the given group.

The layering reduces five of the top level tetrahedron edges to three boundary edges of the solid torus; this divides the five initial edges into groups of size two, two and one.

Group 0 represents the boundary edge that the meridinal disc cuts fewest times. Group 2 represents the boundary edge that the meridinal disc cuts most times. Group 1 is in the middle.

Note that topEdgeGroup(topEdge(group, index)) == group for all values of group and index that actually correspond to an edge.

Edges topEdge(group, 0) will all belong to face topFace(0). Edges topEdge(group, 1) (if they exist) will all belong to face topFace(1).

Parameters
groupthe group that the requested edge should belong to; this must be 0, 1 or 2.
indexthe index within the given group of the requested edge; this must be 0 or 1. Note that one of the groups only contains one tetrahedron edge, in which case this edge will be stored at index 0.
Returns
the edge number in the top level tetrahedron of the requested edge (between 0 and 5 inclusive), or -1 if there is no such edge (only possible if the given group was the group of size one and the given index was 1).

◆ topEdgeGroup()

int regina::LayeredSolidTorus::topEdgeGroup ( int  edge) const
inline

Returns the group that the given edge of the top level tetrahedron belongs to.

See topEdge() for further details about groups.

Note that topEdgeGroup(topEdge(group, index)) == group for all values of group and index that actually correspond to an edge.

Parameters
edgethe edge number in the top level tetrahedron of the given edge; this must be between 0 and 5 inclusive.
Returns
the group to which the given edge belongs (0, 1 or 2), or -1 if this edge does not belong to any group (only possible if this is the unique edge in the top tetrahedron not on the torus boundary).

◆ topFace()

int regina::LayeredSolidTorus::topFace ( int  index) const
inline

Returns one of the two faces of the top level tetrahedron that form the boundary of this layered solid torus.

Parameters
indexspecifies which of the two faces to return; this must be 0 or 1.
Returns
the requested face number in the top level tetrahedron; this will be between 0 and 3 inclusive.

◆ topLevel()

Tetrahedron< 3 > * regina::LayeredSolidTorus::topLevel ( ) const
inline

Returns the top level tetrahedron in this layered solid torus.

This is the tetrahedron that would be on the boundary of the torus if the torus were the entire manifold.

Returns
the top level tetrahedron.

◆ topVertexRoles()

Perm< 4 > regina::LayeredChain::topVertexRoles ( ) const
inline

Returns a permutation represeting the role that each vertex of the top tetrahedron plays in the layered chain.

The permutation returned (call this p) maps 0, 1, 2 and 3 to the four vertices of the top tetrahedron so that the edge from p[0] to p[1] is the top hinge, the edge from p[2] to p[3] is the bottom hinge, faces p[1] and p[2] are the bottom faces and faces p[0] and p[3] are the (boundary) top faces.

See the general class notes for further details.

Returns
a permutation representing the roles of the vertices of the top tetrahedron.

◆ torus()

const LayeredSolidTorus & regina::LayeredLensSpace::torus ( ) const
inline

Returns the layered solid torus to which the mobius strip is glued.

Returns
the layered solid torus.

◆ torusAnnulus()

int regina::AugTriSolidTorus::torusAnnulus ( ) const
inline

Returns the single boundary annulus of the core triangular solid torus to which a layered solid torus is attached.

This routine is only meaningful if the other two annuli are linked by a layered chain.

The integer returned will be 0, 1 or 2; see the TriSolidTorus class notes for how the boundary annuli are numbered.

Returns
the single annulus to which the layered solid torus is attached, or -1 if there is no layered chain (and thus all three annuli have layered solid tori attached).

◆ transform() [1/4]

void regina::LayeredSolidTorus::transform ( const Triangulation< 3 > *  originalTri,
const Isomorphism< 3 > *  iso,
Triangulation< 3 > *  newTri 
)

Adjusts the details of this layered solid torus according to the given isomorphism between triangulations.

The given isomorphism must describe a mapping from originalTri to newTri, and this layered solid torus must currently refer to tetrahedra in originalTri. After this routine is called this structure will instead refer to the corresponding tetrahedra in newTri (with changes in vertex/face numbering also accounted for).

Precondition
This layered solid torus currently refers to tetrahedra in originalTri, and iso describes a mapping from originalTri to newTri.
Parameters
originalTrithe triangulation currently referenced by this layered solid torus.
isothe mapping from originalTri to newTri.
newTrithe triangulation to be referenced by the updated layered solid torus.

◆ transform() [2/4]

void regina::SatAnnulus::transform ( const Triangulation< 3 > *  originalTri,
const Isomorphism< 3 > *  iso,
Triangulation< 3 > *  newTri 
)

Adjusts this annulus representation according to the given isomorphism between triangulations.

The given isomorphism must describe a mapping from originalTri to newTri, and this annulus must refer to tetrahedra in originalTri. This routine will adjust this annulus according to the given isomorphism, so that it refers to the corresponding tetrahedra in newTri (with the roles permutations also updated accordingly).

Precondition
This annulus refers to tetrahedra in originalTri, and iso describes a mapping from originalTri to newTri.
Parameters
originalTrithe triangulation currently used by this annulus representation.
isothe mapping from originalTri to newTri.
newTrithe triangulation to be used by the updated annulus representation.

◆ transform() [3/4]

virtual void regina::SatBlock::transform ( const Triangulation< 3 > *  originalTri,
const Isomorphism< 3 > *  iso,
Triangulation< 3 > *  newTri 
)
virtual

Adjusts the structure of this block according to the given isomorphism between triangulations.

Any triangulation-specific information will be transformed accordingly (for instance, the routine SatAnnulus::transform() will be called for each boundary annulus).

Information regarding adjacent blocks will not be changed. Only structural information for this particular block will be updated.

The given isomorphism must describe a mapping from originalTri to newTri, and this block must currently refer to tetrahedra in originalTri. After this routine is called the block will instead refer to the corresponding tetrahedra in newTri (with changes in vertex/face numbering also accounted for).

Precondition
This block currently refers to tetrahedra in originalTri, and iso describes a mapping from originalTri to newTri.
Warning
Any subclasses of SatBlock that store additional triangulation-specific information will need to override this routine. When doing so, be sure to call SatBlock::transform() so that the generic changes defined here will still take place.
Parameters
originalTrithe triangulation currently used by this saturated block.
isothe mapping from originalTri to newTri.
newTrithe triangulation to be used by the updated block structure.

Reimplemented in regina::SatLST.

◆ transform() [4/4]

virtual void regina::SatLST::transform ( const Triangulation< 3 > *  originalTri,
const Isomorphism< 3 > *  iso,
Triangulation< 3 > *  newTri 
)
overridevirtual

Adjusts the structure of this block according to the given isomorphism between triangulations.

Any triangulation-specific information will be transformed accordingly (for instance, the routine SatAnnulus::transform() will be called for each boundary annulus).

Information regarding adjacent blocks will not be changed. Only structural information for this particular block will be updated.

The given isomorphism must describe a mapping from originalTri to newTri, and this block must currently refer to tetrahedra in originalTri. After this routine is called the block will instead refer to the corresponding tetrahedra in newTri (with changes in vertex/face numbering also accounted for).

Precondition
This block currently refers to tetrahedra in originalTri, and iso describes a mapping from originalTri to newTri.
Warning
Any subclasses of SatBlock that store additional triangulation-specific information will need to override this routine. When doing so, be sure to call SatBlock::transform() so that the generic changes defined here will still take place.
Parameters
originalTrithe triangulation currently used by this saturated block.
isothe mapping from originalTri to newTri.
newTrithe triangulation to be used by the updated block structure.

Reimplemented from regina::SatBlock.

◆ triangle()

Triangle< 3 > * regina::PillowTwoSphere::triangle ( int  index) const
inline

Returns one of the two triangles whose boundaries are joined.

Parameters
indexspecifies which of the two triangles to return; this must be either 0 or 1.
Returns
the corresponding triangle.

◆ triangleMapping()

Perm< 4 > regina::PillowTwoSphere::triangleMapping ( ) const
inline

Returns a permutation describing how the boundaries of the two triangles are joined.

The permutation will map vertices (0,1,2) of triangle(0) to vertices (0,1,2) of triangle(1). The map will represent how the vertices of the triangles are identified by the three edge gluings.

Returns
a permutation describing how the triangle boundaries are joined.

◆ triangulation()

const Triangulation< 3 > & regina::SatBlockStarter::triangulation ( ) const
inline

Returns a reference to the triangulation of the saturated block.

Returns
the block triangulation.

◆ twistedBoundary()

bool regina::SatBlock::twistedBoundary ( ) const
inline

Is the ring of boundary annuli twisted to form a long Mobius strip?

Recall from the class notes that the twist occurs between boundary annuli nAnnuli()-1 and 0.

Returns
true if the ring of boundary annuli is twisted, or false if not.

◆ TxICore()

regina::TxICore::TxICore ( )
inlineprotected

Default constructor that performs no initialisation.

◆ TxIDiagonalCore()

regina::TxIDiagonalCore::TxIDiagonalCore ( unsigned long  newSize,
unsigned long  newK 
)

Creates a new T x I triangulation with the given parameters.

Parameters
newSizethe number of tetrahedra in this triangulation. This must be at least 6.
newKthe additional parameter k as described in the class notes. This must be between 1 and (newSize - 5) inclusive.

◆ TxIParallelCore()

regina::TxIParallelCore::TxIParallelCore ( )

Creates a new copy of this T x I triangulation.

◆ type()

int regina::TrivialTri::type ( ) const
inline

Returns the specific trivial triangulation being represented.

Returns
the specific triangulation. This will be one of the triangulation constants defined in this class.

◆ useStarterBlock()

virtual bool regina::SatBlockStarterSearcher::useStarterBlock ( SatBlock starter)
protectedpure virtual

Used by subclasses to process each starter block embedding that is found.

Suppose that the main search routine findStarterBlocks() has been called with some triangulation t. Each time it locates an isomorphic embedding of a starter block within t, it will call useStarterBlock(). Subclasses of SatBlockStarterSearcher should therefore override useStarterBlock() to process each embedding in whatever way is appropriate for the problem at hand.

The block passed in the argument starter is a newly created structure describing the starter block as it appears within the triangulation t. Thus different embeddings of the same starter block within t will pass different starter arguments to this routine. It is the responsibility of useStarterBlock() to either destroy the new block starter or pass ownership of it elsewhere.

When this routine is called, the data member usedTets will contain a list of all tetrahedra from the triangulation t that appear within the relevant starter block embedding. The reimplementation of useStarterBlock() may modify this list as it pleases, since the main search routine will empty the list anyway when useStarterBlock() returns. One possible use for the usedTets data member is for passing to SatBlock::isBlock() or SatRegion::expand() as the list of tetrahedra to avoid in further searches.

This routine must return a boolean; this allows subclasses to immediately terminate the main search once they have found whatever it is they were looking for. A return value of true signifies that the search should continue as normal, whereas a return value of false signifies that the search should end immediately (specifically, that findStarterBlocks() should clean up and return before all remaining embeddings of all starter blocks have been found).

Warning
Subclasses must remember to either destroy or claim ownership of the newly created block starter.
Parameters
startera newly created structure describing the starter block as it appears within the larger triangulation currently under examination.
Returns
true if the search for embeddings of starter blocks should continue, or false if the search should stop immediately.

◆ vertexRoles() [1/2]

Perm< 4 > regina::TriSolidTorus::vertexRoles ( int  index) const
inline

Returns a permutation represeting the role that each vertex of the requested tetrahedron plays in the solid torus.

The permutation returned (call this p) maps 0, 1, 2 and 3 to the four vertices of tetrahedron index so that the edge from p[0] to p[3] is an oriented axis edge, and the path from vertices p[0] to p[1] to p[2] to p[3] follows the three oriented major edges. In particular, the major edge for annulus index will run from vertices p[1] to p[2]. Edges p[0] to p[2] and p[1] to p[3] will both be oriented minor edges.

Note that annulus index+1 uses face p[1] of the requested tetrahedron and annulus index+2 uses face p[2] of the requested tetrahedron. Both annuli use the axis edge p[0] to p[3], and each annulus uses one other major edge and one other minor edge so that (according to homology) the axis edge equals the major edge plus the minor edge.

See the general class notes for further details.

Parameters
indexspecifies which tetrahedron in the solid torus to examine; this must be 0, 1 or 2.
Returns
a permutation representing the roles of the vertices of the requested tetrahedron.

◆ vertexRoles() [2/2]

Perm< 4 > regina::SpiralSolidTorus::vertexRoles ( size_t  index) const
inline

Returns a permutation represeting the role that each vertex of the requested tetrahedron plays in the solid torus.

The permutation returned (call this p) maps 0, 1, 2 and 3 to the four vertices of tetrahedron index so that vertices p[0], p[1], p[2] and p[3] correspond to vertices A, B, C and D respectively as described in the general class notes.

In particular, the directed edge from vertex p[0] to p[3] is an axis edge, directed edges p[0] to p[2] and p[1] to p[3] are minor edges and the directed path from vertices p[0] to p[1] to p[2] to p[3] follows the three major edges.

See the general class notes for further details.

Parameters
indexspecifies which tetrahedron in the solid torus to examine; this must be between 0 and size()-1 inclusive.
Returns
a permutation representing the roles of the vertices of the requested tetrahedron.

◆ verticalReflection()

SatAnnulus regina::SatAnnulus::verticalReflection ( ) const
inline

Returns a representation of this annulus in which the vertical direction of the fibres has been reversed.

This structure will not be changed. See reflectVertical() for further details.

Returns
a new representation of this annulus in which fibres have been reversed.

◆ writeAbbr() [1/7]

virtual void regina::SatBlock::writeAbbr ( std::ostream &  out,
bool  tex = false 
) const
pure virtual

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be in plain text format.

Implemented in regina::SatLayering, regina::SatReflectorStrip, regina::SatCube, regina::SatTriPrism, regina::SatLST, and regina::SatMobius.

◆ writeAbbr() [2/7]

virtual void regina::SatMobius::writeAbbr ( std::ostream &  out,
bool  tex = false 
) const
overridevirtual

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be in plain text format.

Implements regina::SatBlock.

◆ writeAbbr() [3/7]

virtual void regina::SatLST::writeAbbr ( std::ostream &  out,
bool  tex = false 
) const
overridevirtual

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be in plain text format.

Implements regina::SatBlock.

◆ writeAbbr() [4/7]

void regina::SatTriPrism::writeAbbr ( std::ostream &  out,
bool  tex = false 
) const
inlineoverridevirtual

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be in plain text format.

Implements regina::SatBlock.

◆ writeAbbr() [5/7]

void regina::SatCube::writeAbbr ( std::ostream &  out,
bool  tex = false 
) const
inlineoverridevirtual

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be in plain text format.

Implements regina::SatBlock.

◆ writeAbbr() [6/7]

void regina::SatReflectorStrip::writeAbbr ( std::ostream &  out,
bool  tex = false 
) const
inlineoverridevirtual

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be in plain text format.

Implements regina::SatBlock.

◆ writeAbbr() [7/7]

void regina::SatLayering::writeAbbr ( std::ostream &  out,
bool  tex = false 
) const
inlineoverridevirtual

Writes an abbreviated name or symbol for this block to the given output stream.

This name should reflect the particular block type, but need not provide thorough details.

The output should be no more than a handful of characters long, and no newline should be written. In TeX mode, no leading or trailing dollar signs should be written.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be in plain text format.

Implements regina::SatBlock.

◆ writeBlockAbbrs()

void regina::SatRegion::writeBlockAbbrs ( std::ostream &  out,
bool  tex = false 
) const

Writes an abbreviated list of blocks within this region to the given output stream.

Blocks will be written using their abbreviated names, and these names will be separated by commas. See SatBlock::writeAbbr() for further details.

The blocks within this region will be sorted before their abbreviated names are output. The particular method of sorting is an arbitrary aesthetic decision on the part of the author, and is subject to change in future versions of Regina.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
textrue if the output should be formatted for TeX, or false if it should be written as plain text.

◆ writeDetail()

void regina::SatRegion::writeDetail ( std::ostream &  out,
const std::string &  title 
) const

Writes details of the composition of this region to the given output stream.

The output will consist of several lines. The first line will contain the title string (passed as a separate argument to this routine), followed by a colon. Following this will be a number of lines describing the individual blocks that make up this region and the various adjacencies between them.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
titlethe name of this region, to be written on the first line of output.

◆ writeName() [1/23]

virtual std::ostream& regina::StandardTriangulation::writeName ( std::ostream &  out) const
pure virtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implemented in regina::TrivialTri, regina::TriSolidTorus, regina::SpiralSolidTorus, regina::SnappedBall, regina::SnapPeaCensusTri, regina::PlugTriSolidTorus, regina::PluggedTorusBundle, regina::LayeredTorusBundle, regina::LayeredSolidTorus, regina::LayeredLoop, regina::LayeredLensSpace, regina::LayeredChainPair, regina::LayeredChain, regina::L31Pillow, regina::BlockedSFSTriple, regina::BlockedSFSPair, regina::BlockedSFSLoop, regina::BlockedSFS, and regina::AugTriSolidTorus.

◆ writeName() [2/23]

virtual std::ostream& regina::TxICore::writeName ( std::ostream &  out) const
pure virtual

Writes the name of this specific triangulation of T x I to the given output stream.

The name will be written as a human-readable string.

Python:\n The parameter out does not exist; instead
standard output will always be used. Moreover, this routine returns None.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implemented in regina::TxIParallelCore, and regina::TxIDiagonalCore.

◆ writeName() [3/23]

std::ostream& regina::AugTriSolidTorus::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [4/23]

std::ostream& regina::BlockedSFS::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [5/23]

std::ostream& regina::BlockedSFSLoop::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [6/23]

std::ostream& regina::BlockedSFSPair::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [7/23]

std::ostream& regina::BlockedSFSTriple::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [8/23]

std::ostream & regina::L31Pillow::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [9/23]

std::ostream & regina::LayeredChain::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [10/23]

std::ostream & regina::LayeredChainPair::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [11/23]

std::ostream& regina::LayeredLensSpace::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [12/23]

std::ostream & regina::LayeredLoop::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [13/23]

std::ostream & regina::LayeredSolidTorus::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [14/23]

std::ostream & regina::LayeredTorusBundle::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [15/23]

std::ostream& regina::PluggedTorusBundle::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [16/23]

std::ostream& regina::PlugTriSolidTorus::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [17/23]

std::ostream& regina::SnapPeaCensusTri::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [18/23]

std::ostream & regina::SnappedBall::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [19/23]

std::ostream & regina::SpiralSolidTorus::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [20/23]

std::ostream & regina::TriSolidTorus::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [21/23]

std::ostream& regina::TrivialTri::writeName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation as a human-readable string to the given output stream.

Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeName() [22/23]

std::ostream & regina::TxIDiagonalCore::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this specific triangulation of T x I to the given output stream.

The name will be written as a human-readable string.

Python:\n The parameter out does not exist; instead
standard output will always be used. Moreover, this routine returns None.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::TxICore.

◆ writeName() [23/23]

std::ostream & regina::TxIParallelCore::writeName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this specific triangulation of T x I to the given output stream.

The name will be written as a human-readable string.

Python:\n The parameter out does not exist; instead
standard output will always be used. Moreover, this routine returns None.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::TxICore.

◆ writeTeXName() [1/23]

virtual std::ostream& regina::StandardTriangulation::writeTeXName ( std::ostream &  out) const
pure virtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implemented in regina::TrivialTri, regina::TriSolidTorus, regina::SpiralSolidTorus, regina::SnappedBall, regina::SnapPeaCensusTri, regina::PlugTriSolidTorus, regina::PluggedTorusBundle, regina::LayeredTorusBundle, regina::LayeredSolidTorus, regina::LayeredLoop, regina::LayeredLensSpace, regina::LayeredChainPair, regina::LayeredChain, regina::L31Pillow, regina::BlockedSFSTriple, regina::BlockedSFSPair, regina::BlockedSFSLoop, regina::BlockedSFS, and regina::AugTriSolidTorus.

◆ writeTeXName() [2/23]

virtual std::ostream& regina::TxICore::writeTeXName ( std::ostream &  out) const
pure virtual

Writes the name of this specific triangulation of T x I in TeX format to the given output stream.

No leading or trailing dollar signs will be written.

Python:\n The parameter out does not exist; instead
standard output will always be used. Moreover, this routine returns None.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implemented in regina::TxIParallelCore, and regina::TxIDiagonalCore.

◆ writeTeXName() [3/23]

std::ostream& regina::AugTriSolidTorus::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [4/23]

std::ostream& regina::BlockedSFS::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [5/23]

std::ostream& regina::BlockedSFSLoop::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [6/23]

std::ostream& regina::BlockedSFSPair::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [7/23]

std::ostream& regina::BlockedSFSTriple::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [8/23]

std::ostream & regina::L31Pillow::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [9/23]

std::ostream & regina::LayeredChain::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [10/23]

std::ostream & regina::LayeredChainPair::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [11/23]

std::ostream& regina::LayeredLensSpace::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [12/23]

std::ostream & regina::LayeredLoop::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [13/23]

std::ostream & regina::LayeredSolidTorus::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [14/23]

std::ostream & regina::LayeredTorusBundle::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [15/23]

std::ostream& regina::PluggedTorusBundle::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [16/23]

std::ostream& regina::PlugTriSolidTorus::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [17/23]

std::ostream& regina::SnapPeaCensusTri::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [18/23]

std::ostream & regina::SnappedBall::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [19/23]

std::ostream & regina::SpiralSolidTorus::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [20/23]

std::ostream & regina::TriSolidTorus::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [21/23]

std::ostream& regina::TrivialTri::writeTeXName ( std::ostream &  out) const
overridevirtual

Writes the name of this triangulation in TeX format to the given output stream.

No leading or trailing dollar signs will be included.

Warning
The behaviour of this routine has changed as of Regina 4.3; in earlier versions, leading and trailing dollar signs were provided.
Python:\n The parameter out does not exist; standard
output will be used.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::StandardTriangulation.

◆ writeTeXName() [22/23]

std::ostream & regina::TxIDiagonalCore::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this specific triangulation of T x I in TeX format to the given output stream.

No leading or trailing dollar signs will be written.

Python:\n The parameter out does not exist; instead
standard output will always be used. Moreover, this routine returns None.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::TxICore.

◆ writeTeXName() [23/23]

std::ostream & regina::TxIParallelCore::writeTeXName ( std::ostream &  out) const
inlineoverridevirtual

Writes the name of this specific triangulation of T x I in TeX format to the given output stream.

No leading or trailing dollar signs will be written.

Python:\n The parameter out does not exist; instead
standard output will always be used. Moreover, this routine returns None.
Parameters
outthe output stream to which to write.
Returns
a reference to the given output stream.

Implements regina::TxICore.

◆ writeTextLong() [1/22]

void regina::SatBlock::writeTextLong ( std::ostream &  out) const
inlinevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent SatBlock class offers a reasonable default implementation.

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextLong() [2/22]

void regina::SatRegion::writeTextLong ( std::ostream &  out) const
inline

Writes a detailed text representation of this object to the given output stream.

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextLong() [3/22]

void regina::StandardTriangulation::writeTextLong ( std::ostream &  out) const
inlinevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented in regina::TrivialTri, regina::TriSolidTorus, regina::SpiralSolidTorus, regina::SnappedBall, regina::PlugTriSolidTorus, regina::PluggedTorusBundle, regina::LayeredTorusBundle, regina::LayeredSolidTorus, regina::LayeredLoop, regina::LayeredLensSpace, regina::LayeredChainPair, regina::LayeredChain, regina::L31Pillow, regina::BlockedSFSTriple, regina::BlockedSFSPair, regina::BlockedSFSLoop, regina::BlockedSFS, and regina::AugTriSolidTorus.

◆ writeTextLong() [4/22]

void regina::TxICore::writeTextLong ( std::ostream &  out) const
inline

Writes a detailed text representation of this object to the given output stream.

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextLong() [5/22]

void regina::AugTriSolidTorus::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [6/22]

void regina::BlockedSFS::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [7/22]

void regina::BlockedSFSLoop::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [8/22]

void regina::BlockedSFSPair::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [9/22]

void regina::BlockedSFSTriple::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [10/22]

void regina::L31Pillow::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [11/22]

void regina::LayeredChain::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [12/22]

void regina::LayeredChainPair::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [13/22]

void regina::LayeredLensSpace::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [14/22]

void regina::LayeredLoop::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [15/22]

void regina::LayeredSolidTorus::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [16/22]

void regina::LayeredTorusBundle::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [17/22]

void regina::PluggedTorusBundle::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [18/22]

void regina::PlugTriSolidTorus::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [19/22]

void regina::SnappedBall::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [20/22]

void regina::SpiralSolidTorus::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [21/22]

void regina::TriSolidTorus::writeTextLong ( std::ostream &  out) const
inlineoverridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextLong() [22/22]

void regina::TrivialTri::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::StandardTriangulation.

◆ writeTextShort() [1/12]

void regina::PillowTwoSphere::writeTextShort ( std::ostream &  out) const
inline

Writes a short text representation of this object to the given output stream.

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextShort() [2/12]

void regina::SatRegion::writeTextShort ( std::ostream &  out) const

Writes a short text representation of this object to the given output stream.

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextShort() [3/12]

void regina::SnappedTwoSphere::writeTextShort ( std::ostream &  out) const
inline

Writes a short text representation of this object to the given output stream.

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextShort() [4/12]

void regina::StandardTriangulation::writeTextShort ( std::ostream &  out) const
inlinevirtual

Writes a short text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent StandardTriangulation class offers a reasonable default implementation based on writeName().

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextShort() [5/12]

void regina::TxICore::writeTextShort ( std::ostream &  out) const
inline

Writes a short text representation of this object to the given output stream.

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextShort() [6/12]

virtual void regina::SatBlock::writeTextShort ( std::ostream &  out) const
pure virtual

Writes a short text representation of this object to the given output stream.

This must be implemented by subclasses.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Implemented in regina::SatLayering, regina::SatReflectorStrip, regina::SatCube, regina::SatTriPrism, regina::SatLST, and regina::SatMobius.

◆ writeTextShort() [7/12]

virtual void regina::SatMobius::writeTextShort ( std::ostream &  out) const
overridevirtual

Writes a short text representation of this object to the given output stream.

This must be implemented by subclasses.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Implements regina::SatBlock.

◆ writeTextShort() [8/12]

virtual void regina::SatLST::writeTextShort ( std::ostream &  out) const
overridevirtual

Writes a short text representation of this object to the given output stream.

This must be implemented by subclasses.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Implements regina::SatBlock.

◆ writeTextShort() [9/12]

void regina::SatTriPrism::writeTextShort ( std::ostream &  out) const
inlineoverridevirtual

Writes a short text representation of this object to the given output stream.

This must be implemented by subclasses.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Implements regina::SatBlock.

◆ writeTextShort() [10/12]

void regina::SatCube::writeTextShort ( std::ostream &  out) const
inlineoverridevirtual

Writes a short text representation of this object to the given output stream.

This must be implemented by subclasses.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Implements regina::SatBlock.

◆ writeTextShort() [11/12]

void regina::SatReflectorStrip::writeTextShort ( std::ostream &  out) const
inlineoverridevirtual

Writes a short text representation of this object to the given output stream.

This must be implemented by subclasses.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Implements regina::SatBlock.

◆ writeTextShort() [12/12]

void regina::SatLayering::writeTextShort ( std::ostream &  out) const
inlineoverridevirtual

Writes a short text representation of this object to the given output stream.

This must be implemented by subclasses.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Implements regina::SatBlock.

◆ ~AugTriSolidTorus()

virtual regina::AugTriSolidTorus::~AugTriSolidTorus ( )
virtual

Destroys this augmented solid torus; note that the corresponding triangular and layered solid tori will also be destroyed.

◆ ~BlockedSFS()

regina::BlockedSFS::~BlockedSFS ( )

Destroys this structure and its constituent components.

◆ ~BlockedSFSLoop()

regina::BlockedSFSLoop::~BlockedSFSLoop ( )

Destroys this structure and its constituent components.

◆ ~BlockedSFSPair()

regina::BlockedSFSPair::~BlockedSFSPair ( )

Destroys this structure and its constituent components.

◆ ~BlockedSFSTriple()

regina::BlockedSFSTriple::~BlockedSFSTriple ( )

Destroys this structure and its constituent components.

◆ ~L31Pillow()

regina::L31Pillow::~L31Pillow ( )
inlinevirtual

Destroys this structure.

◆ ~LayeredChain()

regina::LayeredChain::~LayeredChain ( )
inlinevirtual

Destroys this layered chain.

◆ ~LayeredChainPair()

regina::LayeredChainPair::~LayeredChainPair ( )
inlinevirtual

Destroys this layered chain pair.

◆ ~LayeredLensSpace()

regina::LayeredLensSpace::~LayeredLensSpace ( )
inlinevirtual

Destroys this lens space; note that the corresponding layered solid torus will also be destroyed.

◆ ~LayeredLoop()

regina::LayeredLoop::~LayeredLoop ( )
inlinevirtual

Destroys this layered loop.

◆ ~LayeredTorusBundle()

virtual regina::LayeredTorusBundle::~LayeredTorusBundle ( )
virtual

Destroys this layered torus bundle and all of its internal components.

◆ ~PluggedTorusBundle()

regina::PluggedTorusBundle::~PluggedTorusBundle ( )

Destroys this structure and its constituent components.

As an exception, the thin I-bundle is not destroyed, since it is assumed that this is referenced from elsewhere.

◆ ~PlugTriSolidTorus()

virtual regina::PlugTriSolidTorus::~PlugTriSolidTorus ( )
virtual

Destroys this plugged solid torus; note that the corresponding triangular solid torus and layered chains will also be destroyed.

◆ ~SatBlock()

regina::SatBlock::~SatBlock ( )
inlinevirtual

Destroys all internal arrays.

Note that any adjacent blocks that are referenced by the adjBlock array will not be destroyed.

◆ ~SatBlockStarter()

regina::SatBlockStarter::~SatBlockStarter ( )
inline

Destroys both the internal triangulation and block structure.

◆ ~SatBlockStarterSearcher()

regina::SatBlockStarterSearcher::~SatBlockStarterSearcher ( )
inlinevirtual

Destroys this object and its internal structures.

◆ ~SatLST()

regina::SatLST::~SatLST ( )

Destroys this structure and its internal components.

◆ ~SatRegion()

regina::SatRegion::~SatRegion ( )

Destroys this structure and all of its internal data, including the individual blocks that make up this region.

◆ ~SnappedTwoSphere()

regina::SnappedTwoSphere::~SnappedTwoSphere ( )
inline

Destroys this snapped 2-sphere; note that the corresponding snapped 3-balls will also be destroyed.

◆ ~SpiralSolidTorus()

regina::SpiralSolidTorus::~SpiralSolidTorus ( )
inlinevirtual

Destroys this spiralled solid torus.

◆ ~StandardTriangulation()

regina::StandardTriangulation::~StandardTriangulation ( )
inlinevirtual

A destructor that does nothing.

◆ ~TriSolidTorus()

regina::TriSolidTorus::~TriSolidTorus ( )
inlinevirtual

Destroys this solid torus.

◆ ~TxICore()

regina::TxICore::~TxICore ( )
inlinevirtual

Destroys this object.

Variable Documentation

◆ adjAnnulus_

unsigned* regina::SatBlock::adjAnnulus_
protected

Describes which specific annulus of the adjacent saturated block is joined to each boundary annulus of this block.

Values may be undefined if the corresponding entries in the adjBlock array is null.

◆ adjBackwards_

bool* regina::SatBlock::adjBackwards_
protected

Describes whether the adjacency for each boundary annulus is backwards (see the class notes above).

Values may be undefined if the corresponding entries in the adjBlock array is null.

◆ adjBlock_

SatBlock** regina::SatBlock::adjBlock_
protected

The saturated block joined to each boundary annulus; this may be null if there is no adjacency or if this information is not known.

◆ adjReflected_

bool* regina::SatBlock::adjReflected_
protected

Describes whether the adjacency for each boundary annulus is reflected (see the class notes above).

Values may be undefined if the corresponding entries in the adjBlock array is null.

◆ annulus_

SatAnnulus* regina::SatBlock::annulus_
protected

Details of each boundary annulus, as seen from the inside of this saturated block.

◆ BALL_3_VERTEX

const int regina::TrivialTri::BALL_3_VERTEX
static

Represents the one-tetrahedron three-vertex triangulation of the ball.

This is a single tetrahedron with two faces as boundary and the other two faces folded together.

◆ BALL_4_VERTEX

const int regina::TrivialTri::BALL_4_VERTEX
static

Represents the one-tetrahedron four-vertex triangulation of the ball.

This is a single tetrahedron with all four faces as boundary.

◆ bdryReln_

Matrix2 regina::TxICore::bdryReln_[2]
protected

Expresses the alpha and beta curves for each torus boundary in terms of specific tetrahedron edges and vertices.

The elements bdryReln_[0] and bdryReln_[1] refer to the upper and lower boundaries respectively, and each of these matrices must have determinant +1 or -1. See bdryReln() for further details.

◆ bdryRoles_

Perm<4> regina::TxICore::bdryRoles_[2][2]
protected

Describes which tetrahedron vertices play which roles in the upper and lower boundary triangles.

See bdryRoles() for details.

◆ bdryTet_

unsigned regina::TxICore::bdryTet_[2][2]
protected

The tetrahedra that provide the upper and lower boundary triangles.

See bdryTet() for details.

◆ block

SatBlock* regina::SatBlockSpec::block

Details of the saturated block structure.

◆ CHAIN_AXIS

const int regina::AugTriSolidTorus::CHAIN_AXIS
static

Indicates that this augmented triangular solid torus contains a layered chain attached as described by TriSolidTorus::areAnnuliLinkedAxis().

◆ CHAIN_MAJOR [1/2]

const int regina::AugTriSolidTorus::CHAIN_MAJOR
static

Indicates that this augmented triangular solid torus contains a layered chain attached as described by TriSolidTorus::areAnnuliLinkedMajor().

◆ CHAIN_MAJOR [2/2]

const int regina::PlugTriSolidTorus::CHAIN_MAJOR
static

Indicates an annulus on the triangular solid torus boundary with an attached layered chain layered over the major edge of the annulus.

◆ CHAIN_MINOR

const int regina::PlugTriSolidTorus::CHAIN_MINOR
static

Indicates an annulus on the triangular solid torus boundary with an attached layered chain layered over the minor edge of the annulus.

◆ CHAIN_NONE [1/2]

const int regina::AugTriSolidTorus::CHAIN_NONE
static

Indicates that this augmented triangular solid torus contains no layered chain.

◆ CHAIN_NONE [2/2]

const int regina::PlugTriSolidTorus::CHAIN_NONE
static

Indicates an annulus on the triangular solid torus boundary with no attached layered chain.

◆ core_

Triangulation<3> regina::TxICore::core_
protected

A full copy of the T x I triangulation that is described.

◆ EQUATOR_MAJOR

const int regina::PlugTriSolidTorus::EQUATOR_MAJOR
static

Indicates that, if no layered chains were present, the equator of the plug would consist of major edges of the core triangular solid torus.

◆ EQUATOR_MINOR

const int regina::PlugTriSolidTorus::EQUATOR_MINOR
static

Indicates that, if no layered chains were present, the equator of the plug would consist of minor edges of the core triangular solid torus.

◆ N2

const int regina::TrivialTri::N2
static

Represents the two-tetrahedron triangulation N(2) of the twisted 2-sphere bundle over the circle.

◆ N3_1

const int regina::TrivialTri::N3_1
static

Represents the three-tetrahedron triangulation N(3,1) of the projective plane bundle over the circle.

This particular triangulation has no Mobius band triangles.

◆ N3_2

const int regina::TrivialTri::N3_2
static

Represents the three-tetrahedron triangulation N(3,2) of the projective plane bundle over the circle.

This particular triangulation has two Mobius band triangles.

◆ nAnnuli_

unsigned regina::SatBlock::nAnnuli_
protected

The number of boundary annuli.

◆ parallelReln_

Matrix2 regina::TxICore::parallelReln_
protected

Expresses the lower alpha and beta curves in terms of the upper alpha and beta curves.

See parallelReln() for details.

◆ refHoriz

bool regina::SatBlockSpec::refHoriz

Indicates whether the block is reflected horizontally within the larger region.

See the class notes for details.

◆ refVert

bool regina::SatBlockSpec::refVert

Indicates whether the block is reflected vertically within the larger region.

See the class notes for details.

◆ roles

Perm<4> regina::SatAnnulus::roles[2]

Describes how the first and second triangles match up with individual tetrahedron vertices.

See the class notes for details.

◆ SEC_5

const char regina::SnapPeaCensusTri::SEC_5
static

Represents the collection of triangulations formed from five or fewer tetrahedra (both orientable and non-orientable).

There are 415 triangulations in this section.

◆ SEC_6_NOR

const char regina::SnapPeaCensusTri::SEC_6_NOR
static

Represents the collection of non-orientable triangulations formed from six tetrahedra.

There are 259 triangulations in this section.

◆ SEC_6_OR

const char regina::SnapPeaCensusTri::SEC_6_OR
static

Represents the collection of orientable triangulations formed from six tetrahedra.

There are 962 triangulations in this section.

◆ SEC_7_NOR

const char regina::SnapPeaCensusTri::SEC_7_NOR
static

Represents the collection of non-orientable triangulations formed from seven tetrahedra.

There are 887 triangulations in this section.

◆ SEC_7_OR

const char regina::SnapPeaCensusTri::SEC_7_OR
static

Represents the collection of orientable triangulations formed from seven tetrahedra.

There are 3552 triangulations in this section.

◆ SPHERE_4_VERTEX

const int regina::TrivialTri::SPHERE_4_VERTEX
static

Represents the two-tetrahedron four-vertex triangulation of the 3-sphere.

◆ tet

Tetrahedron<3>* regina::SatAnnulus::tet[2]

Describes which tetrahedra provide the first and second triangles.

See the class notes for details.

◆ twistedBoundary_

bool regina::SatBlock::twistedBoundary_
protected

Is the ring of boundary annuli twisted to form a Mobius band?

◆ usedTets

SatBlock::TetList regina::SatBlockStarterSearcher::usedTets
protected

Keeps track of which tetrahedra have used by the current embedding of the current starter block.

See useStarterBlock() for further details.


Copyright © 1999-2020, 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@maths.uq.edu.au).