PyObject * TreeEntry_richcompare(PyObject *a, PyObject *b, int op) { PyObject *res; TreeEntry *ta, *tb; int cmp; /* We only support comparing to another tree entry */ if (!PyObject_TypeCheck(b, &TreeEntryType)) { Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } ta = (TreeEntry *) a; tb = (TreeEntry *) b; /* This is sorting order, if they sort equally, we still need to compare the ids */ cmp = git_tree_entry_cmp(ta->entry, tb->entry); if (cmp == 0) cmp = compare_ids(ta, tb); switch (op) { case Py_LT: res = (cmp <= 0) ? Py_True: Py_False; break; case Py_LE: res = (cmp < 0) ? Py_True: Py_False; break; case Py_EQ: res = (cmp == 0) ? Py_True: Py_False; break; case Py_NE: res = (cmp != 0) ? Py_True: Py_False; break; case Py_GT: res = (cmp > 0) ? Py_True: Py_False; break; case Py_GE: res = (cmp >= 0) ? Py_True: Py_False; break; default: PyErr_Format(PyExc_RuntimeError, "Unexpected '%d' op", op); return NULL; } Py_INCREF(res); return res; }
PyObject * TreeEntry_richcompare(PyObject *a, PyObject *b, int op) { PyObject *res; int cmp; /* We only support comparing to another tree entry */ if (!PyObject_TypeCheck(b, &TreeEntryType)) { Py_INCREF(Py_NotImplemented); return Py_NotImplemented; } cmp =git_tree_entry_cmp(((TreeEntry*)a)->entry, ((TreeEntry*)b)->entry); switch (op) { case Py_LT: res = (cmp <= 0) ? Py_True: Py_False; break; case Py_LE: res = (cmp < 0) ? Py_True: Py_False; break; case Py_EQ: res = (cmp == 0) ? Py_True: Py_False; break; case Py_NE: res = (cmp != 0) ? Py_True: Py_False; break; case Py_GT: res = (cmp > 0) ? Py_True: Py_False; break; case Py_GE: res = (cmp >= 0) ? Py_True: Py_False; break; default: PyErr_Format(PyExc_RuntimeError, "Unexpected '%d' op", op); return NULL; } Py_INCREF(res); return res; }