aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2024-08-22 08:34:38 +0200
committerJunio C Hamano <gitster@pobox.com>2024-08-22 07:59:45 -0700
commit987762a51a12e3fdbf517bcc3b4e2d5cc17658a4 (patch)
tree6de84f0a3a5f41a6cc202a1d1a6652a6a4ae2a0a
parentMerge branch 'ps/reftable-stack-compaction' into ps/reftable-drop-generic (diff)
downloadgit-987762a51a12e3fdbf517bcc3b4e2d5cc17658a4.tar.gz
git-987762a51a12e3fdbf517bcc3b4e2d5cc17658a4.zip
reftable/merged: expose functions to initialize iterators
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>
-rw-r--r--reftable/merged.c12
-rw-r--r--reftable/reftable-merged.h8
2 files changed, 20 insertions, 0 deletions
diff --git a/reftable/merged.c b/reftable/merged.c
index 6adce44f4b..8d78b3da71 100644
--- a/reftable/merged.c
+++ b/reftable/merged.c
@@ -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;
diff --git a/reftable/reftable-merged.h b/reftable/reftable-merged.h
index 14d5fc9f05..4deb0ad22e 100644
--- a/reftable/reftable-merged.h
+++ b/reftable/reftable-merged.h
@@ -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);