Regina Calculation Engine
Classes | Functions | Variables | Friends
Angle Structures

Angle structures on triangulations. More...

Classes

class  regina::AngleStructureVector
 A vector of integers used to indirectly store the individual angles in an angle structure. More...
 
class  regina::AngleStructure
 Represents an angle structure on a triangulation. More...
 
struct  regina::AngleStructures::StructureInserter
 An output iterator used to insert angle structures into an AngleStructures list. More...
 
class  regina::AngleStructures
 A packet representing a collection of angle structures on a triangulation. More...
 
class  regina::XMLAngleStructureReader
 An XML element reader that reads a single angle structure. More...
 
class  regina::XMLAngleStructuresReader
 An XML packet reader that reads a single angle structure list. More...
 

Functions

 regina::AngleStructureVector::AngleStructureVector (size_t length)
 Creates a new vector all of whose entries are initialised to zero. More...
 
 regina::AngleStructureVector::AngleStructureVector (const Vector< LargeInteger > &cloneMe)
 Creates a new vector that is a clone of the given vector. More...
 
static MatrixIntregina::AngleStructureVector::makeAngleEquations (const Triangulation< 3 > *tri)
 Creates a new set of angle structure equations for the given triangulation. More...
 
 regina::AngleStructure::AngleStructure (const Triangulation< 3 > *triang, AngleStructureVector *newVector)
 Creates a new angle structure on the given triangulation with the given coordinate vector. More...
 
 regina::AngleStructure::~AngleStructure ()
 Destroys this angle structure. More...
 
AngleStructureregina::AngleStructure::clone () const
 Creates a newly allocated clone of this angle structure. More...
 
Rational regina::AngleStructure::angle (size_t tetIndex, int edgePair) const
 Returns the requested angle in this angle structure. More...
 
const Triangulation< 3 > * regina::AngleStructure::triangulation () const
 Returns the triangulation on which this angle structure lies. More...
 
bool regina::AngleStructure::isStrict () const
 Determines whether this is a strict angle structure. More...
 
bool regina::AngleStructure::isTaut () const
 Determines whether this is a taut angle structure. More...
 
bool regina::AngleStructure::isVeering () const
 Determines whether this is a veering structure. More...
 
const AngleStructureVectorregina::AngleStructure::rawVector () const
 Gives read-only access to the raw vector that sits beneath this angle structure. More...
 
void regina::AngleStructure::writeTextShort (std::ostream &out) const
 Writes a short text representation of this object to the given output stream. More...
 
void regina::AngleStructure::writeXMLData (std::ostream &out) const
 Writes a chunk of XML containing this angle structure and all of its properties. More...
 
 regina::AngleStructure::AngleStructure (const AngleStructure &)=delete
 
AngleStructureregina::AngleStructure::operator= (const AngleStructure &)=delete
 
void regina::AngleStructure::calculateType () const
 Calculates the structure type (strict or taut) and stores it as a property. More...
 
virtual regina::AngleStructures::~AngleStructures ()
 Destroys this list and all the angle structures within. More...
 
Triangulation< 3 > * regina::AngleStructures::triangulation () const
 Returns the triangulation on which these angle structures lie. More...
 
bool regina::AngleStructures::isTautOnly () const
 Returns whether this list was produced by enumerating taut angle structures only. More...
 
size_t regina::AngleStructures::size () const
 Returns the number of angle structures stored in this list. More...
 
const AngleStructureregina::AngleStructures::structure (size_t index) const
 Returns the angle structure at the requested index in this list. More...
 
bool regina::AngleStructures::spansStrict () const
 Determines whether any convex combination of the angle structures in this list is a strict angle structure. More...
 
bool regina::AngleStructures::spansTaut () const
 Determines whether any angle structure in this list is a taut structure. More...
 
static AngleStructuresregina::AngleStructures::enumerate (Triangulation< 3 > *owner, bool tautOnly=false, ProgressTracker *tracker=0)
 Enumerates all angle structures on the given triangulation. More...
 
static AngleStructuresregina::AngleStructures::enumerateTautDD (Triangulation< 3 > *owner)
 A slower, alternative method to enumerate all taut angle structures on the given triangulation. More...
 
virtual void regina::AngleStructures::writeTextShort (std::ostream &out) const override
 Writes a short text representation of this object to the given output stream. More...
 
virtual void regina::AngleStructures::writeTextLong (std::ostream &out) const override
 Writes a detailed text representation of this object to the given output stream. More...
 
static XMLPacketReaderregina::AngleStructures::xmlReader (Packet *parent, XMLTreeResolver &resolver)
 
virtual bool regina::AngleStructures::dependsOnParent () const override
 Determines if this packet depends upon its parent. More...
 
 regina::AngleStructures::AngleStructures (bool tautOnly)
 Creates a new empty angle structure list. More...
 
virtual Packetregina::AngleStructures::internalClonePacket (Packet *parent) const override
 Makes a newly allocated copy of this packet. More...
 
virtual void regina::AngleStructures::writeXMLPacketData (std::ostream &out) const override
 Writes a chunk of XML containing the data for this packet only. More...
 
void regina::AngleStructures::calculateSpanStrict () const
 Calculate whether the convex span of this list includes a strict angle structure. More...
 
void regina::AngleStructures::calculateSpanTaut () const
 Calculate whether the convex span of this list includes a taut structure. More...
 
 regina::AngleStructures::StructureInserter::StructureInserter ()
 Creates a new uninitialised output iterator. More...
 
 regina::AngleStructures::StructureInserter::StructureInserter (AngleStructures &newList, Triangulation< 3 > *newOwner)
 Creates a new output iterator. More...
 
 regina::AngleStructures::StructureInserter::StructureInserter (const StructureInserter &cloneMe)=default
 Creates a new output iterator that is a clone of the given iterator. More...
 
StructureInserterregina::AngleStructures::StructureInserter::operator= (const StructureInserter &cloneMe)=default
 Sets this iterator to be a clone of the given output iterator. More...
 
StructureInserterregina::AngleStructures::StructureInserter::operator= (AngleStructure *structure)
 Appends an angle structure to the end of the appropriate structure list. More...
 
StructureInserterregina::AngleStructures::StructureInserter::operator= (AngleStructureVector *vector)
 Appends the angle structure corresponding to the given vector to the end of the appropriate structure list. More...
 
StructureInserterregina::AngleStructures::StructureInserter::operator* ()
 Returns a reference to this output iterator. More...
 
StructureInserterregina::AngleStructures::StructureInserter::operator++ ()
 Returns a reference to this output iterator. More...
 
StructureInserterregina::AngleStructures::StructureInserter::operator++ (int)
 Returns a reference to this output iterator. More...
 
MatrixIntregina::makeAngleEquations (const Triangulation< 3 > *tri)
 Creates a new set of angle structure equations for the given triangulation. More...
 
 regina::XMLAngleStructureReader::XMLAngleStructureReader (Triangulation< 3 > *newTri)
 Creates a new angle structure reader. More...
 
AngleStructureregina::XMLAngleStructureReader::structure ()
 Returns the angle structure that has been read. More...
 
virtual void regina::XMLAngleStructureReader::startElement (const std::string &tagName, const regina::xml::XMLPropertyDict &tagProps, XMLElementReader *parentReader) override
 Signifies that parsing of this XML element is beginning. More...
 
virtual void regina::XMLAngleStructureReader::initialChars (const std::string &chars) override
 Signifies that the initial text belonging to this XML element has been read. More...
 
virtual XMLElementReaderregina::XMLAngleStructureReader::startSubElement (const std::string &subTagName, const regina::xml::XMLPropertyDict &subTagProps) override
 Signifies that a subelement of this XML element is about to be parsed. More...
 
 regina::XMLAngleStructuresReader::XMLAngleStructuresReader (Triangulation< 3 > *newTri, XMLTreeResolver &resolver)
 Creates a new angle structure list reader. More...
 
virtual Packetregina::XMLAngleStructuresReader::packet () override
 Returns the newly allocated packet that has been read by this element reader. More...
 
virtual XMLElementReaderregina::XMLAngleStructuresReader::startContentSubElement (const std::string &subTagName, const regina::xml::XMLPropertyDict &subTagProps) override
 Used instead of startSubElement() for XML subelements that are not child packets or packet tags. More...
 
virtual void regina::XMLAngleStructuresReader::endContentSubElement (const std::string &subTagName, XMLElementReader *subReader) override
 Used instead of endSubElement() for XML subelements that are not child packets or packet tags. More...
 

Variables

AngleStructuresregina::AngleStructures::StructureInserter::list
 The list into which angle structures will be inserted. More...
 
Triangulation< 3 > * regina::AngleStructures::StructureInserter::owner
 The triangulation on which the angle structures to be inserted lie. More...
 

Friends

class regina::XMLAngleStructureReader
 
class regina::XMLAngleStructuresReader
 

Detailed Description

Angle structures on triangulations.

Function Documentation

◆ angle()

Rational regina::AngleStructure::angle ( size_t  tetIndex,
int  edgePair 
) const

Returns the requested angle in this angle structure.

The angle returned will be scaled down; the actual angle is the returned value multiplied by pi.

Within a tetrahedron, the three angles are indexed 0, 1 and 2. Angle i appears on edge i of the tetrahedron as well as its opposite edge (5-i).

Parameters
tetIndexthe index in the triangulation of the tetrahedron in which the requested angle lives; this should be between 0 and Triangulation<3>::size()-1 inclusive.
edgePairthe number representing the pair of edges holding the requested angle, as described above; this should be 0, 1 or 2.
Returns
the requested angle scaled down by pi.

◆ AngleStructure()

regina::AngleStructure::AngleStructure ( const Triangulation< 3 > *  triang,
AngleStructureVector newVector 
)
inline

Creates a new angle structure on the given triangulation with the given coordinate vector.

Python:\n Not present.
Parameters
triangthe triangulation on which this angle structure lies.
newVectora vector containing the individual angles in the angle structure.

◆ AngleStructures()

regina::AngleStructures::AngleStructures ( bool  tautOnly)
inlineprotected

Creates a new empty angle structure list.

All properties are marked as unknown.

Parameters
tautOnlytrue if only taut structures are to be enuemrated (when the time comes for enumeration to be performed), or false if we should enumerate all vertices of the angle structure solution space.

◆ AngleStructureVector() [1/2]

regina::AngleStructureVector::AngleStructureVector ( const Vector< LargeInteger > &  cloneMe)
inline

Creates a new vector that is a clone of the given vector.

Parameters
cloneMethe vector to clone.

◆ AngleStructureVector() [2/2]

regina::AngleStructureVector::AngleStructureVector ( size_t  length)
inline

Creates a new vector all of whose entries are initialised to zero.

Parameters
lengththe number of elements in the new vector.

◆ calculateSpanStrict()

void regina::AngleStructures::calculateSpanStrict ( ) const
protected

Calculate whether the convex span of this list includes a strict angle structure.

◆ calculateSpanTaut()

void regina::AngleStructures::calculateSpanTaut ( ) const
protected

Calculate whether the convex span of this list includes a taut structure.

◆ calculateType()

void regina::AngleStructure::calculateType ( ) const
protected

Calculates the structure type (strict or taut) and stores it as a property.

◆ clone()

AngleStructure* regina::AngleStructure::clone ( ) const

Creates a newly allocated clone of this angle structure.

Returns
a clone of this angle structure.

◆ dependsOnParent()

bool regina::AngleStructures::dependsOnParent ( ) const
inlineoverridevirtual

Determines if this packet depends upon its parent.

This is true if the parent cannot be altered without invalidating or otherwise upsetting this packet.

Returns
true if and only if this packet depends on its parent.

Implements regina::Packet.

◆ endContentSubElement()

virtual void regina::XMLAngleStructuresReader::endContentSubElement ( const std::string &  subTagName,
XMLElementReader subReader 
)
overridevirtual

Used instead of endSubElement() for XML subelements that are not child packets or packet tags.

The default implementation does nothing.

Parameters
subTagNamethe name of the subelement closing tag.
subReaderthe child reader that was used to parse the subelement (this is the reader that was returned by the corresponding startContentSubElement() call). It is guaranteed that endElement() has already been called upon this child reader and that the child reader has not yet been destroyed.

Reimplemented from regina::XMLPacketReader.

◆ enumerate()

static AngleStructures* regina::AngleStructures::enumerate ( Triangulation< 3 > *  owner,
bool  tautOnly = false,
ProgressTracker tracker = 0 
)
static

Enumerates all angle structures on the given triangulation.

A list containing all vertices of the angle structure solution space will be returned.

The option is offered to find only taut structures (which are considerably faster to enumerate) instead of enumerating all vertex angle structures. See the tautOnly argument below.

The angle structure list that is created will be inserted as the last child of the given triangulation. This triangulation must remain the parent of this angle structure list, and must not change while this angle structure list remains in existence.

If a progress tracker is passed, the angle structure enumeration will take place in a new thread and this routine will return immediately. If the user cancels the operation from another thread, then the angle structure list will not be inserted into the packet tree (but the caller of this routine will still need to delete it). Regarding progress tracking, this routine will declare and work through a series of stages whose combined weights sum to 1; typically this means that the given tracker must not have been used before.

If no progress tracker is passed, the enumeration will run in the current thread and this routine will return only when the enumeration is complete. Note that this enumeration can be extremely slow for larger triangulations.

Parameters
ownerthe triangulation for which the vertex angle structures will be enumerated.
tautOnlytrue if only taut structures are to be enuemrated, or false if we should enumerate all vertices of the angle structure solution space; this defaults to false.
trackera progress tracker through which progress will be reported, or 0 if no progress reporting is required.
Returns
the newly created angle structure list. Note that if a progress tracker is passed then this list may not be completely filled when this routine returns. If a progress tracker is passed and a new thread could not be started, this routine returns 0 (and no angle structure list is created).

◆ enumerateTautDD()

static AngleStructures* regina::AngleStructures::enumerateTautDD ( Triangulation< 3 > *  owner)
static

A slower, alternative method to enumerate all taut angle structures on the given triangulation.

A list containing all taut angle structures will be returned.

The algorithm used by this routine is based on the double description method. The algorithm used by enumerate() (the preferred method) is instead based on linear programming, and is typically much faster than this routine for larger triangulations.

The angle structure list that is created will be inserted as the last child of the given triangulation. This triangulation must remain the parent of this angle structure list, and must not change while this angle structure list remains in existence.

Warning
This routine is slow, and users will not want to call it unless they have some specialised need.
Parameters
ownerthe triangulation for which the taut angle structures will be enumerated.
Returns
the newly created angle structure list.

◆ initialChars()

virtual void regina::XMLAngleStructureReader::initialChars ( const std::string &  chars)
overridevirtual

Signifies that the initial text belonging to this XML element has been read.

The initial text is everything between the opening tag and the first subelement or closing tag.

The default implementation does nothing.

Parameters
charsthe initial text for this element.

Reimplemented from regina::XMLElementReader.

◆ internalClonePacket()

virtual Packet* regina::AngleStructures::internalClonePacket ( Packet parent) const
overrideprotectedvirtual

Makes a newly allocated copy of this packet.

This routine should not insert the new packet into the tree structure, clone the packet's associated tags or give the packet a label. It should also not clone any descendants of this packet.

You may assume that the new packet will eventually be inserted into the tree beneath either the same parent as this packet or a clone of that parent.

Parameters
parentthe parent beneath which the new packet will eventually be inserted.
Returns
the newly allocated packet.

Implements regina::Packet.

◆ isStrict()

bool regina::AngleStructure::isStrict ( ) const
inline

Determines whether this is a strict angle structure.

A strict angle structure has all angles strictly between (not including) 0 and pi.

Returns
true if and only if this is a strict angle structure.

◆ isTaut()

bool regina::AngleStructure::isTaut ( ) const
inline

Determines whether this is a taut angle structure.

A taut angle structure contains only angles 0 and pi.

Here we use the Kang-Rubinstein definition of a taut angle structure [1], which is based on the angles alone. In his original paper [2], Lackenby has an extra condition whereby 2-faces of the triangulation must have consistent coorientations, which we do not enforce here.

[1] E. Kang and J. H. Rubinstein, "Ideal triangulations of 3-manifolds II; Taut and angle structures", Algebr. Geom. Topol. 5 (2005), pp. 1505-1533.

[2] M. Lackenby, "Taut ideal triangulations of 3-manifolds", Geom. Topol. 4 (2000), pp. 369-395.

Returns
true if and only if this is a taut structure.

◆ isTautOnly()

bool regina::AngleStructures::isTautOnly ( ) const
inline

Returns whether this list was produced by enumerating taut angle structures only.

Returns
true if this list was produced by enumerating taut angle structures only, or false if the enumeration procedure allowed for any angle structures.

◆ isVeering()

bool regina::AngleStructure::isVeering ( ) const
inline

Determines whether this is a veering structure.

A veering structure is taut angle structure with additional strong combinatorial constraints, which we do not outline here. For a definition, see C. D. Hodgson, J. H. Rubinstein, H. Segerman, and S. Tillmann, "Veering triangulations admit strict angle structures", Geom. Topol., 15 (2011), pp. 2073-2089.

Note that the Hodgson et al. definition is slightly more general than Agol's veering taut triangulations from his original paper: I. Agol, " Ideal triangulations of pseudo-Anosov mapping tori", in "Topology and Geometry in Dimension Three", volume 560 of Contemp. Math., pp. 1-17, Amer. Math. Soc., 2011. This mirrors the way in which the Kang-Rubinstein definition of taut angle structure is slightly more general than Lackenby's. See the Hodgson et al. paper for full details and comparisons between the two settings.

If this angle structure is not taut, or if the underlying triangulation is non-orientable, then this routine will return false.

Returns
true if and only if this is a veering structure.

◆ makeAngleEquations() [1/2]

static MatrixInt* regina::AngleStructureVector::makeAngleEquations ( const Triangulation< 3 > *  tri)
static

Creates a new set of angle structure equations for the given triangulation.

Each equation will be represented as a row of the matrix, and each column will represent a coordinate in the underlying coordinate system (which is described in the AngleStructureVector class notes).

The returned matrix will be newly allocated and its destruction will be the responsibility of the caller of this routine.

This is identical to the global function makeAngleEquations(). It is offered again here in the vector class for consistency with the normal surface vector classes.

Parameters
trithe triangulation upon which these angle structure equations will be based.
Returns
a newly allocated set of equations.

◆ makeAngleEquations() [2/2]

MatrixInt * regina::makeAngleEquations ( const Triangulation< 3 > *  tri)
inline

Creates a new set of angle structure equations for the given triangulation.

Each equation will be represented as a row of the matrix, and each column will represent a coordinate in the underlying coordinate system (which is described in the AngleStructureVector class notes).

The returned matrix will be newly allocated and its destruction will be the responsibility of the caller of this routine.

This routine is identical to the static class method AngleStructureVector::makeAngleEquations(). It is offered again here as a global routine so that it is accessible to Python users (who cannot access the AngleStructureVector class).

Parameters
trithe triangulation upon which these angle structure equations will be based.
Returns
a newly allocated set of equations.

◆ operator*()

AngleStructures::StructureInserter & regina::AngleStructures::StructureInserter::operator* ( )
inline

Returns a reference to this output iterator.

Returns
this output iterator.

◆ operator++() [1/2]

AngleStructures::StructureInserter & regina::AngleStructures::StructureInserter::operator++ ( )
inline

Returns a reference to this output iterator.

Returns
this output iterator.

◆ operator++() [2/2]

AngleStructures::StructureInserter & regina::AngleStructures::StructureInserter::operator++ ( int  )
inline

Returns a reference to this output iterator.

Returns
this output iterator.

◆ operator=() [1/3]

AngleStructures::StructureInserter & regina::AngleStructures::StructureInserter::operator= ( AngleStructure structure)
inline

Appends an angle structure to the end of the appropriate structure list.

The given angle structure will be deallocated with the other angle structures in this list when the list is eventually destroyed.

Parameters
structurethe angle structure to insert.
Returns
this output iterator.

◆ operator=() [2/3]

AngleStructures::StructureInserter & regina::AngleStructures::StructureInserter::operator= ( AngleStructureVector vector)
inline

Appends the angle structure corresponding to the given vector to the end of the appropriate structure list.

The given vector will be owned by the newly created angle structure and will be deallocated with the other angle structures in this list when the list is eventually destroyed.

Parameters
vectorthe vector of the angle structure to insert.
Returns
this output iterator.

◆ operator=() [3/3]

StructureInserter& regina::AngleStructures::StructureInserter::operator= ( const StructureInserter cloneMe)
default

Sets this iterator to be a clone of the given output iterator.

Parameters
cloneMethe output iterator to clone.
Returns
this output iterator.

◆ packet()

Packet * regina::XMLAngleStructuresReader::packet ( )
inlineoverridevirtual

Returns the newly allocated packet that has been read by this element reader.

Deallocation of this new packet is not the responsibility of this class. Once this routine gives a non-zero return value, it should continue to give the same non-zero return value from this point onwards.

If this routine is ever to give a non-zero return value, it must be giving that non-zero return value by the time the first child packet or packet tag is encountered; otherwise child packets will not be inserted into the packet tree and/or packet tags will not be added.

The newly allocated packet should not be given a packet label. This will be done by XMLPacketReader::endSubElement().

The newly allocated packet may or may not be inserted in the packet tree structure; this does not matter (although if it is inserted it must be inserted in the correct place).

The newly allocated packet should not be given any associated packet tags. This will be done by XMLPacketReader::startSubElement().

The default implementation returns 0.

Returns
the packet that has been read, or 0 if packet reading is incomplete, the packet should be ignored or an error occurred.

Reimplemented from regina::XMLPacketReader.

◆ rawVector()

const AngleStructureVector * regina::AngleStructure::rawVector ( ) const
inline

Gives read-only access to the raw vector that sits beneath this angle structure.

Generally users should not need this function. However, it is provided here in case the need should arise (e.g., for reasons of efficiency).

Python:\n Not present.
Returns
the underlying raw vector.

◆ size()

size_t regina::AngleStructures::size ( ) const
inline

Returns the number of angle structures stored in this list.

Returns
the number of angle structures.

◆ spansStrict()

bool regina::AngleStructures::spansStrict ( ) const
inline

Determines whether any convex combination of the angle structures in this list is a strict angle structure.

See AngleStructure::isStrict() for details on strict angle structures.

Returns
true if and only if a strict angle structure can be produced.

◆ spansTaut()

bool regina::AngleStructures::spansTaut ( ) const
inline

Determines whether any angle structure in this list is a taut structure.

Because taut structures always appear as vertices of the angle structure solution space, this routine is equivalent to testing whether any convex combination of the angle structures in this list is a taut structure.

See AngleStructure::isTaut() for details on taut structures.

Returns
true if and only if a taut structure can be produced.

◆ startContentSubElement()

virtual XMLElementReader* regina::XMLAngleStructuresReader::startContentSubElement ( const std::string &  subTagName,
const regina::xml::XMLPropertyDict subTagProps 
)
overridevirtual

Used instead of startSubElement() for XML subelements that are not child packets or packet tags.

The default implementation returns a new XMLElementReader which can be used to ignore the subelement completely.

Parameters
subTagNamethe name of the subelement opening tag.
subTagPropsthe properties associated with the subelement opening tag.
Returns
a newly created element reader that will be used to parse the subelement. This class should not take care of the new reader's destruction; that will be done by the parser.

Reimplemented from regina::XMLPacketReader.

◆ startElement()

virtual void regina::XMLAngleStructureReader::startElement ( const std::string &  tagName,
const regina::xml::XMLPropertyDict tagProps,
XMLElementReader parentReader 
)
overridevirtual

Signifies that parsing of this XML element is beginning.

The default implementation does nothing.

Parameters
tagNamethe name of the opening tag for this element.
tagPropsthe properties associated with the opening tag.
parentReaderthe reader currently parsing the parent XML element, or 0 if this is the top-level element. If this paraneter is non-zero, it is guaranteed that startSubElement() has already been called upon the parent reader.

Reimplemented from regina::XMLElementReader.

◆ startSubElement()

virtual XMLElementReader* regina::XMLAngleStructureReader::startSubElement ( const std::string &  subTagName,
const regina::xml::XMLPropertyDict subTagProps 
)
overridevirtual

Signifies that a subelement of this XML element is about to be parsed.

The default implementation returns a new XMLElementReader which can be used to ignore the subelement completely.

Parameters
subTagNamethe name of the subelement opening tag.
subTagPropsthe properties associated with the subelement opening tag.
Returns
a newly created element reader that will be used to parse the subelement. This class should not take care of the new reader's destruction; that will be done by the parser.

Reimplemented from regina::XMLElementReader.

◆ structure() [1/2]

AngleStructure * regina::XMLAngleStructureReader::structure ( )
inline

Returns the angle structure that has been read.

Returns
the newly allocated angle structure, or 0 if an error occurred.

◆ structure() [2/2]

const AngleStructure * regina::AngleStructures::structure ( size_t  index) const
inline

Returns the angle structure at the requested index in this list.

Parameters
indexthe index of the requested angle structure in this list; this must be between 0 and size()-1 inclusive.
Returns
the angle structure at the requested index.

◆ StructureInserter() [1/3]

regina::AngleStructures::StructureInserter::StructureInserter ( )
inline

Creates a new uninitialised output iterator.

Warning
This iterator must not be used until its structure list and triangulation have been initialised.

◆ StructureInserter() [2/3]

regina::AngleStructures::StructureInserter::StructureInserter ( AngleStructures newList,
Triangulation< 3 > *  newOwner 
)
inline

Creates a new output iterator.

The member variables of this iterator will be initialised according to the parameters passed to this constructor.

Parameters
newListthe list into which angle structures will be inserted.
newOwnerthe triangulation on which the structures to be inserted lie.

◆ StructureInserter() [3/3]

regina::AngleStructures::StructureInserter::StructureInserter ( const StructureInserter cloneMe)
default

Creates a new output iterator that is a clone of the given iterator.

Parameters
cloneMethe output iterator to clone.

◆ triangulation() [1/2]

const Triangulation< 3 > * regina::AngleStructure::triangulation ( ) const
inline

Returns the triangulation on which this angle structure lies.

Returns
the underlying triangulation.

◆ triangulation() [2/2]

Triangulation<3>* regina::AngleStructures::triangulation ( ) const

Returns the triangulation on which these angle structures lie.

Returns
the corresponding triangulation.

◆ writeTextLong()

virtual void regina::AngleStructures::writeTextLong ( std::ostream &  out) const
overridevirtual

Writes a detailed text representation of this object to the given output stream.

This may be reimplemented by subclasses, but the parent Packet class offers a reasonable default implementation.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Reimplemented from regina::Packet.

◆ writeTextShort() [1/2]

void regina::AngleStructure::writeTextShort ( std::ostream &  out) const

Writes a short text representation of this object to the given output stream.

Python:\n Not present.
Parameters
outthe output stream to which to write.

◆ writeTextShort() [2/2]

virtual void regina::AngleStructures::writeTextShort ( std::ostream &  out) const
overridevirtual

Writes a short text representation of this object to the given output stream.

This must be reimplemented by subclasses.

Python:\n Not present.
Parameters
outthe output stream to which to write.

Implements regina::Packet.

◆ writeXMLData()

void regina::AngleStructure::writeXMLData ( std::ostream &  out) const

Writes a chunk of XML containing this angle structure and all of its properties.

This routine will be called from within AngleStructures::writeXMLPacketData().

Python:\n Not present.
Parameters
outthe output stream to which the XML should be written.

◆ writeXMLPacketData()

virtual void regina::AngleStructures::writeXMLPacketData ( std::ostream &  out) const
overrideprotectedvirtual

Writes a chunk of XML containing the data for this packet only.

You may assume that the packet opening tag (including the packet type and label) has already been written, and that all child packets followed by the corresponding packet closing tag will be written immediately after this routine is called. This routine need only write the internal data stored in this specific packet.

Parameters
outthe output stream to which the XML should be written.

Implements regina::Packet.

◆ XMLAngleStructureReader()

regina::XMLAngleStructureReader::XMLAngleStructureReader ( Triangulation< 3 > *  newTri)
inline

Creates a new angle structure reader.

Parameters
newTrithe triangulation on which this angle structure lies.

◆ XMLAngleStructuresReader()

regina::XMLAngleStructuresReader::XMLAngleStructuresReader ( Triangulation< 3 > *  newTri,
XMLTreeResolver resolver 
)
inline

Creates a new angle structure list reader.

Parameters
newTrithe triangulation on which these angle structures are placed.
resolverthe master resolver that will be used to fix dangling packet references after the entire XML file has been read.

◆ ~AngleStructure()

regina::AngleStructure::~AngleStructure ( )
inline

Destroys this angle structure.

The underlying vector of angles will also be deallocated.

◆ ~AngleStructures()

regina::AngleStructures::~AngleStructures ( )
inlinevirtual

Destroys this list and all the angle structures within.

Variable Documentation

◆ list

AngleStructures* regina::AngleStructures::StructureInserter::list

The list into which angle structures will be inserted.

◆ owner

Triangulation<3>* regina::AngleStructures::StructureInserter::owner

The triangulation on which the angle structures to be inserted lie.


Copyright © 1999-2018, 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).