1*a3cefe7fSPierre Pronchery 2*a3cefe7fSPierre Proncherylibpkgconf `dependency` module 3*a3cefe7fSPierre Pronchery============================== 4*a3cefe7fSPierre Pronchery 5*a3cefe7fSPierre ProncheryThe `dependency` module provides support for building `dependency lists` (the basic component of the overall `dependency graph`) and 6*a3cefe7fSPierre Pronchery`dependency nodes` which store dependency information. 7*a3cefe7fSPierre Pronchery 8*a3cefe7fSPierre Pronchery.. c:function:: pkgconf_dependency_t *pkgconf_dependency_add(pkgconf_list_t *list, const char *package, const char *version, pkgconf_pkg_comparator_t compare) 9*a3cefe7fSPierre Pronchery 10*a3cefe7fSPierre Pronchery Adds a parsed dependency to a dependency list as a dependency node. 11*a3cefe7fSPierre Pronchery 12*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The client object that owns the package this dependency list belongs to. 13*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The dependency list to add a dependency node to. 14*a3cefe7fSPierre Pronchery :param char* package: The package `atom` to set on the dependency node. 15*a3cefe7fSPierre Pronchery :param char* version: The package `version` to set on the dependency node. 16*a3cefe7fSPierre Pronchery :param pkgconf_pkg_comparator_t compare: The comparison operator to set on the dependency node. 17*a3cefe7fSPierre Pronchery :param uint flags: Any flags to attach to the dependency node. 18*a3cefe7fSPierre Pronchery :return: A dependency node. 19*a3cefe7fSPierre Pronchery :rtype: pkgconf_dependency_t * 20*a3cefe7fSPierre Pronchery 21*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_dependency_append(pkgconf_list_t *list, pkgconf_dependency_t *tail) 22*a3cefe7fSPierre Pronchery 23*a3cefe7fSPierre Pronchery Adds a dependency node to a pre-existing dependency list. 24*a3cefe7fSPierre Pronchery 25*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The dependency list to add a dependency node to. 26*a3cefe7fSPierre Pronchery :param pkgconf_dependency_t* tail: The dependency node to add to the tail of the dependency list. 27*a3cefe7fSPierre Pronchery :return: nothing 28*a3cefe7fSPierre Pronchery 29*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_dependency_free_one(pkgconf_dependency_t *dep) 30*a3cefe7fSPierre Pronchery 31*a3cefe7fSPierre Pronchery Frees a dependency node. 32*a3cefe7fSPierre Pronchery 33*a3cefe7fSPierre Pronchery :param pkgconf_dependency_t* dep: The dependency node to free. 34*a3cefe7fSPierre Pronchery :return: nothing 35*a3cefe7fSPierre Pronchery 36*a3cefe7fSPierre Pronchery.. c:function:: pkgconf_dependency_t *pkgconf_dependency_ref(pkgconf_client_t *owner, pkgconf_dependency_t *dep) 37*a3cefe7fSPierre Pronchery 38*a3cefe7fSPierre Pronchery Increases a dependency node's refcount. 39*a3cefe7fSPierre Pronchery 40*a3cefe7fSPierre Pronchery :param pkgconf_client_t* owner: The client object which owns the memory of this dependency node. 41*a3cefe7fSPierre Pronchery :param pkgconf_dependency_t* dep: The dependency to increase the refcount of. 42*a3cefe7fSPierre Pronchery :return: the dependency node on success, else NULL 43*a3cefe7fSPierre Pronchery 44*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_dependency_unref(pkgconf_client_t *owner, pkgconf_dependency_t *dep) 45*a3cefe7fSPierre Pronchery 46*a3cefe7fSPierre Pronchery Decreases a dependency node's refcount and frees it if necessary. 47*a3cefe7fSPierre Pronchery 48*a3cefe7fSPierre Pronchery :param pkgconf_client_t* owner: The client object which owns the memory of this dependency node. 49*a3cefe7fSPierre Pronchery :param pkgconf_dependency_t* dep: The dependency to decrease the refcount of. 50*a3cefe7fSPierre Pronchery :return: nothing 51*a3cefe7fSPierre Pronchery 52*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_dependency_free(pkgconf_list_t *list) 53*a3cefe7fSPierre Pronchery 54*a3cefe7fSPierre Pronchery Release a dependency list and its child dependency nodes. 55*a3cefe7fSPierre Pronchery 56*a3cefe7fSPierre Pronchery :param pkgconf_list_t* list: The dependency list to release. 57*a3cefe7fSPierre Pronchery :return: nothing 58*a3cefe7fSPierre Pronchery 59*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_dependency_parse_str(pkgconf_list_t *deplist_head, const char *depends) 60*a3cefe7fSPierre Pronchery 61*a3cefe7fSPierre Pronchery Parse a dependency declaration into a dependency list. 62*a3cefe7fSPierre Pronchery Commas are counted as whitespace to allow for constructs such as ``@SUBSTVAR@, zlib`` being processed 63*a3cefe7fSPierre Pronchery into ``, zlib``. 64*a3cefe7fSPierre Pronchery 65*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The client object that owns the package this dependency list belongs to. 66*a3cefe7fSPierre Pronchery :param pkgconf_list_t* deplist_head: The dependency list to populate with dependency nodes. 67*a3cefe7fSPierre Pronchery :param char* depends: The dependency data to parse. 68*a3cefe7fSPierre Pronchery :param uint flags: Any flags to attach to the dependency nodes. 69*a3cefe7fSPierre Pronchery :return: nothing 70*a3cefe7fSPierre Pronchery 71*a3cefe7fSPierre Pronchery.. c:function:: void pkgconf_dependency_parse(const pkgconf_client_t *client, pkgconf_pkg_t *pkg, pkgconf_list_t *deplist, const char *depends) 72*a3cefe7fSPierre Pronchery 73*a3cefe7fSPierre Pronchery Preprocess dependency data and then process that dependency declaration into a dependency list. 74*a3cefe7fSPierre Pronchery Commas are counted as whitespace to allow for constructs such as ``@SUBSTVAR@, zlib`` being processed 75*a3cefe7fSPierre Pronchery into ``, zlib``. 76*a3cefe7fSPierre Pronchery 77*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The client object that owns the package this dependency list belongs to. 78*a3cefe7fSPierre Pronchery :param pkgconf_pkg_t* pkg: The package object that owns this dependency list. 79*a3cefe7fSPierre Pronchery :param pkgconf_list_t* deplist: The dependency list to populate with dependency nodes. 80*a3cefe7fSPierre Pronchery :param char* depends: The dependency data to parse. 81*a3cefe7fSPierre Pronchery :param uint flags: Any flags to attach to the dependency nodes. 82*a3cefe7fSPierre Pronchery :return: nothing 83*a3cefe7fSPierre Pronchery 84*a3cefe7fSPierre Pronchery.. c:function:: pkgconf_dependency_t *pkgconf_dependency_copy(pkgconf_client_t *client, const pkgconf_dependency_t *dep) 85*a3cefe7fSPierre Pronchery 86*a3cefe7fSPierre Pronchery Copies a dependency node to a new one. 87*a3cefe7fSPierre Pronchery 88*a3cefe7fSPierre Pronchery :param pkgconf_client_t* client: The client object that will own this dependency. 89*a3cefe7fSPierre Pronchery :param pkgconf_dependency_t* dep: The dependency node to copy. 90*a3cefe7fSPierre Pronchery :return: a pointer to a new dependency node, else NULL 91