37 lines
1.3 KiB
Plaintext
37 lines
1.3 KiB
Plaintext
// Copyright Jim Bosch 2010-2012.
|
|
// Copyright Stefan Seefeld 2016.
|
|
// Distributed under the Boost Software License, Version 1.0.
|
|
// (See accompanying file LICENSE_1_0.txt or copy at
|
|
// http://www.boost.org/LICENSE_1_0.txt)
|
|
|
|
#ifndef boost_python_numpy_numpy_object_mgr_traits_hpp_
|
|
#define boost_python_numpy_numpy_object_mgr_traits_hpp_
|
|
|
|
/**
|
|
* @brief Macro that specializes object_manager_traits by requiring a
|
|
* source-file implementation of get_pytype().
|
|
*/
|
|
|
|
#define NUMPY_OBJECT_MANAGER_TRAITS(manager) \
|
|
template <> \
|
|
struct object_manager_traits<manager> \
|
|
{ \
|
|
BOOST_STATIC_CONSTANT(bool, is_specialized = true); \
|
|
static inline python::detail::new_reference adopt(PyObject* x) \
|
|
{ \
|
|
return python::detail::new_reference(python::pytype_check((PyTypeObject*)get_pytype(), x)); \
|
|
} \
|
|
static bool check(PyObject* x) \
|
|
{ \
|
|
return ::PyObject_IsInstance(x, (PyObject*)get_pytype()); \
|
|
} \
|
|
static manager* checked_downcast(PyObject* x) \
|
|
{ \
|
|
return python::downcast<manager>((checked_downcast_impl)(x, (PyTypeObject*)get_pytype())); \
|
|
} \
|
|
static PyTypeObject const * get_pytype(); \
|
|
}
|
|
|
|
#endif
|
|
|