8 #ifndef PXR_BASE_TF_PY_STATIC_TOKENS_H
9 #define PXR_BASE_TF_PY_STATIC_TOKENS_H
20 #include "pxr/external/boost/python/class.hpp"
21 #include "pxr/external/boost/python/scope.hpp"
30 #define TF_PY_WRAP_PUBLIC_TOKENS(name, key, seq) \
31 pxr_boost::python::class_< \
32 _TF_TOKENS_STRUCT_NAME(key), pxr_boost::python::noncopyable>( \
33 name, pxr_boost::python::no_init) \
34 _TF_PY_TOKENS_WRAP_SEQ(key, seq)
41 #define TF_PY_WRAP_PUBLIC_TOKENS_IN_CURRENT_SCOPE(key, seq) \
42 _TF_PY_TOKENS_WRAP_ATTR_SEQ(key, seq)
45 #define _TF_PY_TOKENS_WRAP_ATTR_MEMBER(r, key, name) \
46 pxr_boost::python::scope().attr( \
47 TF_PP_STRINGIZE(name)) = key->name.GetString();
56 #define _TF_PY_TOKENS_WRAP_MEMBER(r, key, name) \
57 .add_static_property(TF_PP_STRINGIZE(name), \
58 +[]() { return key->name.GetString(); }) \
61 #define _TF_PY_TOKENS_WRAP_ELEMENT(key, elem) \
62 _TF_PY_TOKENS_WRAP_MEMBER(r, key, _TF_PY_TOKEN_GET_ELEM(elem))
64 #define _TF_PY_TOKENS_WRAP_ATTR_ELEMENT(key, elem) \
65 _TF_PY_TOKENS_WRAP_ATTR_MEMBER(r, key, _TF_PY_TOKEN_GET_ELEM(elem))
67 #define _TF_PY_TOKEN_GET_ELEM(elem) \
68 _TF_PP_IFF(TF_PP_IS_TUPLE(elem), \
69 TF_PP_TUPLE_ELEM(0, elem), elem)
72 #define _TF_PY_TOKENS_WRAP_SEQ(key, seq) \
73 TF_PP_SEQ_FOR_EACH(_TF_PY_TOKENS_WRAP_ELEMENT, key, seq)
75 #define _TF_PY_TOKENS_WRAP_ATTR_SEQ(key, seq) \
76 TF_PP_SEQ_FOR_EACH(_TF_PY_TOKENS_WRAP_ATTR_ELEMENT, key, seq)
80 #endif // PXR_BASE_TF_PY_STATIC_TOKENS_H
PXR_NAMESPACE_CLOSE_SCOPE PXR_NAMESPACE_OPEN_SCOPE
#define PXR_NAMESPACE_CLOSE_SCOPE