38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			38 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | // Copyright David Abrahams 2002. | ||
|  | // 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 PYOBJECT_TYPE_DWA2002720_HPP | ||
|  | # define PYOBJECT_TYPE_DWA2002720_HPP | ||
|  | 
 | ||
|  | # include <boost/python/cast.hpp> | ||
|  | 
 | ||
|  | namespace boost { namespace python { namespace converter {  | ||
|  | 
 | ||
|  | BOOST_PYTHON_DECL PyObject* checked_downcast_impl(PyObject*, PyTypeObject*); | ||
|  | 
 | ||
|  | // Used as a base class for specializations which need to provide | ||
|  | // Python type checking capability. | ||
|  | template <class Object, PyTypeObject* pytype> | ||
|  | struct pyobject_type  | ||
|  | { | ||
|  |     static bool check(PyObject* x) | ||
|  |     { | ||
|  |         return ::PyObject_IsInstance(x, (PyObject*)pytype); | ||
|  |     } | ||
|  | 
 | ||
|  |     static Object* checked_downcast(PyObject* x) | ||
|  |     { | ||
|  |         return python::downcast<Object>( | ||
|  |             (checked_downcast_impl)(x, pytype) | ||
|  |             ); | ||
|  |     } | ||
|  | #ifndef BOOST_PYTHON_NO_PY_SIGNATURES | ||
|  |     static PyTypeObject const* get_pytype() { return pytype; } | ||
|  | #endif | ||
|  | }; | ||
|  | 
 | ||
|  | }}} // namespace boost::python::converter | ||
|  | 
 | ||
|  | #endif // PYOBJECT_TYPE_DWA2002720_HPP |