#include <ngluingpermsearcher.h>
Public Member Functions | |
TetEdgeState () | |
Constructor for a standalone tetrahedron edge in an equivalence class all of its own. | |
void | dumpData (std::ostream &out) const |
Dumps all internal data in a plain text format to the given output stream. | |
bool | readData (std::istream &in, unsigned long nStates) |
Fills this state with data read from the given input stream. | |
Public Attributes | |
int | parent |
The index of the parent object in the current tree, or -1 if this object is the root of the tree. | |
unsigned | rank |
The depth of the subtree beneath this object (where a leaf node has depth zero). | |
unsigned | size |
The total number of objects in the subtree descending from this object (where this object is counted also). | |
bool | bounded |
Does this equivalence class of tetrahedron edges represent a boundary edge? | |
char | twistUp |
Each tetrahedron edge can be assigned an orientation pointing from the lower numbered tetrahedron vertex to the higher. | |
bool | hadEqualRank |
Did this tree have rank equal to its parent immediately before it was grafted beneath its parent? This information is used to maintain the ranks correctly when grafting operations are undone. |
Two edges are considered equivalent if they are identified within the triangulation.
Tetrahedron edges are indexed linearly by tetrahedron and then edge number. Specifically, edge e (0..5) of tetrahedron t (0..nTets-1) has index 6t+e.
Each equivalence class of edges corresponds to a tree of TetEdgeState objects, arranged to form a modified union-find structure.
regina::NCompactSearcher::TetEdgeState::TetEdgeState | ( | ) | [inline] |
Constructor for a standalone tetrahedron edge in an equivalence class all of its own.
void regina::NCompactSearcher::TetEdgeState::dumpData | ( | std::ostream & | out | ) | const |
Dumps all internal data in a plain text format to the given output stream.
This state can be recreated from this text data by calling readData().
This routine may be useful for transferring objects from one processor to another.
out | the output stream to which the data should be written. |
bool regina::NCompactSearcher::TetEdgeState::readData | ( | std::istream & | in, | |
unsigned long | nStates | |||
) |
Fills this state with data read from the given input stream.
This routine reads data in the format written by dumpData().
in | the input stream from which to read. | |
nStates | the total number of edge states under consideration (this must be six times the number of tetrahedra). |
false
if any errors were encountered during reading, or true
otherwise.
Does this equivalence class of tetrahedron edges represent a boundary edge?
If this equivalence class describes a complete loop of tetrahedron edges then the value of bounded is false
. If this equivalence class describes a string of tetrahedron edges with two endpoints, the value of bounded is true
. Here we treat any face whose gluing permutation has not yet been decided as a boundary face.
This value is only maintained correctly for the root of the corresponding object tree; other objects in the tree will have older values to facilitate backtracking.
Did this tree have rank equal to its parent immediately before it was grafted beneath its parent? This information is used to maintain the ranks correctly when grafting operations are undone.
If this object is still the root of its tree, this value is set to false.
The index of the parent object in the current tree, or -1 if this object is the root of the tree.
The depth of the subtree beneath this object (where a leaf node has depth zero).
The total number of objects in the subtree descending from this object (where this object is counted also).
Each tetrahedron edge can be assigned an orientation pointing from the lower numbered tetrahedron vertex to the higher.
The parameter twistUp is 0 if the identification of this object and its parent in the tree preserves this orientation, or 1 if it does not. If this object has no parent, the value of twistUp is undefined.