1#include <heap/seadHeap.h>
2#include <heap/seadHeapMgr.h>
3#include <prim/seadScopedLock.h>
4
5namespace sead
6{
7Heap::~Heap() = default;
8
9void Heap::appendDisposer_(IDisposer* disposer)
10{
11 ConditionalScopedLock<CriticalSection> lock(&mCS, isLockEnabled());
12 mDisposerList.pushBack(item: disposer);
13}
14
15void Heap::removeDisposer_(IDisposer* disposer)
16{
17 ConditionalScopedLock<CriticalSection> lock(&mCS, isLockEnabled());
18 mDisposerList.erase(item: disposer);
19}
20
21Heap* Heap::findContainHeap_(const void* ptr)
22{
23 if (!isInclude(ptr))
24 return nullptr;
25
26 for (auto it = mChildren.begin(); it != mChildren.end(); ++it)
27 {
28 if (it->isInclude(ptr))
29 return it->findContainHeap_(ptr);
30 }
31
32 return this;
33}
34
35} // namespace sead
36