2
0
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:
Dave Abrahams
2003-05-21 22:17:23 +00:00
parent 66d6272942
commit 43e5ccd0a7
25 changed files with 302 additions and 171 deletions

View File

@@ -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)
;