diff options
author | John Ehresman <jpe@wingware.com> | 2010-04-02 16:08:07 -0400 |
---|---|---|
committer | John Ehresman <jpe@wingware.com> | 2010-04-15 12:13:34 -0400 |
commit | 13a5da14842caa6a80e6ed7237422b984a152cd8 (patch) | |
tree | aa4139bf93ffd7730850057c9f4de975068294a8 /glib/pyglib.c | |
parent | 681832c3cd040433a488a400693b68f213bf7078 (diff) | |
download | pygobject-13a5da14842caa6a80e6ed7237422b984a152cd8.tar.gz pygobject-13a5da14842caa6a80e6ed7237422b984a152cd8.tar.xz pygobject-13a5da14842caa6a80e6ed7237422b984a152cd8.zip |
Use richcompare slot rather than old compare slot and Py_TYPE macro in preparation for py3k support
Diffstat (limited to 'glib/pyglib.c')
-rw-r--r-- | glib/pyglib.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/glib/pyglib.c b/glib/pyglib.c index a1bdbb9..118497e 100644 --- a/glib/pyglib.c +++ b/glib/pyglib.c @@ -574,4 +574,96 @@ _pyglib_handler_marshal(gpointer user_data) return res; } +PyObject* +_pyglib_generic_ptr_richcompare(void* a, void *b, int op) +{ + PyObject *res; + + switch (op) { + + case Py_EQ: + res = (a == b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_NE: + res = (a != b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_LT: + res = (a < b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_LE: + res = (a <= b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_GT: + res = (a > b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_GE: + res = (a >= b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + default: + res = Py_NotImplemented; + Py_INCREF(res); + break; + } + + return res; +} + +PyObject* +_pyglib_generic_long_richcompare(long a, long b, int op) +{ + PyObject *res; + + switch (op) { + + case Py_EQ: + res = (a == b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_NE: + res = (a != b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + + case Py_LT: + res = (a < b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_LE: + res = (a <= b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_GT: + res = (a > b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + case Py_GE: + res = (a >= b) ? Py_True : Py_False; + Py_INCREF(res); + break; + + default: + res = Py_NotImplemented; + Py_INCREF(res); + break; + } + + return res; +} |