-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCFoo.meta.h
59 lines (48 loc) · 1.46 KB
/
CFoo.meta.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#pragma once
#include <Meta.hpp>
#include "CBar.meta.h"
#include "CFoo.h"
namespace Meta::Foo
{
/************
* Members
************/
// private:
using TNumber = CMember<int, "number"_sl>;
/************
* Resources
************/
template <EResourceAccessMode AccessMode>
struct CNumber : CMemberResourceAccess<CFoo, TNumber, AccessMode>
{
};
/************
* Methods
************/
struct CMethodA : CMethodResources<CNumber<EResourceAccessMode::WRITE>,
Bar::CSomeNumber<EResourceAccessMode::WRITE>,
Bar::CSomeString<EResourceAccessMode::READ>>
{
};
struct CMethodB : CMethodResources<Bar::CMethod,
Bar::CSomeString<EResourceAccessMode::READ>>
{
};
struct CMethodC : CMethodResources<CMethodB,
Bar::CSomeString<EResourceAccessMode::READ>,
Bar::CAnotherString<EResourceAccessMode::WRITE>>
{
};
struct CReadSomeString : CMethodResources<CNumber<EResourceAccessMode::WRITE>,
Bar::CSomeString<EResourceAccessMode::READ>>
{
};
}
namespace Meta
{
// all:
using TFooResourcesList = TRegisterResources<GLOBAL_METHOD_RESOURCE_LIST,
Foo::CMethodA, Foo::CMethodB, Foo::CMethodC, Foo::CReadSomeString>;
#undef GLOBAL_METHOD_RESOURCE_LIST
#define GLOBAL_METHOD_RESOURCE_LIST TFooResourcesList
}