diff options
author | Fabian Groffen <grobian@gentoo.org> | 2020-01-19 10:46:18 +0100 |
---|---|---|
committer | Fabian Groffen <grobian@gentoo.org> | 2020-01-19 10:46:18 +0100 |
commit | dadb2666f54fed0478e0914d9fc4349f27730d58 (patch) | |
tree | 411ca52519c34eae6eece824d558f024e1fd41b5 /libq/tree.h | |
parent | libq/set: change interface of contains_set to return internal key (diff) | |
download | portage-utils-dadb2666f54fed0478e0914d9fc4349f27730d58.tar.gz portage-utils-dadb2666f54fed0478e0914d9fc4349f27730d58.tar.bz2 portage-utils-dadb2666f54fed0478e0914d9fc4349f27730d58.zip |
libq/tree: add initial tree_match_atom with caching
tree_match_atom is meant for retrieving the best matching element from a
tree based on a query. It caches the underlying packages it traverses,
such that repetitive lookups will benefit from previous lookups. This
comes in handy for recursive scenarios such as when
calculating/resolving dependencies.
Signed-off-by: Fabian Groffen <grobian@gentoo.org>
Diffstat (limited to 'libq/tree.h')
-rw-r--r-- | libq/tree.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libq/tree.h b/libq/tree.h index 6627e80..eaee7ad 100644 --- a/libq/tree.h +++ b/libq/tree.h @@ -44,6 +44,9 @@ struct tree_ctx { char *pkgs; size_t pkgslen; depend_atom *query_atom; + struct tree_cache { + set *categories; + } cache; }; /* Category context */ @@ -135,5 +138,6 @@ int tree_foreach_pkg(tree_ctx *ctx, tree_pkg_cb callback, void *priv, tree_foreach_pkg(ctx, cb, priv, true, query); set *tree_get_atoms(tree_ctx *ctx, bool fullcpv, set *satoms); depend_atom *tree_get_atom(tree_pkg_ctx *pkg_ctx, bool complete); +tree_pkg_ctx *tree_match_atom(tree_ctx *t, depend_atom *a); #endif |