11 #ifndef PXR_BASE_TF_STATIC_TOKENS_H
12 #define PXR_BASE_TF_STATIC_TOKENS_H
68 #define _TF_DECLARE_PUBLIC_TOKENS3(key, eiapi, seq) \
69 _TF_DECLARE_TOKENS3(key, seq, eiapi) \
70 extern eiapi TfStaticData<_TF_TOKENS_STRUCT_NAME(key)> key
71 #define _TF_DECLARE_PUBLIC_TOKENS2(key, seq) \
72 _TF_DECLARE_TOKENS2(key, seq) \
73 extern TfStaticData<_TF_TOKENS_STRUCT_NAME(key)> key
74 #define _TF_DECLARE_PUBLIC_TOKENS(N) _TF_DECLARE_PUBLIC_TOKENS##N
75 #define _TF_DECLARE_PUBLIC_TOKENS_EVAL(N) _TF_DECLARE_PUBLIC_TOKENS(N)
76 #define _TF_DECLARE_PUBLIC_TOKENS_EXPAND(x) x
81 #define TF_DECLARE_PUBLIC_TOKENS(...) _TF_DECLARE_PUBLIC_TOKENS_EXPAND( _TF_DECLARE_PUBLIC_TOKENS_EVAL(_TF_DECLARE_PUBLIC_TOKENS_EXPAND( TF_PP_VARIADIC_SIZE(__VA_ARGS__) ))(__VA_ARGS__) )
86 #define TF_DEFINE_PUBLIC_TOKENS(key, seq) \
87 _TF_DEFINE_TOKENS(key) \
88 TfStaticData<_TF_TOKENS_STRUCT_NAME(key)> key
92 #define TF_DEFINE_PRIVATE_TOKENS(key, seq) \
94 struct _TF_TOKENS_STRUCT_NAME_PRIVATE(key) { \
95 _TF_TOKENS_STRUCT_NAME_PRIVATE(key)() = default; \
96 _TF_TOKENS_DECLARE_MEMBERS(seq) \
99 static TfStaticData<_TF_TOKENS_STRUCT_NAME_PRIVATE(key)> key
108 #define _TF_TOKENS_STRUCT_NAME_PRIVATE(key) \
109 TF_PP_CAT(key, _PrivateStaticTokenType)
115 #define _TF_TOKENS_STRUCT_NAME(key) \
116 TF_PP_CAT(key, _StaticTokenType)
124 #define _TF_TOKENS_DECLARE_MEMBER(unused, elem) \
125 TfToken _TF_PP_IFF(TF_PP_IS_TUPLE(elem), \
126 TF_PP_TUPLE_ELEM(0, elem), elem){ \
127 _TF_PP_IFF(TF_PP_IS_TUPLE(elem), \
128 TF_PP_TUPLE_ELEM(1, elem), TF_PP_STRINGIZE(elem)), \
130 #define _TF_TOKENS_DECLARE_TOKEN_MEMBERS(seq) \
131 TF_PP_SEQ_FOR_EACH(_TF_TOKENS_DECLARE_MEMBER, ~, seq)
133 #define _TF_TOKENS_FORWARD_TOKEN(unused, elem) TF_PP_TUPLE_ELEM(0, elem),
134 #define _TF_TOKENS_DECLARE_ALL_TOKENS(seq) \
135 std::vector<TfToken> allTokens = \
136 {TF_PP_SEQ_FOR_EACH(_TF_TOKENS_FORWARD_TOKEN, ~, seq)};
140 #define _TF_TOKENS_DECLARE_MEMBERS(seq) \
141 _TF_TOKENS_DECLARE_TOKEN_MEMBERS(seq) \
142 _TF_TOKENS_DECLARE_ALL_TOKENS(seq) \
146 #define _TF_DECLARE_TOKENS3(key, seq, eiapi) \
147 struct _TF_TOKENS_STRUCT_NAME(key) { \
148 eiapi _TF_TOKENS_STRUCT_NAME(key)(); \
149 eiapi ~_TF_TOKENS_STRUCT_NAME(key)(); \
150 _TF_TOKENS_DECLARE_MEMBERS(seq) \
153 #define _TF_DECLARE_TOKENS2(key, seq) \
154 struct _TF_TOKENS_STRUCT_NAME(key) { \
155 _TF_TOKENS_STRUCT_NAME(key)(); \
156 ~_TF_TOKENS_STRUCT_NAME(key)(); \
157 _TF_TOKENS_DECLARE_MEMBERS(seq) \
165 #define _TF_DEFINE_TOKENS(key) \
166 _TF_TOKENS_STRUCT_NAME(key)::~_TF_TOKENS_STRUCT_NAME(key)() = default; \
167 _TF_TOKENS_STRUCT_NAME(key)::_TF_TOKENS_STRUCT_NAME(key)() = default; \
171 #endif // PXR_BASE_TF_STATIC_TOKENS_H
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE