]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/libs/python/include/boost/python/converter/pyobject_traits.hpp
bump version to 12.2.2-pve1
[ceph.git] / ceph / src / boost / libs / python / include / boost / python / converter / pyobject_traits.hpp
CommitLineData
7c673cae
FG
1// Copyright David Abrahams 2002.
2// Distributed under the Boost Software License, Version 1.0. (See
3// accompanying file LICENSE_1_0.txt or copy at
4// http://www.boost.org/LICENSE_1_0.txt)
5#ifndef PYOBJECT_TRAITS_DWA2002720_HPP
6# define PYOBJECT_TRAITS_DWA2002720_HPP
7
8# include <boost/python/detail/prefix.hpp>
9# include <boost/python/converter/pyobject_type.hpp>
10
11namespace boost { namespace python { namespace converter {
12
13template <class> struct pyobject_traits;
14
15template <>
16struct pyobject_traits<PyObject>
17{
18 // All objects are convertible to PyObject
19 static bool check(PyObject*) { return true; }
20 static PyObject* checked_downcast(PyObject* x) { return x; }
21#ifndef BOOST_PYTHON_NO_PY_SIGNATURES
22 static PyTypeObject const* get_pytype() { return 0; }
23#endif
24};
25
26//
27// Specializations
28//
29
30# define BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(T) \
31 template <> struct pyobject_traits<Py##T##Object> \
32 : pyobject_type<Py##T##Object, &Py##T##_Type> {}
33
34// This is not an exhaustive list; should be expanded.
35BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Type);
36BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(List);
37#if PY_VERSION_HEX < 0x03000000
38BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Int);
39#endif
40BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Long);
41BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Dict);
42BOOST_PYTHON_BUILTIN_OBJECT_TRAITS(Tuple);
43
44}}} // namespace boost::python::converter
45
46#endif // PYOBJECT_TRAITS_DWA2002720_HPP