sead
Loading...
Searching...
No Matches
seadTaskID.h
Go to the documentation of this file.
1#ifndef SEAD_TASK_ID_H_
2#define SEAD_TASK_ID_H_
3
4#include <basis/seadTypes.h>
5#include <framework/seadHeapPolicies.h>
6
7namespace sead {
8
9class TaskBase;
10class TaskMgr;
11class TaskParameter;
12
14{
16 : heap_array(nullptr)
17 , mgr(nullptr)
18 , param(nullptr)
19 {
20 }
21
22 TaskConstructArg(HeapArray* heap_array_, TaskMgr* mgr_, TaskParameter* param_)
23 : heap_array(heap_array_)
24 , mgr(mgr_)
25 , param(param_)
26 {
27 }
28
32};
33#ifdef cafe
34static_assert(sizeof(TaskConstructArg) == 0xC, "sead::TaskConstructArg size mismatch");
35#endif // cafe
36
37typedef TaskBase* (*TaskFactory)(const TaskConstructArg&);
38
40{
41public:
42 enum Type
43 {
45 cInt = 1,
48 };
49
50public:
53 {
54 }
55
56 TaskClassID(TaskFactory f)
58 {
59 mID.mFactory = f;
60 }
61
62 Type getType() const
63 {
64 return mType;
65 }
66
68
69private:
71 union
72 {
74 TaskFactory mFactory;
75 const char* mString;
76 } mID;
77};
78#ifdef cafe
79static_assert(sizeof(TaskClassID) == 8, "sead::TaskClassID size mismatch");
80#endif // cafe
81
83{
84public:
86};
87#ifdef cafe
88static_assert(sizeof(TaskUserID) == 4, "sead::TaskUserID size mismatch");
89#endif // cafe
90
91template <typename T>
93{
94 return new (arg.heap_array->getPrimaryHeap()) T(arg);
95}
96
97} // namespace sead
98
99#endif // SEAD_TASK_ID_H_
Definition seadHeapPolicies.h:10
Heap * getPrimaryHeap()
Definition seadHeapPolicies.h:33
Definition seadTaskBase.h:26
Definition seadTaskID.h:40
Type mType
Definition seadTaskID.h:70
Type getType() const
Definition seadTaskID.h:62
Type
Definition seadTaskID.h:43
@ cFactory
Definition seadTaskID.h:46
@ cInt
Definition seadTaskID.h:45
@ cInvalid
Definition seadTaskID.h:44
@ cString
Definition seadTaskID.h:47
const char * mString
Definition seadTaskID.h:75
TaskBase * create(const TaskConstructArg &arg)
TaskClassID(TaskFactory f)
Definition seadTaskID.h:56
s32 mInt
Definition seadTaskID.h:73
TaskClassID()
Definition seadTaskID.h:51
TaskFactory mFactory
Definition seadTaskID.h:74
Definition seadTaskMgr.h:19
Definition seadTaskParameter.h:9
Definition seadTaskID.h:83
s32 mID
Definition seadTaskID.h:85
Definition seadAssert.h:44
TaskBase * TTaskFactory(const TaskConstructArg &arg)
Definition seadTaskID.h:92
Definition seadTaskID.h:14
TaskParameter * param
Definition seadTaskID.h:31
TaskConstructArg()
Definition seadTaskID.h:15
TaskMgr * mgr
Definition seadTaskID.h:30
HeapArray * heap_array
Definition seadTaskID.h:29
TaskConstructArg(HeapArray *heap_array_, TaskMgr *mgr_, TaskParameter *param_)
Definition seadTaskID.h:22