HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups 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...
 
class  ScopedRegistryLock
 

Public Types

enum  Flag {
  TRANSIENT = 0x1, HIDDEN = 0x2, CONSTANTSTRIDE = 0x8, STREAMING = 0x10,
  PARTIALREAD = 0x20
}
 
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, const Metadata *)
 

Public Member Functions

 AttributeArray ()
 
virtual ~AttributeArray ()
 
 AttributeArray (const AttributeArray &)=default
 
AttributeArrayoperator= (const AttributeArray &)=default
 
 AttributeArray (AttributeArray &&)=delete
 
AttributeArrayoperator= (AttributeArray &&)=delete
 
virtual AttributeArray::Ptr copy () const =0
 Return a copy of this attribute. More...
 
virtual OPENVDB_DEPRECATED
AttributeArray::Ptr 
copyUncompressed () const =0
 
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...
 
virtual OPENVDB_DEPRECATED bool compress ()=0
 
virtual OPENVDB_DEPRECATED bool decompress ()=0
 
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, const Metadata *metadata=nullptr, const ScopedRegistryLock *lock=nullptr)
 
static OPENVDB_DEPRECATED Ptr create (const NamePair &type, Index length, Index stride, bool constantStride, const ScopedRegistryLock *lock)
 
static bool isRegistered (const NamePair &type, const ScopedRegistryLock *lock=nullptr)
 Return true if the given attribute type name is registered. More...
 
static void clearRegistry (const ScopedRegistryLock *lock=nullptr)
 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, const ScopedRegistryLock *lock=nullptr)
 Register a attribute type along with a factory function. More...
 
static void unregisterType (const NamePair &type, const ScopedRegistryLock *lock=nullptr)
 Remove a attribute type from the registry. More...
 

Protected Attributes

size_t mCompressedBytes = 0
 
uint8_t mFlags = 0
 
uint8_t mUsePagedRead = 0
 
tbb::atomic< Index32mOutOfCore
 
compression::PageHandle::Ptr mPageHandle
 

Friends

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

Detailed Description

Base class for storing attribute data.

Definition at line 92 of file AttributeArray.h.

Member Typedef Documentation

using openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::AccessorBasePtr = std::shared_ptr<AccessorBase>
protected

Definition at line 98 of file AttributeArray.h.

using openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::ConstPtr = std::shared_ptr<const AttributeArray>

Definition at line 126 of file AttributeArray.h.

using openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::FactoryMethod = Ptr (*)(Index, Index, bool, const Metadata*)

Definition at line 128 of file AttributeArray.h.

using openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::Ptr = std::shared_ptr<AttributeArray>

Definition at line 125 of file AttributeArray.h.

Member Enumeration Documentation

enum openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::Flag
Enumerator
TRANSIENT 
HIDDEN 

by default not written to disk

CONSTANTSTRIDE 

hidden from UIs or iterators

STREAMING 

stride size does not vary in the array

PARTIALREAD 

streaming mode collapses attributes when first accessed

Definition at line 101 of file AttributeArray.h.

enum openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::SerializationFlag
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 (deprecated flag as of ABI=6)

Definition at line 109 of file AttributeArray.h.

Constructor & Destructor Documentation

openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::AttributeArray ( )
inline

Definition at line 132 of file AttributeArray.h.

virtual openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::~AttributeArray ( )
inlinevirtual

Definition at line 133 of file AttributeArray.h.

openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::AttributeArray ( const AttributeArray )
default
openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::AttributeArray ( AttributeArray &&  )
delete

Member Function Documentation

static void openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::clearRegistry ( const ScopedRegistryLock lock = nullptr)
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 OPENVDB_DEPRECATED bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::compress ( )
pure virtual
Deprecated:
Previously this compressed the attribute array, now it does nothing.

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

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

Return a copy of this attribute.

Deprecated:
In-memory compression no longer supported, use AttributeArray::copy() instead.

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,
const Metadata metadata = nullptr,
const ScopedRegistryLock lock = nullptr 
)
static

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

If lock is non-null, the AttributeArray registry mutex has already been locked

static OPENVDB_DEPRECATED Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::create ( const NamePair type,
Index  length,
Index  stride,
bool  constantStride,
const ScopedRegistryLock lock 
)
static
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 OPENVDB_DEPRECATED bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::decompress ( )
pure virtual
Deprecated:
Previously this uncompressed the attribute array, now it does nothing.

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

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 324 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 321 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 229 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 303 of file AttributeArray.h.

static bool openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::isRegistered ( const NamePair type,
const ScopedRegistryLock lock = nullptr 
)
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 318 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 310 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 225 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_ >.

AttributeArray& openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::operator= ( const AttributeArray )
default
AttributeArray& openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::operator= ( AttributeArray &&  )
delete
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  ,
const ScopedRegistryLock lock = nullptr 
)
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.

Deprecated:
From ABI 6 on, use copyValues() with source-target index pairs.

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,
const ScopedRegistryLock lock = nullptr 
)
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 368 of file AttributeArray.h.

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

Definition at line 130 of file AttributeArray.h.

Member Data Documentation

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

Definition at line 405 of file AttributeArray.h.

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

Definition at line 406 of file AttributeArray.h.

tbb::atomic<Index32> openvdb::OPENVDB_VERSION_NAME::points::AttributeArray::mOutOfCore
protected

Definition at line 408 of file AttributeArray.h.

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

Definition at line 409 of file AttributeArray.h.

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

Definition at line 407 of file AttributeArray.h.


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