Regina 7.3 Calculation Engine
Public Types | Public Member Functions | Static Public Member Functions | List of all members
regina::SigCensus Class Reference

A class responsible for building censuses of splitting surface signatures. More...

#include <split/sigcensus.h>

Public Types

using IsoList = std::list< SigPartialIsomorphism >
 A list of partial isomorphisms on splitting surface signatures. More...
 

Public Member Functions

 ~SigCensus ()
 Deallocates any memory used by this structure. More...
 
 SigCensus (const SigCensus &)=delete
 
SigCensusoperator= (const SigCensus &)=delete
 

Static Public Member Functions

template<typename Action , typename... Args>
static size_t formCensus (unsigned order, Action &&action, Args &&... args)
 Forms a census of all splitting surface signatures of the given order. More...
 

Detailed Description

A class responsible for building censuses of splitting surface signatures.

The main entry point for building a census is the static routine formCensus(). End users cannot create their own objects of this class.

See formCensus() for further information.

Member Typedef Documentation

◆ IsoList

A list of partial isomorphisms on splitting surface signatures.

Constructor & Destructor Documentation

◆ ~SigCensus()

regina::SigCensus::~SigCensus ( )
inline

Deallocates any memory used by this structure.

Member Function Documentation

◆ formCensus()

template<typename Action , typename... Args>
size_t regina::SigCensus::formCensus ( unsigned  order,
Action &&  action,
Args &&...  args 
)
inlinestatic

Forms a census of all splitting surface signatures of the given order.

The order of a signature is the number of quads in the corresponding splitting surface.

Each signature will be produced precisely once up to equivalence. Signatures are considered equivalent if they are related by some combination of:

  • relabelling symbols;
  • rotating an individual cycle;
  • inverting an individual cycle (i.e., reversing the cycle and changing the case of each symbol in the cycle);
  • reversing all cycles without changing the case of any symbols.

Each signature produced will have its cycles ordered by decreasing length. Each cycle will have at least half of its symbols lower-case.

For each signature that is generated, this routine will call action (which must be a function or some other callable object).

  • The first argument to action must be a const reference to a Signature. This will be the signature that was found. If action wishes to keep the signature, it should take a deep copy (not a reference), since the signature may be changed and reused after action returns.
  • The second argument to action must be a const reference to a SigCensus::IsoList. This will be the list of all automorphisms of the signature that was found. Again, if action wishes to keep these automorphisms, it should take a deep copy of this list.
  • If there are any additional arguments supplied in the list args, then these will be passed as subsequent arguments to action.
  • action must return void.
Warning
Currently upper-case symbols in signatures are not supported by this routine; only signatures whose symbols are all lower-case will be produced.
Todo:
Feature: Add support for symbols of differing case.
Python
This function is available, and action may be a pure Python function. However, action cannot take any additional arguments beyond the signature and its automorphisms (and therefore the additional args list is omitted here).
Parameters
orderthe order of signatures to generate.
actiona function (or other callable object) to call for each signature that is found.
argsany additional arguments that should be passed to action, following the initial signature and automorphism arguments.
Returns
the total number of non-equivalent signatures that were found.

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

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).