15 #ifndef __UT_PACKED_ARRAY_OF_ARRAYS_H__
16 #define __UT_PACKED_ARRAY_OF_ARRAYS_H__
34 { myOffsets.clear(); myData.clear(); }
36 {
return size() == 0; }
44 return (inclusive ?
sizeof(*
this) : 0) +
45 myOffsets.getMemoryUsage(
false) +
46 myData.getMemoryUsage(
false);
54 if (myOffsets.isEmpty())
57 myData.append(data[i]);
58 myOffsets.append(myData.entries());
74 if (myOffsets.isEmpty())
76 exint base = myOffsets.last();
77 myOffsets.append(base+len);
78 myData.bumpSize(base+len);
79 return myData.array() + base;
86 exint base = myOffsets(idx);
88 return myData(base+idx_in_array);
95 exint base = myOffsets(idx);
99 result(i) = myData(base+i);
108 return myData.array() + myOffsets(idx);
113 return myData.array() + myOffsets(idx);
117 return myOffsets(idx+1)-myOffsets(idx);
123 {
return UTmakeRange(arrayData(idx), arrayData(idx + 1)); }
125 {
return UTmakeRange(arrayData(idx), arrayData(idx + 1)); }
131 if (maxsize >= 0 &&
size() > maxsize)
137 myOffsets.setSize(maxsize+1);
138 myData.setSize(myOffsets(maxsize));
147 { myData.setCapacity(capacity); }
149 { myData.setCapacityIfNeeded(capacity); }
151 { myOffsets.setCapacity(capacity); }
153 { myOffsets.setCapacityIfNeeded(capacity); }
void setDataCapacity(exint capacity)
const T & operator()(exint idx, exint idx_in_array) const
From the given idxth array, return the idx_in_array element.
void truncate(exint maxsize)
Decreases, but never expands, to the given maxsize.
UT_Array< exint > & rawOffsets()
UT_IteratorRange< IterT > UTmakeRange(IterT &&b, IterT &&e)
const UT_Array< T > & rawData() const
UT_IteratorRange< const T * > arrayRange(exint idx) const
void append(const UT_PackedArrayOfArrays< T > &arr, exint idx)
void append(const T *data, exint len)
void setArrayCapacity(exint capacity)
const UT_Array< exint > & rawOffsets() const
const T * arrayData(exint idx) const
void concat(const UT_PackedArrayOfArrays< T > &arr)
Appends an array of arrays to our list.
UT_Array< T > & rawData()
All of the array data is in one contiguous block.
void setArrayCapacityIfNeeded(exint capacity)
void extract(UT_Array< T > &result, exint idx) const
Extracts an array into a UT_Array.
T * appendArray(exint len)
exint size() const
Returns the number of arrays in this structure.
exint entries() const
Alias of size(). size() is preferred.
void setDataCapacityIfNeeded(exint capacity)
int64 getMemoryUsage(bool inclusive=false) const
void append(const UT_Array< T > &arr)
Adds a new array to the end of our list of arrays.
exint arrayLen(exint idx) const
UT_IteratorRange< T * > arrayRange(exint idx)