merge-tree: accept 3 trees as arguments
[git/gitster.git] / split-index.h
blob15a29cd08c96be6eeff23f609ec7c8d9533175b1
1 #ifndef SPLIT_INDEX_H
2 #define SPLIT_INDEX_H
4 #include "hash-ll.h"
6 struct index_state;
7 struct strbuf;
8 struct ewah_bitmap;
10 struct split_index {
11 struct object_id base_oid;
12 struct index_state *base;
13 struct ewah_bitmap *delete_bitmap;
14 struct ewah_bitmap *replace_bitmap;
15 struct cache_entry **saved_cache;
16 unsigned int saved_cache_nr;
17 unsigned int nr_deletions;
18 unsigned int nr_replacements;
19 int refcount;
22 struct split_index *init_split_index(struct index_state *istate);
23 void save_or_free_index_entry(struct index_state *istate, struct cache_entry *ce);
24 void replace_index_entry_in_base(struct index_state *istate,
25 struct cache_entry *old,
26 struct cache_entry *new_entry);
27 int read_link_extension(struct index_state *istate,
28 const void *data, unsigned long sz);
29 int write_link_extension(struct strbuf *sb,
30 struct index_state *istate);
31 void move_cache_to_base_index(struct index_state *istate);
32 void merge_base_index(struct index_state *istate);
33 void prepare_to_write_split_index(struct index_state *istate);
34 void finish_writing_split_index(struct index_state *istate);
35 void discard_split_index(struct index_state *istate);
36 void add_split_index(struct index_state *istate);
37 void remove_split_index(struct index_state *istate);
39 #endif