[PATCH v2 31/38] refs: add method iterator_begin
flat view
STALE3692d
From: Michael Haggerty <hidden>
Date: 2016-09-04 16:11:54
Subsystem:
the rest · Maintainer:
Linus Torvalds
Revision v2 of 2 in this series.
Revisions (2)
- v1 [diff vs current]
- v2 current
Signed-off-by: Michael Haggerty <redacted> Signed-off-by: Junio C Hamano <redacted> --- refs.c | 2 +- refs/files-backend.c | 3 ++- refs/refs-internal.h | 24 ++++++++++++------------ 3 files changed, 15 insertions(+), 14 deletions(-)
diff --git a/refs.c b/refs.c
index d00126b..798b08a 100644
--- a/refs.c
+++ b/refs.c@@ -1157,7 +1157,7 @@ static int do_for_each_ref(const char *submodule, const char *prefix, if (!refs) return 0; - iter = files_ref_iterator_begin(refs, prefix, flags); + iter = refs->be->iterator_begin(refs, prefix, flags); iter = prefix_ref_iterator_begin(iter, prefix, trim); return do_for_each_ref_iterator(iter, fn, cb_data);
diff --git a/refs/files-backend.c b/refs/files-backend.c
index f521b5d..4451e13 100644
--- a/refs/files-backend.c
+++ b/refs/files-backend.c@@ -1862,7 +1862,7 @@ static struct ref_iterator_vtable files_ref_iterator_vtable = { files_ref_iterator_abort }; -struct ref_iterator *files_ref_iterator_begin( +static struct ref_iterator *files_ref_iterator_begin( struct ref_store *ref_store, const char *prefix, unsigned int flags) {
@@ -4054,6 +4054,7 @@ struct ref_storage_be refs_be_files = { files_peel_ref, files_create_symref, + files_ref_iterator_begin, files_read_raw_ref, files_verify_refname_available };
diff --git a/refs/refs-internal.h b/refs/refs-internal.h
index 0af1079..5be62a2 100644
--- a/refs/refs-internal.h
+++ b/refs/refs-internal.h@@ -404,18 +404,6 @@ struct ref_iterator *prefix_ref_iterator_begin(struct ref_iterator *iter0, const char *prefix, int trim); -struct ref_store; - -/* - * Iterate over the packed and loose references in the specified - * ref_store that are within find_containing_dir(prefix). If prefix is - * NULL or the empty string, iterate over all references in the - * submodule. - */ -struct ref_iterator *files_ref_iterator_begin(struct ref_store *ref_store, - const char *prefix, - unsigned int flags); - /* * Iterate over the references in the main ref_store that have a * reflog. The paths within a directory are iterated over in arbitrary
@@ -488,6 +476,8 @@ int do_for_each_ref_iterator(struct ref_iterator *iter, /* refs backends */ +struct ref_store; + /* * Initialize the ref_store for the specified submodule, or for the * main repository if submodule == NULL. These functions should call
@@ -509,6 +499,15 @@ typedef int create_symref_fn(struct ref_store *ref_store, const char *logmsg); /* + * Iterate over the references in the specified ref_store that are + * within find_containing_dir(prefix). If prefix is NULL or the empty + * string, iterate over all references in the submodule. + */ +typedef struct ref_iterator *ref_iterator_begin_fn( + struct ref_store *ref_store, + const char *prefix, unsigned int flags); + +/* * Read a reference from the specified reference store, non-recursively. * Set type to describe the reference, and: *
@@ -566,6 +565,7 @@ struct ref_storage_be { peel_ref_fn *peel_ref; create_symref_fn *create_symref; + ref_iterator_begin_fn *iterator_begin; read_raw_ref_fn *read_raw_ref; verify_refname_available_fn *verify_refname_available; };
--
2.9.3