xref: /freebsd/contrib/pkgconf/doc/libpkgconf-dependency.rst (revision a3cefe7f2b4df0f70ff92d4570ce18e517af43ec)
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