[PATCH 1/5] Introduces for_each_revision() helper
- From
- Luiz Fernando N Capitulino <lcapitulino@mandriva.com.br>
- Date
- Apr 26, 2007, 19:46 UTC
- Message-ID
- <11776168001048-git-send-email-lcapitulino@mandriva.com.br>
- In-Reply-To
- <11776168001253-git-send-email-lcapitulino@mandriva.com.br>
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 <lcapitulino@mandriva.com.br> --- 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