On Tue, 2015-04-28 at 10:50 -0700, Glenn Linderman wrote: > On 4/28/2015 2:13 AM, Victor Stinner wrote: > > > > #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); > Why would you prefer a function? As a macro, when the op is a > constant, most of the code would be optimized away by a decent > compiler. > > I suppose when the op is not a constant, then a function would save > code space. > > So I suppose it depends on the predominant use cases.
There's also the possibility of wrapping C++ code that uses overloaded operators: having it as a macro could allow those C++ operators to be be mapped into Python. Hope this is constructive Dave _______________________________________________ Python-Dev mailing list Python-Dev@python.org https://mail.python.org/mailman/listinfo/python-dev Unsubscribe: https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com