From: Stefan Z. <sz...@gm...> - 2011-06-06 03:16:36
|
On Sun, Jun 5, 2011 at 6:40 PM, Dieter Vandenbussche < dva...@ax...> wrote: Unfortunately, i ran into an issue trying to implement the rich > comparison slot for one of the classes. Hopefully, i'm not wasting your > time with this stuff. > Not at all! I spent a lot of time on the -builtin option, and I'm happy to help. Rich comparison is treated differently than other slots. SWIG will always generate a rich comparison routine which will dispatch to any C++ operator overloads that are defined for a class. For example, this: %inline { class Foo { public: bool operator== (const Foo& x); bool operator< (const Foo& x); }; } ... will cause SWIG to generate a rich comparison routine like this: PyObject* Foo_richcompare (PyObject *self, PyObject *other, int op) { switch (op) { case Py_EQ : // dispatch to Foo::operator== base Py_LT : // dispatch to Foo::operator< ... } } Stefan |