You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and dots ('.'), can be up to 35 characters long. Letters must be lowercase.
46 lines
1.4 KiB
46 lines
1.4 KiB
// 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_TRAITS_DWA2002720_HPP |
|
# define PYOBJECT_TRAITS_DWA2002720_HPP |
|
|
|
# include <boost/python/detail/prefix.hpp> |
|
# include <boost/python/converter/pyobject_type.hpp> |
|
|
|
namespace boost { namespace python { namespace converter { |
|
|
|
template <class> struct pyobject_traits; |
|
|
|
template <> |
|
struct pyobject_traits<PyObject> |
|
{ |
|
// All objects are convertible to PyObject |
|
static bool check(PyObject*) { return true; } |
|
static PyObject* checked_downcast(PyObject* x) { return x; } |
|
#ifndef BOOST_PYTHON_NO_PY_SIGNATURES |
|
static PyTypeObject const* get_pytype() { return 0; } |
|
#endif |
|
}; |
|
|
|
// |
|
// Specializations |
|
// |
|
|
|
# define BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(T) \ |
|
template <> struct pyobject_traits<Py##T##Object> \ |
|
: pyobject_type<Py##T##Object, &Py##T##_Type> {} |
|
|
|
// This is not an exhaustive list; should be expanded. |
|
BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Type); |
|
BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(List); |
|
#if PY_VERSION_HEX < 0x03000000 |
|
BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Int); |
|
#endif |
|
BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Long); |
|
BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Dict); |
|
BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Tuple); |
|
|
|
}}} // namespace boost::python::converter |
|
|
|
#endif // PYOBJECT_TRAITS_DWA2002720_HPP
|
|
|