regina::GluingPermSearcher< 4 >::PentTriangleState Struct Reference

A structure used to track equivalence classes of pentachoron triangles as the gluing permutation set is constructed. More...

`#include <census/gluingpermsearcher4.h>`

## Public Member Functions

| PentTriangleState ()
| Constructor for a standalone pentachoron triangle in an equivalence class all of its own. More...
void | dumpData (std::ostream &out) const
| Dumps all internal data in a plain text format to the given output stream. More...
bool | readData (std::istream &in, unsigned long nStates)
| Fills this state with data read from the given input stream. More...

## 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. More...
unsigned | rank
| The depth of the subtree beneath this object (where a leaf node has depth zero). More...
unsigned | size
| The total number of objects in the subtree descending from this object (where this object is counted also). More...
bool | bounded
| Does this equivalence class of pentachoron triangles represent a boundary triangle? More...
Perm< 3 > | twistUp
| The vertices of each pentachoron triangle can be labelled (0,1,2) by running through the underlying pentachoron vertices from smallest index to largest index. More...
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. More...

## Detailed Description

### template<>
struct regina::GluingPermSearcher< 4 >::PentTriangleState

A structure used to track equivalence classes of pentachoron triangles as the gluing permutation set is constructed.

Two triangles are considered equivalent if they are identified within the 4-manifold triangulation.

Pentachoron triangles are indexed linearly by pentachoron and then triangle number. Specifically, triangle f (0..9) of pentachoron p (0..nPents-1) has index 10p+f.

Each equivalence class of triangles corresponds to a tree of PentTriangleState objects, arranged to form a modified union-find structure.

## Constructor & Destructor Documentation

## PentTriangleState()

regina::GluingPermSearcher< 4 >::PentTriangleState::PentTriangleState | ( |  | ) |

inline

Constructor for a standalone pentachoron triangle in an equivalence class all of its own.

## Member Function Documentation

## dumpData()

void regina::GluingPermSearcher< 4 >::PentTriangleState::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.

Warning
  The data format is liable to change between Regina releases. Data in this format should be used on a short-term temporary basis only.

Parameters

  out | the output stream to which the data should be written.

## readData()

bool regina::GluingPermSearcher< 4 >::PentTriangleState::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().

Warning
  The data format is liable to change between Regina releases. Data in this format should be used on a short-term temporary basis only.

This routine does test for bad input data, but it does not test for end-of-file.

Parameters

  in | the input stream from which to read.
  nStates | the total number of triangle states under consideration (this must be ten times the number of pentachora).

Returns
  `false` if any errors were encountered during reading, or `true` otherwise.

## Member Data Documentation

## bounded

bool regina::GluingPermSearcher< 4 >::PentTriangleState::bounded

Does this equivalence class of pentachoron triangles represent a boundary triangle?

If this equivalence class describes a complete loop of pentachoron triangles then the value of bounded is `false`. If this equivalence class describes a string of pentachoron triangles with two endpoints, the value of bounded is `true`. Here we treat any facet whose gluing permutation has not yet been decided as a boundary facet.

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.

## hadEqualRank

bool regina::GluingPermSearcher< 4 >::PentTriangleState::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.

If this object is still the root of its tree, this value is set to false.

## parent

int regina::GluingPermSearcher< 4 >::PentTriangleState::parent

The index of the parent object in the current tree, or -1 if this object is the root of the tree.

## rank

unsigned regina::GluingPermSearcher< 4 >::PentTriangleState::rank

The depth of the subtree beneath this object (where a leaf node has depth zero).

## size

unsigned regina::GluingPermSearcher< 4 >::PentTriangleState::size

The total number of objects in the subtree descending from this object (where this object is counted also).

## twistUp

Perm<3> regina::GluingPermSearcher< 4 >::PentTriangleState::twistUp

The vertices of each pentachoron triangle can be labelled (0,1,2) by running through the underlying pentachoron vertices from smallest index to largest index.

The parameter twistUp is a permutation that maps vertices (0,1,2) of this triangle to vertices (0,1,2) of its parent in the tree according to the way in which the two triangles are identified. If this object has no parent, the value of twistUp is undefined.

The documentation for this struct was generated from the following file:

- census/gluingpermsearcher4.h

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