33 return array == a_it.array && curIndex == a_it.curIndex;
38 return array != a_it.array || curIndex != a_it.curIndex;
77 return iterator(array, curIndex + a_delta);
82 return iterator(array, curIndex - a_delta);
87 assert(array == a_right.array);
88 return curIndex - a_right.curIndex;
94 return (*array)[curIndex];
100 return &(*array)[curIndex];
106 return &(*array)[curIndex];
111 return !array || curIndex < 0 || curIndex >=
static_cast<std::int32_t
>(array->
GetSize());
146 return array == a_it.array && curIndex == a_it.curIndex;
151 return array != a_it.array || curIndex != a_it.curIndex;
157 if (curIndex <
static_cast<std::int32_t
>(array->
GetSize())) {
199 assert(array == a_right.array);
200 return curIndex - a_right.curIndex;
206 return (*array)[curIndex];
212 return &(*array)[curIndex];
218 return &(*array)[curIndex];
223 return !array || curIndex < 0 || curIndex >=
static_cast<std::int32_t
>(array->
GetSize());
263 data(a_defaultVal, a_size)
273 data.policy = a_policy;
278 return data.policy.NeverShrinking();
288 return data.GetCapacity();
298 data.ClearAndRelease();
308 data.Resize(a_newSize);
313 if (a_newCapacity >
data.GetCapacity()) {
314 data.Reserve(a_newCapacity);
320 assert(a_index <
data.size);
321 return data.data[a_index];
326 assert(a_index <
data.size);
327 return data.data[a_index];
332 assert(a_index <
data.size);
333 return data.data[a_index];
338 assert(a_index <
data.size);
339 return data.data[a_index];
344 assert(a_index <
data.size);
345 return data.data[a_index];
350 data.PushBack(a_val);
356 data.PushBackAlt(a_val);
361 assert(
data.size > 0);
389 *(
data.data + i) = a_array[i];
396 assert(a_index + a_num <=
data.size);
398 if (
data.size == a_num) {
401 AllocatorType::DestructArray(
data.data + a_index, a_num);
402 AllocatorType::CopyArrayForward(
404 data.data + a_index + a_num,
405 data.size + a_num - a_index);
412 assert(a_index <
data.size);
414 if (
data.size == 1) {
417 AllocatorType::Destruct(
data.data + a_index);
418 AllocatorType::CopyArrayForward(
420 data.data + a_index + 1,
421 data.size - 1 - a_index);
428 assert(a_index <=
data.size);
431 if (a_index <
data.size - 1) {
432 AllocatorType::CopyArrayBackward(
433 data.data + a_index + 1,
435 data.size - 1 - a_index);
437 AllocatorType::Construct(
data.data + a_index, a_val);
442 assert(a_index <=
data.size);
445 if (a_index <
data.size - a_num) {
446 AllocatorType::CopyArrayBackward(
447 data.data + a_index + a_num,
449 data.size - a_num - a_index);
452 for (
UPInt i = 0; i < a_num; ++i) {
453 AllocatorType::Construct(
data.data + a_index + i, a_val);
464 data.Append(a_other, a_count);
Definition: GArrayBase.h:11
void Clear()
Definition: GArrayBase.h:301
iterator begin()
Definition: GArrayBase.h:467
T::SizePolicyType SizePolicyType
Definition: GArrayBase.h:15
const ValueType & Front() const
Definition: GArrayBase.h:370
const_iterator end() const
Definition: GArrayBase.h:487
GArrayBase(GMemoryHeap *a_heap)
Definition: GArrayBase.h:250
T data
Definition: GArrayBase.h:498
void RemoveAt(UPInt a_index)
Definition: GArrayBase.h:410
GArrayBase(GMemoryHeap *a_heap, std::int32_t a_size)
Definition: GArrayBase.h:254
GFC_MEMORY_REDEFINE_NEW(GArrayBase, AllocatorType::StatId)
void PushBackAlt(const S &a_val)
Definition: GArrayBase.h:354
void InsertAt(UPInt a_index, const ValueType &a_val=ValueType())
Definition: GArrayBase.h:426
GArrayBase(std::int32_t a_size)
Definition: GArrayBase.h:242
void ClearAndRelease()
Definition: GArrayBase.h:296
void Resize(UPInt a_newSize)
Definition: GArrayBase.h:306
void InsertMultipleAt(UPInt a_index, UPInt a_num, const ValueType &a_val=ValueType())
Definition: GArrayBase.h:440
iterator Last()
Definition: GArrayBase.h:477
const SelfType & operator=(const SelfType &a_array)
Definition: GArrayBase.h:385
bool NeverShrinking() const
Definition: GArrayBase.h:276
const_iterator Last() const
Definition: GArrayBase.h:492
UPInt GetSize() const
Definition: GArrayBase.h:281
const_iterator begin() const
Definition: GArrayBase.h:482
void RemoveMultipleAt(UPInt a_index, UPInt a_num)
Definition: GArrayBase.h:394
const ValueType & Back() const
Definition: GArrayBase.h:380
GArrayBase(const ValueType &a_defaultVal, std::int32_t a_size)
Definition: GArrayBase.h:262
GArrayBase()
Definition: GArrayBase.h:238
GArrayBase(const ValueType &a_defaultVal)
Definition: GArrayBase.h:258
ValueType & operator[](UPInt a_index)
Definition: GArrayBase.h:336
void PushBack(const ValueType &a_val)
Definition: GArrayBase.h:348
void SetSizePolicy(const SizePolicyType &a_policy)
Definition: GArrayBase.h:271
void Reserve(UPInt a_newCapacity)
Definition: GArrayBase.h:311
UPInt GetCapacity() const
Definition: GArrayBase.h:286
SizePolicyType * GetSizePolicy() const
Definition: GArrayBase.h:266
const ValueType & operator[](UPInt a_index) const
Definition: GArrayBase.h:342
ValueType ValueAt(UPInt a_index) const
Definition: GArrayBase.h:330
const ValueType & At(UPInt a_index) const
Definition: GArrayBase.h:324
T::AllocatorType AllocatorType
Definition: GArrayBase.h:14
T::ValueType ValueType
Definition: GArrayBase.h:13
ValueType & Back()
Definition: GArrayBase.h:375
void Append(const SelfType &a_other)
Definition: GArrayBase.h:457
UPInt GetNumBytes() const
Definition: GArrayBase.h:291
iterator end()
Definition: GArrayBase.h:472
void Append(const ValueType a_other[], UPInt a_count)
Definition: GArrayBase.h:462
ValueType & At(UPInt a_index)
Definition: GArrayBase.h:318
void PopBack()
Definition: GArrayBase.h:359
ValueType & Front()
Definition: GArrayBase.h:365
GArrayBase(const SelfType &a_array)
Definition: GArrayBase.h:246
Definition: GMemoryHeap.h:16
Definition: AbsorbEffect.h:6
std::size_t UPInt
Definition: SFTypes.h:5
std::ptrdiff_t SPInt
Definition: SFTypes.h:8
Definition: GArrayBase.h:132
bool IsFinished() const
Definition: GArrayBase.h:221
const_iterator()
Definition: GArrayBase.h:134
bool operator!=(const const_iterator &a_it) const
Definition: GArrayBase.h:149
const_iterator operator--(std::int32_t)
Definition: GArrayBase.h:180
const_iterator & operator++()
Definition: GArrayBase.h:154
const ValueType & operator*() const
Definition: GArrayBase.h:203
SPInt operator-(const const_iterator &a_right) const
Definition: GArrayBase.h:197
const_iterator operator++(std::int32_t)
Definition: GArrayBase.h:164
const_iterator(const SelfType *a_arr, SPInt a_idx=0)
Definition: GArrayBase.h:139
const_iterator & operator--()
Definition: GArrayBase.h:171
const ValueType * operator->() const
Definition: GArrayBase.h:209
const_iterator operator+(std::int32_t a_delta) const
Definition: GArrayBase.h:187
const_iterator operator-(std::int32_t a_delta) const
Definition: GArrayBase.h:192
SPInt GetIndex() const
Definition: GArrayBase.h:226
const ValueType * GetPtr() const
Definition: GArrayBase.h:215
bool operator==(const const_iterator &a_it) const
Definition: GArrayBase.h:144
Definition: GArrayBase.h:19
iterator & operator--()
Definition: GArrayBase.h:58
ValueType & operator*() const
Definition: GArrayBase.h:91
bool IsFinished() const
Definition: GArrayBase.h:109
void Remove()
Definition: GArrayBase.h:114
ValueType * GetPtr() const
Definition: GArrayBase.h:103
bool operator!=(const iterator &a_it) const
Definition: GArrayBase.h:36
bool operator==(const iterator &a_it) const
Definition: GArrayBase.h:31
iterator(SelfType *a_arr, SPInt a_idx=0)
Definition: GArrayBase.h:26
ValueType * operator->() const
Definition: GArrayBase.h:97
iterator operator++(std::int32_t)
Definition: GArrayBase.h:51
SPInt GetIndex() const
Definition: GArrayBase.h:121
iterator & operator++()
Definition: GArrayBase.h:41
SPInt operator-(const iterator &a_right) const
Definition: GArrayBase.h:85
iterator operator--(std::int32_t)
Definition: GArrayBase.h:68
iterator()
Definition: GArrayBase.h:21
iterator operator+(std::int32_t a_delta) const
Definition: GArrayBase.h:75
iterator operator-(std::int32_t a_delta) const
Definition: GArrayBase.h:80