Go to the documentation of this file.
11 #ifndef OPENVDB_AX_COMPILER_LEAF_LOCAL_DATA_HAS_BEEN_INCLUDED
12 #define OPENVDB_AX_COMPILER_LEAF_LOCAL_DATA_HAS_BEEN_INCLUDED
28 namespace codegen_internal {
45 using UniquePtr = std::unique_ptr<PointLeafLocalData>;
52 using LeafNode = openvdb::points::PointDataTree::LeafNodeType;
83 static const size_t maxGroupsInArray =
84 #if (OPENVDB_LIBRARY_MAJOR_VERSION_NUMBER > 7 || \
85 (OPENVDB_LIBRARY_MAJOR_VERSION_NUMBER >= 7 && \
86 OPENVDB_LIBRARY_MINOR_VERSION_NUMBER >= 1))
87 points::AttributeSet::Descriptor::groupBits();
90 points::point_group_internal::GroupInfo::groupBits();
93 if (mArrays.empty() || mOffset == maxGroupsInArray) {
102 std::unique_ptr<GroupHandleT>& handle = mHandles[name];
114 const auto iter = mHandles.find(name);
115 if (iter == mHandles.end())
return nullptr;
116 return iter->second.get();
123 inline bool hasGroup(
const std::string& name)
const {
124 return mHandles.find(name) != mHandles.end();
133 inline void getGroups(std::set<std::string>& groups)
const {
134 for (
const auto& iter : mHandles) {
135 groups.insert(iter.first);
143 for (
auto& array : mArrays) array->compact();
162 if (arrayMapIter == mStringMap.end())
return false;
163 const auto iter = arrayMapIter->second.find(idx);
164 if (iter == arrayMapIter->second.end())
return false;
178 mStringMap[array][idx] = data;
189 const auto arrayMapIter = mStringMap.find(array);
190 if (arrayMapIter == mStringMap.end())
return;
191 arrayMapIter->second.erase(idx);
192 if (arrayMapIter->second.empty()) mStringMap.erase(arrayMapIter);
203 for (
const auto& arrayIter : mStringMap) {
204 for (
const auto& iter : arrayIter.second) {
205 inserter.
insert(iter.second);
208 return !mStringMap.empty();
219 const size_t mPointCount;
220 std::vector<std::unique_ptr<GroupArrayT>> mArrays;
222 std::map<std::string, std::unique_ptr<GroupHandleT>> mHandles;
223 StringArrayMap mStringMap;
233 #endif // OPENVDB_AX_COMPILER_LEAF_LOCAL_DATA_HAS_BEEN_INCLUDED
void getGroups(std::set< std::string > &groups) const
Populate a set with all the groups which have been inserted into this object. Used to compute a final...
Definition: PointLeafLocalData.h:133
Index32 Index
Definition: openvdb/Types.h:32
TypedAttributeArray< GroupType, GroupCodec > GroupAttributeArray
Definition: AttributeGroup.h:40
GroupHandleT * getOrInsert(const std::string &name)
Group methods.
Definition: PointLeafLocalData.h:78
Point group manipulation in a VDB Point Grid.
GroupHandleT * get(const std::string &name) const
Return a group write handle to a specific group name if it exists. Returns a nullptr if no group exis...
Definition: PointLeafLocalData.h:112
bool insertNewStrings(points::StringMetaInserter &inserter) const
Insert all new point strings stored across all collected string attribute arrays into a StringMetaIns...
Definition: PointLeafLocalData.h:202
std::map< points::AttributeArray *, PointStringMap > StringArrayMap
Definition: PointLeafLocalData.h:50
openvdb::points::GroupAttributeArray GroupArrayT
Definition: PointLeafLocalData.h:46
bool getNewStringData(const points::AttributeArray *array, const uint64_t idx, std::string &data) const
String methods.
Definition: PointLeafLocalData.h:160
Library and file format version numbers.
Attribute Array storage templated on type and compression codec.
PointLeafLocalData(const size_t count)
Construct a new data object to keep track of various data objects created per leaf by the point compu...
Definition: PointLeafLocalData.h:60
uint8_t GroupType
Definition: AttributeSet.h:31
Various functions can request the use and initialization of point data from within the kernel that do...
Definition: PointLeafLocalData.h:44
Point attribute manipulation in a VDB Point Grid.
Attribute-owned data structure for points. Point attributes are stored in leaf nodes and ordered by v...
void compact()
Compact all arrays stored on this object. This does not invalidate any active write handles.
Definition: PointLeafLocalData.h:142
void removeNewStringData(points::AttributeArray *array, const uint64_t idx)
Remove any new string data associated with a particular point on a particular string attribute array....
Definition: PointLeafLocalData.h:188
void setNewStringData(points::AttributeArray *array, const uint64_t idx, const std::string &data)
Set new string data associated with a particular point on a particular string attribute array.
Definition: PointLeafLocalData.h:177
#define OPENVDB_USE_VERSION_NAMESPACE
Definition: version.h:153
openvdb::points::PointDataTree::LeafNodeType LeafNode
Definition: PointLeafLocalData.h:52
bool hasGroup(const std::string &name) const
Return true if a valid group handle exists.
Definition: PointLeafLocalData.h:123
std::unique_ptr< PointLeafLocalData > UniquePtr
Definition: PointLeafLocalData.h:45
#define OPENVDB_VERSION_NAME
The version namespace name for this library version.
Definition: version.h:101
openvdb::points::GroupWriteHandle GroupHandleT
Definition: PointLeafLocalData.h:47
Base class for storing attribute data.
Definition: AttributeArray.h:93
Definition: openvdb/Exceptions.h:13
const StringArrayMap & getStringArrayMap() const
Returns a const reference to the string array map.
Definition: PointLeafLocalData.h:213
std::map< uint64_t, std::string > PointStringMap
Definition: PointLeafLocalData.h:49