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