HDK
|
Ordered collection of uniquely-named attribute arrays. More...
#include <AttributeSet.h>
Classes | |
struct | Inserter |
Utility method to construct a NameAndType sequence. More... | |
struct | Util |
Public Types | |
enum | { INVALID_POS = std::numeric_limits<size_t>::max() } |
using | Ptr = std::shared_ptr< AttributeSet > |
using | ConstPtr = std::shared_ptr< const AttributeSet > |
using | DescriptorPtr = std::shared_ptr< Descriptor > |
using | DescriptorConstPtr = std::shared_ptr< const Descriptor > |
using | Ptr = std::shared_ptr< Descriptor > |
using | NameAndType = Util::NameAndType |
using | NameAndTypeVec = Util::NameAndTypeVec |
using | GroupIndex = Util::GroupIndex |
using | NameToPosMap = Util::NameToPosMap |
using | ConstIterator = NameToPosMap::const_iterator |
Public Member Functions | |
AttributeSet () | |
AttributeSet (const AttributeSet &attributeSet, Index arrayLength) | |
AttributeSet (const DescriptorPtr &descriptor, Index arrayLength=1) | |
AttributeSet (const AttributeSet &) | |
Shallow copy constructor, the descriptor and attribute arrays will be shared. More... | |
AttributeSet & | operator= (const AttributeSet &)=delete |
Disallow copy assignment, since it wouldn't be obvious whether the copy is deep or shallow. More... | |
DescriptorPtr | descriptorPtr () const |
Return a pointer to this attribute set's descriptor, which might be shared with other sets. More... | |
size_t | size () const |
Return the number of attributes in this set. More... | |
size_t | memUsage () const |
Return the number of bytes of memory used by this attribute set. More... | |
size_t | find (const std::string &name) const |
Return the position of the attribute array whose name is name, or INVALID_POS if no match is found. More... | |
size_t | replace (const std::string &name, const AttributeArray::Ptr &) |
Replace the attribute array whose name is name. More... | |
size_t | replace (size_t pos, const AttributeArray::Ptr &) |
Replace the attribute array stored at position pos in this container. More... | |
Util::GroupIndex | groupIndex (const Name &groupName) const |
Return the group index from the name of the group. More... | |
Util::GroupIndex | groupIndex (const size_t offset) const |
bool | isShared (size_t pos) const |
Return true if the attribute array stored at position pos is shared. More... | |
void | makeUnique (size_t pos) |
If the attribute array stored at position pos is shared, replace the array with a deep copy of itself that is not shared with anyone else. More... | |
AttributeArray::Ptr | appendAttribute (const Name &name, const NamePair &type, const Index strideOrTotalSize=1, const bool constantStride=true, Metadata::Ptr defaultValue=Metadata::Ptr()) |
Append attribute attribute (simple method) More... | |
AttributeArray::Ptr | appendAttribute (const Descriptor &expected, DescriptorPtr &replacement, const size_t pos, const Index strideOrTotalSize=1, const bool constantStride=true) |
void | dropAttributes (const std::vector< size_t > &pos) |
void | dropAttributes (const std::vector< size_t > &pos, const Descriptor &expected, DescriptorPtr &replacement) |
void | renameAttributes (const Descriptor &expected, const DescriptorPtr &replacement) |
void | reorderAttributes (const DescriptorPtr &replacement) |
void | resetDescriptor (const DescriptorPtr &replacement, const bool allowMismatchingDescriptors=false) |
void | read (std::istream &) |
Read the entire set from a stream. More... | |
void | write (std::ostream &, bool outputTransient=false) const |
void | readDescriptor (std::istream &) |
This will read the attribute descriptor from a stream. More... | |
void | writeDescriptor (std::ostream &, bool outputTransient=false) const |
void | readMetadata (std::istream &) |
This will read the attribute metadata from a stream. More... | |
void | writeMetadata (std::ostream &, bool outputTransient=false, bool paged=false) const |
void | readAttributes (std::istream &) |
This will read the attribute data from a stream. More... | |
void | writeAttributes (std::ostream &, bool outputTransient=false) const |
bool | operator== (const AttributeSet &other) const |
bool | operator!= (const AttributeSet &other) const |
Descriptor () | |
Descriptor (const Descriptor &) | |
Copy constructor. More... | |
Ptr | duplicateAppend (const Name &name, const NamePair &type) const |
Create a new descriptor as a duplicate with a new attribute appended. More... | |
Ptr | duplicateDrop (const std::vector< size_t > &pos) const |
Create a new descriptor as a duplicate with existing attributes dropped. More... | |
size_t | size () const |
Return the number of attributes in this descriptor. More... | |
size_t | count (const NamePair &type) const |
Return the number of attributes with this attribute type. More... | |
size_t | memUsage () const |
Return the number of bytes of memory used by this attribute set. More... | |
size_t | find (const std::string &name) const |
Return the position of the attribute array whose name is name, or INVALID_POS if no match is found. More... | |
size_t | rename (const std::string &fromName, const std::string &toName) |
Rename an attribute array. More... | |
const Name & | valueType (size_t pos) const |
Return the name of the attribute array's type. More... | |
const NamePair & | type (size_t pos) const |
Return the name of the attribute array's type. More... | |
MetaMap & | getMetadata () |
Retrieve metadata map. More... | |
const MetaMap & | getMetadata () const |
bool | hasDefaultValue (const Name &name) const |
Return true if the attribute has a default value. More... | |
template<typename ValueType > | |
ValueType | getDefaultValue (const Name &name) const |
Get a default value for an existing attribute. More... | |
void | setDefaultValue (const Name &name, const Metadata &defaultValue) |
Set a default value for an existing attribute. More... | |
void | removeDefaultValue (const Name &name) |
void | pruneUnusedDefaultValues () |
bool | operator== (const Descriptor &) const |
Return true if this descriptor is equal to the given one. More... | |
bool | operator!= (const Descriptor &rhs) const |
Return true if this descriptor is not equal to the given one. More... | |
bool | hasSameAttributes (const Descriptor &rhs) const |
const NameToPosMap & | map () const |
Return a reference to the name-to-position map. More... | |
const NameToPosMap & | groupMap () const |
Return a reference to the name-to-position group map. More... | |
bool | hasGroup (const Name &group) const |
Return true if group exists. More... | |
void | setGroup (const Name &group, const size_t offset) |
Define a group name to offset mapping. More... | |
void | dropGroup (const Name &group) |
Drop any mapping keyed by group name. More... | |
void | clearGroups () |
Clear all groups. More... | |
const Name | uniqueName (const Name &name) const |
Return a unique name for an attribute array based on given name. More... | |
void | write (std::ostream &) const |
Serialize this descriptor to the given stream. More... | |
void | read (std::istream &) |
Unserialize this transform from the given stream. More... | |
Descriptor & | descriptor () |
Return a reference to this attribute set's descriptor, which might be shared with other sets. More... | |
const Descriptor & | descriptor () const |
Return a reference to this attribute set's descriptor, which might be shared with other sets. More... | |
const AttributeArray * | getConst (const std::string &name) const |
Return a pointer to the attribute array whose name is name or a null pointer if no match is found. More... | |
const AttributeArray * | get (const std::string &name) const |
Return a pointer to the attribute array whose name is name or a null pointer if no match is found. More... | |
AttributeArray * | get (const std::string &name) |
Return a pointer to the attribute array whose name is name or a null pointer if no match is found. More... | |
const AttributeArray * | getConst (size_t pos) const |
Return a pointer to the attribute array stored at position pos in this set. More... | |
const AttributeArray * | get (size_t pos) const |
Return a pointer to the attribute array stored at position pos in this set. More... | |
AttributeArray * | get (size_t pos) |
Return a pointer to the attribute array stored at position pos in this set. More... | |
size_t | groupOffset (const Name &groupName) const |
Return the group offset from the name or index of the group A group attribute array is a single byte (8-bit), each bit of which can denote a group. The group offset is the position of the bit that denotes the requested group if all group attribute arrays in the set (and only attribute arrays marked as group) were to be laid out linearly according to their order in the set. More... | |
size_t | groupOffset (const Util::GroupIndex &index) const |
Return the group offset from the name or index of the group A group attribute array is a single byte (8-bit), each bit of which can denote a group. The group offset is the position of the bit that denotes the requested group if all group attribute arrays in the set (and only attribute arrays marked as group) were to be laid out linearly according to their order in the set. More... | |
Static Public Member Functions | |
static Ptr | create (const NamePair &) |
Create a new descriptor from a position attribute type and assumes "P" (for convenience). More... | |
static bool | validName (const Name &name) |
Return true if the name is valid. More... | |
static void | parseNames (std::vector< std::string > &includeNames, std::vector< std::string > &excludeNames, const std::string &nameStr) |
Extract each name from nameStr into includeNames, or into excludeNames if name prefixed with caret. More... | |
Protected Member Functions | |
void | appendTo (NameAndTypeVec &attrs) const |
Append to a vector of names and types from this Descriptor in position order. More... | |
size_t | insert (const std::string &name, const NamePair &typeName) |
Static Protected Member Functions | |
static Ptr | create (const NameAndTypeVec &, const NameToPosMap &, const MetaMap &) |
Friends | |
class | ::TestAttributeSet |
Ordered collection of uniquely-named attribute arrays.
An immutable object that stores name, type and AttributeSet position for a constant collection of attribute arrays.
Definition at line 62 of file AttributeSet.h.
using openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::ConstIterator = NameToPosMap::const_iterator |
Definition at line 281 of file AttributeSet.h.
using openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::ConstPtr = std::shared_ptr<const AttributeSet> |
Definition at line 68 of file AttributeSet.h.
using openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::DescriptorConstPtr = std::shared_ptr<const Descriptor> |
Definition at line 73 of file AttributeSet.h.
using openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::DescriptorPtr = std::shared_ptr<Descriptor> |
Definition at line 72 of file AttributeSet.h.
Definition at line 279 of file AttributeSet.h.
Definition at line 277 of file AttributeSet.h.
Definition at line 278 of file AttributeSet.h.
Definition at line 280 of file AttributeSet.h.
using openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::Ptr = std::shared_ptr<AttributeSet> |
Definition at line 67 of file AttributeSet.h.
using openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::Ptr = std::shared_ptr<Descriptor> |
Definition at line 275 of file AttributeSet.h.
anonymous enum |
Enumerator | |
---|---|
INVALID_POS |
Definition at line 65 of file AttributeSet.h.
openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::AttributeSet | ( | ) |
openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::AttributeSet | ( | const AttributeSet & | attributeSet, |
Index | arrayLength | ||
) |
Construct a new AttributeSet from the given AttributeSet.
attributeSet | the old attribute set |
arrayLength | the desired length of the arrays in the new AttributeSet |
|
explicit |
Construct a new AttributeSet from the given Descriptor.
descriptor | stored in the new AttributeSet and used in construction |
arrayLength | the desired length of the arrays in the new AttributeSet |
openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::AttributeSet | ( | const AttributeSet & | ) |
Shallow copy constructor, the descriptor and attribute arrays will be shared.
AttributeArray::Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::appendAttribute | ( | const Name & | name, |
const NamePair & | type, | ||
const Index | strideOrTotalSize = 1 , |
||
const bool | constantStride = true , |
||
Metadata::Ptr | defaultValue = Metadata::Ptr() |
||
) |
Append attribute attribute (simple method)
AttributeArray::Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::appendAttribute | ( | const Descriptor & | expected, |
DescriptorPtr & | replacement, | ||
const size_t | pos, | ||
const Index | strideOrTotalSize = 1 , |
||
const bool | constantStride = true |
||
) |
Append attribute attribute (descriptor-sharing) Requires current descriptor to match expected On append, current descriptor is replaced with replacement
|
protected |
Append to a vector of names and types from this Descriptor in position order.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::clearGroups | ( | ) |
Clear all groups.
Return the number of attributes with this attribute type.
Create a new descriptor from a position attribute type and assumes "P" (for convenience).
|
staticprotected |
Create a new descriptor from the given attribute and type name pairs and copy the group maps and metamap.
|
inline |
Return a reference to this attribute set's descriptor, which might be shared with other sets.
Definition at line 121 of file AttributeSet.h.
|
inline |
Return a reference to this attribute set's descriptor, which might be shared with other sets.
Definition at line 122 of file AttributeSet.h.
openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::Descriptor | ( | ) |
openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::Descriptor | ( | const Descriptor & | ) |
Copy constructor.
|
inline |
Return a pointer to this attribute set's descriptor, which might be shared with other sets.
Definition at line 127 of file AttributeSet.h.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::dropAttributes | ( | const std::vector< size_t > & | pos | ) |
Drop attributes with pos indices (simple method) Creates a new descriptor for this attribute set
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::dropAttributes | ( | const std::vector< size_t > & | pos, |
const Descriptor & | expected, | ||
DescriptorPtr & | replacement | ||
) |
Drop attributes with pos indices (descriptor-sharing method) Requires current descriptor to match expected On drop, current descriptor is replaced with replacement
Drop any mapping keyed by group name.
Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::duplicateAppend | ( | const Name & | name, |
const NamePair & | type | ||
) | const |
Create a new descriptor as a duplicate with a new attribute appended.
Ptr openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::duplicateDrop | ( | const std::vector< size_t > & | pos | ) | const |
Create a new descriptor as a duplicate with existing attributes dropped.
size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::find | ( | const std::string & | name | ) | const |
Return the position of the attribute array whose name is name, or INVALID_POS
if no match is found.
size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::find | ( | const std::string & | name | ) | const |
Return the position of the attribute array whose name is name, or INVALID_POS
if no match is found.
const AttributeArray* openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::get | ( | const std::string & | name | ) | const |
Return a pointer to the attribute array whose name is name or a null pointer if no match is found.
AttributeArray* openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::get | ( | const std::string & | name | ) |
Return a pointer to the attribute array whose name is name or a null pointer if no match is found.
const AttributeArray* openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::get | ( | size_t | pos | ) | const |
Return a pointer to the attribute array stored at position pos in this set.
AttributeArray* openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::get | ( | size_t | pos | ) |
Return a pointer to the attribute array stored at position pos in this set.
const AttributeArray* openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::getConst | ( | const std::string & | name | ) | const |
Return a pointer to the attribute array whose name is name or a null pointer if no match is found.
const AttributeArray* openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::getConst | ( | size_t | pos | ) | const |
Return a pointer to the attribute array stored at position pos in this set.
|
inline |
Get a default value for an existing attribute.
Definition at line 345 of file AttributeSet.h.
MetaMap& openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::getMetadata | ( | ) |
Retrieve metadata map.
Util::GroupIndex openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::groupIndex | ( | const Name & | groupName | ) | const |
Return the group index from the name of the group.
Util::GroupIndex openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::groupIndex | ( | const size_t | offset | ) | const |
Return the group index from the offset of the group
|
inline |
Return a reference to the name-to-position group map.
Definition at line 379 of file AttributeSet.h.
size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::groupOffset | ( | const Name & | groupName | ) | const |
Return the group offset from the name or index of the group A group attribute array is a single byte (8-bit), each bit of which can denote a group. The group offset is the position of the bit that denotes the requested group if all group attribute arrays in the set (and only attribute arrays marked as group) were to be laid out linearly according to their order in the set.
size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::groupOffset | ( | const Util::GroupIndex & | index | ) | const |
Return the group offset from the name or index of the group A group attribute array is a single byte (8-bit), each bit of which can denote a group. The group offset is the position of the bit that denotes the requested group if all group attribute arrays in the set (and only attribute arrays marked as group) were to be laid out linearly according to their order in the set.
bool openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::hasDefaultValue | ( | const Name & | name | ) | const |
Return true if the attribute has a default value.
Return true
if group exists.
bool openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::hasSameAttributes | ( | const Descriptor & | rhs | ) | const |
Return true if this descriptor contains the same attributes as the given descriptor, ignoring attribute order
|
protected |
bool openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::isShared | ( | size_t | pos | ) | const |
Return true if the attribute array stored at position pos is shared.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::makeUnique | ( | size_t | pos | ) |
If the attribute array stored at position pos is shared, replace the array with a deep copy of itself that is not shared with anyone else.
|
inline |
Return a reference to the name-to-position map.
Definition at line 377 of file AttributeSet.h.
size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::memUsage | ( | ) | const |
Return the number of bytes of memory used by this attribute set.
size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::memUsage | ( | ) | const |
Return the number of bytes of memory used by this attribute set.
|
inline |
Definition at line 256 of file AttributeSet.h.
|
inline |
Return true if this descriptor is not equal to the given one.
Definition at line 371 of file AttributeSet.h.
|
delete |
Disallow copy assignment, since it wouldn't be obvious whether the copy is deep or shallow.
bool openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::operator== | ( | const AttributeSet & | other | ) | const |
Compare the descriptors and attribute arrays on the attribute sets Exit early if the descriptors do not match
bool openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::operator== | ( | const Descriptor & | ) | const |
Return true if this descriptor is equal to the given one.
|
static |
Extract each name from nameStr into includeNames, or into excludeNames if name prefixed with caret.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::pruneUnusedDefaultValues | ( | ) |
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::read | ( | std::istream & | ) |
Read the entire set from a stream.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::read | ( | std::istream & | ) |
Unserialize this transform from the given stream.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::readAttributes | ( | std::istream & | ) |
This will read the attribute data from a stream.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::readDescriptor | ( | std::istream & | ) |
This will read the attribute descriptor from a stream.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::readMetadata | ( | std::istream & | ) |
This will read the attribute metadata from a stream.
size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::rename | ( | const std::string & | fromName, |
const std::string & | toName | ||
) |
Rename an attribute array.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::renameAttributes | ( | const Descriptor & | expected, |
const DescriptorPtr & | replacement | ||
) |
Re-name attributes in set to match a provided descriptor Replaces own descriptor with replacement
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::reorderAttributes | ( | const DescriptorPtr & | replacement | ) |
Re order attribute set to match a provided descriptor Replaces own descriptor with replacement
size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::replace | ( | const std::string & | name, |
const AttributeArray::Ptr & | |||
) |
Replace the attribute array whose name is name.
INVALID_POS
if the given name does not exist or if the replacement failed because the new array type does not comply with the descriptor. size_t openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::replace | ( | size_t | pos, |
const AttributeArray::Ptr & | |||
) |
Replace the attribute array stored at position pos in this container.
INVALID_POS
if replacement failed because the new array type does not comply with the descriptor. void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::resetDescriptor | ( | const DescriptorPtr & | replacement, |
const bool | allowMismatchingDescriptors = false |
||
) |
Replace the current descriptor with a replacement Note the provided Descriptor must be identical to the replacement unless allowMismatchingDescriptors is true (default is false)
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::setDefaultValue | ( | const Name & | name, |
const Metadata & | defaultValue | ||
) |
Set a default value for an existing attribute.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::setGroup | ( | const Name & | group, |
const size_t | offset | ||
) |
Define a group name to offset mapping.
|
inline |
Return the number of attributes in this set.
Definition at line 130 of file AttributeSet.h.
|
inline |
Return the number of attributes in this descriptor.
Definition at line 317 of file AttributeSet.h.
Return the name of the attribute array's type.
const Name openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::uniqueName | ( | const Name & | name | ) | const |
Return a unique name for an attribute array based on given name.
|
static |
Return true if the name is valid.
Return the name of the attribute array's type.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::write | ( | std::ostream & | , |
bool | outputTransient = false |
||
) | const |
Write the entire set to a stream.
outputTransient | if true, write out transient attributes |
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::write | ( | std::ostream & | ) | const |
Serialize this descriptor to the given stream.
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::writeAttributes | ( | std::ostream & | , |
bool | outputTransient = false |
||
) | const |
This will write the attribute data to a stream.
outputTransient | if true, write out transient attributes |
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::writeDescriptor | ( | std::ostream & | , |
bool | outputTransient = false |
||
) | const |
This will write the attribute descriptor to a stream.
outputTransient | if true, write out transient attributes |
void openvdb::OPENVDB_VERSION_NAME::points::AttributeSet::writeMetadata | ( | std::ostream & | , |
bool | outputTransient = false , |
||
bool | paged = false |
||
) | const |
This will write the attribute metadata to a stream.
outputTransient | if true, write out transient attributes |
paged | if true, data is written out in pages |
|
friend |
Definition at line 417 of file AttributeSet.h.