OpenMesh
OpenMesh::PropertyT< T > Class Template Reference

Default property class for any type T. More...

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

Inheritance diagram for OpenMesh::PropertyT< T >:
Collaboration diagram for OpenMesh::PropertyT< T >:

Public Types

typedef T Value
 
typedef std::vector< T > vector_type
 
typedef T value_type
 
typedef vector_type::reference reference
 
typedef vector_type::const_reference const_reference
 

Public Member Functions

 PropertyT (const std::string &_name="<unknown>", const std::string &_internal_type_name="<unknown>")
 Default constructor.
 
 PropertyT (const PropertyT &_rhs)
 Copy constructor.
 
virtual void reserve (size_t _n) override
 Reserve memory for n elements.
 
virtual void resize (size_t _n) override
 Resize storage to hold n elements.
 
virtual void clear () override
 Clear all elements and free memory.
 
virtual void push_back () override
 Extend the number of elements by one.
 
virtual void swap (size_t _i0, size_t _i1) override
 Let two elements swap their storage place.
 
virtual void copy (size_t _i0, size_t _i1) override
 Copy one element to another.
 
virtual void set_persistent (bool _yn) override
 Enable or disable persistency. More...
 
virtual size_t n_elements () const override
 Number of elements in property.
 
virtual size_t element_size () const override
 Size of one element in bytes or UnknownSize if not known.
 
virtual size_t size_of (void) const override
 Return size of property in bytes.
 
virtual size_t size_of (size_t _n_elem) const override
 Estimated size of property if it has _n_elem elements. More...
 
virtual size_t store (std::ostream &_ostr, bool _swap) const override
 Store self as one binary block.
 
virtual size_t restore (std::istream &_istr, bool _swap) override
 Restore self from a binary block. More...
 
const T * data () const
 Get pointer to array (does not work for T==bool)
 
vector_type & data_vector ()
 Get reference to property vector (be careful, improper usage, e.g. resizing, may crash OpenMesh!!!)
 
const vector_type & data_vector () const
 Const access to property vector.
 
reference operator[] (int _idx)
 Access the i'th element. No range check is performed!
 
const_reference operator[] (int _idx) const
 Const access to the i'th element. No range check is performed!
 
PropertyT< T > * clone () const override
 Make a copy of self.
 
- Public Member Functions inherited from OpenMesh::BaseProperty
 BaseProperty (const std::string &_name="<unknown>", const std::string &_internal_type_name="<unknown>")
 Default constructor. More...
 
 BaseProperty (const BaseProperty &_rhs)
 Copy constructor.
 
virtual ~BaseProperty ()
 Destructor.
 
const std::string & name () const
 Return the name of the property.
 
const std::string & internal_type_name () const
 Return internal type name of the property for type safe casting alternative to runtime information.
 
virtual void stats (std::ostream &_ostr) const
 
bool persistent (void) const
 Returns true if the persistent flag is enabled else false.
 

Additional Inherited Members

- Static Public Attributes inherited from OpenMesh::BaseProperty
static const size_t UnknownSize = size_t(-1)
 Indicates an error when a size is returned by a member.
 
- Protected Member Functions inherited from OpenMesh::BaseProperty
template<typename T >
void check_and_set_persistent (bool _yn)
 

Detailed Description

template<class T>
class OpenMesh::PropertyT< T >

Default property class for any type T.

The default property class for any type T.

The property supports persistency if T is a "fundamental" type:

  • integer fundamental types except bool: char, short, int, long, long long (__int64 for MS VC++) and their unsigned companions.
  • float fundamentals except long double: float, double
  • OpenMesh vector types

Persistency of non-fundamental types is supported if and only if a specialization of struct IO::binary<> exists for the wanted type.

Member Function Documentation

◆ restore()

template<class T>
virtual size_t OpenMesh::PropertyT< T >::restore ( std::istream &  _istr,
bool  _swap 
)
inlineoverridevirtual

Restore self from a binary block.

Uses reserve() to set the size of self before restoring.

Implements OpenMesh::BaseProperty.

◆ set_persistent()

template<class T>
virtual void OpenMesh::PropertyT< T >::set_persistent ( bool  _yn)
inlineoverridevirtual

Enable or disable persistency.

Self must be a named property to enable persistency.

Implements OpenMesh::BaseProperty.

◆ size_of()

template<class T>
virtual size_t OpenMesh::PropertyT< T >::size_of ( size_t  _n_elem) const
inlineoverridevirtual

Estimated size of property if it has _n_elem elements.

The member returns UnknownSize if the size cannot be estimated.

Reimplemented from OpenMesh::BaseProperty.


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

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