summaryrefslogtreecommitdiffstats
path: root/contrib/restricted/boost/python/src/wrapper.cpp
diff options
context:
space:
mode:
authoralexv-smirnov <[email protected]>2023-03-15 19:59:12 +0300
committeralexv-smirnov <[email protected]>2023-03-15 19:59:12 +0300
commit056bb284ccf8dd6793ec3a54ffa36c4fb2b9ad11 (patch)
tree4740980126f32e3af7937ba0ca5f83e59baa4ab0 /contrib/restricted/boost/python/src/wrapper.cpp
parent269126dcced1cc8b53eb4398b4a33e5142f10290 (diff)
add library/cpp/actors, ymake build to ydb oss export
Diffstat (limited to 'contrib/restricted/boost/python/src/wrapper.cpp')
-rw-r--r--contrib/restricted/boost/python/src/wrapper.cpp66
1 files changed, 66 insertions, 0 deletions
diff --git a/contrib/restricted/boost/python/src/wrapper.cpp b/contrib/restricted/boost/python/src/wrapper.cpp
new file mode 100644
index 00000000000..8b1b8847695
--- /dev/null
+++ b/contrib/restricted/boost/python/src/wrapper.cpp
@@ -0,0 +1,66 @@
+// 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 <boost/python/wrapper.hpp>
+
+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<char*>(name))))
+ )
+ {
+ PyObject* borrowed_f = 0;
+
+ if (
+ PyMethod_Check(m.get())
+ && PyMethod_GET_SELF(m.get()) == this->m_self
+ && class_object->tp_dict != 0
+ )
+ {
+ borrowed_f = ::PyDict_GetItemString(
+ class_object->tp_dict, const_cast<char*>(name));
+
+
+ }
+ if (borrowed_f != PyMethod_GET_FUNCTION(m.get()))
+ 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