[C++-sig] pyste: current cvs/1_30_00 difference in treatment of overloaded members
Paul Rudin
paul.rudin at ntlworld.com
Wed May 14 07:36:08 CEST 2003
Hi,
I've noticed a difference between the c++ generated by the current cvs and the 1_30_00 released version.
Here's an illustration:
Say foo.h is:
-------------------------
class foo {
public:
virtual void bar (int * x);
virtual void bar (char * x);
};
-------------------------
and foo.pyste is:
-----------------
foo = AllFromHeader("./foo.h")
-------------------
Then cvs pyste gives (ommiting includes and such):
-------------------
struct foo_Wrapper: foo
{
foo_Wrapper(PyObject* self_, const foo & p0):
foo(p0), self(self_) {}
foo_Wrapper(PyObject* self_):
foo(), self(self_) {}
void bar(int * p0) {
call_method< void >(self, "bar", p0);
}
void default_bar(int * p0) {
foo::bar(p0);
}
PyObject* self;
};
BOOST_PYTHON_MODULE(foo2)
{
class_< foo, foo_Wrapper >("foo", init< >())
.def(init< const foo & >())
.def("bar", &foo::bar, &foo_Wrapper::default_bar)
;
}
-----------------------
whereas current cvs gives:
----------------------------
struct foo_Wrapper: foo
{
foo_Wrapper(PyObject* self_, const foo & p0):
foo(p0), self(self_) {}
foo_Wrapper(PyObject* self_):
foo(), self(self_) {}
void bar(int * p0) {
call_method< void >(self, "bar", p0);
}
void default_bar(int * p0) {
foo::bar(p0);
}
void bar(char * p0) {
call_method< void >(self, "bar", p0);
}
void default_bar(char * p0) {
foo::bar(p0);
}
PyObject* self;
};
BOOST_PYTHON_MODULE(foo1)
{
class_< foo, foo_Wrapper >("foo", init< >())
.def(init< const foo & >())
.def("bar", (void (foo::*)(int *) )&foo::bar, (void (foo_Wrapper::*)(int *))foo_Wrapper::default_bar)
.def("bar", (void (foo::*)(char *) )&foo::bar, (void (foo_Wrapper::*)(char *))foo_Wrapper::default_bar)
;
}
------------------------------------------------------------
More information about the Cplusplus-sig
mailing list