mirror of
https://github.com/boostorg/python.git
synced 2026-01-24 18:12:43 +00:00
object_core.hpp - allow wrapping of objects which take object managers in their constructors.
forward.hpp
pointer_holder.hpp
value_holder.hpp
test/long.[py/cpp]
pointee.hpp, - begin making borland work.
cv_category.hpp,
referent_storage.hpp
instance.hpp
self.hpp - removed flotsam
signature.hpp - use vector instead of list
destroy.hpp - removed needless complication
make_keyword_range_fn.hpp - support for simpler init using vectors
class_converters.hpp - workaround for pro7
inheritance.hpp - simplified; took out pro7 workarounds; factored out
inheritance_query.hpp to reduce recompilation
dependencies
make_ptr_instance.hpp - add missing typename
registry.cpp - add a little invariant checking for metrowerks
class.cpp - stopped relying on class_id typedef
test/data_members.cpp - added a few more tests to make sure things compile at least.
test/destroy_test.cpp - removed cheating has_trivial_destructor tests
test/enum.cpp - added some pro7 workarounds
test/virtual_functions.[py/cpp] - added _some_ tests for callbacks which return by reference.
[SVN r18489]
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
#include <boost/python/class.hpp>
|
||||
#include <boost/python/module.hpp>
|
||||
#include <boost/python/def.hpp>
|
||||
#include <boost/python/return_internal_reference.hpp>
|
||||
#include <boost/python/call_method.hpp>
|
||||
#include <boost/ref.hpp>
|
||||
#include <boost/utility.hpp>
|
||||
@@ -39,6 +40,8 @@ struct abstract : X
|
||||
abstract(int x) : X(x) {};
|
||||
int call_f(Y const& y) { return f(y); }
|
||||
virtual int f(Y const& y) = 0;
|
||||
abstract& call_g(Y const& y) { return g(y); }
|
||||
virtual abstract& g(Y const& y) = 0;
|
||||
};
|
||||
|
||||
struct concrete : X
|
||||
@@ -59,6 +62,11 @@ struct abstract_callback : abstract
|
||||
return call_method<int>(self, "f", boost::ref(y));
|
||||
}
|
||||
|
||||
abstract& g(Y const& y)
|
||||
{
|
||||
return call_method<abstract&>(self, "g", boost::ref(y));
|
||||
}
|
||||
|
||||
PyObject* self;
|
||||
};
|
||||
|
||||
@@ -101,6 +109,7 @@ BOOST_PYTHON_MODULE(virtual_functions_ext)
|
||||
|
||||
.def("value", &abstract::value)
|
||||
.def("call_f", &abstract::call_f)
|
||||
.def("call_g", &abstract::call_g, return_internal_reference<>())
|
||||
.def("set", &abstract::set)
|
||||
;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user