24 #ifdef PXR_BASE_TF_PY_MODULE_H 25 #error This file should only be included once in any given source (.cpp) file. 27 #define PXR_BASE_TF_PY_MODULE_H 32 #include "pxr/base/tf/api.h" 33 #include "pxr/base/tf/preprocessorUtilsLite.h" 35 #include <boost/preprocessor/cat.hpp> 36 #include <boost/python/module.hpp> 50 static void WrapModule();
52 PXR_NAMESPACE_OPEN_SCOPE
55 void Tf_PyInitWrapModule(
void (*wrapModule)(),
56 const char* packageModule,
57 const char* packageName,
58 const char* packageTag,
59 const char* packageTag2);
62 void BOOST_PP_CAT(init_module_, MFB_PACKAGE_NAME)() {
66 TF_PP_STRINGIZE(MFB_PACKAGE_MODULE),
67 TF_PP_STRINGIZE(MFB_ALT_PACKAGE_NAME),
68 "Wrap " TF_PP_STRINGIZE(MFB_ALT_PACKAGE_NAME),
69 TF_PP_STRINGIZE(MFB_PACKAGE_NAME)
73 PXR_NAMESPACE_CLOSE_SCOPE
75 #if PY_MAJOR_VERSION == 2 85 void BOOST_PP_CAT(init_, MFB_PACKAGE_NAME)() {
86 PXR_NAMESPACE_USING_DIRECTIVE
87 boost::python::detail::init_module
88 (TF_PP_STRINGIZE(BOOST_PP_CAT(_,MFB_PACKAGE_NAME)),
89 TF_PP_CAT(&init_module_, MFB_PACKAGE_NAME));
106 void BOOST_PP_CAT(initlib, MFB_PACKAGE_NAME)() {
107 PXR_NAMESPACE_USING_DIRECTIVE
108 boost::python::detail::init_module
109 (TF_PP_STRINGIZE(BOOST_PP_CAT(lib,MFB_PACKAGE_NAME)),
110 TF_PP_CAT(&init_module_, MFB_PACKAGE_NAME));
126 PyObject* BOOST_PP_CAT(PyInit__, MFB_PACKAGE_NAME)() {
128 static struct PyModuleDef moduledef = {
129 PyModuleDef_HEAD_INIT,
130 TF_PP_STRINGIZE(BOOST_PP_CAT(_, MFB_PACKAGE_NAME)),
140 PXR_NAMESPACE_USING_DIRECTIVE
141 return boost::python::detail::init_module(moduledef,
142 BOOST_PP_CAT(init_module_, MFB_PACKAGE_NAME));
147 PyObject* BOOST_PP_CAT(PyInit_lib, MFB_PACKAGE_NAME)() {
149 static struct PyModuleDef moduledef = {
150 PyModuleDef_HEAD_INIT,
151 TF_PP_STRINGIZE(BOOST_PP_CAT(lib, MFB_PACKAGE_NAME)),
161 PXR_NAMESPACE_USING_DIRECTIVE
162 return boost::python::detail::init_module(moduledef,
163 BOOST_PP_CAT(init_module_, MFB_PACKAGE_NAME));
169 #define TF_WRAP_MODULE static void WrapModule() 172 #define TF_WRAP(x) ARCH_HIDDEN void wrap ## x (); wrap ## x () Define function attributes.