Merge branch 'js/alias-early-config'
[git] / split-index.h
1 #ifndef SPLIT_INDEX_H
2 #define SPLIT_INDEX_H
3
4 struct index_state;
5 struct strbuf;
6 struct ewah_bitmap;
7
8 struct split_index {
9         unsigned char base_sha1[20];
10         struct index_state *base;
11         struct ewah_bitmap *delete_bitmap;
12         struct ewah_bitmap *replace_bitmap;
13         struct cache_entry **saved_cache;
14         unsigned int saved_cache_nr;
15         unsigned int nr_deletions;
16         unsigned int nr_replacements;
17         int refcount;
18 };
19
20 struct split_index *init_split_index(struct index_state *istate);
21 void save_or_free_index_entry(struct index_state *istate, struct cache_entry *ce);
22 void replace_index_entry_in_base(struct index_state *istate,
23                                  struct cache_entry *old,
24                                  struct cache_entry *new);
25 int read_link_extension(struct index_state *istate,
26                         const void *data, unsigned long sz);
27 int write_link_extension(struct strbuf *sb,
28                          struct index_state *istate);
29 void move_cache_to_base_index(struct index_state *istate);
30 void merge_base_index(struct index_state *istate);
31 void prepare_to_write_split_index(struct index_state *istate);
32 void finish_writing_split_index(struct index_state *istate);
33 void discard_split_index(struct index_state *istate);
34 void add_split_index(struct index_state *istate);
35 void remove_split_index(struct index_state *istate);
36
37 #endif