blob: 7a435ca2c970111b40ac9edba65726e79bd7941d [file] [log] [blame]
Nguyễn Thái Ngọc Duy5fc2fc82014-06-13 19:19:36 +07001#ifndef SPLIT_INDEX_H
2#define SPLIT_INDEX_H
3
brian m. carlson2182abd2018-05-02 00:25:43 +00004#include "cache.h"
5
Nguyễn Thái Ngọc Duy5fc2fc82014-06-13 19:19:36 +07006struct index_state;
7struct strbuf;
Nguyễn Thái Ngọc Duy96a1d8d2014-06-13 19:19:40 +07008struct ewah_bitmap;
Nguyễn Thái Ngọc Duy5fc2fc82014-06-13 19:19:36 +07009
10struct split_index {
brian m. carlson2182abd2018-05-02 00:25:43 +000011 struct object_id base_oid;
Nguyễn Thái Ngọc Duy5fc2fc82014-06-13 19:19:36 +070012 struct index_state *base;
Nguyễn Thái Ngọc Duy96a1d8d2014-06-13 19:19:40 +070013 struct ewah_bitmap *delete_bitmap;
14 struct ewah_bitmap *replace_bitmap;
15 struct cache_entry **saved_cache;
Nguyễn Thái Ngọc Duy5fc2fc82014-06-13 19:19:36 +070016 unsigned int saved_cache_nr;
Nguyễn Thái Ngọc Duy76b07b32014-06-13 19:19:41 +070017 unsigned int nr_deletions;
18 unsigned int nr_replacements;
Nguyễn Thái Ngọc Duy5fc2fc82014-06-13 19:19:36 +070019 int refcount;
20};
21
22struct split_index *init_split_index(struct index_state *istate);
Nguyễn Thái Ngọc Duy045113a2014-06-13 19:19:38 +070023void save_or_free_index_entry(struct index_state *istate, struct cache_entry *ce);
Nguyễn Thái Ngọc Duy078a58e2014-06-13 19:19:39 +070024void replace_index_entry_in_base(struct index_state *istate,
25 struct cache_entry *old,
Brandon Williams75b7b972018-02-14 10:59:48 -080026 struct cache_entry *new_entry);
Nguyễn Thái Ngọc Duy5fc2fc82014-06-13 19:19:36 +070027int read_link_extension(struct index_state *istate,
28 const void *data, unsigned long sz);
29int write_link_extension(struct strbuf *sb,
30 struct index_state *istate);
31void move_cache_to_base_index(struct index_state *istate);
32void merge_base_index(struct index_state *istate);
33void prepare_to_write_split_index(struct index_state *istate);
34void finish_writing_split_index(struct index_state *istate);
35void discard_split_index(struct index_state *istate);
Christian Coudercef4fc72017-02-27 19:00:01 +010036void add_split_index(struct index_state *istate);
37void remove_split_index(struct index_state *istate);
Nguyễn Thái Ngọc Duy5fc2fc82014-06-13 19:19:36 +070038
39#endif