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; }
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 }
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; }
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; }
inline char comps_docpackage_cmp_set(void *pkg1, void *pkg2) { return COMPS_OBJECT_CMP(((COMPS_DocGroupPackage*)pkg1)->name, ((COMPS_DocGroupPackage*)pkg2)->name); }