SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ > Class Template Reference

#include <SimplicialComplex.h>

List of all members.
OSimplex switches (unsigned first, unsigned second, const OSimplex &simplex) const
OSimplex getFace (unsigned i, const OSimplex &simplex) const
OSimplex getNeighbour (unsigned i, const OSimplex &simplex) const
Simplex getNeighbour (unsigned i, const Simplex &simplex) const
template<class stack, class TraversalClosure>
bool traverseBySimplex (TraversalClosure &data, const Simplex &seed, stack &fringe) const
template<class DFSData>
bool bfsBySimplex (DFSData &data, const Simplex &seed) const
 Search in breadth-first order.
template<class DFSData>
bool dfsBySimplex (DFSData &data, const Simplex &seed) const
 Search in depth-first order.
template<class stack, class FindClosure>
OptSimplex findSimplex (FindClosure &data, const Simplex &seed, stack &fringe) const
template<class FindClosure>
OptSimplex findSimplex (FindClosure &data, const Simplex &seed) const
 Search in depth-first order.
template<class FindClosure>
OptSimplex findSimplexBFS (FindClosure &data, const Simplex &seed) const
 Search in breadth-first order.
static unsigned dim ()
static const unsigned dimension = d

Public Types

typedef Vertex_ Vertex
typedef VertexPrinter_ VertexPrinter
typedef SimplexData_ SimplexData
typedef hudson::PayloadBucket<
size_t, SimplexData >::reference 
data_ref
typedef hudson::PayloadBucket<
size_t, SimplexData >::const_reference 
data_const_ref

Public Member Functions

 SimplicialComplex (const vector< Vertex * > &verts)
 SimplicialComplex (const std::vector< Vertex * > &verts, const std::vector< std::vector< size_t > > &elements, ssize_t zeroindex=0)
bool isMember (const Simplex &s) const
const SimplexgetHandle () const
OSimplex orientSimplex (const Simplex &s) const
void setHandle (const Simplex &s)
void flipOrientation ()
void computeStar (const Cavity &cavity, Vertex *apex, Star &output)
void replaceCavity (const Cavity &cavity, Star &star)
void replaceCavity (const Cavity &cavity, Vertex *v)
void checkedRemoveSimplex (const Simplex &s)
data_ref getDataRW (const Simplex &s)
data_const_ref getData (const Simplex &s) const

Classes

struct  Cavity
class  Face
class  Face2
struct  Flipper
struct  IFace
struct  ILAdaptor_fringe
struct  ILAdaptor_visited
struct  ISimplex
struct  OptSimplex
class  OSimplex
class  Simplex
struct  Star
class  VisitedSet

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
class SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >


Member Typedef Documentation

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
typedef hudson::PayloadBucket<size_t, SimplexData>::const_reference SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::data_const_ref
 

Equivalent to const SimplexData&

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
typedef hudson::PayloadBucket<size_t, SimplexData>::reference SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::data_ref
 

Equivalent to SimplexData&

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
typedef SimplexData_ SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::SimplexData
 

Data to carry on the simplices. May be void.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
typedef Vertex_ SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::Vertex
 

The vertex class. Arbitrary.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
typedef VertexPrinter_ SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::VertexPrinter
 

Function object to print the vertices, for debugging.


Constructor & Destructor Documentation

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::SimplicialComplex const vector< Vertex * > &  verts  )  [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::SimplicialComplex const std::vector< Vertex * > &  verts,
const std::vector< std::vector< size_t > > &  elements,
ssize_t  zeroindex = 0
[inline]
 


Member Function Documentation

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
template<class DFSData>
bool SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::bfsBySimplex DFSData &  data,
const Simplex seed
const [inline]
 

Search in breadth-first order.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
void SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::checkedRemoveSimplex const Simplex s  )  [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
void SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::computeStar const Cavity cavity,
Vertex apex,
Star output
[inline]
 

Compute the star defined by the cavity x apex.

Algorithm:

  1. make a set of cavity simplices
  2. foreach cavity simplex, foreach face, check if it's in; if not, that face is a boundary face
  3. foreach (oriented) boundary face in the cavity, add 'v' at the apex to create a new (oriented) simplex.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
template<class DFSData>
bool SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::dfsBySimplex DFSData &  data,
const Simplex seed
const [inline]
 

Search in depth-first order.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
static unsigned SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::dim  )  [inline, static]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
template<class FindClosure>
OptSimplex SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::findSimplex FindClosure &  data,
const Simplex seed
const [inline]
 

Search in depth-first order.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
template<class stack, class FindClosure>
OptSimplex SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::findSimplex FindClosure &  data,
const Simplex seed,
stack &  fringe
const [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
template<class FindClosure>
OptSimplex SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::findSimplexBFS FindClosure &  data,
const Simplex seed
const [inline]
 

Search in breadth-first order.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
void SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::flipOrientation  )  [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
data_const_ref SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::getData const Simplex s  )  const [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
data_ref SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::getDataRW const Simplex s  )  [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
OSimplex SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::getFace unsigned  i,
const OSimplex simplex
const [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
const Simplex& SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::getHandle  )  const [inline]
 

Get an arbitrary handle to somewhere in the complex.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
Simplex SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::getNeighbour unsigned  i,
const Simplex simplex
const [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
OSimplex SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::getNeighbour unsigned  i,
const OSimplex simplex
const [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
bool SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::isMember const Simplex s  )  const [inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
OSimplex SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::orientSimplex const Simplex s  )  const [inline]
 

Convert a Simplex (which is canonically oriented) into an OSimplex that happens to share that orientation.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
void SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::replaceCavity const Cavity cavity,
Vertex v
[inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
void SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::replaceCavity const Cavity cavity,
Star star
[inline]
 

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
void SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::setHandle const Simplex s  )  [inline]
 

Set a handle. Required for checkedRemoveSimplex() when the handle is to be removed.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
OSimplex SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::switches unsigned  first,
unsigned  second,
const OSimplex simplex
const [inline]
 

Perform switch_first, then perform switch_second.

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
template<class stack, class TraversalClosure>
bool SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::traverseBySimplex TraversalClosure &  data,
const Simplex seed,
stack &  fringe
const [inline]
 


Member Data Documentation

template<unsigned d, class Vertex_, class SimplexData_ = void, class VertexPrinter_ = typename Vertex_::Printer>
const unsigned SimplicialComplex< d, Vertex_, SimplexData_, VertexPrinter_ >::dimension = d [static]
 


The documentation for this class was generated from the following file:
Generated on Thu Mar 27 19:04:15 2008 by  doxygen 1.4.6