Standard Triangulations and Subcomplexes

## 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...
AugTriSolidTorus * | regina::AugTriSolidTorus::clone () const
| Returns a newly created clone of this structure. More...
const TriSolidTorus & | regina::AugTriSolidTorus::core () const
| Returns the triangular solid torus at the core of this triangulation. More...
const LayeredSolidTorus * | regina::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 AugTriSolidTorus * | regina::AugTriSolidTorus::isAugTriSolidTorus (const Component< 3 > *comp)
| Determines if the given triangulation component is an augmented triangular solid torus. More...
Manifold * | regina::AugTriSolidTorus::manifold () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::AugTriSolidTorus::writeTextLong (std::ostream &out) const
| 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 SatRegion & | regina::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...
Manifold * | regina::BlockedSFS::manifold () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::BlockedSFS::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
static BlockedSFS * | regina::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 SatRegion & | regina::BlockedSFSLoop::region () const
| Returns details of the saturated region from which this triangulation is formed. More...
const Matrix2 & | regina::BlockedSFSLoop::matchingReln () const
| Returns the matrix describing how the two torus boundaries of the saturated region are joined. More...
Manifold * | regina::BlockedSFSLoop::manifold () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::BlockedSFSLoop::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
static BlockedSFSLoop * | regina::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 SatRegion & | regina::BlockedSFSPair::region (int which) const
| Returns details of one of the two bounded saturated regions that form this triangulation. More...
const Matrix2 & | regina::BlockedSFSPair::matchingReln () const
| Returns the matrix describing how the two saturated region boundaries are joined. More...
Manifold * | regina::BlockedSFSPair::manifold () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::BlockedSFSPair::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
static BlockedSFSPair * | regina::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 SatRegion & | regina::BlockedSFSTriple::end (int which) const
| Returns details of the requested end region, as described in the class notes above. More...
const SatRegion & | regina::BlockedSFSTriple::centre () const
| Returns details of the central saturated region, as described in the class notes above. More...
const Matrix2 & | regina::BlockedSFSTriple::matchingReln (int which) const
| Returns the matrix describing how the given end region is joined to the central region. More...
Manifold * | regina::BlockedSFSTriple::manifold () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::BlockedSFSTriple::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
static BlockedSFSTriple * | regina::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...
L31Pillow * | regina::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 L31Pillow * | regina::L31Pillow::isL31Pillow (const Component< 3 > *comp)
| Determines if the given triangulation component is a triangular pillow L(3,1). More...
Manifold * | regina::L31Pillow::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::L31Pillow::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::L31Pillow::writeTextLong (std::ostream &out) const
| 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)
| 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...
Manifold * | regina::LayeredChain::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::LayeredChain::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::LayeredChain::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
virtual | regina::LayeredChainPair::~LayeredChainPair ()
| Destroys this layered chain pair. More...
LayeredChainPair * | regina::LayeredChainPair::clone () const
| Returns a newly created clone of this structure. More...
const LayeredChain * | regina::LayeredChainPair::chain (int which) const
| Returns the requested layered chain used to form this structure. More...
static LayeredChainPair * | regina::LayeredChainPair::isLayeredChainPair (const Component< 3 > *comp)
| Determines if the given triangulation component is a layered chain pair. More...
Manifold * | regina::LayeredChainPair::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::LayeredChainPair::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::LayeredChainPair::writeTextLong (std::ostream &out) const
| 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...
LayeredLensSpace * | regina::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 LayeredSolidTorus & | regina::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 LayeredLensSpace * | regina::LayeredLensSpace::isLayeredLensSpace (const Component< 3 > *comp)
| Determines if the given triangulation component is a layered lens space. More...
Manifold * | regina::LayeredLensSpace::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::LayeredLensSpace::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::LayeredLensSpace::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
virtual | regina::LayeredLoop::~LayeredLoop ()
| Destroys this layered loop. More...
LayeredLoop * | regina::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 LayeredLoop * | regina::LayeredLoop::isLayeredLoop (const Component< 3 > *comp)
| Determines if the given triangulation component is a layered loop. More...
Manifold * | regina::LayeredLoop::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::LayeredLoop::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::LayeredLoop::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
LayeredSolidTorus * | regina::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 LayeredSolidTorus * | regina::LayeredSolidTorus::formsLayeredSolidTorusBase (Tetrahedron< 3 > *tet)
| Determines if the given tetrahedron forms the base of a layered solid torus within a triangulation. More...
static LayeredSolidTorus * | regina::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 LayeredSolidTorus * | regina::LayeredSolidTorus::isLayeredSolidTorus (Component< 3 > *comp)
| Determines if the given triangulation component forms a layered solid torus in its entirity. More...
Manifold * | regina::LayeredSolidTorus::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::LayeredSolidTorus::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::LayeredSolidTorus::writeTextLong (std::ostream &out) const
| 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 TxICore & | regina::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 Matrix2 & | regina::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 LayeredTorusBundle * | regina::LayeredTorusBundle::isLayeredTorusBundle (Triangulation< 3 > *tri)
| Determines if the given triangulation is a layered surface bundle. More...
Manifold * | regina::LayeredTorusBundle::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::LayeredTorusBundle::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::LayeredTorusBundle::writeTextLong (std::ostream &out) const
| 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 Matrix2 & | regina::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...
PillowTwoSphere * | regina::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 PillowTwoSphere * | regina::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::PluggedTorusBundle::~PluggedTorusBundle ()
| Destroys this structure and its constituent components. More...
const TxICore & | regina::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 SatRegion & | regina::PluggedTorusBundle::region () const
| Returns the saturated region that forms part of this triangulation. More...
const Matrix2 & | regina::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...
Manifold * | regina::PluggedTorusBundle::manifold () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::PluggedTorusBundle::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
static PluggedTorusBundle * | regina::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...
PlugTriSolidTorus * | regina::PlugTriSolidTorus::clone () const
| Returns a newly created clone of this structure. More...
const TriSolidTorus & | regina::PlugTriSolidTorus::core () const
| Returns the triangular solid torus at the core of this triangulation. More...
const LayeredChain * | regina::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 PlugTriSolidTorus * | regina::PlugTriSolidTorus::isPlugTriSolidTorus (Component< 3 > *comp)
| Determines if the given triangulation component is a plugged triangular solid torus. More...
Manifold * | regina::PlugTriSolidTorus::manifold () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::PlugTriSolidTorus::writeTextLong (std::ostream &out) const
| 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...
SatAnnulus & | regina::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 SatBlock * | regina::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 SatAnnulus & | regina::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...
SatBlock * | regina::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 SatBlock * | regina::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...
| 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 SatBlock * | regina::SatBlockStarter::block () const
| Returns details that describe the structure of the saturated block. More...
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 ()
| 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...
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)
| 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 SatBlock * | regina::SatMobius::clone () const
| Returns a newly created clone of this saturated block structure. More...
virtual void | regina::SatMobius::adjustSFS (SFSpace &sfs, bool reflect) const
| Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
virtual void | regina::SatMobius::writeTextShort (std::ostream &out) const
| 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
| Writes an abbreviated name or symbol for this block to the given output stream. More...
static SatMobius * | regina::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 LayeredSolidTorus * | regina::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 SatBlock * | regina::SatLST::clone () const
| Returns a newly created clone of this saturated block structure. More...
virtual void | regina::SatLST::adjustSFS (SFSpace &sfs, bool reflect) const
| 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)
| Adjusts the structure of this block according to the given isomorphism between triangulations. More...
virtual void | regina::SatLST::writeTextShort (std::ostream &out) const
| 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
| Writes an abbreviated name or symbol for this block to the given output stream. More...
static SatLST * | regina::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)
| 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 SatBlock * | regina::SatTriPrism::clone () const
| Returns a newly created clone of this saturated block structure. More...
virtual void | regina::SatTriPrism::adjustSFS (SFSpace &sfs, bool reflect) const
| Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
virtual void | regina::SatTriPrism::writeTextShort (std::ostream &out) const
| 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
| Writes an abbreviated name or symbol for this block to the given output stream. More...
static SatTriPrism * | regina::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 SatTriPrism * | regina::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)
| Constructs a clone of the given block structure. More...
virtual SatBlock * | regina::SatCube::clone () const
| Returns a newly created clone of this saturated block structure. More...
virtual void | regina::SatCube::adjustSFS (SFSpace &sfs, bool reflect) const
| Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
virtual void | regina::SatCube::writeTextShort (std::ostream &out) const
| 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
| Writes an abbreviated name or symbol for this block to the given output stream. More...
static SatCube * | regina::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 SatCube * | regina::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)
| Constructs a clone of the given block structure. More...
virtual SatBlock * | regina::SatReflectorStrip::clone () const
| Returns a newly created clone of this saturated block structure. More...
virtual void | regina::SatReflectorStrip::adjustSFS (SFSpace &sfs, bool reflect) const
| Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
virtual void | regina::SatReflectorStrip::writeTextShort (std::ostream &out) const
| 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
| Writes an abbreviated name or symbol for this block to the given output stream. More...
static SatReflectorStrip * | regina::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 SatReflectorStrip * | regina::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)
| 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 SatBlock * | regina::SatLayering::clone () const
| Returns a newly created clone of this saturated block structure. More...
virtual void | regina::SatLayering::adjustSFS (SFSpace &sfs, bool reflect) const
| Adjusts the given Seifert fibred space to insert the contents of this saturated block. More...
virtual void | regina::SatLayering::writeTextShort (std::ostream &out) const
| 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
| Writes an abbreviated name or symbol for this block to the given output stream. More...
static SatLayering * | regina::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...
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...
| 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 SatBlockSpec & | regina::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 SatAnnulus & | regina::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...
SFSpace * | regina::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...
SnapPeaCensusTri * | regina::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 SnapPeaCensusTri * | regina::SnapPeaCensusTri::isSmallSnapPeaCensusTri (const Component< 3 > *comp)
| Determines if the given triangulation component is one of the smallest SnapPea census triangulations. More...
Manifold * | regina::SnapPeaCensusTri::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::SnapPeaCensusTri::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
SnappedBall * | regina::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 SnappedBall * | regina::SnappedBall::formsSnappedBall (Tetrahedron< 3 > *tet)
| Determines if the given tetrahedron forms a snapped 3-ball within a triangulation. More...
Manifold * | regina::SnappedBall::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::SnappedBall::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::SnappedBall::writeTextLong (std::ostream &out) const
| 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...
SnappedTwoSphere * | regina::SnappedTwoSphere::clone () const
| Returns a newly created clone of this structure. More...
const SnappedBall * | regina::SnappedTwoSphere::snappedBall (int index) const
| Returns one of the two snapped 3-balls whose equators are joined. More...
static SnappedTwoSphere * | regina::SnappedTwoSphere::formsSnappedTwoSphere (Tetrahedron< 3 > *tet1, Tetrahedron< 3 > *tet2)
| Determines if the two given tetrahedra together form a snapped 2-sphere. More...
static SnappedTwoSphere * | regina::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...
virtual | regina::SpiralSolidTorus::~SpiralSolidTorus ()
| Destroys this spiralled solid torus. More...
SpiralSolidTorus * | regina::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 SpiralSolidTorus * | regina::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...
Manifold * | regina::SpiralSolidTorus::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::SpiralSolidTorus::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::SpiralSolidTorus::writeTextLong (std::ostream &out) const
| 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 Manifold * | regina::StandardTriangulation::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
virtual AbelianGroup * | regina::StandardTriangulation::homology () const
| Returns the expected first homology group of this triangulation, if such a routine has been implemented. More...
AbelianGroup * | regina::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 StandardTriangulation * | regina::StandardTriangulation::isStandardTriangulation (Component< 3 > *component)
| Determines whether the given component represents one of the standard triangulations understood by Regina. More...
static StandardTriangulation * | regina::StandardTriangulation::isStandardTriangulation (Triangulation< 3 > *tri)
| Determines whether the given triangulation represents one of the standard triangulations understood by Regina. More...
virtual | regina::TriSolidTorus::~TriSolidTorus ()
| Destroys this solid torus. More...
TriSolidTorus * | regina::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 TriSolidTorus * | regina::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...
Manifold * | regina::TriSolidTorus::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::TriSolidTorus::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::TriSolidTorus::writeTextLong (std::ostream &out) const
| Writes a detailed text representation of this object to the given output stream. More...
TrivialTri * | regina::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 TrivialTri * | regina::TrivialTri::isTrivialTriangulation (const Component< 3 > *comp)
| Determines if the given triangulation component is one of the trivial triangulations recognised by this class. More...
Manifold * | regina::TrivialTri::manifold () const
| Returns the 3-manifold represented by this triangulation, if such a recognition routine has been implemented. More...
AbelianGroup * | regina::TrivialTri::homology () const
| 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
| 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
| Writes the name of this triangulation in TeX format to the given output stream. More...
void | regina::TrivialTri::writeTextLong (std::ostream &out) const
| 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 Matrix2 & | regina::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 Matrix2 & | regina::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 ()
| 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
| 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
| 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
| 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
| 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...
SatAnnulus * | regina::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...
SatBlock * | regina::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

typedef ListOnCall<SatBlockStarter>::iterator regina::SatBlockStarterSet::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

typedef AugTriSolidTorus regina::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

typedef BlockedSFS regina::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

typedef BlockedSFSLoop regina::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

typedef BlockedSFSPair regina::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

typedef BlockedSFSTriple regina::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

typedef L31Pillow regina::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

typedef LayeredChain regina::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

typedef LayeredChainPair regina::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

typedef LayeredLensSpace regina::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

typedef LayeredLoop regina::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

typedef LayeredSolidTorus regina::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

typedef LayeredTorusBundle regina::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

typedef Layering regina::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

typedef PillowTwoSphere regina::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

typedef PluggedTorusBundle regina::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

typedef PlugTriSolidTorus regina::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

typedef SatAnnulus regina::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

typedef SatBlock regina::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

typedef SatBlockSpec regina::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

typedef SatBlockStarter regina::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

typedef SatBlockStarterSearcher regina::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

typedef SatBlockStarterSet regina::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

typedef SatCube regina::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

typedef SatLayering regina::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

typedef SatLST regina::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

typedef SatMobius regina::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

typedef SatReflectorStrip regina::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

typedef SatRegion regina::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

typedef SatTriPrism regina::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

typedef SnapPeaCensusTri regina::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

typedef SnappedBall regina::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

typedef SnappedTwoSphere regina::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

typedef SpiralSolidTorus regina::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

typedef StandardTriangulation regina::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

typedef TriSolidTorus regina::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

typedef TrivialTri regina::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

typedef TxICore regina::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

typedef TxIDiagonalCore regina::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

typedef TxIParallelCore regina::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

  tex | `true` 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

  whichAnnulus | indicates 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

  whichAnnulus | indicates 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

  whichAnnulus | indicates 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

  whichAnnulus | indicates 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::SatMobius::adjustSFS | ( | SFSpace & | sfs,
|  | bool | reflect
| ) |  | const

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

  sfs | the Seifert fibred space to adjust.
  reflect | `true` if this block is to be reflected, or `false` if it should be inserted directly.

Implements regina::SatBlock.

## adjustSFS() [2/7]

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

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

  sfs | the Seifert fibred space to adjust.
  reflect | `true` if this block is to be reflected, or `false` if it should be inserted directly.

Implements regina::SatBlock.

## adjustSFS() [3/7]

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

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

  sfs | the Seifert fibred space to adjust.
  reflect | `true` if this block is to be reflected, or `false` if it should be inserted directly.

Implements regina::SatBlock.

## adjustSFS() [4/7]

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

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

  sfs | the Seifert fibred space to adjust.
  reflect | `true` if this block is to be reflected, or `false` if it should be inserted directly.

Implements regina::SatBlock.

## adjustSFS() [5/7]

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

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

  sfs | the Seifert fibred space to adjust.
  reflect | `true` if this block is to be reflected, or `false` if it should be inserted directly.

Implements regina::SatBlock.

## adjustSFS() [6/7]

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

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

  sfs | the Seifert fibred space to adjust.
  reflect | `true` if this block is to be reflected, or `false` if it should be inserted directly.

Implements regina::SatBlock.

## adjustSFS() [7/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

  sfs | the Seifert fibred space to adjust.
  reflect | `true` 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.

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

  which | indicates 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

  otherAnnulus | the 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

  otherAnnulus | the 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

  tri | the triangulation into which the new tetrahedra should be inserted.
  alpha | describes how the meridinal disc of the torus should cut the vertical edges. This may be positive or negative.
  beta | describes 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

  annulus | specifies 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

  group | the group that the requested edge should belong to; this must be 1, 2 or 3.
  index | the 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

  edge | the 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

  index | specifies 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

  whichBdry | 0 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

  whichBdry | 0 if the upper boundary should be examined, or 1 if the lower boundary should be examined.
  whichTri | 0 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

  whichBdry | 0 if the upper boundary should be examined, or 1 if the lower boundary should be examined.
  whichTri | 0 if the first boundary triangle should be examined, or 1 if the second boundary triangle should be examined.

## begin()

SatBlockStarterSet::iterator regina::SatBlockStarterSet::begin | ( |  | ) |

inline static

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

  which | indicates 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

  which | specifies which boundary annulus of this region to return; this must be between 0 and numberOfBoundaryAnnuli()-1 inclusive.
  blockRefVert | used 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.
  blockRefHoriz | used 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

  which | specifies which boundary annulus of this region to return; this must be between 0 and numberOfBoundaryAnnuli()-1 inclusive.
  block | used to return the particular saturated block containing the requested annulus.
  annulus | used to return which annulus number in the returned block is the requested annulus; this will be between 0 and block->nAnnuli() inclusive.
  blockRefVert | used 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.
  blockRefHoriz | used 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

  index | specifies 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

  annulus | specifies 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

  which | specifies 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

  annulus | specifies 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]

SnappedBall* regina::SnappedBall::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]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [4/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [5/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [6/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [7/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [8/21]

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

inline

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [9/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [10/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [11/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [12/21]

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

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

Implements regina::SatBlock.

## clone() [13/21]

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

inline

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [14/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [15/21]

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

Returns a newly created clone of this structure.

Returns
  a newly created clone.

## clone() [16/21]

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

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

Implements regina::SatBlock.

## clone() [17/21]

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

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

Implements regina::SatBlock.

## clone() [18/21]

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

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

Implements regina::SatBlock.

## clone() [19/21]

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

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

Implements regina::SatBlock.

## clone() [20/21]

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

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

Implements regina::SatBlock.

## clone() [21/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.

## core() [1/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() [2/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.

Returns
  the full triangulation.

## core() [3/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() [4/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.

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

  reflect | `true` 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

  k | the 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

  annulus | specifies 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 | ( |  | ) |

inline static

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

  which | 0 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

  avoidTets | a list of tetrahedra that should not be considered for new blocks, as discussed above. Note that this list may be modified by this routine.
  stopIfIncomplete | `true` 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

  tri | the 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

  original | the triangulation containing this layered solid torus; this triangulation will not be changed.
  mobiusBandBdry | the 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

  tet | the 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

  tet | the tetrahedron to examine as a potential top level of a layered solid torus.
  topFace1 | the 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.
  topFace2 | the 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

  tri1 | the first triangle to examine.
  tri2 | the 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

  tet | the 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

  ball1 | the first snapped 3-ball to examine.
  ball2 | the 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

  tet1 | the first tetrahedron to examine.
  tet2 | the 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

  tet | the tetrahedron to examine.
  useVertexRoles | a 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

  tet | the tetrahedron to examine.
  useVertexRoles | a 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

  whichAnnulus | indicates 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

  which | specifies which hinge to return; this must be 0 or 1.

Returns
  the requested hinge edge.

## homology() [1/13]

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

virtual

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() [2/13]

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

virtual

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::TrivialTri::homology | ( |  | ) | const

virtual

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::LayeredLoop::homology | ( |  | ) | const

virtual

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::SnappedBall::homology | ( |  | ) | const

virtual

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::LayeredLensSpace::homology | ( |  | ) | const

virtual

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::StandardTriangulation::homology | ( |  | ) | const

inline virtual

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::LayeredSolidTorus, regina::TriSolidTorus, regina::LayeredChain, regina::SpiralSolidTorus, regina::LayeredTorusBundle, regina::SnapPeaCensusTri, regina::LayeredLensSpace, regina::SnappedBall, regina::LayeredLoop, regina::TrivialTri, regina::L31Pillow, and regina::LayeredChainPair.

## homology() [8/13]

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

virtual

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::LayeredTorusBundle::homology | ( |  | ) | const

virtual

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::SpiralSolidTorus::homology | ( |  | ) | const

virtual

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::LayeredChain::homology | ( |  | ) | const

virtual

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

virtual

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::LayeredSolidTorus::homology | ( |  | ) | const

virtual

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

  originalTri | the triangulation currently used by this annulus representation.
  iso | the mapping from originalTri to newTri.
  newTri | the triangulation to be used by the new annulus representation.

## index() [1/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.

## index() [2/2]

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

inline

Returns the number of tetrahedra in this layered chain.

Returns
  the number of tetrahedra.

## initialise()

void regina::SatBlockStarterSet::initialise | ( |  | ) |

protected virtual

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

  tri | the 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

  tri | the triangulation into which the new block should be inserted.
  major | `true` 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

  tri | the triangulation into which the new block should be inserted.
  length | the length of the new reflector strip, i.e., the number of boundary annuli; this must be strictly positive.
  twisted | `true` 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

  whichTet | specifies 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

  index | specifies 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

  other | the annulus to compare with this.
  refVert | returns 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.
  refHoriz | returns 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

  index | specifies which annulus on the solid torus boundary to examine; this must be 0, 1 or 2.
  roleMap | a 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

  comp | the 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
| ) |  |

inline static protected

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

  t | the tetrahedron to search for.
  list | the 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
| ) |  |

static protected

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

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

Parameters

  t | the tetrahedron to search for.
  list | the 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

  annulus | the proposed boundary annulus that should form part of the new saturated block.
  avoidTets | the 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

  annulus | the proposed boundary annulus that should form part of the new saturated block.
  avoidTets | the 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

  tri | the 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

  tri | the 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

  tri | the 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

  tri | the 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

  annulus | the proposed boundary annulus that should form part of the new saturated block.
  avoidTets | the 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

  annulus | the proposed boundary annulus that should form part of the new saturated block.
  avoidTets | the 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

  annulus | the proposed boundary annulus that should form part of the new saturated block.
  avoidTets | the 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

  annulus | the proposed boundary annulus that should form part of the new saturated block.
  avoidTets | the 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

  annulus | the proposed boundary annulus that should form part of the new saturated block.
  avoidTets | the 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

  tri | the 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

  other | the annulus to compare with this.
  matching | returns 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

  comp | the 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

  comp | the 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

  comp | the 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

  comp | the 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

  comp | the 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

  tri | the 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

  name | used 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

  tri | the 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

  comp | the 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

  comp | the 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

  component | the 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

  tri | the 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

  comp | the 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::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.

## isTwisted() [2/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.

## 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 | ) |

inline

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

Parameters

  cloneMe | the 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

  tet | the tetrahedron that will make up this layered chain.
  vertexRoles | a 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

  bdry0 | the tetrahedron providing the first triangle of the boundary.
  roles0 | the permutation describing how this first triangle is formed from three vertices of tetrahedron bdry0, as described in the class notes.
  bdry1 | the tetrahedron providing the second triangle of the boundary.
  roles1 | the 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

  tri | the 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::BlockedSFS::manifold | ( |  | ) | const

virtual

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() [2/20]

Manifold* regina::LayeredChainPair::manifold | ( |  | ) | const

virtual

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::StandardTriangulation::manifold | ( |  | ) | const

inline virtual

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::LayeredSolidTorus, regina::TriSolidTorus, regina::LayeredChain, regina::AugTriSolidTorus, regina::SpiralSolidTorus, regina::LayeredTorusBundle, regina::PlugTriSolidTorus, regina::BlockedSFSTriple, regina::PluggedTorusBundle, regina::SnapPeaCensusTri, regina::LayeredLensSpace, regina::BlockedSFSLoop, regina::SnappedBall, regina::BlockedSFSPair, regina::LayeredLoop, regina::TrivialTri, regina::L31Pillow, regina::LayeredChainPair, and regina::BlockedSFS.

## manifold() [4/20]

Manifold* regina::L31Pillow::manifold | ( |  | ) | const

virtual

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::TrivialTri::manifold | ( |  | ) | const

virtual

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::BlockedSFSPair::manifold | ( |  | ) | const

virtual

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::LayeredLoop::manifold | ( |  | ) | const

virtual

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::SnappedBall::manifold | ( |  | ) | const

virtual

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::BlockedSFSLoop::manifold | ( |  | ) | const

virtual

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

virtual

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::SnapPeaCensusTri::manifold | ( |  | ) | const

virtual

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::PluggedTorusBundle::manifold | ( |  | ) | const

virtual

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::BlockedSFSTriple::manifold | ( |  | ) | const

virtual

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::PlugTriSolidTorus::manifold | ( |  | ) | const

virtual

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::LayeredTorusBundle::manifold | ( |  | ) | const

virtual

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::SpiralSolidTorus::manifold | ( |  | ) | const

virtual

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::AugTriSolidTorus::manifold | ( |  | ) | const

virtual

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::LayeredChain::manifold | ( |  | ) | const

virtual

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

virtual

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::LayeredSolidTorus::manifold | ( |  | ) | const

virtual

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

  upperBdry0 | the tetrahedron providing the first triangle of the given boundary.
  upperRoles0 | the permutation describing how this first triangle is formed from three vertices of tetrahedron upperBdry0, as described in the class notes.
  upperBdry1 | the tetrahedron providing the second triangle of the given boundary.
  upperRoles1 | the permutation describing how this second triangle is formed from three vertices of tetrahedron upperBdry1.
  upperReln | the 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::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() [2/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() [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

  which | 0 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

  group | the 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

  which | specifies 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

  which | specifies 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

  thisAnnulus | describes which original boundary annulus of this block to examine; this must be between 0 and nAnnuli()-1 inclusive.
  nextBlock | a reference used to return the block containing the next boundary annulus around from thisAnnulus.
  nextAnnulus | a 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.
  refVert | a reference used to return `true` if the next annulus around is vertically reflected, or `false` if not; see above for details.
  refHoriz | a reference used to return `true` if the next annulus around is horizontally reflected, or `false` if not; see above for details.
  followPrev | `true` 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 | ) |

inline static protected

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

  test | the 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
| ) |  |

inline static protected

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

  test | the tetrahedron pointer to test.
  other1 | another 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
| ) |  |

inline static protected

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

  test | the tetrahedron pointer to test.
  other1 | another tetrahedron that will be compared with test.
  other2 | another 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
| ) |  |

inline static protected

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

  test | the tetrahedron pointer to test.
  other1 | another tetrahedron that will be compared with test.
  other2 | another tetrahedron that will be compared with test.
  other3 | another 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
| ) |  |

inline static protected

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

  test | the tetrahedron pointer to test.
  other1 | another tetrahedron that will be compared with test.
  other2 | another tetrahedron that will be compared with test.
  other3 | another tetrahedron that will be compared with test.
  other4 | another 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

  which | specifies 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

  which | specifies 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

  other | the 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

  other | the 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

  compare | the 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

  compare | the 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=()

SatAnnulus & regina::SatAnnulus::operator= | ( | const SatAnnulus & | cloneMe | ) |

inline

Makes this equal to a clone of the given structure.

Parameters

  cloneMe | the structure to clone.

Returns
  a reference to this 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

  other | the 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

  other | the 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

  compare | the 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

  which | 0 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::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.

## reverse() [2/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.

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

  cloneMe | the 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

  t0 | the tetrahedron to assign to tet[0].
  r0 | the permutation to assign to roles[0].
  t1 | the tetrahedron to assign to tet[1].
  r1 | the 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

  cloneMe | the saturated block to clone.

## SatBlock() [2/2]

regina::SatBlock::SatBlock | ( | unsigned | nAnnuli,
|  | bool | twistedBoundary = `false`
| ) |  |

inline protected

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

  nAnnuli | the number of annuli on the boundary of this block; this must be strictly positive.
  twistedBoundary | `true` if the ring of boundary annuli is twisted to form a long Mobius band, or `false` (the default) if it is not.

## SatBlockSpec() [1/2]

regina::SatBlockSpec::SatBlockSpec | ( |  | ) |

inline

Creates a new structure that is completely uninitialised.

## SatBlockSpec() [2/2]

regina::SatBlockSpec::SatBlockSpec | ( | SatBlock * | useBlock,
|  | bool | useRefVert,
|  | bool | useRefHoriz
| ) |  |

inline

Creates a new structure that is initialised to the given set of values.

Parameters

  useBlock | details of the saturated block structure.
  useRefVert | `true` if the block is reflected vertically within the larger region, or `false` otherwise.
  useRefHoriz | `true` if the block is reflected horizontally within the larger region, or `false` otherwise.

## SatCube() [1/2]

regina::SatCube::SatCube | ( |  | ) |

inline protected

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

inline

Constructs a clone of the given block structure.

Parameters

  cloneMe | the block structure to clone.

## SatLayering() [1/2]

regina::SatLayering::SatLayering | ( | bool | overHorizontal | ) |

inline protected

Constructs a partially initialised block.

The boundary annuli will remain uninitialised, and must be initialised before this block can be used.

Parameters

  overHorizontal | `true` 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 | ) |

inline

Constructs a clone of the given block structure.

Parameters

  cloneMe | the block structure to clone.

## SatLST()

regina::SatLST::SatLST | ( | const SatLST & | cloneMe | ) |

Constructs a clone of the given block structure.

Parameters

  cloneMe | the block structure to clone.

## SatMobius()

regina::SatMobius::SatMobius | ( | const SatMobius & | cloneMe | ) |

inline

Constructs a clone of the given block structure.

Parameters

  cloneMe | the block structure to clone.

## SatReflectorStrip() [1/2]

regina::SatReflectorStrip::SatReflectorStrip | ( | const SatReflectorStrip & | cloneMe | ) |

inline

Constructs a clone of the given block structure.

Parameters

  cloneMe | the block structure to clone.

## SatReflectorStrip() [2/2]

regina::SatReflectorStrip::SatReflectorStrip | ( | unsigned | length,
|  | bool | twisted
| ) |  |

inline protected

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

  length | the length of the new reflector strip, i.e., the number of boundary annuli; this must be strictly positive.
  twisted | `true` 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

  starter | the single block that this region will describe.

## SatTriPrism() [1/2]

regina::SatTriPrism::SatTriPrism | ( | bool | major | ) |

inline protected

Constructs a partially initialised block.

The boundary annuli will remain uninitialised, and must be initialised before this block can be used.

Parameters

  major | `true` if this block is of major type, or `false` if it is of minor type.

## SatTriPrism() [2/2]

regina::SatTriPrism::SatTriPrism | ( | const SatTriPrism & | cloneMe | ) |

inline

Constructs a clone of the given block structure.

Parameters

  cloneMe | the 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

  whichAnnulus | indicates which boundary annulus of this block has the new adjacency; this must be between 0 and nAnnuli()-1 inclusive.
  adjBlock | the other saturated block that is adjacent to this.
  adjAnnulus | indicates 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.
  adjReflected | indicates whether the new adjacency is reflected (see the class notes for details).
  adjBackwards | indicates 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]

size_t regina::SpiralSolidTorus::size | ( |  | ) | const

inline

Returns the number of tetrahedra in this spiralled solid torus.

Returns
  the number of tetrahedra.

## size() [3/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() [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

  index | specifies which of the two 3-balls to return; this must be either 0 or 1.

Returns
  the corresponding snapped 3-ball.

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

  index | specifies 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

  whichTet | specifies 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

  index | specifies 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

  group | the group that the requested edge should belong to; this must be 0, 1 or 2.
  index | the 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

  edge | the 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

  index | specifies 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]

virtual void regina::SatLST::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

  originalTri | the triangulation currently used by this saturated block.
  iso | the mapping from originalTri to newTri.
  newTri | the triangulation to be used by the updated block structure.

Reimplemented from regina::SatBlock.

## transform() [2/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

  originalTri | the triangulation currently referenced by this layered solid torus.
  iso | the mapping from originalTri to newTri.
  newTri | the triangulation to be referenced by the updated layered solid torus.

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

  originalTri | the triangulation currently used by this saturated block.
  iso | the mapping from originalTri to newTri.
  newTri | the triangulation to be used by the updated block structure.

Reimplemented in regina::SatLST.

## transform() [4/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

  originalTri | the triangulation currently used by this annulus representation.
  iso | the mapping from originalTri to newTri.
  newTri | the triangulation to be used by the updated annulus representation.

## triangle()

Triangle< 3 > * regina::PillowTwoSphere::triangle | ( | int | index | ) | const

inline

Returns one of the two triangles whose boundaries are joined.

Parameters

  index | specifies 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 | ( |  | ) |

inline protected

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

  newSize | the number of tetrahedra in this triangulation. This must be at least 6.
  newK | the 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 | ) |

protected pure 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

  starter | a 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

  index | specifies 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

  index | specifies 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::SatMobius::writeAbbr | ( | std::ostream & | out,
|  | bool | tex = `false`
| ) |  | const

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

  out | the output stream to which to write.
  tex | `true` if the output should be formatted for TeX, or `false` if it should be in plain text format.

Implements regina::SatBlock.

## writeAbbr() [2/7]

virtual void regina::SatLST::writeAbbr | ( | std::ostream & | out,
|  | bool | tex = `false`
| ) |  | const

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

  out | the output stream to which to write.
  tex | `true` if the output should be formatted for TeX, or `false` if it should be in plain text format.

Implements regina::SatBlock.

## writeAbbr() [3/7]

void regina::SatTriPrism::writeAbbr | ( | std::ostream & | out,
|  | bool | tex = `false`
| ) |  | const

inline 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

  out | the output stream to which to write.
  tex | `true` 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::SatCube::writeAbbr | ( | std::ostream & | out,
|  | bool | tex = `false`
| ) |  | const

inline 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

  out | the output stream to which to write.
  tex | `true` 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::SatReflectorStrip::writeAbbr | ( | std::ostream & | out,
|  | bool | tex = `false`
| ) |  | const

inline 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

  out | the output stream to which to write.
  tex | `true` 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::SatLayering::writeAbbr | ( | std::ostream & | out,
|  | bool | tex = `false`
| ) |  | const

inline 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

  out | the output stream to which to write.
  tex | `true` if the output should be formatted for TeX, or `false` if it should be in plain text format.

Implements regina::SatBlock.

## writeAbbr() [7/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

  out | the output stream to which to write.
  tex | `true` 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.

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

  out | the output stream to which to write.
  tex | `true` 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

  out | the output stream to which to write.
  title | the name of this region, to be written on the first line of output.

## writeName() [1/23]

std::ostream& regina::BlockedSFS::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [2/23]

std::ostream & regina::LayeredChainPair::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [3/23]

std::ostream & regina::L31Pillow::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [4/23]

std::ostream& regina::TrivialTri::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [5/23]

std::ostream& regina::BlockedSFSPair::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [6/23]

std::ostream & regina::LayeredLoop::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [7/23]

std::ostream & regina::SnappedBall::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [8/23]

std::ostream& regina::BlockedSFSLoop::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [9/23]

std::ostream& regina::LayeredLensSpace::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [10/23]

std::ostream& regina::SnapPeaCensusTri::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [11/23]

std::ostream& regina::PluggedTorusBundle::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [12/23]

std::ostream& regina::BlockedSFSTriple::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [13/23]

std::ostream& regina::PlugTriSolidTorus::writeName | ( | std::ostream & | out | ) | const

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

  out | the 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

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [15/23]

std::ostream & regina::SpiralSolidTorus::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [16/23]

std::ostream& regina::AugTriSolidTorus::writeName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [17/23]

std::ostream & regina::LayeredChain::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [18/23]

std::ostream & regina::TriSolidTorus::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [19/23]

std::ostream & regina::LayeredSolidTorus::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeName() [20/23]

std::ostream & regina::TxIDiagonalCore::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::TxICore.

## writeName() [21/23]

std::ostream & regina::TxIParallelCore::writeName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::TxICore.

## writeName() [22/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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

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

## writeName() [23/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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implemented in regina::TxIParallelCore, and regina::TxIDiagonalCore.

## writeTeXName() [1/23]

std::ostream& regina::BlockedSFS::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [2/23]

std::ostream & regina::LayeredChainPair::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [3/23]

std::ostream & regina::L31Pillow::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [4/23]

std::ostream& regina::TrivialTri::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [5/23]

std::ostream& regina::BlockedSFSPair::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [6/23]

std::ostream & regina::LayeredLoop::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [7/23]

std::ostream & regina::SnappedBall::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [8/23]

std::ostream& regina::BlockedSFSLoop::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [9/23]

std::ostream& regina::LayeredLensSpace::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [10/23]

std::ostream& regina::SnapPeaCensusTri::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [11/23]

std::ostream& regina::PluggedTorusBundle::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [12/23]

std::ostream& regina::BlockedSFSTriple::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [13/23]

std::ostream& regina::PlugTriSolidTorus::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the 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

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [15/23]

std::ostream & regina::SpiralSolidTorus::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [16/23]

std::ostream& regina::AugTriSolidTorus::writeTeXName | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [17/23]

std::ostream & regina::LayeredChain::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [18/23]

std::ostream & regina::TriSolidTorus::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [19/23]

std::ostream & regina::LayeredSolidTorus::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::StandardTriangulation.

## writeTeXName() [20/23]

std::ostream & regina::TxIDiagonalCore::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::TxICore.

## writeTeXName() [21/23]

std::ostream & regina::TxIParallelCore::writeTeXName | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implements regina::TxICore.

## writeTeXName() [22/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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

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

## writeTeXName() [23/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

  out | the output stream to which to write.

Returns
  a reference to the given output stream.

Implemented in regina::TxIParallelCore, and regina::TxIDiagonalCore.

## writeTextLong() [1/22]

void regina::BlockedSFS::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [2/22]

void regina::LayeredChainPair::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [3/22]

void regina::L31Pillow::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [4/22]

void regina::TrivialTri::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [5/22]

void regina::BlockedSFSPair::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [6/22]

void regina::LayeredLoop::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [7/22]

void regina::SnappedBall::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [8/22]

void regina::BlockedSFSLoop::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [9/22]

void regina::LayeredLensSpace::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [10/22]

void regina::PluggedTorusBundle::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [11/22]

void regina::BlockedSFSTriple::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [12/22]

void regina::PlugTriSolidTorus::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [13/22]

void regina::LayeredTorusBundle::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [14/22]

void regina::SpiralSolidTorus::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [15/22]

void regina::StandardTriangulation::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

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

## writeTextLong() [16/22]

void regina::AugTriSolidTorus::writeTextLong | ( | std::ostream & | out | ) | const

virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [17/22]

void regina::LayeredChain::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [18/22]

void regina::TriSolidTorus::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [19/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

  out | the output stream to which to write.

## writeTextLong() [20/22]

void regina::LayeredSolidTorus::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

Reimplemented from regina::StandardTriangulation.

## writeTextLong() [21/22]

void regina::SatBlock::writeTextLong | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

## writeTextLong() [22/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

  out | the output stream to which to write.

## writeTextShort() [1/12]

virtual void regina::SatMobius::writeTextShort | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Implements regina::SatBlock.

## writeTextShort() [2/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

  out | the 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

  out | the output stream to which to write.

## writeTextShort() [4/12]

virtual void regina::SatLST::writeTextShort | ( | std::ostream & | out | ) | const

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

  out | the output stream to which to write.

Implements regina::SatBlock.

## writeTextShort() [5/12]

void regina::StandardTriangulation::writeTextShort | ( | std::ostream & | out | ) | const

inline virtual

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

  out | the output stream to which to write.

## writeTextShort() [6/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

  out | the output stream to which to write.

## writeTextShort() [7/12]

void regina::SatTriPrism::writeTextShort | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Implements regina::SatBlock.

## writeTextShort() [8/12]

void regina::SatCube::writeTextShort | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Implements regina::SatBlock.

## writeTextShort() [9/12]

void regina::SatReflectorStrip::writeTextShort | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Implements regina::SatBlock.

## writeTextShort() [10/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

  out | the output stream to which to write.

## writeTextShort() [11/12]

void regina::SatLayering::writeTextShort | ( | std::ostream & | out | ) | const

inline 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

  out | the output stream to which to write.

Implements regina::SatBlock.

## writeTextShort() [12/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

  out | the output stream to which to write.

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

## ~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 | ( |  | ) |

inline virtual

Destroys this structure.

## ~LayeredChain()

regina::LayeredChain::~LayeredChain | ( |  | ) |

inline virtual

Destroys this layered chain.

## ~LayeredChainPair()

regina::LayeredChainPair::~LayeredChainPair | ( |  | ) |

inline virtual

Destroys this layered chain pair.

## ~LayeredLensSpace()

regina::LayeredLensSpace::~LayeredLensSpace | ( |  | ) |

inline virtual

Destroys this lens space; note that the corresponding layered solid torus will also be destroyed.

## ~LayeredLoop()

regina::LayeredLoop::~LayeredLoop | ( |  | ) |

inline virtual

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 | ( |  | ) |

inline virtual

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 | ( |  | ) |

inline virtual

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 | ( |  | ) |

inline virtual

Destroys this spiralled solid torus.

## ~StandardTriangulation()

regina::StandardTriangulation::~StandardTriangulation | ( |  | ) |

inline virtual

A destructor that does nothing.

## ~TriSolidTorus()

regina::TriSolidTorus::~TriSolidTorus | ( |  | ) |

inline virtual

Destroys this solid torus.

## ~TxICore()

regina::TxICore::~TxICore | ( |  | ) |

inline virtual

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-2016, 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).