Regina Calculation Engine
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
regina::SatBlockStarterSearcher Class Referenceabstract

A helper class for locating and using starter blocks within a triangulation. More...

#include <subcomplex/satblockstarter.h>

Public Member Functions

virtual ~SatBlockStarterSearcher ()
 Destroys this object and its internal structures. More...
 
void findStarterBlocks (Triangulation< 3 > *tri)
 Runs a search for every isomorphic embedding of every starter block from the global SatBlockStarterSet within the given triangulation. More...
 
 SatBlockStarterSearcher (const SatBlockStarterSearcher &)=delete
 
SatBlockStarterSearcheroperator= (const SatBlockStarterSearcher &)=delete
 

Protected Member Functions

 SatBlockStarterSearcher ()=default
 Default constructor, for use by subclasses. More...
 
virtual bool useStarterBlock (SatBlock *starter)=0
 Used by subclasses to process each starter block embedding that is found. More...
 

Protected Attributes

SatBlock::TetList usedTets
 Keeps track of which tetrahedra have used by the current embedding of the current starter block. More...
 

Detailed Description

A helper class for locating and using starter blocks within a triangulation.

This class provides a means for searching for each starter block in the global hard-coded SatBlockStarterSet within a given triangulation. More specifically, given some triangulation t, this class can locate every isomorphic embedding of every starter block in the global SatBlockStarterSet as a subcomplex of t (see Triangulation<3>::isContainedIn() for what is meant by "isomorphic embedding").

The routine findStarterBlocks() runs the search. Each time an isomorphic embedding of a starter block is discovered within the given triangulation, the pure virtual routine useStarterBlock() will be called. The block that is passed to useStarterBlock() will be a new block that refers to the particular embedding of the starter block within the given triangulation (as opposed to the original block structure referring to the prebuilt triangulation in SatBlockStarter).

For each situation that requires searching for starter blocks, a subclass of SatBlockStarterSearcher will be required. This subclass should override useStarterBlock() to perform whatever action is necessary.

Instead of locating all isomorphic embeddings of all starter blocks in the global set, the search can be made to finish early once certain conditions are met. This is done by implementing useStarterBlock() to return false when the search should quit.

Python:\n Not present.

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

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