11 #ifndef __GT_DAInherit__
12 #define __GT_DAInherit__
41 {
return myData->getStorage(); }
43 {
return myData->getTupleSize(); }
45 {
return myData->getTypeInfo(); }
47 {
return myData->getMemoryUsage() +
sizeof(*this); }
49 {
return myData->hasArrayEntries(); }
54 {
return myData->itemSize(offset); }
59 {
return myData->getTotalArrayEntries(); }
63 {
return myData->getPointerAliasing(data); }
64 bool isValid()
const override {
return myData && myData->isValid(); }
67 const char *attrib_name,
69 const int expected_size)
override
71 myData->updateGeoDetail(dtl, attrib_name,
84 #define GT_IMPL_INHERIT_ARRAY(MAP_INDEX, SIZE) \
85 GT_Size entries() const override { return SIZE; } \
86 fpreal16 getF16(GT_Offset offset, int idx=0) const override \
87 { return myData->getF16(MAP_INDEX(offset), idx); } \
88 fpreal32 getF32(GT_Offset offset, int idx=0) const override \
89 { return myData->getF32(MAP_INDEX(offset), idx); } \
90 fpreal64 getF64(GT_Offset offset, int idx=0) const override \
91 { return myData->getF64(MAP_INDEX(offset), idx); } \
92 uint8 getU8(GT_Offset offset, int idx=0) const override \
93 { return myData->getU8(MAP_INDEX(offset), idx); } \
94 int32 getI32(GT_Offset offset, int idx=0) const override \
95 { return myData->getI32(MAP_INDEX(offset), idx); } \
96 int64 getI64(GT_Offset offset, int idx=0) const override \
97 { return myData->getI64(MAP_INDEX(offset), idx); } \
98 GT_String getS(GT_Offset offset, int idx=0) const override \
99 { return myData->getS(MAP_INDEX(offset), idx); } \
100 GT_Size getStringIndexCount() const override \
101 { return myData->getStringIndexCount(); } \
102 GT_Offset getStringIndex(GT_Offset offset, int idx) const override \
103 { return myData->getStringIndex(MAP_INDEX(offset), idx); } \
104 bool getStringIndices(UT_Array<GT_Offset> &indices, \
105 GT_Offset offset) const override \
106 { return myData->getStringIndices(indices, offset); } \
107 void getIndexedStrings(UT_StringArray &strings, \
108 UT_IntArray &indices) const override \
109 { myData->getIndexedStrings(strings, indices); } \
110 GT_Size getDictIndexCount() const override \
111 { return myData->getDictIndexCount(); } \
112 GT_Offset getDictIndex(GT_Offset offset, int idx) const override \
113 { return myData->getDictIndex(MAP_INDEX(offset), idx); } \
114 bool getDictIndices(UT_Array<GT_Offset> &indices, \
115 GT_Offset offset) const override \
116 { return myData->getDictIndices(indices, offset); } \
117 void getIndexedDicts(UT_Array<UT_OptionsHolder> &dicts, \
118 UT_IntArray &indices) const override \
119 { myData->getIndexedDicts(dicts, indices); } \
120 bool getSA(UT_StringArray &a, GT_Offset offset) const override \
121 { return myData->getSA(a, MAP_INDEX(offset)); } \
122 int getIndexPairObjectSetCount() const override \
123 { return myData->getIndexPairObjectSetCount(); } \
124 void getIndexPairObjects(GT_AttributeListHandle &properties,\
125 int s = 0) const override \
126 { return myData->getIndexPairObjects(properties, s); } \
127 void doImport(GT_Offset off, uint8 *d, GT_Size sz) const override \
128 { myData->import(MAP_INDEX(off), d, sz); } \
129 void doImport(GT_Offset off, int8 *d, GT_Size sz) const override \
130 { myData->import(MAP_INDEX(off), d, sz); } \
131 void doImport(GT_Offset off, int16 *d, GT_Size sz) const override \
132 { myData->import(MAP_INDEX(off), d, sz); } \
133 void doImport(GT_Offset off, int32 *d, GT_Size sz) const override \
134 { myData->import(MAP_INDEX(off), d, sz); } \
135 void doImport(GT_Offset off, int64 *d, GT_Size sz) const override \
136 { myData->import(MAP_INDEX(off), d, sz); } \
137 void doImport(GT_Offset off, fpreal16 *d, GT_Size sz) const override\
138 { myData->import(MAP_INDEX(off), d, sz); } \
139 void doImport(GT_Offset off, fpreal32 *d, GT_Size sz) const override\
140 { myData->import(MAP_INDEX(off), d, sz); } \
141 void doImport(GT_Offset off, fpreal64 *d, \
142 GT_Size sz) const override \
143 { myData->import(MAP_INDEX(off), d, sz); } \
144 void doImportArray(GT_Offset off, \
145 UT_ValArray<fpreal16> &data) const override \
146 { myData->import(MAP_INDEX(off), data); } \
147 void doImportArray(GT_Offset off, \
148 UT_ValArray<fpreal32> &data) const override \
149 { myData->import(MAP_INDEX(off), data); } \
150 void doImportArray(GT_Offset off, \
151 UT_ValArray<fpreal64> &data) const override \
152 { myData->import(MAP_INDEX(off), data); } \
153 void doImportArray(GT_Offset off, \
154 UT_ValArray<uint8> &data) const override \
155 { myData->import(MAP_INDEX(off), data); } \
156 void doImportArray(GT_Offset off, \
157 UT_ValArray<int8> &data) const override \
158 { myData->import(MAP_INDEX(off), data); } \
159 void doImportArray(GT_Offset off, \
160 UT_ValArray<int16> &data) const override \
161 { myData->import(MAP_INDEX(off), data); } \
162 void doImportArray(GT_Offset off, \
163 UT_ValArray<int32> &data) const override \
164 { myData->import(MAP_INDEX(off), data); } \
165 void doImportArray(GT_Offset off, \
166 UT_ValArray<int64> &data) const override \
167 { myData->import(MAP_INDEX(off), data); } \
168 void fillStringArray(UT_StringArray &data, \
169 UT_ValArray<int> &sizes, \
170 GT_Offset start, GT_Size length) const override \
172 UT_ASSERT(start >= 0 && length <= SIZE); \
173 if (myData->getStorage() == GT_STORE_STRING) \
175 UT_StringArray attr_strings; \
176 for (GT_Offset off = start; off < length; ++off) \
178 attr_strings.clear(); \
179 getSA(attr_strings, off); \
180 sizes.append(attr_strings.entries()); \
181 data.concat(attr_strings); \
GT_Size itemSize(GT_Offset offset) const override
bool getPointerAliasing(const void *data) const override
Return "true" if there's pointer aliasing.
GT_Size getTupleSize() const override
GT_DataArrayHandle myData
GT_Storage getStorage() const override
const GT_DataArrayHandle & referencedData() const
GT_Type getTypeInfo() const override
Abstract data class for an array of float, int or string data.
int64 getDataId() const override
int64 getMemoryUsage() const override
void updateGeoDetail(const GU_ConstDetailHandle &dtl, const char *attrib_name, GT_Owner attrib_owner, const int expected_size) override
bool isValid() const override
GT_DAInherit(const GT_DAInherit &src)
Copy constructor.
Base class for a data array which references another data array.
bool hasArrayEntries() const override
GT_DAInherit()
Default constructor.
GT_Size getTotalArrayEntries() const override
void init(const GT_DataArrayHandle &data)
GT_DAInherit(const GT_DataArrayHandle &data)
Convenience constructor.