OpenVDB
12.0.0
|
Base class for storing attribute data. More...
#include <openvdb/points/AttributeArray.h>
Inherited by TypedAttributeArray< ValueType_, Codec_ >.
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 &rhs) | |
AttributeArray & | operator= (const AttributeArray &rhs) |
AttributeArray (AttributeArray &&)=delete | |
AttributeArray & | operator= (AttributeArray &&)=delete |
virtual AttributeArray::Ptr | copy () const =0 |
Return a copy of this attribute. More... | |
virtual Index | size () const =0 |
virtual Index | stride () const =0 |
virtual Index | dataSize () const =0 |
virtual Name | valueType () const =0 |
Return the name of the value type of a single element in this array (e.g., "float" or "vec3d"). More... | |
virtual Name | codecType () const =0 |
Return the name of the codec used by this array (e.g., "trnc" or "fxpt"). More... | |
virtual Index | valueTypeSize () const =0 |
virtual Index | storageTypeSize () const =0 |
virtual bool | valueTypeIsFloatingPoint () const =0 |
Return true if the value type is floating point. More... | |
virtual bool | valueTypeIsClass () const =0 |
Return true if the value type is a class (ie vector, matrix or quaternion return true) More... | |
virtual bool | valueTypeIsVector () const =0 |
Return true if the value type is a vector. More... | |
virtual bool | valueTypeIsQuaternion () const =0 |
Return true if the value type is a quaternion. More... | |
virtual bool | valueTypeIsMatrix () const =0 |
Return true if the value type is a matrix. More... | |
virtual size_t | memUsage () const =0 |
Return the number of bytes of memory used by this attribute. More... | |
virtual size_t | memUsageIfLoaded () const =0 |
virtual const NamePair & | type () 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... | |
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... | |
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... | |
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... | |
virtual bool | isDataLoaded () const =0 |
Return true if all data has been loaded. More... | |
bool | operator== (const AttributeArray &other) const |
bool | operator!= (const AttributeArray &other) const |
const char * | constDataAsByteArray () const |
Indirect virtual function to retrieve the data buffer cast to a char byte array. More... | |
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 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 | |
AttributeArray (const AttributeArray &rhs, const tbb::spin_mutex::scoped_lock &) | |
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 | |
bool | mIsUniform = true |
tbb::spin_mutex | mMutex |
uint8_t | mFlags = 0 |
uint8_t | mUsePagedRead = 0 |
std::atomic< Index32 > | mOutOfCore |
union { | |
compression::PageHandle::Ptr mPageHandle | |
size_t mCompressedBytes | |
}; | |
used for out-of-core, paged reading More... | |
Friends | |
template<typename ValueType , typename CodecType > | |
class | AttributeHandle |
class | ::TestAttributeArray |
Base class for storing attribute data.
|
protected |
using ConstPtr = std::shared_ptr<const AttributeArray> |
using FactoryMethod = Ptr (*)(Index, Index, bool, const Metadata*) |
using Ptr = std::shared_ptr<AttributeArray> |
enum Flag |
enum SerializationFlag |
|
inline |
|
inlinevirtual |
AttributeArray | ( | const AttributeArray & | rhs | ) |
|
delete |
|
protected |
|
static |
Clear the attribute type registry.
|
pure virtual |
Return the name of the codec used by this array (e.g., "trnc" or "fxpt").
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Replace the existing array with a uniform zero value.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Compact the existing array to become uniform if all values are identical.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
inline |
Indirect virtual function to retrieve the data buffer cast to a char byte array.
|
pure virtual |
Return a copy of this attribute.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
void copyValues | ( | const AttributeArray & | sourceArray, |
const IterT & | iter, | ||
bool | compact = true |
||
) |
Like copyValuesUnsafe(), but if compact is true, attempt to collapse this array.
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.
Iterators must adhere to the ForwardIterator interface described in the example below:
|
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
|
pure virtual |
Return the total number of data elements in this array.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
If this array is uniform, replace it with an array of length size().
fill | if true, assign the uniform value to each element of the array. |
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
inline |
Retrieve the attribute array flags.
|
protectedpure virtual |
Obtain an Accessor that stores getter and setter functors.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
inline |
Return true
if this attribute has a constant stride.
|
inline |
Return true
if this attribute has a value type the same as the template parameter.
|
pure virtual |
Return true
if all data has been loaded.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
inline |
Return true
if this attribute is hidden (e.g., from UI or iterators).
|
static |
Return true
if the given attribute type name is registered.
|
inline |
Return true
if this attribute is in streaming mode.
|
inline |
Return true
if this attribute is not serialized during stream output.
|
inline |
Return true
if this attribute is of the same type as the template parameter.
|
pure virtual |
Return true
if this array is stored as a single uniform value.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Ensures all data is in-core.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return the number of bytes of memory used by this attribute.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return the number of bytes of memory used by this attribute array once it has been deserialized (this may be different to memUsage() if delay-loading is in use). Note that this method does NOT consider the fact that a uniform attribute could be expanded and only deals with delay-loading.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
inline |
AttributeArray& operator= | ( | const AttributeArray & | rhs | ) |
|
delete |
bool 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
|
pure virtual |
Read attribute metadata and buffers from a stream.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Read attribute buffers from a stream.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Read attribute metadata from a stream.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Read attribute buffers from a paged stream.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
staticprotected |
Register a attribute type along with a factory function.
|
protected |
Specify whether this attribute has a constant stride or not.
void 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.
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.
void setTransient | ( | bool | state | ) |
Specify whether this attribute should only exist in memory and not be serialized during stream output.
|
pure virtual |
Return the number of elements in this array.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return the size in bytes of the storage type of a single element of this array.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return the stride of this array.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return the name of this attribute's type.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
staticprotected |
Remove a attribute type from the registry.
|
pure virtual |
Return the name of the value type of a single element in this array (e.g., "float" or "vec3d").
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return true
if the value type is a class (ie vector, matrix or quaternion return true)
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return true
if the value type is floating point.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return true
if the value type is a matrix.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return true
if the value type is a quaternion.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return true
if the value type is a vector.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Return the size in bytes of the value type of a single element in this array. (e.g. "float" -> 4 bytes, "vec3d" -> 24 bytes").
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Write attribute metadata and buffers to a stream.
outputTransient | if true, write out transient attributes |
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Write attribute metadata and buffers to a stream, don't write transient attributes.
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Write attribute buffers to a stream.
outputTransient | if true, write out transient attributes |
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Write attribute metadata to a stream.
outputTransient | if true, write out transient attributes |
paged | if true, data is written out in pages |
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
pure virtual |
Write attribute buffers to a paged stream.
outputTransient | if true, write out transient attributes |
Implemented in TypedAttributeArray< ValueType_, Codec_ >.
|
friend |
|
friend |
union { ... } |
used for out-of-core, paged reading
size_t mCompressedBytes |
|
protected |
|
protected |
|
mutableprotected |
|
protected |
compression::PageHandle::Ptr mPageHandle |
|
protected |