Esempio n. 1
0
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;
}
Esempio n. 2
0
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;
}