[PATCH 1/5] Introduces for_each_revision() helper
From: Luiz Fernando N Capitulino <hidden>
Date: 2016-06-15 22:43:07
Subsystem:
the rest · Maintainer:
Linus Torvalds
This macro may be used to iterate over revisions, so, instead of
doing:
struct commit *commit;
...
prepare_revision_walk(rev);
while ((commit = get_revision(rev)) != NULL) {
...
}
New code should use:
struct commit *commit;
...
for_each_revision(commit, rev) {
...
}
The only disadvantage is that it's something magical, and the fact that
it returns a struct commit is not obvious.
On the other hand it's documented, has the advantage of making the walking
through revisions easier and can save some lines of code.
Signed-off-by: Luiz Fernando N Capitulino <redacted>
---
revision.h | 11 +++++++++++
1 files changed, 11 insertions(+), 0 deletions(-)
diff --git a/revision.h b/revision.h
index cdf94ad..bb6f475 100644
--- a/revision.h
+++ b/revision.h@@ -133,4 +133,15 @@ extern void add_object(struct object *obj, extern void add_pending_object(struct rev_info *revs, struct object *obj, const char *name); extern void add_pending_object_with_mode(struct rev_info *revs, struct object *obj, const char *name, unsigned mode); +/* helpers */ + +/** + * for_each_revision - iterate over revisions + * @commit: pointer to a commit object returned for each iteration + * @rev: revision pointer + */ +#define for_each_revision(commit, rev) \ + prepare_revision_walk(rev); \ + while ((commit = get_revision(rev)) != NULL) + #endif
--
1.5.1.1.320.g1cf2