summaryrefslogtreecommitdiff
path: root/ll-merge.h
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2010-08-05 11:17:38 (GMT)
committerJunio C Hamano <gitster@pobox.com>2010-08-06 16:20:01 (GMT)
commit73cf7f713da4fc797e2393a9e490ad4ec9466c53 (patch)
tree8d9c9fed8bfb98d0041ec9b4e8c125b5d4f26678 /ll-merge.h
parent24d113ec11d9948cedee4ba4687d0775e36b65f9 (diff)
downloadgit-73cf7f713da4fc797e2393a9e490ad4ec9466c53.zip
git-73cf7f713da4fc797e2393a9e490ad4ec9466c53.tar.gz
git-73cf7f713da4fc797e2393a9e490ad4ec9466c53.tar.bz2
ll-merge: make flag easier to populate
ll_merge() takes its options in a flag word, which has a few advantages: - options flags can be cheaply passed around in registers, while an option struct passed by pointer cannot; - callers can easily pass 0 without trouble for no options, while an option struct passed by value would not allow that. The downside is that code to populate and access the flag word can be somewhat opaque. Mitigate that with a few macros. Cc: Avery Pennarun <apenwarr@gmail.com> Cc: Bert Wesarg <bert.wesarg@googlemail.com> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'll-merge.h')
-rw-r--r--ll-merge.h14
1 files changed, 14 insertions, 0 deletions
diff --git a/ll-merge.h b/ll-merge.h
index 57754cc..5990271 100644
--- a/ll-merge.h
+++ b/ll-merge.h
@@ -5,6 +5,20 @@
#ifndef LL_MERGE_H
#define LL_MERGE_H
+#define LL_OPT_VIRTUAL_ANCESTOR (1 << 0)
+#define LL_OPT_FAVOR_MASK ((1 << 1) | (1 << 2))
+#define LL_OPT_FAVOR_SHIFT 1
+
+static inline int ll_opt_favor(int flag)
+{
+ return (flag & LL_OPT_FAVOR_MASK) >> LL_OPT_FAVOR_SHIFT;
+}
+
+static inline int create_ll_flag(int favor)
+{
+ return ((favor << LL_OPT_FAVOR_SHIFT) & LL_OPT_FAVOR_MASK);
+}
+
int ll_merge(mmbuffer_t *result_buf,
const char *path,
mmfile_t *ancestor, const char *ancestor_label,