7 #ifndef PXR_EXEC_VDF_VECTOR_H
8 #define PXR_EXEC_VDF_VECTOR_H
32 #include <type_traits>
101 "size mismatch: rhs.GetSize() (%zu) != mask.GetSize() (%zu)",
122 }
else if (size == 1){
133 rhs._data.Get()->NewEmpty(0, &
_data);
134 rhs._data.Get()->MoveInto(&
_data);
156 return _data.
Get()->GetNumStoredElements();
161 template<
typename TYPE>
176 template <
typename TYPE>
188 template <
typename TYPE>
194 template <
typename TYPE>
203 template <
typename TYPE>
217 template<
typename TYPE>
243 template<
typename TYPE>
359 return _data.
Get()->GetInfo().ownership ==
375 template <
typename T>
383 return _DecompressAsVtArray(
384 reinterpret_cast<T *>(info.
data),
394 access =
reinterpret_cast<BoxedVectorType *
>(info.
data)->
data();
396 access =
reinterpret_cast<T *
>(info.
data) - info.
first;
409 template <
typename TYPE >
443 _accessor(data, info)
455 template<
typename TYPE>
475 template <
typename TYPE>
498 const TYPE&
operator[](
size_t i)
const {
return _accessor[i]; }
509 _accessor(data, info)
520 template <
typename TYPE>
531 template <
typename TYPE>
540 template<
typename TYPE>
544 !Vdf_IsBoxedContainer<TYPE>,
545 "VdfVector::Holds cannot check for boxed-ness");
580 rhs._data.Get()->MoveInto(&
_data);
594 return _data.
Get()->EstimateElementMemory();
620 _data(data), _mask(mask)
659 template <
typename T>
671 if (
size_t dataIdx; _ComputeCompressedExtractionIndex(
672 indexMapping, size, offset, &dataIdx)) {
673 const T*
const src = access + dataIdx;
674 array.assign(src, src+size);
685 static bool _ComputeCompressedExtractionIndex(
693 static void _PostTypeError(
694 const std::type_info &thisTypeInfo,
695 const std::type_info &otherTypeInfo);
698 const std::type_info &otherTypeInfo)
const
700 const std::type_info &thisTypeInfo = _GetTypeInfo();
702 _PostTypeError(thisTypeInfo, otherTypeInfo);
706 void _CheckType(
const VdfVector &rhs)
const
708 _CheckType(rhs._GetTypeInfo());
711 template <
typename TYPE>
712 void _CheckType()
const
714 _CheckType(
typeid(TYPE));
717 const std::type_info &_GetTypeInfo()
const
size_t GetNumValues() const
DebugPrintable GetDebugPrintable(const VdfMask &mask) const
void Set(const Vdf_BoxedContainer< TYPE > &&data)
ReadWriteAccessor< TYPE > GetReadWriteAccessor() const
void Set(Vdf_BoxedContainer< TYPE > &&data)
void Set(Vdf_BoxedContainer< TYPE > &data)
#define PXR_NAMESPACE_OPEN_SCOPE
Vdf_CompressedIndexMapping * compressedIndexMapping
VdfVector(const VdfVector &rhs)
VdfVector(VdfVector &&rhs)
A VdfMask is placed on connections to specify the data flowing through them.
size_t EstimateElementMemory() const
Abstract base class for storing data in a VdfVector.
Vdf_VectorSubrangeAccessor< TYPE > GetSubrangeAccessor() const
VdfMask::Bits const & GetBits() const
Fast, compressed bit array which is capable of performing logical operations without first decompress...
Implements a Vdf_VectorData storage the supports reference counted sharing of other vector implementa...
VtArray< T > ExtractAsVtArray(const size_t size, const int offset) const
void Copy(const VdfVector &rhs, const VdfMask &mask)
Vdf_VectorData::DataHolder _data
VdfVector(const VdfVector &rhs, const VdfMask &mask)
GLuint GLint GLboolean GLint GLenum access
TYPE & operator[](size_t i) const
VDF_API friend std::ostream & operator<<(std::ostream &, const DebugPrintable &)
VDF_API void Merge(const VdfVector &rhs, const VdfMask::Bits &bits)
virtual VDF_API Vt_ArrayForeignDataSource * GetSharedSource() const
VdfVector(const VdfVector &rhs, const VdfMask &mask, ConstructBoxedCopyTag)
Implements a Vdf_VectorData storage that holds a boxed element.
size_t GetNumStoredElements() const
VdfVector & operator=(const VdfVector &rhs)
VdfVector & operator=(VdfVector &&rhs)
void Resize(const VdfMask::Bits &bits)
ReadAccessor< TYPE > GetReadAccessor() const
Implements a Vdf_VectorData storage that is always empty.
Base const * Get() const
Returns a Base pointer to the held instance.
size_t GetNumValues() const
#define PXR_NAMESPACE_CLOSE_SCOPE
void Merge(const VdfVector &rhs, const VdfMask &mask)
Implements a Vdf_VectorData storage that is holds a single element.
const TYPE & operator[](size_t i) const
PXR_NAMESPACE_OPEN_SCOPE bool TfSafeTypeCompare(const std::type_info &t1, const std::type_info &t2)
ReadWriteAccessor()=default
static VDF_API void Detach(Vdf_VectorData::DataHolder *data)
size_t GetNumValues() const
void Set(const Vdf_BoxedContainer< TYPE > &data)
VdfVector(const VdfVector &rhs, size_t size)