KIDS  ver-0.0.1
KIDS : Kernel Integrated Dynamics Simulator
Loading...
Searching...
No Matches
Policy.h File Reference
#include <map>
#include <string>
Include dependency graph for Policy.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define VAR_NAME(x)   #x
 
#define CAT_NAME(x, y)   x##y
 
#define SELECT_NAME(NAME, NUM)   CAT_NAME(NAME##_, NUM)
 
#define ARG_COUNT(...)
 
#define ARG_COUNT_PRIVATE_IMPL(_0, _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, count, ...)    count
 
#define VA_SELECT(NAME, ...)   SELECT_NAME(NAME, ARG_COUNT(__VA_ARGS__))(__VA_ARGS__)
 
#define KV_TERMS_50(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_49(__VA_ARGS__)
 
#define KV_TERMS_49(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_48(__VA_ARGS__)
 
#define KV_TERMS_48(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_47(__VA_ARGS__)
 
#define KV_TERMS_47(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_46(__VA_ARGS__)
 
#define KV_TERMS_46(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_45(__VA_ARGS__)
 
#define KV_TERMS_45(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_44(__VA_ARGS__)
 
#define KV_TERMS_44(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_43(__VA_ARGS__)
 
#define KV_TERMS_43(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_42(__VA_ARGS__)
 
#define KV_TERMS_42(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_41(__VA_ARGS__)
 
#define KV_TERMS_41(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_40(__VA_ARGS__)
 
#define KV_TERMS_40(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_39(__VA_ARGS__)
 
#define KV_TERMS_39(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_38(__VA_ARGS__)
 
#define KV_TERMS_38(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_37(__VA_ARGS__)
 
#define KV_TERMS_37(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_36(__VA_ARGS__)
 
#define KV_TERMS_36(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_35(__VA_ARGS__)
 
#define KV_TERMS_35(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_34(__VA_ARGS__)
 
#define KV_TERMS_34(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_33(__VA_ARGS__)
 
#define KV_TERMS_33(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_32(__VA_ARGS__)
 
#define KV_TERMS_32(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_31(__VA_ARGS__)
 
#define KV_TERMS_31(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_30(__VA_ARGS__)
 
#define KV_TERMS_30(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_29(__VA_ARGS__)
 
#define KV_TERMS_29(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_28(__VA_ARGS__)
 
#define KV_TERMS_28(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_27(__VA_ARGS__)
 
#define KV_TERMS_27(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_26(__VA_ARGS__)
 
#define KV_TERMS_26(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_25(__VA_ARGS__)
 
#define KV_TERMS_25(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_24(__VA_ARGS__)
 
#define KV_TERMS_24(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_23(__VA_ARGS__)
 
#define KV_TERMS_23(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_22(__VA_ARGS__)
 
#define KV_TERMS_22(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_21(__VA_ARGS__)
 
#define KV_TERMS_21(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_20(__VA_ARGS__)
 
#define KV_TERMS_20(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_19(__VA_ARGS__)
 
#define KV_TERMS_19(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_18(__VA_ARGS__)
 
#define KV_TERMS_18(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_17(__VA_ARGS__)
 
#define KV_TERMS_17(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_16(__VA_ARGS__)
 
#define KV_TERMS_16(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_15(__VA_ARGS__)
 
#define KV_TERMS_15(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_14(__VA_ARGS__)
 
#define KV_TERMS_14(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_13(__VA_ARGS__)
 
#define KV_TERMS_13(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_12(__VA_ARGS__)
 
#define KV_TERMS_12(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_11(__VA_ARGS__)
 
#define KV_TERMS_11(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_10(__VA_ARGS__)
 
#define KV_TERMS_10(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_9(__VA_ARGS__)
 
#define KV_TERMS_9(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_8(__VA_ARGS__)
 
#define KV_TERMS_8(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_7(__VA_ARGS__)
 
#define KV_TERMS_7(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_6(__VA_ARGS__)
 
#define KV_TERMS_6(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_5(__VA_ARGS__)
 
#define KV_TERMS_5(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_4(__VA_ARGS__)
 
#define KV_TERMS_4(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_3(__VA_ARGS__)
 
#define KV_TERMS_3(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_2(__VA_ARGS__)
 
#define KV_TERMS_2(TERM1, ...)   {VAR_NAME(TERM1), TERM1}, KV_TERMS_1(__VA_ARGS__)
 
#define KV_TERMS_1(TERM1, ...)    { VAR_NAME(TERM1), TERM1 }
 
#define KV_TERMS(...)   VA_SELECT(KV_TERMS, ##__VA_ARGS__)
 
#define DEFINE_POLICY(Policy, ...)
 

Macro Definition Documentation

◆ ARG_COUNT

#define ARG_COUNT ( ...)
Value:
ARG_COUNT_PRIVATE_IMPL(0, ##__VA_ARGS__, \
50, 49, 48, 47, 46, 45, 44, 43, 42, 41, \
40, 39, 38, 37, 36, 35, 34, 33, 32, 31, \
30, 29, 28, 27, 26, 25, 24, 23, 22, 21, \
20, 19, 18, 17, 16, 15, 14, 13, 12, 11, \
10, 9, 8, 7, 6, 5, 4, 3, 2, 1, \
0)
#define ARG_COUNT_PRIVATE_IMPL(_0, _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, count,...)
Definition Policy.h:19

Definition at line 10 of file Policy.h.

◆ ARG_COUNT_PRIVATE_IMPL

#define ARG_COUNT_PRIVATE_IMPL ( _0,
_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,
count,
... )    count

Definition at line 19 of file Policy.h.

◆ CAT_NAME

#define CAT_NAME ( x,
y )   x##y

Definition at line 8 of file Policy.h.

◆ DEFINE_POLICY

#define DEFINE_POLICY ( Policy,
... )
Value:
namespace Policy { \
enum _type { __VA_ARGS__ }; \
static const std::map<std::string, _type> _dict = {KV_TERMS(__VA_ARGS__)}; \
static inline void _help() { \
std::cout << "Helps for " << #Policy << ":\n"; \
for (auto& i : _dict) std::cout << i.first << " [available]\n"; \
} \
static inline _type _from(std::string s) { \
try { \
return _dict.at(s); \
} catch (std::out_of_range & e) { _help(); } \
return _type(0); \
} \
};
#define KV_TERMS(...)
Definition Policy.h:81
const std::map< std::string, _enum > _dict
Definition io_utils.h:81

Definition at line 83 of file Policy.h.

◆ KV_TERMS

#define KV_TERMS ( ...)    VA_SELECT(KV_TERMS, ##__VA_ARGS__)

Definition at line 81 of file Policy.h.

◆ KV_TERMS_1

#define KV_TERMS_1 ( TERM1,
... )    { VAR_NAME(TERM1), TERM1 }

Definition at line 78 of file Policy.h.

◆ KV_TERMS_10

#define KV_TERMS_10 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_9(__VA_ARGS__)

Definition at line 69 of file Policy.h.

◆ KV_TERMS_11

#define KV_TERMS_11 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_10(__VA_ARGS__)

Definition at line 68 of file Policy.h.

◆ KV_TERMS_12

#define KV_TERMS_12 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_11(__VA_ARGS__)

Definition at line 67 of file Policy.h.

◆ KV_TERMS_13

#define KV_TERMS_13 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_12(__VA_ARGS__)

Definition at line 66 of file Policy.h.

◆ KV_TERMS_14

#define KV_TERMS_14 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_13(__VA_ARGS__)

Definition at line 65 of file Policy.h.

◆ KV_TERMS_15

#define KV_TERMS_15 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_14(__VA_ARGS__)

Definition at line 64 of file Policy.h.

◆ KV_TERMS_16

#define KV_TERMS_16 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_15(__VA_ARGS__)

Definition at line 63 of file Policy.h.

◆ KV_TERMS_17

#define KV_TERMS_17 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_16(__VA_ARGS__)

Definition at line 62 of file Policy.h.

◆ KV_TERMS_18

#define KV_TERMS_18 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_17(__VA_ARGS__)

Definition at line 61 of file Policy.h.

◆ KV_TERMS_19

#define KV_TERMS_19 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_18(__VA_ARGS__)

Definition at line 60 of file Policy.h.

◆ KV_TERMS_2

#define KV_TERMS_2 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_1(__VA_ARGS__)

Definition at line 77 of file Policy.h.

◆ KV_TERMS_20

#define KV_TERMS_20 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_19(__VA_ARGS__)

Definition at line 59 of file Policy.h.

◆ KV_TERMS_21

#define KV_TERMS_21 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_20(__VA_ARGS__)

Definition at line 58 of file Policy.h.

◆ KV_TERMS_22

#define KV_TERMS_22 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_21(__VA_ARGS__)

Definition at line 57 of file Policy.h.

◆ KV_TERMS_23

#define KV_TERMS_23 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_22(__VA_ARGS__)

Definition at line 56 of file Policy.h.

◆ KV_TERMS_24

#define KV_TERMS_24 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_23(__VA_ARGS__)

Definition at line 55 of file Policy.h.

◆ KV_TERMS_25

#define KV_TERMS_25 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_24(__VA_ARGS__)

Definition at line 54 of file Policy.h.

◆ KV_TERMS_26

#define KV_TERMS_26 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_25(__VA_ARGS__)

Definition at line 53 of file Policy.h.

◆ KV_TERMS_27

#define KV_TERMS_27 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_26(__VA_ARGS__)

Definition at line 52 of file Policy.h.

◆ KV_TERMS_28

#define KV_TERMS_28 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_27(__VA_ARGS__)

Definition at line 51 of file Policy.h.

◆ KV_TERMS_29

#define KV_TERMS_29 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_28(__VA_ARGS__)

Definition at line 50 of file Policy.h.

◆ KV_TERMS_3

#define KV_TERMS_3 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_2(__VA_ARGS__)

Definition at line 76 of file Policy.h.

◆ KV_TERMS_30

#define KV_TERMS_30 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_29(__VA_ARGS__)

Definition at line 49 of file Policy.h.

◆ KV_TERMS_31

#define KV_TERMS_31 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_30(__VA_ARGS__)

Definition at line 48 of file Policy.h.

◆ KV_TERMS_32

#define KV_TERMS_32 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_31(__VA_ARGS__)

Definition at line 47 of file Policy.h.

◆ KV_TERMS_33

#define KV_TERMS_33 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_32(__VA_ARGS__)

Definition at line 46 of file Policy.h.

◆ KV_TERMS_34

#define KV_TERMS_34 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_33(__VA_ARGS__)

Definition at line 45 of file Policy.h.

◆ KV_TERMS_35

#define KV_TERMS_35 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_34(__VA_ARGS__)

Definition at line 44 of file Policy.h.

◆ KV_TERMS_36

#define KV_TERMS_36 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_35(__VA_ARGS__)

Definition at line 43 of file Policy.h.

◆ KV_TERMS_37

#define KV_TERMS_37 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_36(__VA_ARGS__)

Definition at line 42 of file Policy.h.

◆ KV_TERMS_38

#define KV_TERMS_38 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_37(__VA_ARGS__)

Definition at line 41 of file Policy.h.

◆ KV_TERMS_39

#define KV_TERMS_39 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_38(__VA_ARGS__)

Definition at line 40 of file Policy.h.

◆ KV_TERMS_4

#define KV_TERMS_4 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_3(__VA_ARGS__)

Definition at line 75 of file Policy.h.

◆ KV_TERMS_40

#define KV_TERMS_40 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_39(__VA_ARGS__)

Definition at line 39 of file Policy.h.

◆ KV_TERMS_41

#define KV_TERMS_41 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_40(__VA_ARGS__)

Definition at line 38 of file Policy.h.

◆ KV_TERMS_42

#define KV_TERMS_42 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_41(__VA_ARGS__)

Definition at line 37 of file Policy.h.

◆ KV_TERMS_43

#define KV_TERMS_43 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_42(__VA_ARGS__)

Definition at line 36 of file Policy.h.

◆ KV_TERMS_44

#define KV_TERMS_44 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_43(__VA_ARGS__)

Definition at line 35 of file Policy.h.

◆ KV_TERMS_45

#define KV_TERMS_45 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_44(__VA_ARGS__)

Definition at line 34 of file Policy.h.

◆ KV_TERMS_46

#define KV_TERMS_46 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_45(__VA_ARGS__)

Definition at line 33 of file Policy.h.

◆ KV_TERMS_47

#define KV_TERMS_47 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_46(__VA_ARGS__)

Definition at line 32 of file Policy.h.

◆ KV_TERMS_48

#define KV_TERMS_48 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_47(__VA_ARGS__)

Definition at line 31 of file Policy.h.

◆ KV_TERMS_49

#define KV_TERMS_49 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_48(__VA_ARGS__)

Definition at line 30 of file Policy.h.

◆ KV_TERMS_5

#define KV_TERMS_5 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_4(__VA_ARGS__)

Definition at line 74 of file Policy.h.

◆ KV_TERMS_50

#define KV_TERMS_50 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_49(__VA_ARGS__)

Definition at line 29 of file Policy.h.

◆ KV_TERMS_6

#define KV_TERMS_6 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_5(__VA_ARGS__)

Definition at line 73 of file Policy.h.

◆ KV_TERMS_7

#define KV_TERMS_7 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_6(__VA_ARGS__)

Definition at line 72 of file Policy.h.

◆ KV_TERMS_8

#define KV_TERMS_8 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_7(__VA_ARGS__)

Definition at line 71 of file Policy.h.

◆ KV_TERMS_9

#define KV_TERMS_9 ( TERM1,
... )   {VAR_NAME(TERM1), TERM1}, KV_TERMS_8(__VA_ARGS__)

Definition at line 70 of file Policy.h.

◆ SELECT_NAME

#define SELECT_NAME ( NAME,
NUM )   CAT_NAME(NAME##_, NUM)

Definition at line 9 of file Policy.h.

◆ VA_SELECT

#define VA_SELECT ( NAME,
... )   SELECT_NAME(NAME, ARG_COUNT(__VA_ARGS__))(__VA_ARGS__)

Definition at line 27 of file Policy.h.

◆ VAR_NAME

#define VAR_NAME ( x)    #x

Definition at line 7 of file Policy.h.