7 #ifndef PXR_EXEC_VDF_VECTOR_DATA_H
8 #define PXR_EXEC_VDF_VECTOR_DATA_H
22 class Vt_ArrayForeignDataSource;
36 static const size_t _SmallBufferSize =
sizeof(size_t)*3 +
sizeof(
void *);
39 static const size_t _DataHolderSize = _SmallBufferSize +
sizeof(
void*);
42 static constexpr
size_t _VectorSharingSize = 5000;
62 virtual const std::type_info &GetTypeInfo()
const = 0;
69 virtual void NewEmpty(
size_t size,
DataHolder *destData)
const = 0;
76 virtual void NewSingle(
DataHolder *destData)
const = 0;
83 virtual void NewSparse(
size_t size,
size_t first,
size_t last,
91 virtual void NewDense(
size_t size,
DataHolder *destData)
const = 0;
98 virtual void MoveInto(
DataHolder *destData) = 0;
104 virtual void Clone(
DataHolder *destData)
const = 0;
137 virtual void Expand(
size_t first,
size_t last);
142 virtual size_t GetSize()
const = 0;
146 virtual size_t GetNumStoredElements()
const = 0;
153 virtual Vt_ArrayForeignDataSource* GetSharedSource()
const;
158 virtual bool IsSharable()
const;
181 Layout layout_ = Info::Layout::Unboxed,
182 Ownership ownership_ = Info::Ownership::Exclusive) :
187 compressedIndexMapping(compressedIndexMapping_),
189 ownership(ownership_)
216 virtual Info GetInfo() = 0;
221 virtual size_t EstimateElementMemory()
const = 0;
232 static bool ShouldStoreCompressed(
241 void DebugPrint(
const VdfMask &
mask, std::ostream *o)
const;
Vdf_FixedSizePolymorphicHolder< Vdf_VectorData, _DataHolderSize > DataHolder
#define PXR_NAMESPACE_OPEN_SCOPE
Vdf_CompressedIndexMapping * compressedIndexMapping
A VdfMask is placed on connections to specify the data flowing through them.
Abstract base class for storing data in a VdfVector.
Fast, compressed bit array which is capable of performing logical operations without first decompress...
__hostdev__ uint64_t last(uint32_t i) const
LeafData & operator=(const LeafData &)=delete
#define PXR_NAMESPACE_CLOSE_SCOPE
Info(void *data_, size_t size_, size_t first_=0, size_t last_=0, Vdf_CompressedIndexMapping *compressedIndexMapping_=NULL, Layout layout_=Info::Layout::Unboxed, Ownership ownership_=Info::Ownership::Exclusive)