sead
Loading...
Searching...
No Matches
seadMethodTree.h
Go to the documentation of this file.
1#ifndef SEAD_METHODTREE_H_
2#define SEAD_METHODTREE_H_
3
4#include <container/seadTreeNode.h>
5#include <heap/seadDisposer.h>
6#include <prim/seadBitFlag.h>
7#include <prim/seadDelegate.h>
8#include <prim/seadNamable.h>
9#include <prim/seadRuntimeTypeInfo.h>
10//#include <thread/seadCriticalSection.h>
11
12namespace sead {
13
14class CriticalSection;
15
17{
19
20public:
28
29public:
31 : TTreeNode<MethodTreeNode*>()
32 , INamable()
33 , IDisposer()
34 , mCriticalSection(cs)
35 , mPauseFlag(0)
36 , mPauseEventDelegate(nullptr)
37 , mUserID(nullptr)
38 {
39 new (mDelegateHolder) Delegate<aaaaaaaaaaa>();
40 mPauseFlag = BitFlag32(0);
41 } */
42
43 virtual ~MethodTreeNode()
44 {
46 }
47
49 {
50 if (parent() != nullptr)
51 return parent()->val();
52 else
53 return nullptr;
54 }
55
57 {
58 if (child() != nullptr)
59 return child()->val();
60 else
61 return nullptr;
62 }
63
65 {
66 if (next() != nullptr)
67 return next()->val();
68 else
69 return nullptr;
70 }
71
72 void attachMutexRec_(CriticalSection* m) const;
73 void detachAll();
74 void lock_();
75 void unlock_();
76
77 void call();
78
80 {
81 lock_();
83 mPauseEventDelegate->invoke(this, f);
84
85 mPauseFlag.setDirect(f);
87 }
88
90
91 struct { u32 data_[4]; } mDelegateHolder;
96 void* mUserID;
97};
98#ifdef cafe
99static_assert(sizeof(MethodTreeNode) == 0x54, "sead::MethodTreeNode size mismatch");
100#endif // cafe
101
102} // namespace sead
103
104#endif // SEAD_METHODTREE_H_
Definition seadCriticalSection.h:13
Definition seadDelegate.h:433
Definition seadDisposer.h:12
Definition seadNamable.h:9
Definition seadMethodTree.h:17
MethodTreeNode * getChild() const
Definition seadMethodTree.h:56
void * mUserID
Definition seadMethodTree.h:96
void setPauseFlag(PauseFlag f)
Definition seadMethodTree.h:79
MethodTreeNode(CriticalSection *cs)
BitFlag32 mPauseFlag
Definition seadMethodTree.h:94
u32 data_[4]
Definition seadMethodTree.h:91
MethodTreeNode * getParent() const
Definition seadMethodTree.h:48
void unlock_()
Definition seadMethodTree.cpp:41
PauseEventDelegate * mPauseEventDelegate
Definition seadMethodTree.h:95
u32 mPriority
Definition seadMethodTree.h:93
IDelegate2< MethodTreeNode *, PauseFlag > PauseEventDelegate
Definition seadMethodTree.h:89
void lock_()
Definition seadMethodTree.cpp:35
CriticalSection * mCriticalSection
Definition seadMethodTree.h:92
virtual ~MethodTreeNode()
Definition seadMethodTree.h:43
MethodTreeNode * getNext() const
Definition seadMethodTree.h:64
void detachAll()
Definition seadMethodTree.cpp:22
PauseFlag
Definition seadMethodTree.h:22
@ cPause_None
Definition seadMethodTree.h:23
@ cPause_Child
Definition seadMethodTree.h:25
@ cPause_Both
Definition seadMethodTree.h:26
@ cPause_Self
Definition seadMethodTree.h:24
void attachMutexRec_(CriticalSection *m) const
Definition seadMethodTree.cpp:7
Definition seadAssert.h:44
BitFlag< u32 > BitFlag32
Definition seadBitFlag.h:125
#define SEAD_RTTI_BASE(CLASS)
Definition seadRuntimeTypeInfo.h:75