Fission FSN
Loading...
Searching...
No Matches
fsIShare.h
Go to the documentation of this file.
1/********************************************************************
2*
3* File: fsIShare.h
4*
5* Purpose: Interface for platform sharing
6*
7*********************************************************************/
8
9#ifndef fsISharehdr
10#define fsISharehdr
11
12#if defined fsShare
13
14#include <memory>
15
16#include <fsCore/fsBaseTypes.h>
17
18
19class fsIShare
20{
21public:
22
23 typedef void (*TShareCallback)();
24
25 void shareMe();
26
27 void declineToShare();
28 void shareLater();
29 void shared();
30
31 void declineToShareCallbackRegister(TShareCallback pHandler, void* const pCaller);
32 void sharedCallbackRegister(TShareCallback pHandler, void* const pCaller);
33 void shareLaterCallbackRegister(TShareCallback pHandler, void* const pCaller);
34
35 static std::unique_ptr<fsIShare> create();
36
37 virtual ~fsIShare() = default;
38
39protected:
40
41 fsIShare() = default;
42 virtual void shareMeDo() = 0;
43
44private:
45
46 struct SShareCallback
47 {
48 SShareCallback() :
49 mHandler(nullptr),
50 mContext(nullptr)
51 {
52 }
53
54 TShareCallback mHandler;
55 void* mContext;
56 };
57
58 static void callbackInvoke(const SShareCallback& pCallback);
59
60 SShareCallback mDeclineToShareCallback;
61 SShareCallback mSharedCallback;
62 SShareCallback mShareLaterCallback;
63};
64
65#endif
66#endif
void create()
Definition fsN3d.cpp:9