Home | History | Annotate | Download | only in Include

Lines Matching refs:sizes

70 // TSmallArrayVector is used as the container for the set of sizes in TArraySizes.
77 // Almost all arrays could be handled by two sizes each fitting
79 // are more than 3 sizes or a size needing more than 16 bits.
83 TSmallArrayVector() : sizes(nullptr) { }
89 if (from.sizes == nullptr)
90 sizes = nullptr;
93 *sizes = *from.sizes;
101 if (sizes == nullptr)
103 return (int)sizes->size();
108 assert(sizes != nullptr && sizes->size() > 0);
109 return sizes->front().size;
114 assert(sizes != nullptr && sizes->size() > 0);
115 return sizes->front().node;
120 assert(sizes != nullptr);
122 assert(sizes->front().node == nullptr);
123 sizes->front().size = s;
130 sizes->push_back(pair);
136 sizes->insert(sizes->begin(), newDims.sizes->begin(), newDims.sizes->end());
141 assert(sizes != nullptr && sizes->size() > 0);
142 if (sizes->size() == 1)
145 sizes->erase(sizes->begin());
154 assert(sizes == nullptr);
157 sizes->insert(sizes->begin(), rhs.sizes->begin() + 1, rhs.sizes->end());
163 assert(sizes != nullptr && (int)sizes->size() > i);
164 return (*sizes)[i].size;
169 assert(sizes != nullptr && (int)sizes->size() > i);
170 assert((*sizes)[i].node == nullptr);
171 (*sizes)[i].size = size;
176 assert(sizes != nullptr && (int)sizes->size() > i);
177 return (*sizes)[i].node;
182 if (sizes == nullptr && rhs.sizes == nullptr)
184 if (sizes == nullptr || rhs.sizes == nullptr)
186 return *sizes == *rhs.sizes;
195 if (sizes == nullptr)
196 sizes = new TVector<TArraySize>;
200 delete sizes;
201 sizes = nullptr;
204 TVector<TArraySize>* sizes; // will either hold such a pointer, or in the future, hold the two array sizes
217 // - index order 0, 1, 2, ... within the 'sizes' member below
229 sizes = from.sizes;
235 int getNumDims() const { return sizes.size(); }
236 int getDimSize(int dim) const { return sizes.getDimSize(dim); }
237 TIntermTyped* getDimNode(int dim) const { return sizes.getDimNode(dim); }
238 void setDimSize(int dim, int size) { sizes.setDimSize(dim, size); }
239 int getOuterSize() const { return sizes.frontSize(); }
240 TIntermTyped* getOuterNode() const { return sizes.frontNode(); }
244 for (int d = 0; d < sizes.size(); ++d) {
246 assert(sizes.getDimSize(d) != UnsizedArraySize);
247 size *= sizes.getDimSize(d);
253 void addInnerSize(int s, TIntermTyped* n) { sizes.push_back((unsigned)s, n); }
254 void addInnerSize(TArraySize pair) { sizes.push_back(pair.size, pair.node); }
255 void changeOuterSize(int s) { sizes.changeFront((unsigned)s); }
260 for (int d = 1; d < sizes.size(); ++d) {
261 if (sizes.getDimSize(d) == (unsigned)UnsizedArraySize)
269 for (int d = 1; d < sizes.size(); ++d) {
270 if (sizes.getDimNode(d) != nullptr)
278 return sizes.getDimNode(0) != nullptr;
282 void addOuterSizes(const TArraySizes& s) { sizes.push_front(s.sizes); }
283 void dereference() { sizes.pop_front(); }
286 assert(sizes.size() == 0);
287 if (rhs.sizes.size() > 1)
288 sizes.copyNonFront(rhs.sizes);
293 if (sizes.size() != rhs.sizes.size())
296 for (int d = 1; d < sizes.size(); ++d) {
297 if (sizes.getDimSize(d) != rhs.sizes.getDimSize(d) ||
298 sizes.getDimNode(d) != rhs.sizes.getDimNode(d))
305 bool operator==(const TArraySizes& rhs) { return sizes == rhs.sizes; }
306 bool operator!=(const TArraySizes& rhs) { return sizes != rhs.sizes; }
309 TSmallArrayVector sizes;