OpenVDB  6.0.0
Public Types | Public Member Functions | Static Public Member Functions | Protected Types | Protected Member Functions | Static Protected Member Functions | Protected Attributes | Friends | List of all members
TypedAttributeArray< ValueType_, Codec_ > Class Template Referencefinal

Typed class for storing attribute data. More...

#include <AttributeArray.h>

Inherits AttributeArray.

Public Types

using Ptr = std::shared_ptr< TypedAttributeArray >
 
using ConstPtr = std::shared_ptr< const TypedAttributeArray >
 
using ValueType = ValueType_
 
using Codec = Codec_
 
using StorageType = typename Codec::template Storage< ValueType >::Type
 
enum  Flag {
  TRANSIENT = 0x1, HIDDEN = 0x2, OUTOFCORE = 0x4, CONSTANTSTRIDE = 0x8,
  STREAMING = 0x10, PARTIALREAD = 0x20
}
 
enum  SerializationFlag { WRITESTRIDED = 0x1, WRITEUNIFORM = 0x2, WRITEMEMCOMPRESS = 0x4, WRITEPAGED = 0x8 }
 
using FactoryMethod = Ptr(*)(Index, Index, bool)
 

Public Member Functions

 TypedAttributeArray (Index n=1, Index strideOrTotalSize=1, bool constantStride=true, const ValueType &uniformValue=zeroVal< ValueType >())
 Default constructor, always constructs a uniform attribute. More...
 
 TypedAttributeArray (const TypedAttributeArray &, bool uncompress=false)
 Deep copy constructor (optionally decompress during copy). More...
 
TypedAttributeArrayoperator= (const TypedAttributeArray &)
 Deep copy assignment operator. More...
 
 TypedAttributeArray (TypedAttributeArray &&)=delete
 Move constructor disabled. More...
 
TypedAttributeArrayoperator= (TypedAttributeArray &&)=delete
 Move assignment operator disabled. More...
 
virtual ~TypedAttributeArray ()
 
AttributeArray::Ptr copy () const override
 Return a copy of this attribute. More...
 
AttributeArray::Ptr copyUncompressed () const override
 Return an uncompressed copy of this attribute (will just return a copy if not compressed). More...
 
const NamePairtype () const override
 Return the name of this attribute's type. More...
 
Index size () const override
 Return the number of elements in this array. More...
 
Index stride () const override
 
Index dataSize () const override
 Return the size of the data in this array. More...
 
Name valueType () const override
 Return the name of the value type of a single element in this array (e.g., "float" or "vec3d"). More...
 
Name codecType () const override
 Return the name of the codec used by this array (e.g., "trnc" or "fxpt"). More...
 
Index valueTypeSize () const override
 Return the size in bytes of the value type of a single element in this array. More...
 
Index storageTypeSize () const override
 
bool valueTypeIsFloatingPoint () const override
 Return true if the value type is floating point. More...
 
bool valueTypeIsClass () const override
 Return true if the value type is a class (ie vector, matrix or quaternion return true) More...
 
bool valueTypeIsVector () const override
 Return true if the value type is a vector. More...
 
bool valueTypeIsQuaternion () const override
 Return true if the value type is a quaternion. More...
 
bool valueTypeIsMatrix () const override
 Return true if the value type is a matrix. More...
 
size_t memUsage () const override
 Return the number of bytes of memory used by this attribute. More...
 
ValueType getUnsafe (Index n) const
 Return the value at index n (assumes uncompressed and in-core) More...
 
ValueType get (Index n) const
 Return the value at index n. More...
 
template<typename T >
void getUnsafe (Index n, T &value) const
 Return the value at index n (assumes uncompressed and in-core) More...
 
template<typename T >
void get (Index n, T &value) const
 Return the value at index n. More...
 
void setUnsafe (Index n, const ValueType &value)
 Set value at the given index n (assumes uncompressed and in-core) More...
 
void set (Index n, const ValueType &value)
 Set value at the given index n. More...
 
template<typename T >
void setUnsafe (Index n, const T &value)
 Set value at the given index n (assumes uncompressed and in-core) More...
 
template<typename T >
void set (Index n, const T &value)
 Set value at the given index n. More...
 
void set (const Index n, const AttributeArray &sourceArray, const Index sourceIndex) override
 Set value at given index n from sourceIndex of another sourceArray. More...
 
bool isUniform () const override
 Return true if this array is stored as a single uniform value. More...
 
void expand (bool fill=true) override
 Replace the single value storage with an array of length size(). More...
 
void collapse () override
 Replace the existing array with a uniform zero value. More...
 
bool compact () override
 Compact the existing array to become uniform if all values are identical. More...
 
void collapse (const ValueType &uniformValue)
 Replace the existing array with the given uniform value. More...
 
void fill (const ValueType &value)
 Fill the existing array with the given value. More...
 
OPENVDB_DEPRECATED bool compress () override
 Compress the attribute array. More...
 
OPENVDB_DEPRECATED bool decompress () override
 Uncompress the attribute array. More...
 
void read (std::istream &) override
 Read attribute data from a stream. More...
 
void write (std::ostream &os, bool outputTransient) const override
 
void write (std::ostream &) const override
 Write attribute data to a stream, don't write transient attributes. More...
 
void readMetadata (std::istream &) override
 Read attribute metadata from a stream. More...
 
void writeMetadata (std::ostream &os, bool outputTransient, bool paged) const override
 
void readBuffers (std::istream &) override
 Read attribute buffers from a stream. More...
 
void writeBuffers (std::ostream &os, bool outputTransient) const override
 
void readPagedBuffers (compression::PagedInputStream &) override
 Read attribute buffers from a paged stream. More...
 
void writePagedBuffers (compression::PagedOutputStream &os, bool outputTransient) const override
 
bool isOutOfCore () const
 Return true if this buffer's values have not yet been read from disk. More...
 
void loadData () const override
 Ensures all data is in-core. More...
 
bool isDataLoaded () const override
 Return true if all data has been loaded. 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...
 
template<typename IterT >
void copyValuesUnsafe (const AttributeArray &sourceArray, const IterT &iter)
 Copy values into this array from a source array to a target array as referenced by an iterator. More...
 
template<typename IterT >
void copyValues (const AttributeArray &sourceArray, const IterT &iter, bool compact=true)
 Like copyValuesUnsafe(), but if compact is true, attempt to collapse this array. More...
 
OPENVDB_DEPRECATED bool isCompressed () const
 
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...
 
bool operator== (const AttributeArray &other) const
 
bool operator!= (const AttributeArray &other) const
 

Static Public Member Functions

static Ptr create (Index n, Index strideOrTotalSize=1, bool constantStride=true)
 Return a new attribute array of the given length n and stride with uniform value zero. More...
 
static TypedAttributeArraycast (AttributeArray &attributeArray)
 Cast an AttributeArray to TypedAttributeArray<T> More...
 
static const TypedAttributeArraycast (const AttributeArray &attributeArray)
 Cast an AttributeArray to TypedAttributeArray<T> More...
 
static const NamePairattributeType ()
 Return the name of this attribute's type (includes codec) More...
 
static bool isRegistered ()
 Return true if this attribute type is registered. More...
 
static void registerType ()
 Register this attribute type along with a factory function. More...
 
static void unregisterType ()
 Remove this attribute type from the registry. More...
 
static ValueType getUnsafe (const AttributeArray *array, const Index n)
 
static void setUnsafe (AttributeArray *array, const Index n, const ValueType &value)
 
static void collapse (AttributeArray *array, const ValueType &value)
 Non-member equivalent to collapse() that static_casts array to this TypedAttributeArray. More...
 
static void fill (AttributeArray *array, const ValueType &value)
 Non-member equivalent to fill() that static_casts array to this TypedAttributeArray. More...
 
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

AccessorBasePtr getAccessor () const override
 Obtain an Accessor that stores getter and setter functors. More...
 
StorageTypedata ()
 Return the raw data buffer. More...
 
const StorageTypedata () const
 
bool validData () const
 Verify that data is not out-of-core or in a partially-read state. More...
 
void setConstantStride (bool state)
 Specify whether this attribute has a constant stride or not. 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

bool mIsUniform = true
 
tbb::spin_mutex mMutex
 
uint8_t mFlags = 0
 
uint8_t mSerializationFlags = 0
 
tbb::atomic< Index32mOutOfCore = 0
 
union {
   compression::PageHandle::Ptr   mPageHandle
 
   size_t   mCompressedBytes
 
}; 
 used for out-of-core, paged reading More...
 

Friends

class ::TestAttributeArray
 

Detailed Description

template<typename ValueType_, typename Codec_ = NullCodec>
class openvdb::v6_0::points::TypedAttributeArray< ValueType_, Codec_ >

Typed class for storing attribute data.

Member Typedef Documentation

using AccessorBasePtr = std::shared_ptr<AccessorBase>
protectedinherited
using Codec = Codec_
using ConstPtr = std::shared_ptr<const TypedAttributeArray>
using FactoryMethod = Ptr (*)(Index, Index, bool)
inherited
using Ptr = std::shared_ptr<TypedAttributeArray>
using StorageType = typename Codec::template Storage<ValueType>::Type
using ValueType = ValueType_

Member Enumeration Documentation

enum Flag
inherited
Enumerator
TRANSIENT 
HIDDEN 

by default not written to disk

OUTOFCORE 

hidden from UIs or iterators

CONSTANTSTRIDE 

data not yet loaded from disk (deprecated flag as of ABI=5)

STREAMING 

stride size does not vary in the array

PARTIALREAD 

streaming mode collapses attributes when first accessed

enum SerializationFlag
inherited
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)

Constructor & Destructor Documentation

TypedAttributeArray ( Index  n = 1,
Index  strideOrTotalSize = 1,
bool  constantStride = true,
const ValueType uniformValue = zeroVal<ValueType>() 
)
explicit

Default constructor, always constructs a uniform attribute.

TypedAttributeArray ( const TypedAttributeArray< ValueType_, Codec_ > &  rhs,
bool  uncompress = false 
)

Deep copy constructor (optionally decompress during copy).

TypedAttributeArray ( TypedAttributeArray< ValueType_, Codec_ > &&  )
delete

Move constructor disabled.

virtual ~TypedAttributeArray ( )
inlinevirtual

Member Function Documentation

const NamePair & attributeType ( )
inlinestatic

Return the name of this attribute's type (includes codec)

TypedAttributeArray< ValueType_, Codec_ > & cast ( AttributeArray attributeArray)
inlinestatic

Cast an AttributeArray to TypedAttributeArray<T>

const TypedAttributeArray< ValueType_, Codec_ > & cast ( const AttributeArray attributeArray)
inlinestatic

Cast an AttributeArray to TypedAttributeArray<T>

static void clearRegistry ( )
staticinherited

Clear the attribute type registry.

Name codecType ( ) const
inlineoverridevirtual

Return the name of the codec used by this array (e.g., "trnc" or "fxpt").

Implements AttributeArray.

void collapse ( )
overridevirtual

Replace the existing array with a uniform zero value.

Implements AttributeArray.

void collapse ( const ValueType uniformValue)

Replace the existing array with the given uniform value.

void collapse ( AttributeArray array,
const ValueType value 
)
static

Non-member equivalent to collapse() that static_casts array to this TypedAttributeArray.

bool compact ( )
overridevirtual

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

Implements AttributeArray.

bool compress ( )
inlineoverridevirtual

Compress the attribute array.

Implements AttributeArray.

AttributeArray::Ptr copy ( ) const
overridevirtual

Return a copy of this attribute.

Implements AttributeArray.

AttributeArray::Ptr copyUncompressed ( ) const
overridevirtual

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

Implements AttributeArray.

void copyValues ( const AttributeArray sourceArray,
const IterT &  iter,
bool  compact = true 
)
inherited

Like copyValuesUnsafe(), but if compact is true, attempt to collapse this array.

void copyValuesUnsafe ( const AttributeArray sourceArray,
const IterT &  iter 
)
inherited

Copy values into this array from a source array to a target array as referenced by an iterator.

Iterators must adhere to the ForwardIterator interface described in the example below:

struct MyIterator
{
// returns true if the iterator is referencing valid copying indices
operator bool() const;
// increments the iterator
MyIterator& operator++();
// returns the source index that the iterator is referencing for copying
Index sourceIndex() const;
// returns the target index that the iterator is referencing for copying
Index targetIndex() const;
};
Note
It is assumed that the strided storage sizes match, the arrays are both in-core, and both value types are floating-point or both integer.
It is possible to use this method to write to a uniform target array if the iterator does not have non-zero target indices.
static Ptr create ( const NamePair type,
Index  length,
Index  stride = 1,
bool  constantStride = true 
)
staticinherited

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

TypedAttributeArray< ValueType_, Codec_ >::Ptr create ( Index  n,
Index  strideOrTotalSize = 1,
bool  constantStride = true 
)
inlinestatic

Return a new attribute array of the given length n and stride with uniform value zero.

StorageType* data ( )
inlineprotected

Return the raw data buffer.

const StorageType* data ( ) const
inlineprotected
Index dataSize ( ) const
inlineoverridevirtual

Return the size of the data in this array.

Implements AttributeArray.

bool decompress ( )
inlineoverridevirtual

Uncompress the attribute array.

Implements AttributeArray.

void expand ( bool  fill = true)
overridevirtual

Replace the single value storage with an array of length size().

Note
Non-uniform attributes are unchanged.
Parameters
filltoggle to initialize the array elements with the pre-expanded value.

Implements AttributeArray.

void fill ( const ValueType value)

Fill the existing array with the given value.

Note
Identical to collapse() except a non-uniform array will not become uniform.
void fill ( AttributeArray array,
const ValueType value 
)
static

Non-member equivalent to fill() that static_casts array to this TypedAttributeArray.

uint8_t flags ( ) const
inlineinherited

Retrieve the attribute array flags.

TypedAttributeArray< ValueType_, Codec_ >::ValueType get ( Index  n) const

Return the value at index n.

void get ( Index  n,
T &  value 
) const

Return the value at index n.

AttributeArray::AccessorBasePtr getAccessor ( ) const
overrideprotectedvirtual

Obtain an Accessor that stores getter and setter functors.

Implements AttributeArray.

TypedAttributeArray< ValueType_, Codec_ >::ValueType getUnsafe ( Index  n) const

Return the value at index n (assumes uncompressed and in-core)

void getUnsafe ( Index  n,
T &  value 
) const

Return the value at index n (assumes uncompressed and in-core)

TypedAttributeArray< ValueType_, Codec_ >::ValueType getUnsafe ( const AttributeArray array,
const Index  n 
)
static

Non-member equivalent to getUnsafe() that static_casts array to this TypedAttributeArray (assumes uncompressed and in-core)

bool hasConstantStride ( ) const
inlineinherited

Return true if this attribute has a constant stride.

bool hasValueType ( ) const
inlineinherited

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

OPENVDB_DEPRECATED bool isCompressed ( ) const
inlineinherited
Deprecated:
Previously this returned true if the array was compressed, now it always returns false.
bool isDataLoaded ( ) const
overridevirtual

Return true if all data has been loaded.

Implements AttributeArray.

bool isHidden ( ) const
inlineinherited

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

bool isOutOfCore ( ) const
inline

Return true if this buffer's values have not yet been read from disk.

static bool isRegistered ( const NamePair type)
staticinherited

Return true if the given attribute type name is registered.

bool isRegistered ( )
inlinestatic

Return true if this attribute type is registered.

bool isStreaming ( ) const
inlineinherited

Return true if this attribute is in streaming mode.

bool isTransient ( ) const
inlineinherited

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

bool isType ( ) const
inlineinherited

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

bool isUniform ( ) const
inlineoverridevirtual

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

Implements AttributeArray.

void loadData ( ) const
overridevirtual

Ensures all data is in-core.

Implements AttributeArray.

size_t memUsage ( ) const
overridevirtual

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

Implements AttributeArray.

bool operator!= ( const AttributeArray other) const
inlineinherited
TypedAttributeArray< ValueType_, Codec_ > & operator= ( const TypedAttributeArray< ValueType_, Codec_ > &  rhs)

Deep copy assignment operator.

TypedAttributeArray& operator= ( TypedAttributeArray< ValueType_, Codec_ > &&  )
delete

Move assignment operator disabled.

bool operator== ( const AttributeArray other) const
inherited

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

void read ( std::istream &  is)
overridevirtual

Read attribute data from a stream.

Implements AttributeArray.

void readBuffers ( std::istream &  is)
overridevirtual

Read attribute buffers from a stream.

Implements AttributeArray.

void readMetadata ( std::istream &  is)
overridevirtual

Read attribute metadata from a stream.

Implements AttributeArray.

void readPagedBuffers ( compression::PagedInputStream is)
overridevirtual

Read attribute buffers from a paged stream.

Implements AttributeArray.

static void registerType ( const NamePair type,
FactoryMethod   
)
staticprotectedinherited

Register a attribute type along with a factory function.

void registerType ( )
inlinestatic

Register this attribute type along with a factory function.

void set ( Index  n,
const ValueType value 
)

Set value at the given index n.

void set ( Index  n,
const T &  value 
)

Set value at the given index n.

void set ( const Index  n,
const AttributeArray sourceArray,
const Index  sourceIndex 
)
overridevirtual

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

Implements AttributeArray.

void setConstantStride ( bool  state)
protectedinherited

Specify whether this attribute has a constant stride or not.

void setHidden ( bool  state)
inherited

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 setStreaming ( bool  state)
inherited

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 setTransient ( bool  state)
inherited

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

Note
Attributes are not transient by default.
void setUnsafe ( Index  n,
const ValueType value 
)

Set value at the given index n (assumes uncompressed and in-core)

void setUnsafe ( Index  n,
const T &  value 
)

Set value at the given index n (assumes uncompressed and in-core)

void setUnsafe ( AttributeArray array,
const Index  n,
const ValueType value 
)
static

Non-member equivalent to setUnsafe() that static_casts array to this TypedAttributeArray (assumes uncompressed and in-core)

Index size ( ) const
inlineoverridevirtual

Return the number of elements in this array.

Implements AttributeArray.

Index storageTypeSize ( ) const
inlineoverridevirtual

Return the size in bytes of the storage type of a single element of this array.

Note
If the Codec is a NullCodec, valueSize() == storageSize()

Implements AttributeArray.

Index stride ( ) const
inlineoverridevirtual

Return the stride of this array.

Note
A return value of zero means a variable stride

Implements AttributeArray.

const NamePair& type ( ) const
inlineoverridevirtual

Return the name of this attribute's type.

Implements AttributeArray.

static void unregisterType ( const NamePair type)
staticprotectedinherited

Remove a attribute type from the registry.

void unregisterType ( )
inlinestatic

Remove this attribute type from the registry.

bool validData ( ) const
inlineprotected

Verify that data is not out-of-core or in a partially-read state.

Name valueType ( ) const
inlineoverridevirtual

Return the name of the value type of a single element in this array (e.g., "float" or "vec3d").

Implements AttributeArray.

bool valueTypeIsClass ( ) const
overridevirtual

Return true if the value type is a class (ie vector, matrix or quaternion return true)

Implements AttributeArray.

bool valueTypeIsFloatingPoint ( ) const
overridevirtual

Return true if the value type is floating point.

Implements AttributeArray.

bool valueTypeIsMatrix ( ) const
overridevirtual

Return true if the value type is a matrix.

Implements AttributeArray.

bool valueTypeIsQuaternion ( ) const
overridevirtual

Return true if the value type is a quaternion.

Implements AttributeArray.

bool valueTypeIsVector ( ) const
overridevirtual

Return true if the value type is a vector.

Implements AttributeArray.

Index valueTypeSize ( ) const
inlineoverridevirtual

Return the size in bytes of the value type of a single element in this array.

Implements AttributeArray.

void write ( std::ostream &  os,
bool  outputTransient 
) const
overridevirtual

Write attribute data to a stream.

Parameters
osthe output stream
outputTransientif true, write out transient attributes

Implements AttributeArray.

void write ( std::ostream &  os) const
overridevirtual

Write attribute data to a stream, don't write transient attributes.

Implements AttributeArray.

void writeBuffers ( std::ostream &  os,
bool  outputTransient 
) const
overridevirtual

Write attribute buffers to a stream.

Parameters
osthe output stream
outputTransientif true, write out transient attributes

Implements AttributeArray.

void writeMetadata ( std::ostream &  os,
bool  outputTransient,
bool  paged 
) const
overridevirtual

Write attribute metadata to a stream.

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

Implements AttributeArray.

void writePagedBuffers ( compression::PagedOutputStream os,
bool  outputTransient 
) const
overridevirtual

Write attribute buffers to a paged stream.

Parameters
osthe output stream
outputTransientif true, write out transient attributes

Implements AttributeArray.

Friends And Related Function Documentation

friend class ::TestAttributeArray
friend

Member Data Documentation

union { ... }

used for out-of-core, paged reading

size_t mCompressedBytes
inherited
uint8_t mFlags = 0
protectedinherited
bool mIsUniform = true
protectedinherited
tbb::spin_mutex mMutex
protectedinherited
tbb::atomic<Index32> mOutOfCore = 0
protectedinherited
compression::PageHandle::Ptr mPageHandle
inherited
uint8_t mSerializationFlags = 0
protectedinherited

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