HDK
|
A simple ATI to store aribtrary "blobs" of data in an attribute. More...
#include <GA_ATIBlobArray.h>
Public Member Functions | |
GA_ATIBlobArray (const GA_AttributeType &type, const GA_IndexMap &index_map, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size) | |
~GA_ATIBlobArray () override | |
int64 | getMemoryUsage (bool inclusive) const override |
Report approximate memory usage. More... | |
void | countMemory (UT_MemoryCounter &counter, bool inclusive) const override |
void | reconstructElementBlock (GA_Offset offset, GA_Offset nelements) override |
exint | findMaximumArrayLength () const |
int | getTupleSize () const |
Get the tuple size. More... | |
bool | setTupleSize (int size) |
int | entries () const |
Return the entries in the blob container. More... | |
GA_BlobIndex | getMaximumIndex () const |
int | capacity () const |
Return the capacity of the blob container. More... | |
void | getBlobIndex (UT_Array< GA_BlobIndex > &indices, GA_Offset offset) const |
Look up a blob handle by offset. More... | |
bool | setBlobIndex (const UT_Array< GA_BlobIndex > &indices, GA_Offset offset) |
Store a new blob_index at the given offset. More... | |
void | getBlob (UT_Array< GA_BlobRef > &blobs, GA_Offset offset) const |
Get the blob associated with a given offset into the array. More... | |
bool | setBlob (const UT_Array< GA_BlobRef > &blobs, GA_Offset offset) |
Store a new blob at the given offset. More... | |
bool | replaceBlob (GA_BlobIndex handle, const GA_BlobRef &blob) |
Replace a blob in the blob container with a new blob value. More... | |
GA_BlobRef | lookupBlob (GA_BlobIndex handle) const |
Look up a blob given its handle. More... | |
GA_BlobRef | getOrderedBlob (exint idx) const |
Lookup a blob given an ordered index. More... | |
void | compactStorage () override |
fpreal | getStorageOccupancy () |
Get a measure of the vacancy entropy of the storage container. This. More... | |
WriteConcurrence | getSupportedWriteConcurrence () const override |
const GA_AIFBlobArray * | getAIFBlobArray () const override |
Return the attribute's blob array interface or NULL. More... | |
const GA_AIFMerge * | getAIFMerge () const override |
Return the attribute's merge interface or NULL. More... | |
const GA_AIFCompare * | getAIFCompare () const override |
Return the attribute's comparison interface or NULL. More... | |
const GA_AIFCopyData * | getAIFCopyData () const override |
Return the attribute's copy interface or NULL. More... | |
const GA_AIFInterp * | getAIFInterp () const override |
Return the attribute's interpolation interface or NULL. More... | |
bool | jsonSave (UT_JSONWriter &w, const GA_SaveMap &s, const char *blobtoken="data") const |
bool | jsonLoad (UT_JSONParser &p, const GA_BlobDataLoader &blobloader, const GA_LoadMap &load, const char *blobtoken="data") |
int | extractBlobs (UT_Array< GA_BlobRef > &blobs, UT_IntArray &handles) const |
bool | setArraySize (GA_Offset new_size) override |
Grow or shrink the array size. More... | |
virtual exint | arraySize (GA_Offset item) const |
Return the array size for a given offset. More... | |
void | tryCompressAllPages (GA_Offset start_offset=GA_Offset(0), GA_Offset end_offset=GA_INVALID_OFFSET) override |
Try to compress data pages. More... | |
void | hardenAllPages (GA_Offset start_offset=GA_Offset(0), GA_Offset end_offset=GA_INVALID_OFFSET) override |
Harden data pages. More... | |
bool | matchesStorage (const GA_Attribute *that) const override |
void | replace (const GA_Attribute &src) override |
void | defragment (const GA_Defragment &defrag) override |
Public Member Functions inherited from GA_Attribute | |
GA_Attribute (const GA_AttributeType &type, const GA_IndexMap &index_map, GA_AttributeScope scope, const UT_StringHolder &name) | |
virtual | ~GA_Attribute () |
SYS_FORCE_INLINE const GA_AttributeType & | getType () const |
SYS_FORCE_INLINE const GA_IndexMap & | getIndexMap () const |
SYS_FORCE_INLINE const GA_Detail & | getDetail () const |
SYS_FORCE_INLINE GA_Detail & | getDetail () |
SYS_FORCE_INLINE GA_AttributeOwner | getOwner () const |
SYS_FORCE_INLINE GA_AttributeScope | getScope () const |
SYS_FORCE_INLINE bool | isGroup () const |
SYS_FORCE_INLINE GA_TypeInfo | getTypeInfo () const |
SYS_FORCE_INLINE void | setTypeInfo (GA_TypeInfo type) |
bool | shouldInterpretAsTexCoord (bool allow_float2=false) const |
GA_StorageClass | getStorageClass () const |
Returns the approximate type of the attribute. More... | |
int | getTupleSize () const |
Size of the AIFTuple, if it exists. If it doesn't, 1. More... | |
SYS_FORCE_INLINE const UT_StringHolder & | getName () const |
SYS_FORCE_INLINE const UT_StringHolder & | getFullName () const |
SYS_FORCE_INLINE GA_DataId | getDataId () const |
SYS_FORCE_INLINE void | assignNewDataId () |
SYS_FORCE_INLINE void | bumpDataId () |
SYS_FORCE_INLINE void | clearDataId () |
SYS_FORCE_INLINE void | cloneDataId (const GA_Attribute &src, bool allow_clear=false) |
SYS_FORCE_INLINE void | cloneOrBumpDataId (const GA_Attribute &src, bool allow_clear=false) |
NOTE: Just call cloneDataId(src). More... | |
virtual const GA_AIFDelta * | getAIFDelta () const |
Return the attribute's delta interface or NULL. More... | |
virtual const GA_AIFTuple * | getAIFTuple () const |
Return the attribute's tuple interface or NULL. More... | |
virtual const GA_AIFMath * | getAIFMath () const |
Return the attribute's math interface or NULL. More... | |
virtual const GA_AIFBlob * | getAIFBlob () const |
Return the attribute's blob interface or NULL. More... | |
virtual const GA_AIFStringTuple * | getAIFStringTuple () const |
Return the attribute's string tuple interface or NULL. More... | |
virtual const GA_AIFSharedStringTuple * | getAIFSharedStringTuple () const |
Return the attribute's shared string tuple interface or NULL. More... | |
virtual const GA_AIFSharedStringArray * | getAIFSharedStringArray () const |
Return the attribute's shared string array interface or NULL. More... | |
virtual const GA_AIFSharedDictTuple * | getAIFSharedDictTuple () const |
Return the attribute's shared options tuple interface or NULL. More... | |
virtual const GA_AIFSharedDictArray * | getAIFSharedDictArray () const |
Return the attribute's shared options tuple interface or NULL. More... | |
virtual const GA_AIFIndexPair * | getAIFIndexPair () const |
Return the attribute's index pair interface or NULL. More... | |
virtual const GA_AIFBlindData * | getAIFBlindData () const |
Return the attribute's blind data interface or NULL. More... | |
virtual const GA_AIFEdit * | getAIFEdit () const |
Return the attribute's edit interface or NULL. More... | |
virtual const GA_AIFNumericArray * | getAIFNumericArray () const |
Return the attribute's arraydata interface or NULL. More... | |
virtual const GA_AIFStat * | getAIFStat () const |
template<typename T > | |
const T * | getAIF () const |
Generic method for getting an AIF by type. More... | |
const GA_AttributeOptions & | getOptions () const |
GA_AttributeOptions & | getOptions () |
void | setNonTransforming (bool val) |
bool | needsTransform (bool include_P=true) const |
bool | isDetached () const |
void | mergeOptions (const GA_AttributeOptions &src) |
Merge the options passed in with the options in the attribute. More... | |
bool | importOption (const char *name, int &v) const |
bool | importOption (const char *name, bool &v) const |
bool | importOption (const char *name, fpreal32 &v) const |
bool | importOption (const char *name, fpreal64 &v) const |
bool | importOption (const char *name, UT_String &v) const |
void | setTailInitialization (bool onoff) |
bool | isTailInitialization () const |
Check whether the attribute is set to tail initialization. More... | |
void | reconstructElement (GA_Offset offset) |
virtual void | batchDeletion () |
GA_Attribute * | clone (const GA_IndexMap &index_map, const UT_StringHolder &name, bool clone_options) const |
bool | jsonSaveDefinition (UT_JSONWriter &w) const |
Save the GA_Attribute-Definition section. More... | |
virtual const GA_AIFJSON * | getAIFJSON () const |
Return the AIF to handle saving/loading of the private data section. More... | |
virtual int | getSaveVersion () const |
virtual bool | debugValidateArrayCapacity (GA_Offset sz) const |
Debug validation of allocated array size. More... | |
virtual void | copyNonStorageMetadata (const GA_Attribute *that) |
SYS_FORCE_INLINE GA_AttributeProxyHandle | getProxy () |
SYS_FORCE_INLINE GA_ConstAttributeProxyHandle | getProxy () const |
void | setExportName (const char *external_name) |
bool | hasExportName () const |
std::string | getExportName () const |
GA_CEAttribute * | getCEAttribute (GA_StorageClass storage, int &tuplesize, bool isarray, bool read, bool write) |
GA_CEAttribute * | getCEAttribute (GA_StorageClass storage, GA_Precision precision, int &tuplesize, bool isarray, bool read, bool write) |
void | setCEAttribute (GA_CEAttribute *ceattrib, bool leave_on_gpu=false) |
void | flushCEWriteCaches (bool clearwriteback=true) |
bool | hasPendingCEWriteBack () const |
void | flushCECaches () |
Remove all CE Caches, copying back any marked as written to. More... | |
void | stealCEAttribute (const GA_Attribute &src) |
bool | isActivelyStreamed () const |
void | setActivelyStreamed (bool isstreaming) |
bool | existedPriorToStream () const |
void | setExistedPriorToStream (bool preexisted) |
virtual bool | copy (GA_Offset desti, GA_Offset srci) |
virtual bool | copy (GA_Offset desti, const GA_Attribute &src, GA_Offset srci) |
virtual bool | copy (const GA_Range &destrange, const GA_Range &srcrange) |
virtual bool | copy (const GA_Range &destrange, const GA_Attribute &src, const GA_Range &srcrange) |
virtual bool | fill (const GA_Range &destrange, GA_Offset srci) |
virtual bool | fill (const GA_Range &destrange, const GA_Attribute &src, GA_Offset srci) |
bool | hasFlag (AttribFlag flag) const |
void | setFlag (AttribFlag flag, bool onoff) |
Static Public Member Functions | |
static void | registerType () |
static SYS_FORCE_INLINE const UT_StringHolder & | getTypeName () |
static SYS_FORCE_INLINE const GA_AttributeType & | getType () |
static SYS_FORCE_INLINE bool | isType (const GA_Attribute *attrib) |
static SYS_FORCE_INLINE GA_ATIBlobArray * | cast (GA_Attribute *attrib) |
static SYS_FORCE_INLINE const GA_ATIBlobArray * | cast (const GA_Attribute *attrib) |
static GA_Attribute * | create (const GA_IndexMap &index_map, GA_AttributeScope scope, const UT_StringHolder &name, const GA_AttributeOptions *attribute_options=NULL) |
static GA_Attribute * | create (const GA_IndexMap &index_map, const UT_StringHolder &name) |
Static Public Member Functions inherited from GA_Attribute | |
static bool | jsonLoadDefinition (UT_JSONParser &p, GA_AttributeScope &scope, UT_WorkBuffer &type, UT_WorkBuffer &name, int64 &version, GA_AttributeOptions &options) |
Load the GA_Attribute-Definition section. More... | |
static GA_DataId | nextDataId () |
Protected Attributes | |
GA_ArrayDataArray | myHandles |
GA_BlobContainer | myBlobs |
Blob references. This is protected for convenience to sub-classes. More... | |
Additional Inherited Members | |
Public Types inherited from GA_Attribute | |
enum | WriteConcurrence { WRITE_CONCURRENCE_NONE, WRITE_CONCURRENCE_PAGE, WRITE_CONCURRENCE_ELEMENT } |
enum | AttribFlag { FLAG_TAIL_INITIALIZE = 1, FLAG_STREAM_ACTIVE = 2, FLAG_STREAM_NOPREEXIST = 4 } |
Static Protected Member Functions inherited from GA_Attribute | |
static bool | checkGlobalOverwrite (const GA_MergeMap &map, const GA_Attribute *attrib) |
A simple ATI to store aribtrary "blobs" of data in an attribute.
The blob attribute type stores arbitrary blobs (GA_Blob) of data for each element in the attribute array. The blobs are stored as reference counted shared objects, meaning the blobs may be shared between multiple elements of the array. Each blob is referenced by a unique integer handle.
It's also possible to get a list of all the blobs stored by the attribute
By default, the array is filled with NULL pointers.
This class is very simple and only provides a minimal interface. Blob attributes are not saved/loaded, and there is minimal access to the blobs.
Users may sub-class from this ATI to create more complicated classes which provide alternate interfaces.
This attribute looks for options (GA_Attribute::getOptions())
Definition at line 75 of file GA_ATIBlobArray.h.
GA_ATIBlobArray::GA_ATIBlobArray | ( | const GA_AttributeType & | type, |
const GA_IndexMap & | index_map, | ||
GA_AttributeScope | scope, | ||
const UT_StringHolder & | name, | ||
int | tuple_size | ||
) |
|
override |
|
protected |
The addBlobBuffer()/delBlobBuffer() methods are added solely for the corresponding methods in GA_AIFBlob.
Return the array size for a given offset.
|
inline |
Return the capacity of the blob container.
Definition at line 144 of file GA_ATIBlobArray.h.
|
static |
Definition at line 244 of file GA_ATIStringArray.h.
|
static |
Definition at line 251 of file GA_ATIStringArray.h.
|
overridevirtual |
This method will "compact" the attribute container, possibly changing all the handles in the attribute data.
Reimplemented from GA_Attribute.
|
protected |
Methods to implement copying of data for AIFCopyData
|
protected |
Methods to implement copying of data for AIFCopyData
|
overridevirtual |
Count memory usage using a UT_MemoryCounter in order to count shared memory correctly. If inclusive is true, the size of this object is counted, else only memory owned by this object is counted. If this is pointed to by the calling object, inclusive should be true. If this is contained in the calling object, inclusive should be false. (Its memory was already counted in the size of the calling object.)
NOTE: If you're implementing this in a direct subclass of GA_Attribute, call getBaseMemoryUsage() to get the amount of memory in the base class. If in a more distant descendant class, call Base::countMemory(counter, false) to count the memory in Base and above, excluding sizeof(Base).
Implements GA_Attribute.
|
static |
|
inlinestatic |
Definition at line 96 of file GA_ATIBlobArray.h.
|
inlineoverridevirtual |
Interface for defragmentation
Implements GA_Attribute.
Definition at line 116 of file GA_ATIBlobArray.h.
|
protected |
The addBlobBuffer()/delBlobBuffer() methods are added solely for the corresponding methods in GA_AIFBlob.
Callback method to destruct an offset.
Reimplemented from GA_Attribute.
|
overrideprotectedvirtual |
Create a new ATIBlob attribute. Sub-classes must implement this.
Reimplemented from GA_Attribute.
Reimplemented in GA_ATIStringArray, and GA_ATIDictArray.
|
inline |
Return the entries in the blob container.
Definition at line 134 of file GA_ATIBlobArray.h.
|
inline |
Convenience function to extract all the blobs (and their handles) The string handles are guaranteed to be in ascending order, but may or may not be contiguous.
Definition at line 237 of file GA_ATIBlobArray.h.
|
protected |
Methods to implement copying of data for AIFCopyData
|
inline |
Definition at line 123 of file GA_ATIBlobArray.h.
|
inlineoverridevirtual |
Return the attribute's blob array interface or NULL.
Reimplemented from GA_Attribute.
Definition at line 197 of file GA_ATIBlobArray.h.
|
inlineoverridevirtual |
Return the attribute's comparison interface or NULL.
Reimplemented from GA_Attribute.
Definition at line 201 of file GA_ATIBlobArray.h.
|
inlineoverridevirtual |
Return the attribute's copy interface or NULL.
Reimplemented from GA_Attribute.
Definition at line 203 of file GA_ATIBlobArray.h.
|
inlineoverridevirtual |
Return the attribute's interpolation interface or NULL.
Reimplemented from GA_Attribute.
Definition at line 205 of file GA_ATIBlobArray.h.
|
inlineoverridevirtual |
Return the attribute's merge interface or NULL.
Reimplemented from GA_Attribute.
Definition at line 199 of file GA_ATIBlobArray.h.
|
inline |
Get the blob associated with a given offset into the array.
Definition at line 155 of file GA_ATIBlobArray.h.
void GA_ATIBlobArray::getBlobIndex | ( | UT_Array< GA_BlobIndex > & | indices, |
GA_Offset | offset | ||
) | const |
Look up a blob handle by offset.
|
inline |
Return the maximum index of any blob in the container. This may be more than the number of blobs in the container. If the maximum index is less than 0, there are no blobs in the container.
Definition at line 140 of file GA_ATIBlobArray.h.
|
overridevirtual |
Report approximate memory usage.
Implements GA_Attribute.
|
inline |
Lookup a blob given an ordered index.
Definition at line 181 of file GA_ATIBlobArray.h.
|
inline |
Get a measure of the vacancy entropy of the storage container. This.
Definition at line 189 of file GA_ATIBlobArray.h.
|
inlineoverridevirtual |
Adding blobs is thread-safe, so we're only subject to GA_DataArray limitations.
Implements GA_Attribute.
Definition at line 194 of file GA_ATIBlobArray.h.
|
inline |
Get the tuple size.
Definition at line 127 of file GA_ATIBlobArray.h.
|
inlinestatic |
Definition at line 83 of file GA_ATIBlobArray.h.
|
inlinestatic |
Definition at line 80 of file GA_ATIBlobArray.h.
|
overridevirtual |
Harden data pages.
Implements GA_Attribute.
|
protectedvirtual |
Interface used by AIFCompare. By default, this will use the blob key comparison to determine equality.
|
protectedvirtual |
Interface used by AIFCompare. By default, this will use the blob key comparison to determine equality.
|
static |
Definition at line 229 of file GA_ATIStringArray.h.
bool GA_ATIBlobArray::jsonLoad | ( | UT_JSONParser & | p, |
const GA_BlobDataLoader & | blobloader, | ||
const GA_LoadMap & | load, | ||
const char * | blobtoken = "data" |
||
) |
Load blobs from a JSON stream. This method can be called by sub-classes to load their data from a JSON stream. The class must provide a GA_BlobDataLoader class which is used to create and load new blob data.
p | The JSON parser |
blobloader | A class to create and load blobs |
load | Load options |
blobtoken | The token used to identify the blob data |
bool GA_ATIBlobArray::jsonSave | ( | UT_JSONWriter & | w, |
const GA_SaveMap & | s, | ||
const char * | blobtoken = "data" |
||
) | const |
Save blobs to a JSON stream. This method can be called by sub-classes to save blob data to a JSON stream. Since the GA_ATIBlob class doesn't provide an GA_AIFJSON interface, data is not saved/loaded by default.
w | The JSON writer |
s | The save map options |
blobtoken | The token used to identify the blob data |
|
inline |
Look up a blob given its handle.
Definition at line 177 of file GA_ATIBlobArray.h.
|
inlineoverridevirtual |
Returns true iff that is an attribute whose content can be copied from this without any type conversions. This is important to avoid reallocation of an attribute if its storage type, including tuple size, matches the source attribute exactly.
Reimplemented from GA_Attribute.
Definition at line 262 of file GA_ATIBlobArray.h.
|
protected |
Base class implementation of GA_AIFMerge::addDestination()
|
protected |
Base class implementation of GA_AIFMerge::copyArray()
|
protected |
GA_AIFMerge Base class implementation of GA_AIFMerge::destroyDestination()
|
protected |
Base class implementation of GA_AIFMerge::growArray()
|
overrideprotectedvirtual |
Blob attributes need each element to properly destruct for accurate reference counting.
Reimplemented from GA_Attribute.
|
overridevirtual |
When the array size is grown, attributes should initialize the value appropriately. When elements are reused, however, reconstructElementBlock is called. This happens if an element is deleted and then a new element is allocated (using the existing slot)
Implements GA_Attribute.
|
static |
|
overridevirtual |
This replaces the entirety of this attribute's content and non- storage metadata (except the name) with that of the src attribute. matchesStorage(src) should already return true. This is primarily for use by GA_AttributeSet::replace(). NOTE: The internal content sizes may not match exactly if the attribute type may overallocate, but the sizes should be such that any real data will fit in the destination, so be careful and deal with the myTailInitialize flag appropriately if any extra elements aren't equal to the default.
Implements GA_Attribute.
bool GA_ATIBlobArray::replaceBlob | ( | GA_BlobIndex | handle, |
const GA_BlobRef & | blob | ||
) |
Replace a blob in the blob container with a new blob value.
|
overridevirtual |
Grow or shrink the array size.
Implements GA_Attribute.
bool GA_ATIBlobArray::setBlob | ( | const UT_Array< GA_BlobRef > & | blobs, |
GA_Offset | offset | ||
) |
Store a new blob at the given offset.
bool GA_ATIBlobArray::setBlobIndex | ( | const UT_Array< GA_BlobIndex > & | indices, |
GA_Offset | offset | ||
) |
Store a new blob_index at the given offset.
|
inline |
Definition at line 129 of file GA_ATIBlobArray.h.
|
overridevirtual |
Try to compress data pages.
Implements GA_Attribute.
|
protected |
Blob references. This is protected for convenience to sub-classes.
Definition at line 345 of file GA_ATIBlobArray.h.
|
protected |
Array of handles. The default value is [] This is protected for convenience to sub-classes.
Definition at line 342 of file GA_ATIBlobArray.h.