11 #ifndef PXR_BASE_TF_STATIC_TOKENS_H
12 #define PXR_BASE_TF_STATIC_TOKENS_H
74 #define _TF_DECLARE_PUBLIC_TOKENS3(key, eiapi, seq) \
75 _TF_DECLARE_TOKENS3(key, seq, eiapi) \
76 extern eiapi TfStaticData<_TF_TOKENS_STRUCT_NAME(key)> key
77 #define _TF_DECLARE_PUBLIC_TOKENS2(key, seq) \
78 _TF_DECLARE_TOKENS2(key, seq) \
79 extern TfStaticData<_TF_TOKENS_STRUCT_NAME(key)> key
80 #define _TF_DECLARE_PUBLIC_TOKENS(N) _TF_DECLARE_PUBLIC_TOKENS##N
81 #define _TF_DECLARE_PUBLIC_TOKENS_EVAL(N) _TF_DECLARE_PUBLIC_TOKENS(N)
82 #define _TF_DECLARE_PUBLIC_TOKENS_EXPAND(x) x
89 #if defined(ARCH_PREPROCESSOR_MSVC_TRADITIONAL) && defined(__INTELLISENSE__)
90 #define TF_DECLARE_PUBLIC_TOKENS(...)
92 #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__) )
98 #define TF_DEFINE_PUBLIC_TOKENS(key, seq) \
99 _TF_DEFINE_TOKENS(key) \
100 TfStaticData<_TF_TOKENS_STRUCT_NAME(key)> key
104 #define TF_DEFINE_PRIVATE_TOKENS(key, seq) \
106 struct _TF_TOKENS_STRUCT_NAME_PRIVATE(key) { \
107 _TF_TOKENS_STRUCT_NAME_PRIVATE(key)() = default; \
108 _TF_TOKENS_DECLARE_MEMBERS(seq) \
111 static TfStaticData<_TF_TOKENS_STRUCT_NAME_PRIVATE(key)> key
120 #define _TF_TOKENS_STRUCT_NAME_PRIVATE(key) \
121 TF_PP_CAT(key, _PrivateStaticTokenType)
127 #define _TF_TOKENS_STRUCT_NAME(key) \
128 TF_PP_CAT(key, _StaticTokenType)
136 #define _TF_TOKENS_DECLARE_MEMBER(unused, elem) \
137 TfToken _TF_PP_IFF(TF_PP_IS_TUPLE(elem), \
138 TF_PP_TUPLE_ELEM(0, elem), elem){ \
139 _TF_PP_IFF(TF_PP_IS_TUPLE(elem), \
140 TF_PP_TUPLE_ELEM(1, elem), TF_PP_STRINGIZE(elem)), \
142 #define _TF_TOKENS_DECLARE_TOKEN_MEMBERS(seq) \
143 TF_PP_SEQ_FOR_EACH(_TF_TOKENS_DECLARE_MEMBER, ~, seq)
145 #define _TF_TOKENS_FORWARD_TOKEN(unused, elem) TF_PP_TUPLE_ELEM(0, elem),
146 #define _TF_TOKENS_DECLARE_ALL_TOKENS(seq) \
147 std::vector<TfToken> allTokens = \
148 {TF_PP_SEQ_FOR_EACH(_TF_TOKENS_FORWARD_TOKEN, ~, seq)};
152 #define _TF_TOKENS_DECLARE_MEMBERS(seq) \
153 _TF_TOKENS_DECLARE_TOKEN_MEMBERS(seq) \
154 _TF_TOKENS_DECLARE_ALL_TOKENS(seq) \
158 #define _TF_DECLARE_TOKENS3(key, seq, eiapi) \
159 struct _TF_TOKENS_STRUCT_NAME(key) { \
160 eiapi _TF_TOKENS_STRUCT_NAME(key)(); \
161 eiapi ~_TF_TOKENS_STRUCT_NAME(key)(); \
162 _TF_TOKENS_DECLARE_MEMBERS(seq) \
165 #define _TF_DECLARE_TOKENS2(key, seq) \
166 struct _TF_TOKENS_STRUCT_NAME(key) { \
167 _TF_TOKENS_STRUCT_NAME(key)(); \
168 ~_TF_TOKENS_STRUCT_NAME(key)(); \
169 _TF_TOKENS_DECLARE_MEMBERS(seq) \
177 #define _TF_DEFINE_TOKENS(key) \
178 _TF_TOKENS_STRUCT_NAME(key)::~_TF_TOKENS_STRUCT_NAME(key)() = default; \
179 _TF_TOKENS_STRUCT_NAME(key)::_TF_TOKENS_STRUCT_NAME(key)() = default; \
183 #endif // PXR_BASE_TF_STATIC_TOKENS_H
#define PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE