Exemple #1
0
PyObject* PyCOMPSGroup_cmp(PyObject *self, PyObject *other, int op) {
    char ret;

    // Only eq and neq operators allowed
    CMP_OP_EQ_NE_CHECK(op)
    //printf("pygroup cmp\n");

    if (other == NULL || ( Py_TYPE(other) != Py_TYPE(self)
                           && other != Py_None)) {
        PyErr_Format(PyExc_TypeError, "Not %s instance",
                                      Py_TYPE(self)->tp_name);
        return NULL;
    }
    CMP_NONE_CHECK(op, self, other)

    ret = COMPS_OBJECT_CMP(((PyCOMPS_Group*)self)->group,
                           ((PyCOMPS_Group*)other)->group);
    //printf("pygroup cmp 2\n");
    if (op == Py_EQ) {
        if (!ret) Py_RETURN_FALSE;
    } else {
        if (ret) Py_RETURN_FALSE;
    }
    Py_RETURN_TRUE;
}
COMPS_ObjList* comps_docgroup_get_packages(COMPS_DocGroup *group, char *name,
                                       COMPS_PackageType type) {
    COMPS_ObjListIt *it;
    COMPS_ObjList *ret;
    unsigned int matched, matched_max;
    matched_max = 0;
    #define package ((COMPS_DocGroupPackage*)it->comps_obj)
    COMPS_Str *objname = comps_str(name);
    if (!group) return NULL;

    ret = COMPS_OBJECT_CREATE(COMPS_ObjList, NULL);

    if (name != NULL) matched_max++;
    if (type != COMPS_PACKAGE_UNKNOWN) matched_max++;

    for (it = (group->packages)?group->packages->first:NULL;
         it != NULL; it = it->next) {
        matched = 0;
        if ((name != NULL) && COMPS_OBJECT_CMP(package->name, objname))
            matched++;
        if ((type != COMPS_PACKAGE_UNKNOWN) && package->type  == type)
            matched++;
        if (matched == matched_max) {
            comps_objlist_append(ret, (COMPS_Object*)package);
        }
    }
    COMPS_OBJECT_DESTROY(objname);
    return ret;
}
Exemple #3
0
signed char comps_docgroupid_cmp_u(COMPS_Object *gid1, COMPS_Object *gid2) {
    #define _gid1 ((COMPS_DocGroupId*)gid1)
    #define _gid2 ((COMPS_DocGroupId*)gid2)

    if (!COMPS_OBJECT_CMP(_gid1->name, _gid2->name)) return 0;
    if (_gid1->def != _gid2->def) return 0;
    return 1;

    #undef _gid1
    #undef _gid2
}
Exemple #4
0
PyObject* PyCOMPSEnv_cmp(PyObject *self, PyObject *other, int op) {
    char ret;
    CMP_OP_EQ_NE_CHECK(op)

    if (other == NULL || ( Py_TYPE(other) != &PyCOMPS_EnvType
                           && other != Py_None)) {
        PyErr_SetString(PyExc_TypeError, "Not Environment instance");
        return NULL;
    }
    CMP_NONE_CHECK(op, self, other)
    ret = COMPS_OBJECT_CMP((COMPS_Object*)((PyCOMPS_Env*)self)->c_obj,
                           (COMPS_Object*)((PyCOMPS_Env*)other)->c_obj);
    if (op == Py_EQ) {
        if (!ret) Py_RETURN_FALSE;
    } else {
        if (ret) Py_RETURN_FALSE;
    }
    Py_RETURN_TRUE;
}
Exemple #5
0
PyObject* PyCOMPSPack_cmp(PyObject *self, PyObject *other, int op) {
    char ret;
    CMP_OP_EQ_NE_CHECK(op)

    if (other == NULL || ( Py_TYPE(other) != &PyCOMPS_PackType
                           && other != Py_None)) {
        PyErr_Format(PyExc_TypeError, "Not %s instance",
                        Py_TYPE(self)->tp_name);
        return NULL;
    }
    CMP_NONE_CHECK(op, self, other)
    ret = COMPS_OBJECT_CMP((COMPS_Object*)((PyCOMPS_Package*)self)->package,
                           (COMPS_Object*)((PyCOMPS_Package*)other)->package);
    if (op == Py_EQ) {
        if (!ret) Py_RETURN_FALSE;
    } else {
        if (ret) Py_RETURN_FALSE;
    }
    Py_RETURN_TRUE;
}
Exemple #6
0
inline char comps_docpackage_cmp_set(void *pkg1, void *pkg2) {
    return COMPS_OBJECT_CMP(((COMPS_DocGroupPackage*)pkg1)->name,
                            ((COMPS_DocGroupPackage*)pkg2)->name);
}