1#ifndef SEAD_LIST_IMPL_H_
2#define SEAD_LIST_IMPL_H_
4#include <random/seadRandom.h>
47static_assert(
sizeof(
ListNode) == 0x8,
"sead::ListNode size mismatch");
68 bool isEmpty()
const {
return mCount == 0; }
84 void sort(s32 offset, CompareCallbackImpl cmp);
85 void mergeSort(s32 offset, CompareCallbackImpl cmp);
121 ListNode*
back()
const {
return mCount > 0 ? mStartEnd.mPrev :
nullptr; }
130 ListNode*
find(
const void* ptr, s32 offset, CompareCallbackImpl cmp)
const;
131 void uniq(s32 offset, CompareCallbackImpl cmp);
150static_assert(
sizeof(
ListImpl) == 0xC,
"sead::ListImpl size mismatch");
Definition seadListImpl.h:51
void moveBefore(ListNode *basis, ListNode *n)
void swap(ListNode *n1, ListNode *n2)
void pushFront(ListNode *n)
Definition seadListImpl.h:93
void clear()
Definition seadListImpl.cpp:79
s32 mCount
Definition seadListImpl.h:147
ListNode * popFront()
Definition seadListImpl.cpp:64
static void mergeSortImpl(ListNode *front, ListNode *back, s32 num, s32 offset, CompareCallbackImpl cmp)
Definition seadListImpl.cpp:93
bool isEmpty() const
Definition seadListImpl.h:68
ListNode * back() const
Definition seadListImpl.h:121
ListNode * nth(s32 index) const
void uniq(s32 offset, CompareCallbackImpl cmp)
ListImpl & operator=(const ListImpl &)
void insertAfter(ListNode *basis, ListNode *n)
Definition seadListImpl.h:108
s32 indexOf(const ListNode *n) const
ListNode * find(const void *ptr, s32 offset, CompareCallbackImpl cmp) const
ListNode * popBack()
Definition seadListImpl.cpp:49
void insertBefore(ListNode *basis, ListNode *n)
Definition seadListImpl.h:102
ListImpl()
Definition seadListImpl.h:56
void pushBack(ListNode *n)
Definition seadListImpl.h:87
void moveAfter(ListNode *basis, ListNode *n)
ListImpl(const ListImpl &)
ListNode mStartEnd
Definition seadListImpl.h:146
void shuffle()
Definition seadListImpl.h:74
void mergeSort(s32 offset, CompareCallbackImpl cmp)
void shuffle(Random *random)
void sort(s32 offset, CompareCallbackImpl cmp)
void unsafeClear()
Definition seadListImpl.h:135
s32 size() const
Definition seadListImpl.h:70
void erase(ListNode *n)
Definition seadListImpl.h:114
ListNode * front() const
Definition seadListImpl.h:120
Definition seadListImpl.h:11
ListNode * mPrev
Definition seadListImpl.h:41
const ListNode & operator=(const ListNode &)
void init_()
Definition seadListImpl.h:30
bool isLinked() const
Definition seadListImpl.h:27
ListNode * prev() const
Definition seadListImpl.h:25
void erase_()
Definition seadListImpl.cpp:35
ListNode(const ListNode &)
ListNode * next() const
Definition seadListImpl.h:24
void insertFront_(ListNode *n)
Definition seadListImpl.cpp:21
ListNode * mNext
Definition seadListImpl.h:42
void insertBack_(ListNode *n)
Definition seadListImpl.cpp:7
ListNode()
Definition seadListImpl.h:13
Definition seadRandom.h:9
Definition seadAssert.h:44