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, \
107 MAP_INDEX(offset)); } \
108 void getIndexedStrings(UT_StringArray &strings, \
109 UT_IntArray &indices) const override \
110 { myData->getIndexedStrings(strings, indices); } \
111 GT_Size getDictIndexCount() const override \
112 { return myData->getDictIndexCount(); } \
113 GT_Offset getDictIndex(GT_Offset offset, int idx) const override \
114 { return myData->getDictIndex(MAP_INDEX(offset), idx); } \
115 bool getDictIndices(UT_Array<GT_Offset> &indices, \
116 GT_Offset offset) const override \
117 { return myData->getDictIndices(indices, \
118 MAP_INDEX(offset)); } \
119 void getIndexedDicts(UT_Array<UT_OptionsHolder> &dicts, \
120 UT_IntArray &indices) const override \
121 { myData->getIndexedDicts(dicts, indices); } \
122 bool getSA(UT_StringArray &a, GT_Offset offset) const override \
123 { return myData->getSA(a, MAP_INDEX(offset)); } \
124 int getIndexPairObjectSetCount() const override \
125 { return myData->getIndexPairObjectSetCount(); } \
126 void getIndexPairObjects(GT_AttributeListHandle &properties,\
127 int s = 0) const override \
128 { return myData->getIndexPairObjects(properties, s); } \
129 void doImport(GT_Offset off, uint8 *d, GT_Size sz) const override \
130 { myData->import(MAP_INDEX(off), d, sz); } \
131 void doImport(GT_Offset off, int8 *d, GT_Size sz) const override \
132 { myData->import(MAP_INDEX(off), d, sz); } \
133 void doImport(GT_Offset off, int16 *d, GT_Size sz) const override \
134 { myData->import(MAP_INDEX(off), d, sz); } \
135 void doImport(GT_Offset off, int32 *d, GT_Size sz) const override \
136 { myData->import(MAP_INDEX(off), d, sz); } \
137 void doImport(GT_Offset off, int64 *d, GT_Size sz) const override \
138 { myData->import(MAP_INDEX(off), d, sz); } \
139 void doImport(GT_Offset off, fpreal16 *d, GT_Size sz) const override\
140 { myData->import(MAP_INDEX(off), d, sz); } \
141 void doImport(GT_Offset off, fpreal32 *d, GT_Size sz) const override\
142 { myData->import(MAP_INDEX(off), d, sz); } \
143 void doImport(GT_Offset off, fpreal64 *d, \
144 GT_Size sz) const override \
145 { myData->import(MAP_INDEX(off), d, sz); } \
146 void doImportArray(GT_Offset off, \
147 UT_ValArray<fpreal16> &data) const override \
148 { myData->import(MAP_INDEX(off), data); } \
149 void doImportArray(GT_Offset off, \
150 UT_ValArray<fpreal32> &data) const override \
151 { myData->import(MAP_INDEX(off), data); } \
152 void doImportArray(GT_Offset off, \
153 UT_ValArray<fpreal64> &data) const override \
154 { myData->import(MAP_INDEX(off), data); } \
155 void doImportArray(GT_Offset off, \
156 UT_ValArray<uint8> &data) const override \
157 { myData->import(MAP_INDEX(off), data); } \
158 void doImportArray(GT_Offset off, \
159 UT_ValArray<int8> &data) const override \
160 { myData->import(MAP_INDEX(off), data); } \
161 void doImportArray(GT_Offset off, \
162 UT_ValArray<int16> &data) const override \
163 { myData->import(MAP_INDEX(off), data); } \
164 void doImportArray(GT_Offset off, \
165 UT_ValArray<int32> &data) const override \
166 { myData->import(MAP_INDEX(off), data); } \
167 void doImportArray(GT_Offset off, \
168 UT_ValArray<int64> &data) const override \
169 { myData->import(MAP_INDEX(off), data); } \
170 void fillStringArray(UT_StringArray &data, \
171 UT_ValArray<int> &sizes, \
172 GT_Offset start, GT_Size length) const override \
174 UT_ASSERT(start >= 0 && length <= SIZE); \
175 if (myData->getStorage() == GT_STORE_STRING) \
177 UT_StringArray attr_strings; \
178 for (GT_Offset off = start; off < length; ++off) \
180 attr_strings.clear(); \
181 getSA(attr_strings, off); \
182 sizes.append(attr_strings.entries()); \
183 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.