Hi, 2015-04-27 16:02 GMT+02:00 Petr Viktorin <encukou at gmail.com>: > A macro like this would reduce boilerplate in stdlib and third-party C > extensions. It would ease porting C extensions to Python 3, where rich > comparison is mandatory. It would be nice to have a six module for C extensions. I'm quite sure that many projects are already full of #ifdef PYTHON3 ... #else ... #endif macros. > #define Py_RETURN_RICHCOMPARE(val1, val2, op) \ > do { \ > switch (op) { \ > case Py_EQ: if ((val1) == (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ > case Py_NE: if ((val1) != (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ > case Py_LT: if ((val1) < (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ > case Py_GT: if ((val1) > (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ > case Py_LE: if ((val1) <= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ > case Py_GE: if ((val1) >= (val2)) Py_RETURN_TRUE; Py_RETURN_FALSE; \ > } \ > Py_RETURN_NOTIMPLEMENTED; \ > } while (0) I would prefer a function for that: PyObject *Py_RichCompare(long val1, long2, int op); You should also handle invalid operator. PyUnicode_RichCompare() calls PyErr_BadArgument() in this case. Anyway, please open an issue for this idea. Victor
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4