]> git.ipfire.org Git - thirdparty/git.git/commitdiff
reftable/merged: expose functions to initialize iterators
authorPatrick Steinhardt <ps@pks.im>
Thu, 22 Aug 2024 06:34:38 +0000 (08:34 +0200)
committerJunio C Hamano <gitster@pobox.com>
Thu, 22 Aug 2024 14:59:45 +0000 (07:59 -0700)
We do not expose any functions via our public headers that would allow a
caller to initialize a reftable iterator from a merged table. Instead,
they are expected to go via the generic `reftable_table` interface,
which is somewhat roundabout.

Implement two new functions to initialize iterators for ref and log
records to plug this gap.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
reftable/merged.c
reftable/reftable-merged.h

index 6adce44f4b6543135cbc27d23724cbadfaecbe15..8d78b3da719fac9bfc44259d965d89b4b42e4b20 100644 (file)
@@ -254,6 +254,18 @@ void merged_table_init_iter(struct reftable_merged_table *mt,
        iterator_from_merged_iter(it, mi);
 }
 
+void reftable_merged_table_init_ref_iterator(struct reftable_merged_table *mt,
+                                            struct reftable_iterator *it)
+{
+       merged_table_init_iter(mt, it, BLOCK_TYPE_REF);
+}
+
+void reftable_merged_table_init_log_iterator(struct reftable_merged_table *mt,
+                                            struct reftable_iterator *it)
+{
+       merged_table_init_iter(mt, it, BLOCK_TYPE_LOG);
+}
+
 uint32_t reftable_merged_table_hash_id(struct reftable_merged_table *mt)
 {
        return mt->hash_id;
index 14d5fc9f05c63d08280a9b2f6725c8c90bc5cca0..4deb0ad22e10471b2290f30207004a6015aebb0e 100644 (file)
@@ -36,6 +36,14 @@ int reftable_new_merged_table(struct reftable_merged_table **dest,
                              struct reftable_table *stack, size_t n,
                              uint32_t hash_id);
 
+/* Initialize a merged table iterator for reading refs. */
+void reftable_merged_table_init_ref_iterator(struct reftable_merged_table *mt,
+                                            struct reftable_iterator *it);
+
+/* Initialize a merged table iterator for reading logs. */
+void reftable_merged_table_init_log_iterator(struct reftable_merged_table *mt,
+                                            struct reftable_iterator *it);
+
 /* returns the max update_index covered by this merged table. */
 uint64_t
 reftable_merged_table_max_update_index(struct reftable_merged_table *mt);