Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
FrameHeap.h
Go to the documentation of this file.
1#ifndef NW4HBM_SND_FRAME_HEAP_H
2#define NW4HBM_SND_FRAME_HEAP_H
3
4#include <revolution/types.h>
5
6#include "../ut/LinkList.h"
7
8#include <revolution/mem.h>
9
10namespace nw4hbm {
11 namespace snd {
12 namespace detail {
13 class FrameHeap {
14 public:
15 typedef void (*FreeCallback)(void* buffer, u32 size, void* callbackArg);
16
19
20 bool Create(void* base, u32 size);
21 void Destroy();
22 void Clear();
23 void* Alloc(u32 size, FreeCallback callback, void* callbackArg);
24
25 int SaveState();
26 void LoadState(int id);
27
28 int GetCurrentLevel() const;
30
31 bool IsValid() const { return mHandle != NULL; }
32
33 private:
34 typedef struct Block {
36 /* 0x08 */ u32 mSize;
38 /* 0x10 */ void* mCallbackArg;
39
40 Block(u32 size, FreeCallback callback, void* callbackArg)
41 : mSize(size), mCallback(callback), mCallbackArg(callbackArg) {}
42
44 if (mCallback != NULL) {
46 }
47 }
48
51 typedef ut::LinkList<Block, offsetof(Block, mLink)> BlockList;
52
53 typedef struct Section {
56
58 void AppendBlock(Block* block) { mBlockList.PushBack(block); }
60 typedef ut::LinkList<Section, offsetof(Section, mLink)> SectionList;
61
62 bool NewSection();
64
65 static const int BLOCK_BUFFER_SIZE = OSRoundUp32B(sizeof(Block));
66 static const int HEAP_ALIGN = 32;
67
70 };
71 } // namespace detail
72 } // namespace snd
73} // namespace nw4hbm
74
75#endif
static u8 base[0x2A]
Definition WPADEncrypt.c:10
Definition FrameHeap.h:13
SectionList mSectionList
Definition FrameHeap.h:69
ut::LinkList< Block, offsetof(Block, mLink)> BlockList
Definition FrameHeap.h:51
static const int HEAP_ALIGN
Definition FrameHeap.h:66
bool IsValid() const
Definition FrameHeap.h:31
struct nw4hbm::snd::detail::FrameHeap::Block Block
MEMHeapHandle mHandle
Definition FrameHeap.h:68
ut::LinkList< Section, offsetof(Section, mLink)> SectionList
Definition FrameHeap.h:60
void(*) FreeCallback(void *buffer, u32 size, void *callbackArg)
Definition FrameHeap.h:15
static const int BLOCK_BUFFER_SIZE
Definition FrameHeap.h:65
struct nw4hbm::snd::detail::FrameHeap::Section Section
void * Alloc(u32 size, FreeCallback callback, void *callbackArg)
bool Create(void *base, u32 size)
Definition LinkList.h:23
static OSTime buffer
Definition ai.c:24
unsigned int size
Definition __os.h:106
unsigned long u32
Definition types.h:12
const void * AddOffsetToPtr(const void *base, T offset)
Definition inlines.h:49
Definition HBMAnmController.h:6
static void callback(u32 param_0)
Definition OSExec.c:308
Definition heapCommon.h:14
Definition FrameHeap.h:34
u32 mSize
Definition FrameHeap.h:36
~Block()
Definition FrameHeap.h:43
void * GetBufferAddr()
Definition FrameHeap.h:49
Block(u32 size, FreeCallback callback, void *callbackArg)
Definition FrameHeap.h:40
ut::LinkListNode mLink
Definition FrameHeap.h:35
void * mCallbackArg
Definition FrameHeap.h:38
FreeCallback mCallback
Definition FrameHeap.h:37
void AppendBlock(Block *block)
Definition FrameHeap.h:58
BlockList mBlockList
Definition FrameHeap.h:55
ut::LinkListNode mLink
Definition FrameHeap.h:54