text: // 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
  