Regina Calculation Engine
Public Member Functions
regina::NSurfaceSet Class Reference

Represents a collection of normal surfaces in a 3-manifold. More...

#include <surfaces/nsurfaceset.h>

Inheritance diagram for regina::NSurfaceSet:
regina::NNormalSurfaceList regina::NSurfaceSubset

List of all members.

Public Member Functions

virtual ~NSurfaceSet ()
 Default destructor that does nothing.
virtual int getFlavour () const =0
 Returns the flavour of coordinate system being used by the surfaces stored in this set.
virtual bool allowsAlmostNormal () const =0
 Determines if the flavour of coordinate system being used allows for almost normal surfaces, that is, allows for octagonal discs.
virtual bool allowsSpun () const =0
 Determines if the flavour of coordinate system being used allows for spun normal surfaces.
virtual bool isEmbeddedOnly () const =0
 Returns whether this set is known to contain only embedded normal surfaces.
virtual NTriangulationgetTriangulation () const =0
 Returns the triangulation in which these normal surfaces live.
virtual unsigned long getNumberOfSurfaces () const =0
 Returns the number of surfaces stored in this set.
virtual const NNormalSurfacegetSurface (unsigned long index) const =0
 Returns the surface at the requested index in this set.
virtual ShareableObjectgetShareableObject ()=0
 Returns this object cast as a ShareableObject.
void writeAllSurfaces (std::ostream &out) const
 Writes the number of surfaces in this set followed by the details of each surface to the given output stream.

Detailed Description

Represents a collection of normal surfaces in a 3-manifold.

This is a completely abstract base class used to provide a common interface to different types of surface sets.

Any class derived from NSurfaceSet must maintain a fixed set of surfaces; no surfaces may be added to or removed from the set. Surfaces in the set may however be modified.

Precondition:
No surfaces will ever be added to or removed from this set after its creation.
Warning:
You should never cast down from NSurfaceSet; instead you should always call getShareableObject() and cast down from there.

Constructor & Destructor Documentation

regina::NSurfaceSet::~NSurfaceSet ( ) [inline, virtual]

Default destructor that does nothing.


Member Function Documentation

virtual bool regina::NSurfaceSet::allowsAlmostNormal ( ) const [pure virtual]

Determines if the flavour of coordinate system being used allows for almost normal surfaces, that is, allows for octagonal discs.

Returns:
true if and only if almost normal surfaces are allowed.

Implemented in regina::NNormalSurfaceList, and regina::NSurfaceSubset.

virtual bool regina::NSurfaceSet::allowsSpun ( ) const [pure virtual]

Determines if the flavour of coordinate system being used allows for spun normal surfaces.

Returns:
true if and only if spun normal surface are supported.

Implemented in regina::NNormalSurfaceList, and regina::NSurfaceSubset.

virtual int regina::NSurfaceSet::getFlavour ( ) const [pure virtual]

Returns the flavour of coordinate system being used by the surfaces stored in this set.

This will be one of the predefined coordinate system constants in NNormalSurfaceList.

Returns:
the flavour of coordinate system used.

Implemented in regina::NNormalSurfaceList, and regina::NSurfaceSubset.

virtual unsigned long regina::NSurfaceSet::getNumberOfSurfaces ( ) const [pure virtual]

Returns the number of surfaces stored in this set.

Returns:
the number of surfaces.

Implemented in regina::NNormalSurfaceList, and regina::NSurfaceSubset.

virtual ShareableObject* regina::NSurfaceSet::getShareableObject ( ) [pure virtual]

Returns this object cast as a ShareableObject.

Generally the implementation of this routine will simply be return this;.

This routine is necessary because NSurfaceSet is not of type ShareableObject; however, it is presumed that each of its derived classes will be. The aim here is to reduce the mess that could arise combining virtual multiple inheritance with the voluminous casting and recasting that takes place when working with external interfaces.

Returns:
this object cast as a ShareableObject.

Implemented in regina::NNormalSurfaceList, and regina::NSurfaceSubset.

virtual const NNormalSurface* regina::NSurfaceSet::getSurface ( unsigned long  index) const [pure virtual]

Returns the surface at the requested index in this set.

Parameters:
indexthe index of the requested surface in this set; this must be between 0 and getNumberOfSurfaces()-1 inclusive.
Returns:
the normal surface at the requested index in this set.

Implemented in regina::NNormalSurfaceList, and regina::NSurfaceSubset.

virtual NTriangulation* regina::NSurfaceSet::getTriangulation ( ) const [pure virtual]

Returns the triangulation in which these normal surfaces live.

Returns:
the triangulation in which these surfaces live.

Implemented in regina::NNormalSurfaceList, and regina::NSurfaceSubset.

virtual bool regina::NSurfaceSet::isEmbeddedOnly ( ) const [pure virtual]

Returns whether this set is known to contain only embedded normal surfaces.

If it is possible that there are non-embedded surfaces in this set but it is not known whether any are actually present or not, this routine should return false.

Returns:
true if it is known that only embedded normal surfaces exist in this list, or false if immersed and/or singular normal surfaces might be present.

Implemented in regina::NNormalSurfaceList, and regina::NSurfaceSubset.

void regina::NSurfaceSet::writeAllSurfaces ( std::ostream &  out) const

Writes the number of surfaces in this set followed by the details of each surface to the given output stream.

Output will be over many lines.

Python:
Parameter out is not present and is assumed to be standard output.
Parameters:
outthe output stream to which to write.

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

Copyright © 1999-2011, The Regina development team
This software is released under the GNU General Public License.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@debian.org).