[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/elmopl/python/develop/src/wrapper.cpp [Back]  [Original]

// Copyright David Abrahams 2004. 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)

#include 

namespace boost { namespace python {

namespace detail
{
  override wrapper_base::get_override(
      char const* name
    , PyTypeObject* class_object
  ) const
  {
      if (this->m_self)
      {
          if (handle m = handle(
                  python::allow_null(
                      ::PyObject_GetAttrString(
                          this->m_self, const_cast(name))))
          )
          {
              PyObject* borrowed_f = 0;
            
              if (
                  PyMethod_Check(m.get())
                  && ((PyMethodObject*)m.get())->im_self == this->m_self
                  && class_object->tp_dict != 0
              )
              {
                  borrowed_f = ::PyDict_GetItemString(
                      class_object->tp_dict, const_cast(name));


              }
              if (borrowed_f != ((PyMethodObject*)m.get())->im_func)
                  return override(m);
          }
      }
      return override(handle(detail::none()));
  }
}

#if 0
namespace converter
{
  PyObject* BOOST_PYTHON_DECL do_polymorphic_ref_to_python(
      python::detail::wrapper_base const volatile* x, type_info src
  )
  {
      if (x == 0)
      {
          ::PyErr_Format(
              PyExc_TypeError
            , "Attempting to returning pointer or reference to instance of %s\n"
              "for which no corresponding Python object exists. Wrap this function"
              "with a return return value policy"
          )
      }
  }
  
}
#endif 

}} // namespace boost::python::detail

Web Proxy Viewer  |  New URL  |  Original Page