Regina Calculation Engine
Public Member Functions | Protected Member Functions | List of all members
regina::detail::FaceOrientability< allowsNonorientable > Class Template Reference

Helper class that stores whether the link of a face is orientable. More...

#include <triangulation/detail/face.h>

Public Member Functions

bool isLinkOrientable () const
 Determines if the link of this face is orientable. More...
 

Protected Member Functions

 FaceOrientability ()
 Initialises the link of this face as orientable. More...
 
void markLinkNonorientable ()
 Marks the link of this face as non-orientable. More...
 

Detailed Description

template<bool allowsNonorientable>
class regina::detail::FaceOrientability< allowsNonorientable >

Helper class that stores whether the link of a face is orientable.

Every class Face<dim, subdim> inherits from this class.

This class takes a template argument to allow optimisation for those dimensions in which face links are always orientable. In particular, if allowsNonorientable is false, then this class assumes that all faces will always have orientable links, and it optimises away all the implementation details to leave no overhead at all.

Template Parameters
allowsNonorientabletrue when this is used for dimensions in which face links could potentially be non-orientable, or false when this is used for dimensions in which face links are always orientable.

Constructor & Destructor Documentation

◆ FaceOrientability()

template<bool allowsNonorientable>
regina::detail::FaceOrientability< allowsNonorientable >::FaceOrientability ( )
protected

Initialises the link of this face as orientable.

Member Function Documentation

◆ isLinkOrientable()

template<bool allowsNonorientable>
bool regina::detail::FaceOrientability< allowsNonorientable >::isLinkOrientable ( ) const

Determines if the link of this face is orientable.

This routine is fast: it uses pre-computed information, and does not need to build a full triangulation of the link.

Warning
If this face is identified with itself under a non-identity permutation (which makes the face invalid), then the return value of this routine is undefined.
Returns
true if and only if the link is orientable.

◆ markLinkNonorientable()

template<bool allowsNonorientable>
void regina::detail::FaceOrientability< allowsNonorientable >::markLinkNonorientable ( )
protected

Marks the link of this face as non-orientable.


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

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