An immutable object that stores name, type and AttributeSet position for a constant collection of attribute arrays. More...
#include <openvdb/points/AttributeSet.h>
Classes | |
struct | Inserter |
Utility method to construct a NameAndType sequence. More... | |
Public Types | |
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 | |
Descriptor () | |
Descriptor (const Descriptor &) | |
Copy constructor. | |
Ptr | duplicateAppend (const Name &name, const NamePair &type) const |
Create a new descriptor as a duplicate with a new attribute appended. | |
Ptr | duplicateDrop (const std::vector< size_t > &pos) const |
Create a new descriptor as a duplicate with existing attributes dropped. | |
size_t | size () const |
Return the number of attributes in this descriptor. | |
size_t | count (const NamePair &type) const |
Return the number of attributes with this attribute type. | |
size_t | memUsage () const |
Return the number of bytes of memory used by this attribute set. | |
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. | |
size_t | rename (const std::string &fromName, const std::string &toName) |
Rename an attribute array. | |
const Name & | valueType (size_t pos) const |
Return the name of the attribute array's type. | |
const NamePair & | type (size_t pos) const |
Return the name of the attribute array's type. | |
MetaMap & | getMetadata () |
Retrieve metadata map. | |
const MetaMap & | getMetadata () const |
bool | hasDefaultValue (const Name &name) const |
Return true if the attribute has a default value. | |
template<typename ValueType> | |
ValueType | getDefaultValue (const Name &name) const |
Get a default value for an existing attribute. | |
void | setDefaultValue (const Name &name, const Metadata &defaultValue) |
Set a default value for an existing attribute. | |
void | removeDefaultValue (const Name &name) |
void | pruneUnusedDefaultValues () |
bool | operator== (const Descriptor &) const |
Return true if this descriptor is equal to the given one. | |
bool | operator!= (const Descriptor &rhs) const |
Return true if this descriptor is not equal to the given one. | |
bool | hasSameAttributes (const Descriptor &rhs) const |
const NameToPosMap & | map () const |
Return a reference to the name-to-position map. | |
const NameToPosMap & | groupMap () const |
Return a reference to the name-to-position group map. | |
bool | hasGroup (const Name &group) const |
Return true if group exists. | |
void | setGroup (const Name &group, const size_t offset, const bool checkValidOffset=false) |
Define a group name to offset mapping. | |
void | dropGroup (const Name &group) |
Drop any mapping keyed by group name. | |
void | clearGroups () |
Clear all groups. | |
size_t | renameGroup (const std::string &fromName, const std::string &toName) |
Rename a group. | |
const Name | uniqueGroupName (const Name &name) const |
Return a unique name for a group based on given name. | |
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. | |
size_t | groupOffset (const GroupIndex &index) const |
GroupIndex | groupIndex (const Name &groupName) const |
Return the group index from the name of the group. | |
GroupIndex | groupIndex (const size_t offset) const |
size_t | availableGroups () const |
size_t | unusedGroups () const |
bool | canCompactGroups () const |
Return true if there are sufficient empty slots to allow compacting. | |
size_t | unusedGroupOffset (size_t hint=std::numeric_limits< size_t >::max()) const |
Return a group offset that is not in use. | |
bool | requiresGroupMove (Name &sourceName, size_t &sourceOffset, size_t &targetOffset) const |
Determine if a move is required to efficiently compact the data and store the source name, offset and the target offset in the input parameters. | |
bool | groupIndexCollision (const Descriptor &rhs) const |
Test if there are any group names shared by both descriptors which have a different index. | |
const Name | uniqueName (const Name &name) const |
Return a unique name for an attribute array based on given name. | |
void | write (std::ostream &) const |
Serialize this descriptor to the given stream. | |
void | read (std::istream &) |
Unserialize this transform from the given stream. | |
Static Public Member Functions | |
static Ptr | create (const NamePair &) |
Create a new descriptor from a position attribute type and assumes "P" (for convenience). | |
static size_t | groupBits () |
Return number of bits occupied by a group attribute array. | |
static bool | validName (const Name &name) |
Return true if the name is valid. | |
static void | parseNames (std::vector< std::string > &includeNames, std::vector< std::string > &excludeNames, bool &includeAll, const std::string &nameStr) |
Extract each name from nameStr into includeNames, or into excludeNames if the name is prefixed with a caret. | |
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 the name is prefixed with a caret. | |
Protected Member Functions | |
void | appendTo (NameAndTypeVec &attrs) const |
Append to a vector of names and types from this Descriptor in position order. | |
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 |
An immutable object that stores name, type and AttributeSet position for a constant collection of attribute arrays.
using ConstIterator = NameToPosMap::const_iterator |
using GroupIndex = Util::GroupIndex |
using NameAndType = Util::NameAndType |
using NameAndTypeVec = Util::NameAndTypeVec |
using NameToPosMap = Util::NameToPosMap |
using Ptr = std::shared_ptr<Descriptor> |
Descriptor | ( | ) |
Descriptor | ( | const Descriptor & | ) |
Copy constructor.
|
protected |
Append to a vector of names and types from this Descriptor in position order.
size_t availableGroups | ( | ) | const |
Return the total number of available groups (group bits * number of group attributes)
bool canCompactGroups | ( | ) | const |
Return true
if there are sufficient empty slots to allow compacting.
void clearGroups | ( | ) |
Clear all groups.
size_t count | ( | const NamePair & | type | ) | const |
Return the number of attributes with this attribute type.
|
staticprotected |
Create a new descriptor from the given attribute and type name pairs and copy the group maps and metamap.
Create a new descriptor from a position attribute type and assumes "P" (for convenience).
void dropGroup | ( | const Name & | group | ) |
Drop any mapping keyed by group name.
Create a new descriptor as a duplicate with a new attribute appended.
Ptr duplicateDrop | ( | const std::vector< size_t > & | pos | ) | const |
Create a new descriptor as a duplicate with existing attributes dropped.
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.
|
inline |
Get a default value for an existing attribute.
MetaMap & getMetadata | ( | ) |
Retrieve metadata map.
const MetaMap & getMetadata | ( | ) | const |
|
inlinestatic |
Return number of bits occupied by a group attribute array.
GroupIndex groupIndex | ( | const Name & | groupName | ) | const |
Return the group index from the name of the group.
GroupIndex groupIndex | ( | const size_t | offset | ) | const |
Return the group index from the offset of the group
bool groupIndexCollision | ( | const Descriptor & | rhs | ) | const |
Test if there are any group names shared by both descriptors which have a different index.
rhs | the descriptor to compare with |
true
if an index collision exists
|
inline |
Return a reference to the name-to-position group map.
size_t groupOffset | ( | const GroupIndex & | index | ) | const |
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.
bool hasDefaultValue | ( | const Name & | name | ) | const |
Return true if the attribute has a default value.
bool hasGroup | ( | const Name & | group | ) | const |
Return true
if group exists.
bool hasSameAttributes | ( | const Descriptor & | rhs | ) | const |
Return true if this descriptor contains the same attributes as the given descriptor, ignoring attribute order
|
protected |
|
inline |
Return a reference to the name-to-position map.
size_t memUsage | ( | ) | const |
Return the number of bytes of memory used by this attribute set.
|
inline |
Return true if this descriptor is not equal to the given one.
bool 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 the name is prefixed with a caret.
nameStr | the input string of names |
includeNames | on exit, the list of names that are not prefixed with a caret |
excludeNames | on exit, the list of names that are prefixed with a caret |
includeAll | on exit, true if a "*" wildcard is present in the includeNames |
|
static |
Extract each name from nameStr into includeNames, or into excludeNames if the name is prefixed with a caret.
void pruneUnusedDefaultValues | ( | ) |
void read | ( | std::istream & | ) |
Unserialize this transform from the given stream.
void removeDefaultValue | ( | const Name & | name | ) |
size_t rename | ( | const std::string & | fromName, |
const std::string & | toName ) |
Rename an attribute array.
size_t renameGroup | ( | const std::string & | fromName, |
const std::string & | toName ) |
Rename a group.
bool requiresGroupMove | ( | Name & | sourceName, |
size_t & | sourceOffset, | ||
size_t & | targetOffset ) const |
Determine if a move is required to efficiently compact the data and store the source name, offset and the target offset in the input parameters.
sourceName | source name |
sourceOffset | source offset |
targetOffset | target offset |
true
if move is required to compact the data Set a default value for an existing attribute.
void setGroup | ( | const Name & | group, |
const size_t | offset, | ||
const bool | checkValidOffset = false ) |
Define a group name to offset mapping.
group | group name |
offset | group offset |
checkValidOffset | throws if offset out-of-range or in-use |
|
inline |
Return the number of attributes in this descriptor.
const NamePair & type | ( | size_t | pos | ) | const |
Return the name of the attribute array's type.
Return a unique name for a group based on given name.
Return a unique name for an attribute array based on given name.
size_t unusedGroupOffset | ( | size_t | hint = std::numeric_limits< size_t >::max() | ) | const |
Return a group offset that is not in use.
hint | if provided, request a specific offset as a hint |
size_t unusedGroups | ( | ) | const |
Return the number of empty group slots which correlates to the number of groups that can be stored without increasing the number of group attribute arrays
|
static |
Return true if the name is valid.
const Name & valueType | ( | size_t | pos | ) | const |
Return the name of the attribute array's type.
void write | ( | std::ostream & | ) | const |
Serialize this descriptor to the given stream.
|
friend |