36 #include <boost/version.hpp>
43 #if BOOST_VERSION < 106300
47 #ifdef BOOST_HAS_NUMPY
49 #include <boost/python.hpp>
50 #include <boost/python/numpy.hpp>
53 namespace np = boost::python::numpy;
57 #include <boost/python.hpp>
58 #include <boost/numpy.hpp>
61 namespace np = boost::numpy;
65 #define SIZENAME(s) SIZE_##s
66 #define NEKPY_WRAP_ENUM(ENUMNAME,MAPNAME) \
68 py::enum_<ENUMNAME> tmp(#ENUMNAME); \
69 for (int a = 0; a < (int)SIZENAME(ENUMNAME); ++a) \
71 tmp.value(MAPNAME[a], (ENUMNAME)a); \
73 tmp.export_values(); \
75 #define NEKPY_WRAP_ENUM_STRING(ENUMNAME,MAPNAME) \
77 py::enum_<ENUMNAME> tmp(#ENUMNAME); \
78 for (int a = 0; a < (int)SIZENAME(ENUMNAME); ++a) \
80 tmp.value(MAPNAME[a].c_str(), (ENUMNAME)a); \
82 tmp.export_values(); \
84 #if PY_MAJOR_VERSION == 2
85 #define NEKPY_WRAP_ENUM_STRING_DOCS(ENUMNAME,MAPNAME,DOCSTRING) \
87 py::enum_<ENUMNAME> tmp(#ENUMNAME); \
88 for (int a = 0; a < (int)SIZENAME(ENUMNAME); ++a) \
90 tmp.value(MAPNAME[a].c_str(), (ENUMNAME)a); \
92 tmp.export_values(); \
93 PyTypeObject * pto = \
94 reinterpret_cast<PyTypeObject*>(tmp.ptr()); \
95 PyDict_SetItemString(pto->tp_dict, "__doc__", \
96 PyString_FromString(DOCSTRING)); \
99 #define NEKPY_WRAP_ENUM_STRING_DOCS(ENUMNAME,MAPNAME,DOCSTRING) \
101 py::enum_<ENUMNAME> tmp(#ENUMNAME); \
102 for (int a = 0; a < (int)SIZENAME(ENUMNAME); ++a) \
104 tmp.value(MAPNAME[a].c_str(), (ENUMNAME)a); \
106 tmp.export_values(); \
107 PyTypeObject * pto = \
108 reinterpret_cast<PyTypeObject*>(tmp.ptr()); \
109 PyDict_SetItemString(pto->tp_dict, "__doc__", \
110 PyUnicode_FromString(DOCSTRING)); \