1#ifndef PACK_OBJECTS_H 2#define PACK_OBJECTS_H 3 4struct object_entry { 5struct pack_idx_entry idx; 6unsigned long size;/* uncompressed size */ 7struct packed_git *in_pack;/* already in pack */ 8 off_t in_pack_offset; 9struct object_entry *delta;/* delta base object */ 10struct object_entry *delta_child;/* deltified objects who bases me */ 11struct object_entry *delta_sibling;/* other deltified objects who 12 * uses the same base as me 13 */ 14void*delta_data;/* cached delta (uncompressed) */ 15unsigned long delta_size;/* delta data size (uncompressed) */ 16unsigned long z_delta_size;/* delta data size (compressed) */ 17enum object_type type; 18enum object_type in_pack_type;/* could be delta */ 19uint32_t hash;/* name hint hash */ 20unsigned int in_pack_pos; 21unsigned char in_pack_header_size; 22unsigned preferred_base:1;/* 23 * we do not pack this, but is available 24 * to be used as the base object to delta 25 * objects against. 26 */ 27unsigned no_try_delta:1; 28unsigned tagged:1;/* near the very tip of refs */ 29unsigned filled:1;/* assigned write-order */ 30 31/* 32 * State flags for depth-first search used for analyzing delta cycles. 33 */ 34enum{ 35 DFS_NONE =0, 36 DFS_ACTIVE, 37 DFS_DONE 38} dfs_state; 39}; 40 41struct packing_data { 42struct object_entry *objects; 43uint32_t nr_objects, nr_alloc; 44 45int32_t*index; 46uint32_t index_size; 47}; 48 49struct object_entry *packlist_alloc(struct packing_data *pdata, 50const unsigned char*sha1, 51uint32_t index_pos); 52 53struct object_entry *packlist_find(struct packing_data *pdata, 54const unsigned char*sha1, 55uint32_t*index_pos); 56 57staticinlineuint32_tpack_name_hash(const char*name) 58{ 59uint32_t c, hash =0; 60 61if(!name) 62return0; 63 64/* 65 * This effectively just creates a sortable number from the 66 * last sixteen non-whitespace characters. Last characters 67 * count "most", so things that end in ".c" sort together. 68 */ 69while((c = *name++) !=0) { 70if(isspace(c)) 71continue; 72 hash = (hash >>2) + (c <<24); 73} 74return hash; 75} 76 77#endif