Merge branch 'ab/fsck-transfer-updates'
[git] / split-index.h
1 #ifndef SPLIT_INDEX_H
2 #define SPLIT_INDEX_H
3
4 #include "cache.h"
5
6 struct index_state;
7 struct strbuf;
8 struct ewah_bitmap;
9
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;
20 };
21
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);
38
39 #endif