regina::detail::FaceOrientability< allowsNonorientable > Class Template Reference
Implementation details

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

  allowsNonorientable | `true` 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:

- triangulation/detail/face.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).