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/numpy.hpp>
58 #include <boost/python.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 = reinterpret_cast<PyTypeObject *>(tmp.ptr()); \
94 PyDict_SetItemString(pto->tp_dict, "__doc__", \
95 PyString_FromString(DOCSTRING)); \
98 #define NEKPY_WRAP_ENUM_STRING_DOCS(ENUMNAME, MAPNAME, DOCSTRING) \
100 py::enum_<ENUMNAME> tmp(#ENUMNAME); \
101 for (int a = 0; a < (int)SIZENAME(ENUMNAME); ++a) \
103 tmp.value(MAPNAME[a].c_str(), (ENUMNAME)a); \
105 tmp.export_values(); \
106 PyTypeObject *pto = reinterpret_cast<PyTypeObject *>(tmp.ptr()); \
107 PyDict_SetItemString(pto->tp_dict, "__doc__", \
108 PyUnicode_FromString(DOCSTRING)); \