4#include <basis/seadAssert.h>
5#include <basis/seadNew.h>
6#include <heap/seadHeap.h>
7#include <heap/seadHeapMgr.h>
26 if (size > 0 && bufferptr !=
nullptr)
33 SEAD_ASSERT_MSG(
false,
"illegal param: size[%d] bufferptr[0x%x]", size, bufferptr);
78 return lhs.mPtr == rhs.mPtr;
83 return lhs.mPtr != rhs.mPtr;
139 return lhs.mPtr == rhs.mPtr;
144 return lhs.mPtr != rhs.mPtr;
172 if (
static_cast<u32>(x) <=
static_cast<u32>(mSize))
185 if (
static_cast<u32>(x) <=
static_cast<u32>(mSize))
202 if (
static_cast<u32>(x) <=
static_cast<u32>(mSize))
236 T* buffer =
static_cast<T*>(heap->alloc(
static_cast<size_t>(size) *
sizeof(T), alignment));
238 for (s32 i = 0; i < size; i++)
239 new (
static_cast<
void*>(&buffer[i])) T;
241 setBuffer(size, buffer);
256 T* buffer =
static_cast<T*>(heap->alloc(size *
sizeof(T), alignment));
258 for (s32 i = 0; i < size; i++)
259 new (
static_cast<
void*>(&buffer[i])) T;
261 setBuffer(size, buffer);
276 T* buffer =
static_cast<T*>(heap->alloc(size *
sizeof(T), alignment));
278 for (s32 i = 0; i < size; i++)
279 new (
static_cast<
void*>(&buffer[i])) T;
281 setBuffer(size, buffer);
298 T* buffer =
static_cast<T*>(heap->alloc(size *
sizeof(T), alignment));
300 for (s32 i = 0; i < size; i++)
301 new (
static_cast<
void*>(&buffer[i])) T;
303 setBuffer(size, buffer);
317 for (s32 i = 0; i < mSize; i++)
332 if (bufferptr !=
nullptr)
355 if (
static_cast<u32>(x) <
static_cast<u32>(mSize))
368 if (x <
static_cast<u32>(mSize))
381 if (
static_cast<u32>(x) <
static_cast<u32>(mSize))
394 if (x <
static_cast<u32>(mSize))
407 if (
static_cast<u32>(x) <
static_cast<u32>(mSize))
420 if (
static_cast<u32>(x) <
static_cast<u32>(mSize))
433 SEAD_ASSERT_MSG(
static_cast<u32>(x) <
static_cast<u32>(mSize),
"index exceeded [%d/%d]", x, mSize);
439 SEAD_ASSERT_MSG(
static_cast<u32>(x) <
static_cast<u32>(mSize),
"index exceeded [%d/%d]", x, mSize);
455 return mBuffer[mSize - 1];
460 return mBuffer[mSize - 1];
479 return static_cast<u32>(x) <
static_cast<u32>(mSize);
485 for (s32 i = 0; i < size; i++)
498 template <
typename Key>
506static_assert(
sizeof(
Buffer<
int>) == 8,
"sead::Buffer<T> size mismatch");
Definition seadBuffer.h:99
constIterator()
Definition seadBuffer.h:101
constIterator & operator--()
Definition seadBuffer.h:131
const T * operator->() const
Definition seadBuffer.h:148
const T * mPtr
Definition seadBuffer.h:153
friend bool operator!=(const constIterator &lhs, const constIterator &rhs)
Definition seadBuffer.h:142
const T & operator*() const
Definition seadBuffer.h:147
const T * mBuffer
Definition seadBuffer.h:154
constIterator(const Buffer *buffer, s32 index)
Definition seadBuffer.h:113
constIterator(iterator it)
Definition seadBuffer.h:119
s32 getIndex() const
Definition seadBuffer.h:150
constIterator(const Buffer *buffer)
Definition seadBuffer.h:107
constIterator & operator++()
Definition seadBuffer.h:125
friend bool operator==(const constIterator &lhs, const constIterator &rhs)
Definition seadBuffer.h:137
Definition seadBuffer.h:44
friend bool operator==(const iterator &lhs, const iterator &rhs)
Definition seadBuffer.h:76
T * mBuffer
Definition seadBuffer.h:93
T * mPtr
Definition seadBuffer.h:92
iterator(Buffer *buffer)
Definition seadBuffer.h:52
T & operator*() const
Definition seadBuffer.h:86
iterator & operator--()
Definition seadBuffer.h:70
T * operator->() const
Definition seadBuffer.h:87
iterator()
Definition seadBuffer.h:46
friend bool operator!=(const iterator &lhs, const iterator &rhs)
Definition seadBuffer.h:81
iterator & operator++()
Definition seadBuffer.h:64
s32 getIndex() const
Definition seadBuffer.h:89
iterator(Buffer *buffer, s32 index)
Definition seadBuffer.h:58
Definition seadBuffer.h:161
Definition seadBuffer.h:158
Definition seadBuffer.h:13
constIterator toIterator(s32 x) const
Definition seadBuffer.h:183
s32 binarySearch(const T &) const
constIterator constEnd() const
Definition seadBuffer.h:198
reverseIterator reverseEnd()
void fill(const T &value)
Definition seadBuffer.h:482
iterator toIterator(s32 x)
Definition seadBuffer.h:170
const T * unsafeGet(s32 x) const
Definition seadBuffer.h:437
reverseIterator toReverseIterator(s32)
constIterator end() const
Definition seadBuffer.h:168
void setBuffer(s32 size, T *bufferptr)
Definition seadBuffer.h:328
const T * get(s32 x) const
Definition seadBuffer.h:418
bool tryAllocBuffer(s32 size, Heap *heap, s32 alignment=4)
Definition seadBuffer.h:291
reverseConstIterator reverseConstBegin() const
T * get(s32 x)
Definition seadBuffer.h:405
static s32 defaultBinarySearchCompare(const T &, const T &)
s32 getSize() const
Definition seadBuffer.h:465
Buffer(s32 size, T *bufferptr)
Definition seadBuffer.h:24
T & operator[](s32 x)
Definition seadBuffer.h:353
static s32 compareT(const T *, const T *)
reverseConstIterator reverseEnd() const
T * getBufferPtr()
Definition seadBuffer.h:466
const T & back() const
Definition seadBuffer.h:458
u32 getByteSize() const
Definition seadBuffer.h:468
bool isRangeValid(s32 x) const
Definition seadBuffer.h:477
reverseConstIterator reverseBegin() const
constIterator constBegin() const
Definition seadBuffer.h:196
const T & operator()(s32) const
reverseConstIterator toReverseIterator(s32) const
reverseConstIterator toReverseConstIterator(s32) const
iterator end()
Definition seadBuffer.h:167
bool isBufferReady() const
Definition seadBuffer.h:348
const T * getBufferPtr() const
Definition seadBuffer.h:467
s32(* CompareCallback)(const T *, const T *)
Definition seadBuffer.h:15
void freeBuffer()
Definition seadBuffer.h:313
reverseConstIterator reverseConstEnd() const
Buffer< T > & operator=(const Buffer< T > &rhs)
Definition seadBuffer.h:470
s32 size() const
Definition seadBuffer.h:463
T * mBuffer
Definition seadBuffer.h:503
s32 mSize
Definition seadBuffer.h:502
constIterator begin() const
Definition seadBuffer.h:165
constIterator toConstIterator(s32 x) const
Definition seadBuffer.h:200
const T & front() const
Definition seadBuffer.h:448
T & front()
Definition seadBuffer.h:443
bool tryAllocBuffer(s32 size, s32 alignment=4)
Definition seadBuffer.h:269
Buffer()
Definition seadBuffer.h:18
reverseIterator reverseBegin()
s32 binarySearch(const Key &, s32(*)(const T &, const Key &)) const
iterator begin()
Definition seadBuffer.h:164
const T & operator[](s32 x) const
Definition seadBuffer.h:379
T * unsafeGet(s32 x)
Definition seadBuffer.h:431
void allocBuffer(s32 size, Heap *heap, s32 alignment=4)
Definition seadBuffer.h:249
T & back()
Definition seadBuffer.h:453
void allocBuffer(s32 size, s32 alignment=4)
Definition seadBuffer.h:229
void heapSort(CompareCallback, s32, s32)
Definition seadHeapMgr.h:21
static HeapMgr * instance()
Definition seadHeapMgr.h:61
Heap * findContainHeap(const void *memBlock) const
Definition seadHeapMgr.cpp:30
Heap * getCurrentHeap() const
Definition seadHeapMgr.cpp:52
virtual void free(void *ptr)=0
Definition seadAssert.h:44
#define SEAD_ASSERT(condition)
Definition seadAssert.h:24
#define SEAD_ASSERT_MSG(condition, format,...)
Definition seadAssert.h:33