![]() |
OpenMesh
|
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) | |
| PropertyManager & | operator= (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 , typename PROP_VALUE > | |
| void | set_range (HandleTypeIterator begin, HandleTypeIterator end, const PROP_VALUE &value) |
| Conveniently set the property for an entire range of values. More... | |
| template<typename HandleTypeIterator , typename PROPTYPE_2 , typename MeshT_2 , typename HandleTypeIterator_2 > | |
| void | copy_to (HandleTypeIterator begin, HandleTypeIterator end, PropertyManager< PROPTYPE_2, MeshT_2 > &dst_propmanager, HandleTypeIterator_2 dst_begin, HandleTypeIterator_2 dst_end) const |
| Conveniently transfer the values managed by one property manager onto the values managed by a different property manager. More... | |
| template<typename RangeType , typename PROPTYPE_2 , typename MeshT_2 , typename RangeType_2 > | |
| void | copy_to (const RangeType &range, PropertyManager< PROPTYPE_2, MeshT_2 > &dst_propmanager, const RangeType_2 &dst_range) const |
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... | |
| template<typename RangeType , typename MeshT_2 , typename RangeType_2 > | |
| static void | copy (const char *prop_name, MeshT &src_mesh, const RangeType &src_range, MeshT_2 &dst_mesh, const RangeType_2 &dst_range) |
| Copy the values of a property from a source range to a target range. More... | |
Related Functions | |
(Note that these are not member functions.) | |
| template<typename PROPTYPE , typename MeshT > | |
| PropertyManager< PROPTYPE, MeshT > | makePropertyManagerFromNew (MeshT &mesh, const char *propname) |
| template<typename PROPTYPE , typename MeshT > | |
| PropertyManager< PROPTYPE, MeshT > | makePropertyManagerFromExisting (MeshT &mesh, const char *propname) |
| template<typename PROPTYPE , typename MeshT > | |
| PropertyManager< PROPTYPE, MeshT > | makePropertyManagerFromExistingOrNew (MeshT &mesh, const char *propname) |
This class is intended to manage the lifecycle of properties.
It also defines convenience operators to access the encapsulated property's value.
For C++11, it is recommended to use the factory functions makePropertyManagerFromNew, makePropertyManagerFromExisting, makePropertyManagerFromExistingOrNew to construct a PropertyManager, e.g.
For C++98, it is usually more convenient to use the constructor explicitly, i.e.
|
inline |
Constructor.
Throws an std::runtime_error if existing is true and no property named propname of the appropriate property type exists.
| mesh | The mesh on which to create the property. |
| propname | The name of the property. |
| existing | If 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. |
|
inlinestatic |
Copy the values of a property from a source range to a target range.
The source range must not be smaller than the target range.
| prop_name | Name of the property to copy. Must exist on the source mesh. Will be created on the target mesh if it doesn't exist. |
| src_mesh | Source mesh from which to copy. |
| src_range | Source range which to copy. Must not be smaller than dst_range. |
| dst_mesh | Destination mesh on which to copy. |
| dst_range | Destination range. |
|
inline |
Conveniently transfer the values managed by one property manager onto the values managed by a different property manager.
| begin | Start iterator. Needs to dereference to HandleType. Will be used with this property manager. |
| end | End iterator. (Exclusive.) Will be used with this property manager. |
| dst_propmanager | The destination property manager. |
| dst_begin | Start iterator. Needs to dereference to the HandleType of dst_propmanager. Will be used with dst_propmanager. |
| dst_end | End iterator. (Exclusive.) Will be used with dst_propmanager. Used to double check the bounds. |
|
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.
|
inline |
Enables convenient access to the encapsulated property.
For a usage example see this class' documentation.
| handle | A handle of the appropriate handle type. (I.e. VertexHandle for VPropHandleT, etc.) |
|
inline |
Enables convenient access to the encapsulated property.
For a usage example see this class' documentation.
| handle | A handle of the appropriate handle type. (I.e. VertexHandle for VPropHandleT, etc.) |
|
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.
|
inline |
Conveniently set the property for an entire range of values.
Examples:
or
| begin | Start iterator. Needs to dereference to HandleType. |
| end | End iterator. (Exclusive.) |
| value | The value the range will be set to. |
|
related |
Creates a non-owning wrapper for an existing mesh property (no lifecycle management).
Intended for convenient access.
propname of matching type exists. | std::runtime_error | if no property with the name propname of matching type exists. |
|
related |
Creates a non-owning wrapper for a mesh property (no lifecycle management). If the given property does not exist, it is created.
Intended for creating or accessing persistent properties.
|
related |
Creates a new property whose lifecycle is managed by the returned PropertyManager.
Intended for temporary properties. Shadows any existsing properties of matching name and type.