SMG-Decomp
A decompilation of Super Mario Galaxy 1
Loading...
Searching...
No Matches
TalkMessageFunc.hpp
1#pragma once
2
3#include "Inline.hpp"
4#include <JSystem/JKernel/JKRHeap.hpp>
5
7public:
8 virtual void operator()() const = 0;
9 virtual TalkMessageFuncBase* clone() const = 0;
10 virtual TalkMessageFuncBase* clone(JKRHeap *) const = 0;
11};
12
13template<typename T, typename U>
15public:
16
17 inline TalkMessageFuncM(T call, U callee)
18 : mCaller(call), mCallee(callee) {
19 }
20
21 inline TalkMessageFuncM() {
22
23 }
24
25 virtual void operator()() const {
26 (mCaller->*mCallee)();
27 }
28
29 virtual TalkMessageFuncM* clone() const {
30 return new TalkMessageFuncM(*this);
31 }
32
33 virtual TalkMessageFuncM* clone(JKRHeap *pHeap) const {
34 return new (pHeap, 0) TalkMessageFuncM(*this);
35 };
36
37 T mCaller;
38 U mCallee;
39};
40
41template<class T>
42static TalkMessageFuncM<T *, void (T::*)()> TalkMessageFunc(T* a1, void (T::*a2)()) NO_INLINE {
43 return TalkMessageFuncM<T *, void (T::*)()>(a1, a2);
44}