Regina Calculation Engine
Public Types | Public Member Functions | Protected Attributes | List of all members
regina::detail::FacetPairingBase< dim > Class Template Reference

Provides core functionality for facet pairings (that is, dual graphs) of dim-dimensional triangulations. More...

#include <triangulation/detail/facetpairing.h>

Inheritance diagram for regina::detail::FacetPairingBase< dim >:
regina::ShortOutput< FacetPairingBase< dim > > regina::Output< FacetPairingBase< dim >, false > regina::FacetPairing< 2 > regina::FacetPairing< 4 > regina::FacetPairing< dim >

Public Types

typedef std::list< Isomorphism< dim > * > IsoList
 A list of isomorphisms on facet pairings. More...
 
typedef void(* Use) (const FacetPairing< dim > *, const IsoList *, void *)
 A routine that can do arbitrary processing upon a facet pairing and its automorphisms. More...
 

Public Member Functions

void writeTextLong (std::ostream &out) const
 A default implementation for detailed output. More...
 
std::string str () const
 Returns a short text representation of this object. More...
 
std::string utf8 () const
 Returns a short text representation of this object using unicode characters. More...
 
std::string detail () const
 Returns a detailed text representation of this object. More...
 
Constructors and Destructors
 FacetPairingBase (const FacetPairingBase &cloneMe)
 Creates a new facet pairing that is a clone of the given facet pairing. More...
 
 FacetPairingBase (const Triangulation< dim > &tri)
 Creates the facet pairing of given triangulation. More...
 
 ~FacetPairingBase ()
 Deallocates any memory used by this structure. More...
 
Basic Queries
size_t size () const
 Returns the number of simplices whose facets are described by this facet pairing. More...
 
const FacetSpec< dim > & dest (const FacetSpec< dim > &source) const
 Returns the other facet to which the given simplex facet is paired. More...
 
const FacetSpec< dim > & dest (size_t simp, unsigned facet) const
 Returns the other facet to which the given simplex facet is paired. More...
 
const FacetSpec< dim > & operator[] (const FacetSpec< dim > &source) const
 Returns the other facet to which the given simplex facet is paired. More...
 
bool isUnmatched (const FacetSpec< dim > &source) const
 Determines whether the given simplex facet has been left deliberately unmatched. More...
 
bool isUnmatched (size_t simp, unsigned facet) const
 Determines whether the given simplex facet has been left deliberately unmatched. More...
 
bool isClosed () const
 Determines whether this facet pairing is closed. More...
 
Isomorphic Representations
bool isCanonical () const
 Determines whether this facet pairing is in canonical form, i.e., is a lexicographically minimal representative of its isomorphism class. More...
 
void findAutomorphisms (IsoList &list) const
 Fills the given list with the set of all combinatorial automorphisms of this facet pairing. More...
 

Protected Attributes

size_t size_
 The number of simplices under consideration. More...
 
FacetSpec< dim > * pairs_
 The other facet to which each simplex facet is paired. More...
 

Input and Output

void writeTextShort (std::ostream &out) const
 Writes a human-readable representation of this facet pairing to the given output stream. More...
 
std::string toTextRep () const
 Returns a text-based representation of this facet pairing that can be used to reconstruct the facet pairing. More...
 
void writeDot (std::ostream &out, const char *prefix=0, bool subgraph=false, bool labels=false) const
 Writes the graph corresponding to this facet pairing in the Graphviz DOT language. More...
 
std::string dot (const char *prefix=0, bool subgraph=false, bool labels=false) const
 Returns a Graphviz DOT representation of the graph that describes this facet pairing. More...
 
static FacetPairing< dim > * fromTextRep (const std::string &rep)
 Reconstructs a facet pairing from a text-based representation. More...
 
static void writeDotHeader (std::ostream &out, const char *graphName=0)
 Writes header information for a Graphviz DOT file that will describe the graphs for one or more facet pairings. More...
 
static std::string dotHeader (const char *graphName=0)
 Returns header information for a Graphviz DOT file that will describe the graphs for one or more facet pairings. More...
 
static void findAllPairings (size_t nSimplices, BoolSet boundary, int nBdryFacets, Use use, void *useArgs=0)
 Generates all possible facet pairings satisfying the given constraints. More...
 
 FacetPairingBase (size_t size)
 Creates a new facet pairing. More...
 
FacetSpec< dim > & dest (const FacetSpec< dim > &source)
 Returns the other facet to which the given simplex facet is paired. More...
 
FacetSpec< dim > & dest (size_t simp, unsigned facet)
 Returns the other facet to which the given simplex facet is paired. More...
 
FacetSpec< dim > & operator[] (const FacetSpec< dim > &source)
 Returns the other facet to which the given simplex facet is paired. More...
 
bool noDest (const FacetSpec< dim > &source) const
 Determines whether the matching for the given simplex facet has not yet been determined. More...
 
bool noDest (size_t simp, unsigned facet) const
 Determines whether the matching for the given simplex facet has not yet been determined. More...
 
bool isCanonicalInternal (IsoList &list) const
 Determines whether this facet pairing is in canonical (smallest lexicographical) form, given a small set of assumptions. More...
 

Detailed Description

template<int dim>
class regina::detail::FacetPairingBase< dim >

Provides core functionality for facet pairings (that is, dual graphs) of dim-dimensional triangulations.

Such a facet pairing is represented by the class FacetPairing<dim>, which uses this as a base class. End users should not need to refer to FacetPairingBase directly.

See the FacetPairing class notes for further information.

Python:\n This base class is not present, but the "end user"
class FacetPairing<dim> is.
Template Parameters
dimthe dimension of the triangulation. This must be between 2 and 15 inclusive.

Member Function Documentation

◆ detail()

std::string regina::Output< FacetPairingBase< dim > , supportsUtf8 >::detail ( ) const
inherited

Returns a detailed text representation of this object.

This text may span many lines, and should provide the user with all the information they could want. It should be human-readable, should not contain extremely long lines (which cause problems for users reading the output in a terminal), and should end with a final newline. There are no restrictions on the underlying character set.

Returns
a detailed text representation of this object.

◆ str()

std::string regina::Output< FacetPairingBase< dim > , supportsUtf8 >::str ( ) const
inherited

Returns a short text representation of this object.

This text should be human-readable, should fit on a single line, and should not end with a newline. Where possible, it should use plain ASCII characters.

Python:\n In addition to str(), this is also used as the
Python "stringification" function __str__().
Returns
a short text representation of this object.

◆ utf8()

std::string regina::Output< FacetPairingBase< dim > , supportsUtf8 >::utf8 ( ) const
inherited

Returns a short text representation of this object using unicode characters.

Like str(), this text should be human-readable, should fit on a single line, and should not end with a newline. In addition, it may use unicode characters to make the output more pleasant to read. This string will be encoded in UTF-8.

Returns
a short text representation of this object.

◆ writeTextLong()

void regina::ShortOutput< FacetPairingBase< dim > , false >::writeTextLong ( std::ostream &  out) const
inlineinherited

A default implementation for detailed output.

This routine simply calls T::writeTextShort() and appends a final newline.

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

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

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