SVR_IO::PLC Class Reference

#include <PLC.h>

List of all members.

Vertex access functions.

vertex_iterator begin_vertices () const
vertex_iterator end_vertices () const
unsigned nvertices () const
Vertex getVertex (unsigned id) const
template<unsigned d>
point_iterator< dbegin_points () const
template<unsigned d>
point_iterator< dend_points () const
const double * begin_x (const Vertex v) const
const double * end_x (const Vertex v) const
template<unsigned d>
Geometry::Point< dtoPoint (const Vertex v) const
static unsigned hash (Vertex v)

Element access functions.

bool isPointCloud () const
element_iterator begin_elements (unsigned d) const
element_iterator end_elements (unsigned d) const
bool hasElement (unsigned d, unsigned id) const
Element getElement (unsigned d, unsigned id) const
bdry_v_iterator begin_bdry (const Element e) const
bdry_v_iterator end_bdry (const Element e) const
lower_e_iterator begin_lowers (const Element e, unsigned d) const
lower_e_iterator end_lowers (const Element e, unsigned d) const
internal_v_iterator begin_internal (const Element e) const
internal_v_iterator end_internal (const Element e) const
unsigned getFirstID (unsigned d) const
unsigned getIndex (unsigned d, unsigned id) const
static unsigned hash (const Element e)

Public Types

typedef unsigned Vertex
typedef hudson::HashWord<
Vertex
VertexHash
typedef ElementGutsElement
typedef hudson::HashPointer<
ElementGuts
ElementHash
typedef boost::counting_iterator<
unsigned > 
vertex_iterator
typedef std::vector< Element
>::const_iterator 
element_iterator
typedef std::list< Vertex
>::const_iterator 
bdry_v_iterator
typedef hudson::SmallList<
Element >::const_iterator 
lower_e_iterator
typedef hudson::SmallList<
Vertex >::const_iterator 
internal_v_iterator

Public Member Functions

 PLC (unsigned dimension)
 ~PLC ()
void declareDimension (unsigned d, unsigned n)
Vertex makeVertex (unsigned id, double *x)
Element makeElement (unsigned d, unsigned id)
void addLower (Element elt, unsigned d, unsigned id, bool isboundary=false)
void addBoundary (Element elt, unsigned id)
unsigned dim () const

Classes

class  ElementGuts
class  point_iterator
struct  ToPoint


Detailed Description

Storage class for a piecewise linear complex.

Emphasis is on allowing this class to later be highly optimized, since I/O matters.

Vertex and Element are:

TODO: optimize.

  1. Ditch the dimension from the ElementGuts; store it only in Element, which would no longer be a pointer, but rather a <d, id> pair.
  2. Similarly for the lowers and boundary head pointers for ElementGuts? Or at least store them all in an array, eliminating the malloc/free overhead.
  3. Store all the segments specially since they're simple objects.


Member Typedef Documentation

typedef std::list<Vertex>::const_iterator SVR_IO::PLC::bdry_v_iterator
 

typedef ElementGuts* SVR_IO::PLC::Element
 

The publicly-visible Element type. Guaranteed to have operator==. Otherwise, use the element access functions below.

typedef std::vector<Element>::const_iterator SVR_IO::PLC::element_iterator
 

typedef hudson::HashPointer<ElementGuts> SVR_IO::PLC::ElementHash
 

typedef hudson::SmallList<Vertex>::const_iterator SVR_IO::PLC::internal_v_iterator
 

typedef hudson::SmallList<Element>::const_iterator SVR_IO::PLC::lower_e_iterator
 

typedef unsigned SVR_IO::PLC::Vertex
 

The publicly-visible Vertex type. Guaranteed to have operator==. Otherwise, use the vertex access functions below.

typedef boost::counting_iterator<unsigned> SVR_IO::PLC::vertex_iterator
 

typedef hudson::HashWord<Vertex> SVR_IO::PLC::VertexHash
 


Constructor & Destructor Documentation

SVR_IO::PLC::PLC unsigned  dimension  ) 
 

SVR_IO::PLC::~PLC  ) 
 


Member Function Documentation

void SVR_IO::PLC::addBoundary Element  elt,
unsigned  id
 

void SVR_IO::PLC::addLower Element  elt,
unsigned  d,
unsigned  id,
bool  isboundary = false
 

PLC::bdry_v_iterator SVR_IO::PLC::begin_bdry const Element  e  )  const
 

element_iterator SVR_IO::PLC::begin_elements unsigned  d  )  const [inline]
 

PLC::internal_v_iterator SVR_IO::PLC::begin_internal const Element  e  )  const
 

PLC::lower_e_iterator SVR_IO::PLC::begin_lowers const Element  e,
unsigned  d
const
 

template<unsigned d>
point_iterator<d> SVR_IO::PLC::begin_points  )  const [inline]
 

vertex_iterator SVR_IO::PLC::begin_vertices  )  const [inline]
 

const double * SVR_IO::PLC::begin_x const Vertex  v  )  const
 

void SVR_IO::PLC::declareDimension unsigned  d,
unsigned  n
 

unsigned SVR_IO::PLC::dim  )  const [inline]
 

PLC::bdry_v_iterator SVR_IO::PLC::end_bdry const Element  e  )  const
 

element_iterator SVR_IO::PLC::end_elements unsigned  d  )  const [inline]
 

PLC::internal_v_iterator SVR_IO::PLC::end_internal const Element  e  )  const
 

PLC::lower_e_iterator SVR_IO::PLC::end_lowers const Element  e,
unsigned  d
const
 

template<unsigned d>
point_iterator<d> SVR_IO::PLC::end_points  )  const [inline]
 

vertex_iterator SVR_IO::PLC::end_vertices  )  const [inline]
 

const double * SVR_IO::PLC::end_x const Vertex  v  )  const
 

Element SVR_IO::PLC::getElement unsigned  d,
unsigned  id
const
 

unsigned SVR_IO::PLC::getFirstID unsigned  d  )  const [inline]
 

IDs need not start at 0; they may instead start at 1. It's no harder just to handle any positive number, so we do that here.

unsigned SVR_IO::PLC::getIndex unsigned  d,
unsigned  id
const [inline]
 

See getFirstID(); given an ID, return the 0-based index.

Vertex SVR_IO::PLC::getVertex unsigned  id  )  const
 

bool SVR_IO::PLC::hasElement unsigned  d,
unsigned  id
const
 

static unsigned SVR_IO::PLC::hash const Element  e  )  [inline, static]
 

static unsigned SVR_IO::PLC::hash Vertex  v  )  [inline, static]
 

bool SVR_IO::PLC::isPointCloud  )  const [inline]
 

Element SVR_IO::PLC::makeElement unsigned  d,
unsigned  id
 

Vertex SVR_IO::PLC::makeVertex unsigned  id,
double *  x
 

unsigned SVR_IO::PLC::nvertices  )  const [inline]
 

template<unsigned d>
Geometry::Point<d> SVR_IO::PLC::toPoint const Vertex  v  )  const [inline]
 


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