SSBM Decomp
Loading...
Searching...
No Matches
class.h
Go to the documentation of this file.
1#ifndef _class_h_
2#define _class_h_
3
4#include <platform.h>
5
6#include "baselib/forward.h"
7
8#define HSD_CLASS_INFO(o) ((HSD_ClassInfo*) o)
9#define HSD_CLASS_METHOD(o) (((HSD_Class*) o)->class_info)
10#define HSD_PARENT_INFO(o) ((o)->parent.head.parent)
11
12#define next_p(p) (p != NULL ? p->next : NULL)
13
14typedef struct _HSD_Class {
15 struct _HSD_ClassInfo* class_info;
16} HSD_Class;
17
18typedef struct _HSD_ClassInfoHead {
19 void (*info_init)(void);
25 struct _HSD_ClassInfo* parent;
26 struct _HSD_ClassInfo* next;
27 struct _HSD_ClassInfo* child;
31
32typedef struct _HSD_ClassInfo {
33 struct _HSD_ClassInfoHead head;
34 HSD_Class* (*alloc)(struct _HSD_ClassInfo* c);
35 int (*init)(struct _HSD_Class* c);
36 void (*release)(struct _HSD_Class* c);
37 void (*destroy)(struct _HSD_Class* c);
38 void (*amnesia)(struct _HSD_ClassInfo* c);
40
41typedef struct _HSD_FreeList {
42 struct _HSD_FreeList* next;
44
45typedef struct _HSD_MemoryEntry {
49 struct _HSD_FreeList* free_list;
50 struct _HSD_MemoryEntry* next;
52
54
55// void hsdDelete(void* object);
57void hsdInitClassInfo(HSD_ClassInfo* class_info, HSD_ClassInfo* parent_info,
58 char* base_class_library, char* type, s32 info_size,
59 s32 class_size);
60void OSReport_PrintSpaces(s32 count);
61
62void* hsdAllocMemPiece(s32 size);
63void hsdFreeMemPiece(void* mem, s32 size);
64void* hsdNew(HSD_ClassInfo*);
65bool hsdChangeClass(void* object, void* class_info);
66bool hsdIsDescendantOf(void* info, void* p);
68HSD_ClassInfo* hsdSearchClassInfo(const char* class_name);
69void hsdForgetClassLibrary(const char* library_name);
70
73int _hsdClassInit(HSD_Class* arg0);
77void class_set_flags(HSD_ClassInfo* class_info, s32 set, s32 reset);
79void DumpClassStat(HSD_ClassInfo* info, s32 level);
80void hsdDumpClassStat(HSD_ClassInfo* info, bool recursive, s32 level);
81
82void ForgetClassLibraryChild(const char* library_name,
83 HSD_ClassInfo* class_info);
84
85static inline void hsdDelete(void* object)
86{
87 if (object == NULL) {
88 return;
89 }
90
91 HSD_CLASS_METHOD(object)->release((HSD_Class*) object);
92 HSD_CLASS_METHOD(object)->destroy((HSD_Class*) object);
93}
94
95#endif
void * hsdNew(HSD_ClassInfo *)
Definition class.c:291
int _hsdClassInit(HSD_Class *arg0)
Definition class.c:255
HSD_MemoryEntry * GetMemoryEntry(s32 idx)
Definition class.c:76
void _hsdClassAmnesia(HSD_ClassInfo *info)
Definition class.c:269
void * hsdAllocMemPiece(s32 size)
Definition class.c:160
HSD_ClassInfo hsdClass
Definition class.c:13
#define HSD_CLASS_METHOD(o)
Definition class.h:9
void _hsdClassDestroy(HSD_Class *cls)
Definition class.c:262
HSD_ClassInfo * hsdSearchClassInfo(const char *class_name)
Definition class.c:464
void class_set_flags(HSD_ClassInfo *class_info, s32 set, s32 reset)
Definition class.c:413
bool hsdIsDescendantOf(void *info, void *p)
Definition class.c:367
void hsdInitClassInfo(HSD_ClassInfo *class_info, HSD_ClassInfo *parent_info, char *base_class_library, char *type, s32 info_size, s32 class_size)
Definition class.c:29
void ForgetClassLibraryChild(const char *library_name, HSD_ClassInfo *class_info)
Definition class.c:434
static void hsdDelete(void *object)
Definition class.h:85
void ClassInfoInit(HSD_ClassInfo *info)
Definition class.c:21
void OSReport_PrintSpaces(s32 count)
Definition class.c:57
void ForgetClassLibraryReal(HSD_ClassInfo *class_info)
Definition class.c:418
void hsdFreeMemPiece(void *mem, s32 size)
Definition class.c:229
void hsdDumpClassStat(HSD_ClassInfo *info, bool recursive, s32 level)
Definition class.c:490
bool hsdChangeClass(void *object, void *class_info)
Definition class.c:362
HSD_Class * _hsdClassAlloc(HSD_ClassInfo *info)
Definition class.c:243
void _hsdClassRelease(HSD_Class *cls)
Definition class.c:260
void DumpClassStat(HSD_ClassInfo *info, s32 level)
Definition class.c:480
void hsdForgetClassLibrary(const char *library_name)
Definition class.c:448
bool hsdObjIsDescendantOf(HSD_Obj *o, HSD_ClassInfo *p)
Definition class.c:393
static void reset(HSD_GObj *gobj)
Definition ftPe_SpecialN.c:146
unsigned long u32
An unsigned 32-bit integer.
Definition platform.h:26
signed short s16
A signed 16-bit integer.
Definition platform.h:11
signed long s32
A signed 32-bit integer.
Definition platform.h:14
#define NULL
A null pointer.
Definition stddef.h:19
Definition class.h:18
char * library_name
Definition class.h:21
struct _HSD_ClassInfo * next
Definition class.h:26
struct _HSD_ClassInfo * child
Definition class.h:27
struct _HSD_ClassInfo * parent
Definition class.h:25
s16 obj_size
Definition class.h:23
u32 flags
Definition class.h:20
s16 info_size
Definition class.h:24
u32 nb_peak
Definition class.h:29
u32 nb_exist
Definition class.h:28
char * class_name
Definition class.h:22
Definition class.h:32
Definition class.h:14
struct _HSD_ClassInfo * class_info
Definition class.h:15
Definition class.h:41
struct _HSD_FreeList * next
Definition class.h:42
Definition class.h:45
struct _HSD_FreeList * free_list
Definition class.h:49
u32 nb_alloc
Definition class.h:47
struct _HSD_MemoryEntry * next
Definition class.h:50
u32 size
Definition class.h:46
u32 nb_free
Definition class.h:48
Definition object.h:60
int c
Definition tev.c:18