HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
openvdb::OPENVDB_VERSION_NAME::points::AttributeArray Class Referenceabstract

Base class for storing attribute data. More...

#include <AttributeArray.h>

+ Inheritance diagram for openvdb::OPENVDB_VERSION_NAME::points::AttributeArray:

Classes

struct  Accessor
 
struct  AccessorBase
 Accessor base class for AttributeArray storage where type is not available. More...
 

Public Types

enum  Flag {
  TRANSIENT = 0x1, HIDDEN = 0x2, OUTOFCORE = 0x4, CONSTANTSTRIDE = 0x8,
  STREAMING = 0x10
}
 
enum  SerializationFlag { WRITESTRIDED = 0x1, WRITEUNIFORM = 0x2, WRITEMEMCOMPRESS = 0x4, WRITEPAGED = 0x8 }
 
using Ptr = std::shared_ptr< AttributeArray >
 
using ConstPtr = std::shared_ptr< const AttributeArray >
 
using FactoryMethod = Ptr(*)(Index, Index, bool)
 

Public Member Functions

 AttributeArray ()=default
 
 AttributeArray (const AttributeArray &)=default
 
AttributeArrayoperator= (const AttributeArray &)=default
 
virtual ~AttributeArray ()=default
 
virtual AttributeArray::Ptr copy () const =0
 Return a copy of this attribute. More...
 
virtual AttributeArray::Ptr copyUncompressed () const =0
 Return an uncompressed copy of this attribute (will return a copy if not compressed). More...
 
virtual Index size () const =0
 
virtual Index stride () const =0
 
virtual Index dataSize () const =0
 
virtual size_t memUsage () const =0
 Return the number of bytes of memory used by this attribute. More...
 
virtual const NamePairtype () const =0
 Return the name of this attribute's type. More...
 
template<typename AttributeArrayType >
bool isType () const
 Return true if this attribute is of the same type as the template parameter. More...
 
template<typename ValueType >
bool hasValueType () const
 Return true if this attribute has a value type the same as the template parameter. More...
 
virtual void set (const Index n, const AttributeArray &sourceArray, const Index sourceIndex)=0
 Set value at given index n from sourceIndex of another sourceArray. More...
 
virtual bool isUniform () const =0
 Return true if this array is stored as a single uniform value. More...
 
virtual void expand (bool fill=true)=0
 If this array is uniform, replace it with an array of length size(). More...
 
virtual void collapse ()=0
 Replace the existing array with a uniform zero value. More...
 
virtual bool compact ()=0
 Compact the existing array to become uniform if all values are identical. More...
 
bool isCompressed () const
 Return true if this array is compressed. More...
 
virtual bool compress ()=0
 Compress the attribute array. More...
 
virtual bool decompress ()=0
 Uncompress the attribute array. More...
 
void setHidden (bool state)
 Specify whether this attribute should be hidden (e.g., from UI or iterators). More...
 
bool isHidden () const
 Return true if this attribute is hidden (e.g., from UI or iterators). More...
 
void setTransient (bool state)
 Specify whether this attribute should only exist in memory and not be serialized during stream output. More...
 
bool isTransient () const
 Return true if this attribute is not serialized during stream output. More...
 
void setStreaming (bool state)
 Specify whether this attribute is to be streamed off disk, in which case, the attributes are collapsed after being first loaded leaving them in a destroyed state. More...
 
bool isStreaming () const
 Return true if this attribute is in streaming mode. More...
 
bool hasConstantStride () const
 Return true if this attribute has a constant stride. More...
 
uint8_t flags () const
 Retrieve the attribute array flags. More...
 
virtual void read (std::istream &)=0
 Read attribute metadata and buffers from a stream. More...
 
virtual void write (std::ostream &, bool outputTransient) const =0
 
virtual void write (std::ostream &) const =0
 Write attribute metadata and buffers to a stream, don't write transient attributes. More...
 
virtual void readMetadata (std::istream &)=0
 Read attribute metadata from a stream. More...
 
virtual void writeMetadata (std::ostream &, bool outputTransient, bool paged) const =0
 
virtual void readBuffers (std::istream &)=0
 Read attribute buffers from a stream. More...
 
virtual void writeBuffers (std::ostream &, bool outputTransient) const =0
 
virtual void readPagedBuffers (compression::PagedInputStream &)=0
 Read attribute buffers from a paged stream. More...
 
virtual void writePagedBuffers (compression::PagedOutputStream &, bool outputTransient) const =0
 
virtual void loadData () const =0
 Ensures all data is in-core. More...
 
bool operator== (const AttributeArray &other) const
 
bool operator!= (const AttributeArray &other) const
 

Static Public Member Functions

static Ptr create (const NamePair &type, Index length, Index stride=1, bool constantStride=true)
 Create a new attribute array of the given (registered) type, length and stride. More...
 
static bool isRegistered (const NamePair &type)
 Return true if the given attribute type name is registered. More...
 
static void clearRegistry ()
 Clear the attribute type registry. More...
 

Protected Types

using AccessorBasePtr = std::shared_ptr< AccessorBase >
 

Protected Member Functions

void setConstantStride (bool state)
 Specify whether this attribute has a constant stride or not. More...
 
virtual AccessorBasePtr getAccessor () const =0
 Obtain an Accessor that stores getter and setter functors. More...
 

Static Protected Member Functions

static void registerType (const NamePair &type, FactoryMethod)
 Register a attribute type along with a factory function. More...
 
static void unregisterType (const NamePair &type)
 Remove a attribute type from the registry. More...
 

Protected Attributes

size_t mCompressedBytes = 0
 
uint8_t mFlags = 0
 
uint8_t mSerializationFlags = 0
 
compression::PageHandle::Ptr mPageHandle
 used for out-of-core, paged reading More...
 

Friends

template<typename ValueType , typename CodecType >
class AttributeHandle
 
class ::TestAttributeArray
 

Detailed Description

Base class for storing attribute data.

Definition at line 118 of file AttributeArray.h.

Member Typedef Documentation

Definition at line 124 of file AttributeArray.h.

Member Enumeration Documentation

Enumerator
TRANSIENT 
HIDDEN 

by default not written to disk

OUTOFCORE 

hidden from UIs or iterators

CONSTANTSTRIDE 

data not yet loaded from disk

STREAMING 

stride size does not vary in the array

Definition at line 127 of file AttributeArray.h.

Enumerator
WRITESTRIDED 
WRITEUNIFORM 

data is marked as strided when written

WRITEMEMCOMPRESS 

data is marked as uniform when written

WRITEPAGED 

data is marked as compressed in-memory when written

Definition at line 135 of file AttributeArray.h.

Constructor & Destructor Documentation

openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::AttributeArray ( )
default
openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::AttributeArray ( const AttributeArray )
default
virtual openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::~AttributeArray ( )
virtualdefault

Member Function Documentation

static void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::clearRegistry ( )
static

Clear the attribute type registry.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::collapse ( )
pure virtual

Replace the existing array with a uniform zero value.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::compact ( )
pure virtual

Compact the existing array to become uniform if all values are identical.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::compress ( )
pure virtual
virtual AttributeArray::Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::copy ( ) const
pure virtual
virtual AttributeArray::Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::copyUncompressed ( ) const
pure virtual

Return an uncompressed copy of this attribute (will return a copy if not compressed).

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

static Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::create ( const NamePair type,
Index  length,
Index  stride = 1,
bool  constantStride = true 
)
static

Create a new attribute array of the given (registered) type, length and stride.

virtual Index openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::dataSize ( ) const
pure virtual

Return the total number of data elements in this array.

Note
This counts each data element in a strided array

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::decompress ( )
pure virtual
virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::expand ( bool  fill = true)
pure virtual

If this array is uniform, replace it with an array of length size().

Parameters
fillif true, assign the uniform value to each element of the array.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

uint8_t openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::flags ( ) const
inline

Retrieve the attribute array flags.

Definition at line 239 of file AttributeArray.h.

virtual AccessorBasePtr openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::getAccessor ( ) const
protectedpure virtual

Obtain an Accessor that stores getter and setter functors.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::hasConstantStride ( ) const
inline

Return true if this attribute has a constant stride.

Definition at line 236 of file AttributeArray.h.

template<typename ValueType >
bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::hasValueType ( ) const
inline

Return true if this attribute has a value type the same as the template parameter.

Definition at line 190 of file AttributeArray.h.

bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::isCompressed ( ) const
inline

Return true if this array is compressed.

Definition at line 206 of file AttributeArray.h.

bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::isHidden ( ) const
inline

Return true if this attribute is hidden (e.g., from UI or iterators).

Definition at line 218 of file AttributeArray.h.

static bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::isRegistered ( const NamePair type)
static

Return true if the given attribute type name is registered.

bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::isStreaming ( ) const
inline

Return true if this attribute is in streaming mode.

Definition at line 233 of file AttributeArray.h.

bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::isTransient ( ) const
inline

Return true if this attribute is not serialized during stream output.

Definition at line 225 of file AttributeArray.h.

template<typename AttributeArrayType >
bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::isType ( ) const
inline

Return true if this attribute is of the same type as the template parameter.

Definition at line 186 of file AttributeArray.h.

virtual bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::isUniform ( ) const
pure virtual

Return true if this array is stored as a single uniform value.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::loadData ( ) const
pure virtual
virtual size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::memUsage ( ) const
pure virtual

Return the number of bytes of memory used by this attribute.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::operator!= ( const AttributeArray other) const
inline

Definition at line 275 of file AttributeArray.h.

AttributeArray& openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::operator= ( const AttributeArray )
default
bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::operator== ( const AttributeArray other) const

Check the compressed bytes and flags. If they are equal, perform a deeper comparison check necessary on the inherited types (TypedAttributeArray) Requires non operator implementation due to inheritance

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::read ( std::istream &  )
pure virtual

Read attribute metadata and buffers from a stream.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::readBuffers ( std::istream &  )
pure virtual

Read attribute buffers from a stream.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::readMetadata ( std::istream &  )
pure virtual

Read attribute metadata from a stream.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::readPagedBuffers ( compression::PagedInputStream )
pure virtual

Read attribute buffers from a paged stream.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

static void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::registerType ( const NamePair type,
FactoryMethod   
)
staticprotected

Register a attribute type along with a factory function.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::set ( const Index  n,
const AttributeArray sourceArray,
const Index  sourceIndex 
)
pure virtual

Set value at given index n from sourceIndex of another sourceArray.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::setConstantStride ( bool  state)
protected

Specify whether this attribute has a constant stride or not.

void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::setHidden ( bool  state)

Specify whether this attribute should be hidden (e.g., from UI or iterators).

This is useful if the attribute is used for blind data or as scratch space for a calculation.

Note
Attributes are not hidden by default.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::setStreaming ( bool  state)

Specify whether this attribute is to be streamed off disk, in which case, the attributes are collapsed after being first loaded leaving them in a destroyed state.

Note
This operation is not thread-safe.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::setTransient ( bool  state)

Specify whether this attribute should only exist in memory and not be serialized during stream output.

Note
Attributes are not transient by default.
virtual Index openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::size ( ) const
pure virtual

Return the number of elements in this array.

Note
This does not count each data element in a strided array

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual Index openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::stride ( ) const
pure virtual

Return the stride of this array.

Note
a return value of zero means a non-constant stride

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual const NamePair& openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::type ( ) const
pure virtual

Return the name of this attribute's type.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

static void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::unregisterType ( const NamePair type)
staticprotected

Remove a attribute type from the registry.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::write ( std::ostream &  ,
bool  outputTransient 
) const
pure virtual

Write attribute metadata and buffers to a stream.

Parameters
outputTransientif true, write out transient attributes

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::write ( std::ostream &  ) const
pure virtual

Write attribute metadata and buffers to a stream, don't write transient attributes.

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::writeBuffers ( std::ostream &  ,
bool  outputTransient 
) const
pure virtual

Write attribute buffers to a stream.

Parameters
outputTransientif true, write out transient attributes

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::writeMetadata ( std::ostream &  ,
bool  outputTransient,
bool  paged 
) const
pure virtual

Write attribute metadata to a stream.

Parameters
outputTransientif true, write out transient attributes
pagedif true, data is written out in pages

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

virtual void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::writePagedBuffers ( compression::PagedOutputStream ,
bool  outputTransient 
) const
pure virtual

Write attribute buffers to a paged stream.

Parameters
outputTransientif true, write out transient attributes

Implemented in openvdb::OPENVDB_VERSION_NAME::points::TypedAttributeArray< ValueType_, Codec_ >.

Friends And Related Function Documentation

friend class ::TestAttributeArray
friend

Definition at line 278 of file AttributeArray.h.

template<typename ValueType , typename CodecType >
friend class AttributeHandle
friend

Definition at line 147 of file AttributeArray.h.

Member Data Documentation

size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::mCompressedBytes = 0
protected

Definition at line 296 of file AttributeArray.h.

uint8_t openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::mFlags = 0
protected

Definition at line 297 of file AttributeArray.h.

compression::PageHandle::Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::mPageHandle
protected

used for out-of-core, paged reading

Definition at line 301 of file AttributeArray.h.

uint8_t openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::mSerializationFlags = 0
protected

Definition at line 298 of file AttributeArray.h.


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