OpenMesh
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
OpenMesh::PropertyManager< PROPTYPE, MeshT > Class Template Reference

This class is intended to manage the lifecycle of properties. More...

#include <OpenMesh/Core/Utils/PropertyManager.hh>

Classes

class  Proxy
 

Public Member Functions

 PropertyManager (MeshT &mesh, const char *propname, bool existing=false)
 Constructor. More...
 
void swap (PropertyManager &rhs)
 
bool isValid () const
 
 operator bool () const
 
const PROPTYPE & getRawProperty () const
 
const std::string & getName () const
 
MeshT & getMesh () const
 
 operator Proxy ()
 
Proxy move ()
 
 PropertyManager (Proxy p)
 
PropertyManageroperator= (Proxy p)
 
Proxy duplicate (const char *clone_name)
 
void retain (bool doRetain=true)
 Disable lifecycle management for this property. More...
 
PROPTYPE & operator* ()
 Access the encapsulated property.
 
const PROPTYPE & operator* () const
 Access the encapsulated property.
 
template<typename HandleType >
PROPTYPE::reference operator[] (const HandleType &handle)
 Enables convenient access to the encapsulated property. More...
 
template<typename HandleType >
PROPTYPE::const_reference operator[] (const HandleType &handle) const
 Enables convenient access to the encapsulated property. More...
 
template<typename HandleTypeIterator >
void set_range (HandleTypeIterator begin, HandleTypeIterator end, typename PROPTYPE::const_reference value)
 Conveniently set the property for an entire range of values. More...
 

Static Public Member Functions

static bool propertyExists (MeshT &mesh, const char *propname)
 
static Proxy createIfNotExists (MeshT &mesh, const char *propname)
 Create a property manager for the supplied property and mesh. More...
 

Detailed Description

template<typename PROPTYPE, typename MeshT>
class OpenMesh::PropertyManager< PROPTYPE, MeshT >

This class is intended to manage the lifecycle of properties.

It also defines convenience operators to access the encapsulated property's value.

Usage example:

TriMesh mesh;
PropertyManager<VPropHandleT<bool>, MeshT> visited(mesh, "visited.plugin-example.i8.informatik.rwth-aachen.de");
for (TriMesh::VertexIter vh_it = mesh.begin(); ... ; ...) {
if (!visited[*vh_it]) {
visitComponent(mesh, *vh_it, visited);
}
}

Constructor & Destructor Documentation

template<typename PROPTYPE , typename MeshT >
OpenMesh::PropertyManager< PROPTYPE, MeshT >::PropertyManager ( MeshT &  mesh,
const char *  propname,
bool  existing = false 
)
inline

Constructor.

Throws an std::runtime_error if existing is true and no property named propname of the appropriate property type exists.

Parameters
meshThe mesh on which to create the property.
propnameThe name of the property.
existingIf false, a new property is created and its lifecycle is managed (i.e. the property is deleted upon destruction of the PropertyManager instance). If true, the instance merely acts as a convenience wrapper around an existing property with no lifecycle management whatsoever.

Member Function Documentation

template<typename PROPTYPE , typename MeshT >
static Proxy OpenMesh::PropertyManager< PROPTYPE, MeshT >::createIfNotExists ( MeshT &  mesh,
const char *  propname 
)
inlinestatic

Create a property manager for the supplied property and mesh.

If the property doesn't exist, it is created. In any case, lifecycle management is disabled.

template<typename PROPTYPE , typename MeshT >
template<typename HandleType >
PROPTYPE::reference OpenMesh::PropertyManager< PROPTYPE, MeshT >::operator[] ( const HandleType &  handle)
inline

Enables convenient access to the encapsulated property.

For a usage example see this class' documentation.

Parameters
handleA handle of the appropriate handle type. (I.e. VertexHandle for VPropHandleT, etc.)
template<typename PROPTYPE , typename MeshT >
template<typename HandleType >
PROPTYPE::const_reference OpenMesh::PropertyManager< PROPTYPE, MeshT >::operator[] ( const HandleType &  handle) const
inline

Enables convenient access to the encapsulated property.

For a usage example see this class' documentation.

Parameters
handleA handle of the appropriate handle type. (I.e. VertexHandle for VPropHandleT, etc.)
template<typename PROPTYPE , typename MeshT >
void OpenMesh::PropertyManager< PROPTYPE, MeshT >::retain ( bool  doRetain = true)
inline

Disable lifecycle management for this property.

If this method is called, the encapsulated property will not be deleted upon destruction of the PropertyManager instance.

template<typename PROPTYPE , typename MeshT >
template<typename HandleTypeIterator >
void OpenMesh::PropertyManager< PROPTYPE, MeshT >::set_range ( HandleTypeIterator  begin,
HandleTypeIterator  end,
typename PROPTYPE::const_reference  value 
)
inline

Conveniently set the property for an entire range of values.

Examples:

MeshT mesh;
PropertyManager<VPropHandleT<double>, MeshT> distance(
mesh, "distance.plugin-example.i8.informatik.rwth-aachen.de");
distance.set_range(
mesh.vertices_begin(), mesh.vertices_end(),
std::numeric_limits<double>::infinity());

or

MeshT::VertexHandle vh;
distance.set_range(
mesh.vv_begin(vh), mesh.vv_end(vh),
std::numeric_limits<double>::infinity());
Parameters
beginStart iterator. Needs to dereference to HandleType.
endEnd iterator. (Exclusive.)
valueThe value the range will be set to.

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

acg pic Project OpenMesh, ©  Computer Graphics Group, RWTH Aachen. Documentation generated using doxygen .