[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