OpenMesh
OpenMesh::BaseKernel Class Reference

This class provides the basic property management like adding/removing properties and access to properties. More...

#include <OpenMesh/Core/Mesh/BaseKernel.hh>

Inheritance diagram for OpenMesh::BaseKernel:
Collaboration diagram for OpenMesh::BaseKernel:

List of all members.

Public Types

typedef PropertyContainer::iterator prop_iterator
typedef
PropertyContainer::const_iterator 
const_prop_iterator

Public Member Functions

size_t n_vprops (void) const
size_t n_eprops (void) const
size_t n_hprops (void) const
size_t n_fprops (void) const
size_t n_mprops (void) const
BaseProperty_get_vprop (const std::string &_name)
BaseProperty_get_eprop (const std::string &_name)
BaseProperty_get_hprop (const std::string &_name)
BaseProperty_get_fprop (const std::string &_name)
BaseProperty_get_mprop (const std::string &_name)
const BaseProperty_get_vprop (const std::string &_name) const
const BaseProperty_get_eprop (const std::string &_name) const
const BaseProperty_get_hprop (const std::string &_name) const
const BaseProperty_get_fprop (const std::string &_name) const
const BaseProperty_get_mprop (const std::string &_name) const
BaseProperty_vprop (size_t _idx)
BaseProperty_eprop (size_t _idx)
BaseProperty_hprop (size_t _idx)
BaseProperty_fprop (size_t _idx)
BaseProperty_mprop (size_t _idx)
const BaseProperty_vprop (size_t _idx) const
const BaseProperty_eprop (size_t _idx) const
const BaseProperty_hprop (size_t _idx) const
const BaseProperty_fprop (size_t _idx) const
const BaseProperty_mprop (size_t _idx) const
size_t _add_vprop (BaseProperty *_bp)
size_t _add_eprop (BaseProperty *_bp)
size_t _add_hprop (BaseProperty *_bp)
size_t _add_fprop (BaseProperty *_bp)
size_t _add_mprop (BaseProperty *_bp)
virtual unsigned int n_vertices () const
virtual unsigned int n_halfedges () const
virtual unsigned int n_edges () const
virtual unsigned int n_faces () const
void property_stats (std::ostream &_ostr=std::clog) const
void vprop_stats (std::string &_string) const
void hprop_stats (std::string &_string) const
void eprop_stats (std::string &_string) const
void fprop_stats (std::string &_string) const
void mprop_stats (std::string &_string) const
void vprop_stats (std::ostream &_ostr=std::clog) const
void hprop_stats (std::ostream &_ostr=std::clog) const
void eprop_stats (std::ostream &_ostr=std::clog) const
void fprop_stats (std::ostream &_ostr=std::clog) const
void mprop_stats (std::ostream &_ostr=std::clog) const
prop_iterator vprops_begin ()
prop_iterator vprops_end ()
const_prop_iterator vprops_begin () const
const_prop_iterator vprops_end () const
prop_iterator eprops_begin ()
prop_iterator eprops_end ()
const_prop_iterator eprops_begin () const
const_prop_iterator eprops_end () const
prop_iterator hprops_begin ()
prop_iterator hprops_end ()
const_prop_iterator hprops_begin () const
const_prop_iterator hprops_end () const
prop_iterator fprops_begin ()
prop_iterator fprops_end ()
const_prop_iterator fprops_begin () const
const_prop_iterator fprops_end () const
prop_iterator mprops_begin ()
prop_iterator mprops_end ()
const_prop_iterator mprops_begin () const
const_prop_iterator mprops_end () const
Add a property to a mesh item
template<class T >
void add_property (VPropHandleT< T > &_ph, const std::string &_name="<vprop>")
 Adds a property.
template<class T >
void add_property (HPropHandleT< T > &_ph, const std::string &_name="<hprop>")
 Adds a property.
template<class T >
void add_property (EPropHandleT< T > &_ph, const std::string &_name="<eprop>")
 Adds a property.
template<class T >
void add_property (FPropHandleT< T > &_ph, const std::string &_name="<fprop>")
 Adds a property.
template<class T >
void add_property (MPropHandleT< T > &_ph, const std::string &_name="<mprop>")
 Adds a property.
Removing a property from a mesh tiem
template<typename T >
void remove_property (VPropHandleT< T > &_ph)
 Remove a property.
template<typename T >
void remove_property (HPropHandleT< T > &_ph)
 Remove a property.
template<typename T >
void remove_property (EPropHandleT< T > &_ph)
 Remove a property.
template<typename T >
void remove_property (FPropHandleT< T > &_ph)
 Remove a property.
template<typename T >
void remove_property (MPropHandleT< T > &_ph)
 Remove a property.
Get property handle by name
template<class T >
bool get_property_handle (VPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
bool get_property_handle (HPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
bool get_property_handle (EPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
bool get_property_handle (FPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
template<class T >
bool get_property_handle (MPropHandleT< T > &_ph, const std::string &_name) const
 Retrieves the handle to a named property by it's name.
Access a property
template<class T >
PropertyT< T > & property (VPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & property (VPropHandleT< T > _ph) const
 Access a property.
template<class T >
PropertyT< T > & property (HPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & property (HPropHandleT< T > _ph) const
 Access a property.
template<class T >
PropertyT< T > & property (EPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & property (EPropHandleT< T > _ph) const
 Access a property.
template<class T >
PropertyT< T > & property (FPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & property (FPropHandleT< T > _ph) const
 Access a property.
template<class T >
PropertyT< T > & mproperty (MPropHandleT< T > _ph)
 Access a property.
template<class T >
const PropertyT< T > & mproperty (MPropHandleT< T > _ph) const
 Access a property.
Access a property element using a handle to a mesh item
template<class T >
VPropHandleT< T >::reference property (VPropHandleT< T > _ph, VertexHandle _vh)
 Return value of property for an item.
template<class T >
VPropHandleT< T >::const_reference property (VPropHandleT< T > _ph, VertexHandle _vh) const
 Return value of property for an item.
template<class T >
HPropHandleT< T >::reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh)
 Return value of property for an item.
template<class T >
HPropHandleT< T >::const_reference property (HPropHandleT< T > _ph, HalfedgeHandle _hh) const
 Return value of property for an item.
template<class T >
EPropHandleT< T >::reference property (EPropHandleT< T > _ph, EdgeHandle _eh)
 Return value of property for an item.
template<class T >
EPropHandleT< T >::const_reference property (EPropHandleT< T > _ph, EdgeHandle _eh) const
 Return value of property for an item.
template<class T >
FPropHandleT< T >::reference property (FPropHandleT< T > _ph, FaceHandle _fh)
 Return value of property for an item.
template<class T >
FPropHandleT< T >::const_reference property (FPropHandleT< T > _ph, FaceHandle _fh) const
 Return value of property for an item.
template<class T >
MPropHandleT< T >::reference property (MPropHandleT< T > _ph)
 Return value of property for an item.
template<class T >
MPropHandleT< T >::const_reference property (MPropHandleT< T > _ph) const
 Return value of property for an item.

Protected Member Functions

BaseProperty_vprop (BaseHandle _h)
BaseProperty_eprop (BaseHandle _h)
BaseProperty_hprop (BaseHandle _h)
BaseProperty_fprop (BaseHandle _h)
BaseProperty_mprop (BaseHandle _h)
const BaseProperty_vprop (BaseHandle _h) const
const BaseProperty_eprop (BaseHandle _h) const
const BaseProperty_hprop (BaseHandle _h) const
const BaseProperty_fprop (BaseHandle _h) const
const BaseProperty_mprop (BaseHandle _h) const
void vprops_reserve (unsigned int _n) const
void vprops_resize (unsigned int _n) const
void vprops_clear ()
void vprops_swap (unsigned int _i0, unsigned int _i1) const
void hprops_reserve (unsigned int _n) const
void hprops_resize (unsigned int _n) const
void hprops_clear ()
void hprops_swap (unsigned int _i0, unsigned int _i1) const
void eprops_reserve (unsigned int _n) const
void eprops_resize (unsigned int _n) const
void eprops_clear ()
void eprops_swap (unsigned int _i0, unsigned int _i1) const
void fprops_reserve (unsigned int _n) const
void fprops_resize (unsigned int _n) const
void fprops_clear ()
void fprops_swap (unsigned int _i0, unsigned int _i1) const
void mprops_resize (unsigned int _n) const
void mprops_clear ()

Detailed Description

This class provides the basic property management like adding/removing properties and access to properties.

All operations provided by BaseKernel need at least a property handle (VPropHandleT, EPropHandleT, HPropHandleT, FPropHandleT, MPropHandleT). which keeps the data type of the property, too.

There are two types of properties:

  1. Standard properties - mesh data (e.g. vertex normal or face color)
  2. Custom properties - user defined data

The differentiation is only semantically, technically both are equally handled. Therefore the methods provided by the BaseKernel are applicable to both property types.

Attention:
Since the class PolyMeshT derives from a kernel, hence all public elements of BaseKernel are usable.

Member Function Documentation

template<class T >
void OpenMesh::BaseKernel::add_property ( FPropHandleT< T > &  _ph,
const std::string &  _name = "<fprop>" 
) [inline]

Adds a property.

Depending on the property handle type a vertex, (half-)edge, face or mesh property is added to the mesh. If the action fails the handle is invalid. On success the handle must be used to access the property data with property().

Parameters:
_phA property handle defining the data type to bind to mesh. On success the handle is valid else invalid.
_nameOptional name of property. Following restrictions apply to the name:
  1. Maximum length of name is 256 characters
  2. The prefixes matching "^[vhefm]:" are reserved for internal usage.
  3. The expression "^<.*>$" is reserved for internal usage.
Returns:
true on success else false.
template<class T >
void OpenMesh::BaseKernel::add_property ( VPropHandleT< T > &  _ph,
const std::string &  _name = "<vprop>" 
) [inline]

Adds a property.

Depending on the property handle type a vertex, (half-)edge, face or mesh property is added to the mesh. If the action fails the handle is invalid. On success the handle must be used to access the property data with property().

Parameters:
_phA property handle defining the data type to bind to mesh. On success the handle is valid else invalid.
_nameOptional name of property. Following restrictions apply to the name:
  1. Maximum length of name is 256 characters
  2. The prefixes matching "^[vhefm]:" are reserved for internal usage.
  3. The expression "^<.*>$" is reserved for internal usage.
Returns:
true on success else false.
template<class T >
void OpenMesh::BaseKernel::add_property ( HPropHandleT< T > &  _ph,
const std::string &  _name = "<hprop>" 
) [inline]

Adds a property.

Depending on the property handle type a vertex, (half-)edge, face or mesh property is added to the mesh. If the action fails the handle is invalid. On success the handle must be used to access the property data with property().

Parameters:
_phA property handle defining the data type to bind to mesh. On success the handle is valid else invalid.
_nameOptional name of property. Following restrictions apply to the name:
  1. Maximum length of name is 256 characters
  2. The prefixes matching "^[vhefm]:" are reserved for internal usage.
  3. The expression "^<.*>$" is reserved for internal usage.
Returns:
true on success else false.
template<class T >
void OpenMesh::BaseKernel::add_property ( MPropHandleT< T > &  _ph,
const std::string &  _name = "<mprop>" 
) [inline]

Adds a property.

Depending on the property handle type a vertex, (half-)edge, face or mesh property is added to the mesh. If the action fails the handle is invalid. On success the handle must be used to access the property data with property().

Parameters:
_phA property handle defining the data type to bind to mesh. On success the handle is valid else invalid.
_nameOptional name of property. Following restrictions apply to the name:
  1. Maximum length of name is 256 characters
  2. The prefixes matching "^[vhefm]:" are reserved for internal usage.
  3. The expression "^<.*>$" is reserved for internal usage.
Returns:
true on success else false.
template<class T >
void OpenMesh::BaseKernel::add_property ( EPropHandleT< T > &  _ph,
const std::string &  _name = "<eprop>" 
) [inline]

Adds a property.

Depending on the property handle type a vertex, (half-)edge, face or mesh property is added to the mesh. If the action fails the handle is invalid. On success the handle must be used to access the property data with property().

Parameters:
_phA property handle defining the data type to bind to mesh. On success the handle is valid else invalid.
_nameOptional name of property. Following restrictions apply to the name:
  1. Maximum length of name is 256 characters
  2. The prefixes matching "^[vhefm]:" are reserved for internal usage.
  3. The expression "^<.*>$" is reserved for internal usage.
Returns:
true on success else false.
template<class T >
bool OpenMesh::BaseKernel::get_property_handle ( EPropHandleT< T > &  _ph,
const std::string &  _name 
) const [inline]

Retrieves the handle to a named property by it's name.

Parameters:
_phA property handle. On success the handle is valid else invalid.
_nameName of wanted property.
Returns:
true if such a named property is available, else false.
template<class T >
bool OpenMesh::BaseKernel::get_property_handle ( VPropHandleT< T > &  _ph,
const std::string &  _name 
) const [inline]

Retrieves the handle to a named property by it's name.

Parameters:
_phA property handle. On success the handle is valid else invalid.
_nameName of wanted property.
Returns:
true if such a named property is available, else false.
template<class T >
bool OpenMesh::BaseKernel::get_property_handle ( HPropHandleT< T > &  _ph,
const std::string &  _name 
) const [inline]

Retrieves the handle to a named property by it's name.

Parameters:
_phA property handle. On success the handle is valid else invalid.
_nameName of wanted property.
Returns:
true if such a named property is available, else false.
template<class T >
bool OpenMesh::BaseKernel::get_property_handle ( FPropHandleT< T > &  _ph,
const std::string &  _name 
) const [inline]

Retrieves the handle to a named property by it's name.

Parameters:
_phA property handle. On success the handle is valid else invalid.
_nameName of wanted property.
Returns:
true if such a named property is available, else false.
template<class T >
bool OpenMesh::BaseKernel::get_property_handle ( MPropHandleT< T > &  _ph,
const std::string &  _name 
) const [inline]

Retrieves the handle to a named property by it's name.

Parameters:
_phA property handle. On success the handle is valid else invalid.
_nameName of wanted property.
Returns:
true if such a named property is available, else false.
template<class T >
PropertyT<T>& OpenMesh::BaseKernel::mproperty ( MPropHandleT< T >  _ph) [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
const PropertyT<T>& OpenMesh::BaseKernel::mproperty ( MPropHandleT< T >  _ph) const [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
const PropertyT<T>& OpenMesh::BaseKernel::property ( VPropHandleT< T >  _ph) const [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
PropertyT<T>& OpenMesh::BaseKernel::property ( VPropHandleT< T >  _ph) [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
const PropertyT<T>& OpenMesh::BaseKernel::property ( FPropHandleT< T >  _ph) const [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
PropertyT<T>& OpenMesh::BaseKernel::property ( EPropHandleT< T >  _ph) [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
PropertyT<T>& OpenMesh::BaseKernel::property ( HPropHandleT< T >  _ph) [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
const PropertyT<T>& OpenMesh::BaseKernel::property ( EPropHandleT< T >  _ph) const [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
const PropertyT<T>& OpenMesh::BaseKernel::property ( HPropHandleT< T >  _ph) const [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<class T >
PropertyT<T>& OpenMesh::BaseKernel::property ( FPropHandleT< T >  _ph) [inline]

Access a property.

This method returns a reference to property. The property handle must be valid! The result is unpredictable if the handle is invalid!

Parameters:
_phA valid (!) property handle.
Returns:
The wanted property if the handle is valid.
template<typename T >
void OpenMesh::BaseKernel::remove_property ( VPropHandleT< T > &  _ph) [inline]

Remove a property.

Removes the property represented by the handle from the apropriate mesh item.

Parameters:
_phProperty to be removed. The handle is invalid afterwords.
template<typename T >
void OpenMesh::BaseKernel::remove_property ( FPropHandleT< T > &  _ph) [inline]

Remove a property.

Removes the property represented by the handle from the apropriate mesh item.

Parameters:
_phProperty to be removed. The handle is invalid afterwords.
template<typename T >
void OpenMesh::BaseKernel::remove_property ( EPropHandleT< T > &  _ph) [inline]

Remove a property.

Removes the property represented by the handle from the apropriate mesh item.

Parameters:
_phProperty to be removed. The handle is invalid afterwords.
template<typename T >
void OpenMesh::BaseKernel::remove_property ( HPropHandleT< T > &  _ph) [inline]

Remove a property.

Removes the property represented by the handle from the apropriate mesh item.

Parameters:
_phProperty to be removed. The handle is invalid afterwords.
template<typename T >
void OpenMesh::BaseKernel::remove_property ( MPropHandleT< T > &  _ph) [inline]

Remove a property.

Removes the property represented by the handle from the apropriate mesh item.

Parameters:
_phProperty to be removed. The handle is invalid afterwords.

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