aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFabian Groffen <grobian@gentoo.org>2020-01-19 10:46:18 +0100
committerFabian Groffen <grobian@gentoo.org>2020-01-19 10:46:18 +0100
commitdadb2666f54fed0478e0914d9fc4349f27730d58 (patch)
tree411ca52519c34eae6eece824d558f024e1fd41b5 /libq/tree.h
parentlibq/set: change interface of contains_set to return internal key (diff)
downloadportage-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.h4
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