Loading...
Searching...
No Matches
vectorImpl_Empty.h
1//
2// Copyright 2025 Pixar
3//
4// Licensed under the terms set forth in the LICENSE.txt file available at
5// https://openusd.org/license.
6//
7#ifndef PXR_EXEC_VDF_VECTOR_IMPL_EMPTY_H
8#define PXR_EXEC_VDF_VECTOR_IMPL_EMPTY_H
9
10#include "pxr/pxr.h"
11
12#include "pxr/exec/vdf/api.h"
13#include "pxr/exec/vdf/boxedContainerTraits.h"
14#include "pxr/exec/vdf/forEachCommonType.h"
15#include "pxr/exec/vdf/vectorDataTyped.h"
16
17PXR_NAMESPACE_OPEN_SCOPE
18
25template<typename TYPE>
26class VDF_API_TYPE Vdf_VectorImplEmpty final
27 : public Vdf_VectorDataTyped<TYPE>
28{
29 static_assert(
30 !Vdf_IsBoxedContainer<TYPE>,
31 "Only Vdf_VectorImplBoxed may hold boxed values");
32
33public :
34
35 explicit Vdf_VectorImplEmpty(size_t size) : _size(size) {}
36
37 Vdf_VectorImplEmpty(const Vdf_VectorImplEmpty &sourceData) :
38 _size(sourceData._size)
39 {}
40
41 void MoveInto(Vdf_VectorData::DataHolder *destData) override
42 {
43 destData->Destroy();
44 destData->New< Vdf_VectorImplEmpty >(*this);
45 }
46
47 void Clone(Vdf_VectorData::DataHolder *destData) const override
48 {
49 destData->Destroy();
50 destData->New< Vdf_VectorImplEmpty >(_size);
51 }
52
53 void CloneSubset(const VdfMask &mask,
54 Vdf_VectorData::DataHolder *destData) const override
55 {
56 Clone(destData);
57 }
58
59 void Box(const VdfMask::Bits &bits,
60 Vdf_VectorData::DataHolder *destData) const override
61 {
62 destData->Destroy();
63 destData->New< Vdf_VectorImplEmpty >(_size);
64 }
65
66 void Merge(const VdfMask::Bits &bits,
67 Vdf_VectorData::DataHolder *destData) const override
68 {
69 // Nothing to do here.
70 }
71
72 size_t GetSize() const override
73 {
74 return _size;
75 }
76
77 size_t GetNumStoredElements() const override
78 {
79 return 0;
80 }
81
82 Vdf_VectorData::Info GetInfo() override
83 {
84 return Vdf_VectorData::Info(
85 /* data = */ NULL,
86 /* size = */ _size);
87 }
88
89private:
90
91 size_t _size;
92
93};
94
95#define VDF_DECLARE_EXTERN_VECTOR_IMPL_EMPTY(type) \
96 extern template class VDF_API_TYPE Vdf_VectorImplEmpty<type>;
97VDF_FOR_EACH_COMMON_TYPE(VDF_DECLARE_EXTERN_VECTOR_IMPL_EMPTY)
98#undef VDF_DECLARE_EXTERN_VECTOR_IMPL_EMPTY
99
100PXR_NAMESPACE_CLOSE_SCOPE
101
102#endif
Fast, compressed bit array which is capable of performing logical operations without first decompress...
void New(Args &&... args)
Creates an instance.
void Destroy()
Destroys a held instance.
Implements a Vdf_VectorData storage that is always empty.
A VdfMask is placed on connections to specify the data flowing through them.
Definition: mask.h:37