Regina 7.3 Calculation Engine
Public Member Functions | Static Public Attributes | Protected Attributes | Friends | List of all members
regina::Component< dim > Class Template Reference

A connected component of a dim-manifold triangulation. More...

#include <triangulation/generic.h>

Inheritance diagram for regina::Component< dim >:
regina::detail::ComponentBase< dim > regina::ShortOutput< ComponentBase< dim > > regina::MarkedElement regina::Output< ComponentBase< dim >, false >

Public Member Functions

size_t index () const
 Returns the index of this component within the underlying triangulation. More...
 
size_t size () const
 Returns the number of top-dimensional simplices in this component. More...
 
auto simplices () const
 Returns an object that allows iteration through and random access to all top-dimensional simplices in this component. More...
 
Simplex< dim > * simplex (size_t index) const
 Returns the top-dimensional simplex at the given index in this component. More...
 
size_t countVertices () const
 A dimension-specific alias for countFaces<0>(). More...
 
size_t countEdges () const
 A dimension-specific alias for countFaces<1>(). More...
 
size_t countTriangles () const
 A dimension-specific alias for countFaces<2>(). More...
 
size_t countTetrahedra () const
 A dimension-specific alias for countFaces<3>(). More...
 
size_t countPentachora () const
 A dimension-specific alias for countFaces<4>(). More...
 
size_t countBoundaryComponents () const
 Returns the number of boundary components in this component. More...
 
auto vertices () const
 A dimension-specific alias for faces<0>(). More...
 
auto edges () const
 A dimension-specific alias for faces<1>(). More...
 
auto triangles () const
 A dimension-specific alias for faces<2>(), or an alias for simplices() in dimension dim = 2. More...
 
auto tetrahedra () const
 A dimension-specific alias for faces<3>(), or an alias for simplices() in dimension dim = 3. More...
 
auto pentachora () const
 A dimension-specific alias for faces<4>(), or an alias for simplices() in dimension dim = 4. More...
 
auto boundaryComponents () const
 Returns an object that allows iteration through and random access to all boundary components in this component. More...
 
Face< dim, 0 > * vertex (size_t index) const
 A dimension-specific alias for face<0>(). More...
 
Face< dim, 1 > * edge (size_t index) const
 A dimension-specific alias for face<1>(). More...
 
Face< dim, 2 > * triangle (size_t index) const
 A dimension-specific alias for face<2>(). More...
 
Face< dim, 3 > * tetrahedron (size_t index) const
 A dimension-specific alias for face<3>(). More...
 
Face< dim, 4 > * pentachoron (size_t index) const
 A dimension-specific alias for face<4>(). More...
 
BoundaryComponent< dim > * boundaryComponent (size_t index) const
 Returns the boundary component at the given index in this component. More...
 
bool isValid () const
 Determines if this component is valid. More...
 
bool isOrientable () const
 Determines if this component is orientable. More...
 
bool hasBoundaryFacets () const
 Determines if this component has any boundary facets. More...
 
size_t countBoundaryFacets () const
 Returns the number of boundary facets in this component. More...
 
void writeTextShort (std::ostream &out) const
 Writes a short text representation of this object to the given output stream. More...
 
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...
 
size_t markedIndex () const
 Returns the index at which this object is stored in an MarkedVector. More...
 

Static Public Attributes

static constexpr int dimension = dim
 A compile-time constant that gives the dimension of the component. More...
 

Protected Attributes

bool valid_
 Is this component valid? See Triangulation<dim>::isValid() for details on what this means. More...
 

Friends

class detail::TriangulationBase< dim >
 

Detailed Description

template<int dim>
class regina::Component< dim >

A connected component of a dim-manifold triangulation.

Components are highly temporary: whenever a triangulation changes, all of its component objects will be deleted and new ones will be created in their place.

For Regina's standard dimensions, this template is specialised and offers more functionality. In order to use these specialised classes, you will need to include the corresponding triangulation headers (e.g., triangulation/dim2.h for dim = 2, or triangulation/dim3.h for dim = 3).

Components do not support value semantics: they cannot be copied, swapped, or manually constructed. Their location in memory defines them, and they are often passed and compared by pointer. End users are never responsible for their memory management; this is all taken care of by the Triangulation to which they belong.

Python
Python does not support templates. Instead this class can be used by appending the dimension as a suffix (e.g., Component2 and Component3 for dimensions 2 and 3).
Template Parameters
dimthe dimension of the underlying triangulation. This must be between 2 and 15 inclusive.

Member Function Documentation

◆ boundaryComponent()

template<int dim>
BoundaryComponent< dim > * regina::detail::ComponentBase< dim >::boundaryComponent ( size_t  index) const
inlineinherited

Returns the boundary component at the given index in this component.

Note that the index of a boundary component within this component may not be the same as its index within the overall triangulation.

Parameters
indexspecifies which boundary component to return; this should be between 0 and countBoundaryComponents()-1 inclusive.
Returns
the requested boundary component.

◆ boundaryComponents()

template<int dim>
auto regina::detail::ComponentBase< dim >::boundaryComponents
inlineinherited

Returns an object that allows iteration through and random access to all boundary components in this component.

The object that is returned is lightweight, and can be happily copied by value. The C++ type of the object is subject to change, so C++ users should use auto (just like this declaration does).

The returned object is guaranteed to be an instance of ListView, which means it offers basic container-like functions and supports range-based for loops. Note that the elements of the list will be pointers, so your code might look like:

for (BoundaryComponent<dim>* bc : comp.boundaryComponents()) { ... }

The object that is returned will remain valid only for as long as this component object exists. In particular, the object will become invalid any time that the triangulation changes (since all component objects will be destroyed and others rebuilt in their place). Therefore it is best to treat this object as temporary only, and to call boundaryComponents() again each time you need it.

Returns
access to the list of all boundary components.

◆ countBoundaryComponents()

template<int dim>
size_t regina::detail::ComponentBase< dim >::countBoundaryComponents
inlineinherited

Returns the number of boundary components in this component.

Returns
the number of boundary components.

◆ countBoundaryFacets()

template<int dim>
size_t regina::detail::ComponentBase< dim >::countBoundaryFacets
inlineinherited

Returns the number of boundary facets in this component.

A boundary facet is a (dim-1)-dimensional facet of a top-dimensional simplex that is not joined to any adjacent simplex.

This routine runs in constant time (since the result is computed in advance, when the component is first created).

Returns
the total number of boundary facets.

◆ countEdges()

template<int dim>
size_t regina::detail::ComponentBase< dim >::countEdges
inlineinherited

A dimension-specific alias for countFaces<1>().

This alias is available only when dim is one of Regina's standard dimensions.

See countFaces() for further information.

◆ countPentachora()

template<int dim>
size_t regina::detail::ComponentBase< dim >::countPentachora
inlineinherited

A dimension-specific alias for countFaces<4>().

This alias is available only when dim is one of Regina's standard dimensions and dim ≥ 4.

See countFaces() for further information.

◆ countTetrahedra()

template<int dim>
size_t regina::detail::ComponentBase< dim >::countTetrahedra
inlineinherited

A dimension-specific alias for countFaces<3>().

This alias is available only when dim is one of Regina's standard dimensions and dim ≥ 3.

See countFaces() for further information.

◆ countTriangles()

template<int dim>
size_t regina::detail::ComponentBase< dim >::countTriangles
inlineinherited

A dimension-specific alias for countFaces<2>().

This alias is available only when dim is one of Regina's standard dimensions.

See countFaces() for further information.

◆ countVertices()

template<int dim>
size_t regina::detail::ComponentBase< dim >::countVertices
inlineinherited

A dimension-specific alias for countFaces<0>().

This alias is available only when dim is one of Regina's standard dimensions.

See countFaces() for further information.

◆ detail()

std::string regina::Output< ComponentBase< 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.

◆ edge()

template<int dim>
Face< dim, 1 > * regina::detail::ComponentBase< dim >::edge ( size_t  index) const
inlineinherited

A dimension-specific alias for face<1>().

This alias is available only when dim is one of Regina's standard dimensions.

See face() for further information.

◆ edges()

template<int dim>
auto regina::detail::ComponentBase< dim >::edges
inlineinherited

A dimension-specific alias for faces<1>().

This alias is available only when dim is one of Regina's standard dimensions.

See faces() for further information.

◆ hasBoundaryFacets()

template<int dim>
bool regina::detail::ComponentBase< dim >::hasBoundaryFacets
inlineinherited

Determines if this component has any boundary facets.

This routine returns true if and only if this component contains some top-dimensional simplex with at least one facet that is not glued to an adjacent simplex.

Returns
true if and only if this component has boundary facet(s).

◆ index()

template<int dim>
size_t regina::detail::ComponentBase< dim >::index
inlineinherited

Returns the index of this component within the underlying triangulation.

Returns
the index of this component.

◆ isOrientable()

template<int dim>
bool regina::detail::ComponentBase< dim >::isOrientable
inlineinherited

Determines if this component is orientable.

This routine runs in constant time (since orientability is determined in advance, when the component is first created).

Returns
true if and only if this component is orientable.

◆ isValid()

template<int dim>
bool regina::detail::ComponentBase< dim >::isValid
inlineinherited

Determines if this component is valid.

This uses the same criteria as Triangulation<dim>::isValid(); see the Triangulation<dim>::isValid() documentation for details.

As with Triangulation<dim>, this tests for bad self-identifications in all dimensions, but only tests for bad links in Regina's standard dimensions.

Returns
true if and only if this component is valid.

◆ markedIndex()

size_t regina::MarkedElement::markedIndex ( ) const
inlineinherited

Returns the index at which this object is stored in an MarkedVector.

If this object does not belong to an MarkedVector, the return value is undefined.

Returns
the index at which this object is stored.

◆ pentachora()

template<int dim>
auto regina::detail::ComponentBase< dim >::pentachora
inlineinherited

A dimension-specific alias for faces<4>(), or an alias for simplices() in dimension dim = 4.

This alias is available only when dim is one of Regina's standard dimensions and dim ≥ 4.

See faces() for further information.

◆ pentachoron()

template<int dim>
Face< dim, 4 > * regina::detail::ComponentBase< dim >::pentachoron ( size_t  index) const
inlineinherited

A dimension-specific alias for face<4>().

This alias is available only when dim is one of Regina's standard dimensions and dim ≥ 4.

See face() for further information.

◆ simplex()

template<int dim>
Simplex< dim > * regina::detail::ComponentBase< dim >::simplex ( size_t  index) const
inlineinherited

Returns the top-dimensional simplex at the given index in this component.

Note that the index within this component may not be the same as the index within the overall triangulation.

Parameters
indexspecifies which simplex to return; this value should be between 0 and size()-1 inclusive.
Returns
the indexth top-dimensional simplex.

◆ simplices()

template<int dim>
auto regina::detail::ComponentBase< dim >::simplices
inlineinherited

Returns an object that allows iteration through and random access to all top-dimensional simplices in this component.

The object that is returned is lightweight, and can be happily copied by value. The C++ type of the object is subject to change, so C++ users should use auto (just like this declaration does).

The returned object is guaranteed to be an instance of ListView, which means it offers basic container-like functions and supports range-based for loops. Note that the elements of the list will be pointers, so your code might look like:

for (Simplex<dim>* s : comp.simplices()) { ... }

The object that is returned will remain valid only for as long as this component object exists. In particular, the object will become invalid any time that the triangulation changes (since all component objects will be destroyed and others rebuilt in their place). Therefore it is best to treat this object as temporary only, and to call simplices() again each time you need it.

Returns
access to the list of all top-dimensional simplices.

◆ size()

template<int dim>
size_t regina::detail::ComponentBase< dim >::size
inlineinherited

Returns the number of top-dimensional simplices in this component.

Returns
The number of top-dimensional simplices.

◆ str()

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

Returns a short text representation of this object.

This text should be human-readable, should use plain ASCII characters where possible, and should not contain any newlines.

Within these limits, this short text ouptut should be as information-rich as possible, since in most cases this forms the basis for the Python __str__() and __repr__() functions.

Python
The Python "stringification" function __str__() will use precisely this function, and for most classes the Python __repr__() function will incorporate this into its output.
Returns
a short text representation of this object.

◆ tetrahedra()

template<int dim>
auto regina::detail::ComponentBase< dim >::tetrahedra
inlineinherited

A dimension-specific alias for faces<3>(), or an alias for simplices() in dimension dim = 3.

This alias is available only when dim is one of Regina's standard dimensions and dim ≥ 3.

See faces() for further information.

◆ tetrahedron()

template<int dim>
Face< dim, 3 > * regina::detail::ComponentBase< dim >::tetrahedron ( size_t  index) const
inlineinherited

A dimension-specific alias for face<3>().

This alias is available only when dim is one of Regina's standard dimensions and dim ≥ 3.

See face() for further information.

◆ triangle()

template<int dim>
Face< dim, 2 > * regina::detail::ComponentBase< dim >::triangle ( size_t  index) const
inlineinherited

A dimension-specific alias for face<2>().

This alias is available only when dim is one of Regina's standard dimensions.

See face() for further information.

◆ triangles()

template<int dim>
auto regina::detail::ComponentBase< dim >::triangles
inlineinherited

A dimension-specific alias for faces<2>(), or an alias for simplices() in dimension dim = 2.

This alias is available only when dim is one of Regina's standard dimensions.

See faces() for further information.

◆ utf8()

std::string regina::Output< ComponentBase< 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 not contain any newlines, and (within these constraints) should be as information-rich as is reasonable.

Unlike str(), this function may use unicode characters to make the output more pleasant to read. The string that is returned will be encoded in UTF-8.

Returns
a short text representation of this object.

◆ vertex()

template<int dim>
Face< dim, 0 > * regina::detail::ComponentBase< dim >::vertex ( size_t  index) const
inlineinherited

A dimension-specific alias for face<0>().

This alias is available only when dim is one of Regina's standard dimensions.

See face() for further information.

◆ vertices()

template<int dim>
auto regina::detail::ComponentBase< dim >::vertices
inlineinherited

A dimension-specific alias for faces<0>().

This alias is available only when dim is one of Regina's standard dimensions.

See faces() for further information.

◆ writeTextLong()

void regina::ShortOutput< ComponentBase< 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
Not present. Instead you can call detail() from the subclass T, which returns this output as a string.
Parameters
outthe output stream to which to write.

◆ writeTextShort()

template<int dim>
void regina::detail::ComponentBase< dim >::writeTextShort ( std::ostream &  out) const
inherited

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

Python
Not present. Use str() instead.
Parameters
outthe output stream to which to write.

Member Data Documentation

◆ dimension

template<int dim>
constexpr int regina::detail::ComponentBase< dim >::dimension = dim
staticconstexprinherited

A compile-time constant that gives the dimension of the component.

◆ valid_

template<int dim>
bool regina::detail::ComponentBase< dim >::valid_
protectedinherited

Is this component valid? See Triangulation<dim>::isValid() for details on what this means.


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

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