Regina 7.4 Calculation Engine
regina::IsoSigPrintable< dim, supportLocks > Class Template Reference

The default encoding to use for isomorphism signatures. More...

#include <triangulation/isosigencoding.h>

Public Types

using Signature = std::string
 The data type used to store an isomorphism signature.
 

Static Public Member Functions

static Signature emptySig ()
 Returns the isomorphism signature of an empty dim-dimensional triangulation.
 
static Signature encode (size_t size, size_t nFacetActions, const uint8_t *facetAction, size_t nJoins, const size_t *joinDest, const typename Perm< dim+1 >::Index *joinGluing, const typename Simplex< dim >::LockMask *lockMasks)
 Encodes data for a single connected component of a dim-dimensional triangulation.
 

Static Public Attributes

static constexpr int charsPerPerm
 The number of characters that we use in our encoding to represent a single gluing permutation.
 

Detailed Description

template<int dim, bool supportLocks = true>
class regina::IsoSigPrintable< dim, supportLocks >

The default encoding to use for isomorphism signatures.

This printable encoding is consistent with the original isomorphism signatures that were implemented in Regina 4.90. It represents an isomorphism signature as a std::string, using only printable characters from the 7-bit ASCII range.

As of Regina 7.4, if supportLocks is true (the default), then this encoding will also encode any simplex and/or facet locks into the isomorphism signature. If supportLocks is false, and/or if the triangulation in question does not actually have any simplex and/or facet locks, then the resulting signature will be the same as produced by earlier versions of Regina, before locks were implemented.

This class is designed to be used as a template parameter for Triangulation<dim>::isoSig() and Triangulation<dim>::isoSigDetail(). Typical users would have no need to create objects of this class or call any of its functions directly.

Python
Python does not support templates. For encodings that do support locks (the default), Python users can just append the dimension as a suffix (e.g., IsoSigPrintable2 and IsoSigPrintable3 for dimensions 2 and 3). For encodings that do not support locks, Python users should use the type aliases IsoSigPrintableLockFree2, IsoSigPrintableLockFree3, and so on.

Member Typedef Documentation

◆ Signature

template<int dim, bool supportLocks = true>
using regina::IsoSigPrintable< dim, supportLocks >::Signature = std::string

The data type used to store an isomorphism signature.

Member Function Documentation

◆ emptySig()

template<int dim, bool supportLocks = true>
static Signature regina::IsoSigPrintable< dim, supportLocks >::emptySig ( )
inlinestatic

Returns the isomorphism signature of an empty dim-dimensional triangulation.

◆ encode()

template<int dim, bool supportLocks = true>
static Signature regina::IsoSigPrintable< dim, supportLocks >::encode ( size_t size,
size_t nFacetActions,
const uint8_t * facetAction,
size_t nJoins,
const size_t * joinDest,
const typename Perm< dim+1 >::Index * joinGluing,
const typename Simplex< dim >::LockMask * lockMasks )
inlinestatic

Encodes data for a single connected component of a dim-dimensional triangulation.

The description consists of several arrays, describing facets of the top-dimensional simplices, as well as the ways that these facets are glued together and any simplex and/or facet locks. Which array elements represent which facets/gluings is an implementation detail; the purpose of this routine is simply to encode the given information. See the isoSig() implementation for further details.

Python
The arrays facetAction, joinDest, joinGluing and lockMasks should each be passed as Python lists of integers; the argument lockMasks may be None. The arguments nFacetActions and nJoins are not present, since Python lists already know their own sizes.
Parameters
sizethe number of top-dimensional simplices in the component.
nFacetActionsthe size of the array facetAction.
facetActionan array of size nFacetActions, where each element is either 0, 1 or 2, respectively representing a boundary facet, a facet joined to a new simplex, or a facet joined to a simplex that has already been seen.
nJoinsthe size of the arrays joinDest and joinGluing.
joinDestan array whose elements are indices of top-dimensional simplices to which gluings are being made.
joinGluingan array of gluing permutations.
lockMasksan array that holds the lock masks for all top-dimensional simplices in the component, as returned by Simplex<dim>::lockMask(). This array should have length size. If no simplices have any locks at all, then this argument must be null.
Returns
the encoding of the component being described.

Member Data Documentation

◆ charsPerPerm

template<int dim, bool supportLocks = true>
int regina::IsoSigPrintable< dim, supportLocks >::charsPerPerm
staticconstexpr
Initial value:
=
((regina::bitsRequired(Perm<(dim)+1>::nPerms) + 5) / 6)
constexpr int bitsRequired(IntType n)
Returns the number of bits required to store integers in the range 0,...,n-1.
Definition intutils.h:219

The number of characters that we use in our encoding to represent a single gluing permutation.

This must be large enough to encode an index into Perm<dim+1>Sn.


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