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
 | 
						|
 |