text: #ifndef PACK_OBJECTS_H
  #define PACK_OBJECTS_H
  
  struct object_entry {
  	struct pack_idx_entry idx;
  	unsigned long size;	/* uncompressed size */
  	struct packed_git *in_pack;	/* already in pack */
  	off_t in_pack_offset;
  	struct object_entry *delta;	/* delta base object */
  	struct object_entry *delta_child; /* deltified objects who bases me */
  	struct object_entry *delta_sibling; /* other deltified objects who
  					     * uses the same base as me
  					     */
  	void *delta_data;	/* cached delta (uncompressed) */
  	unsigned long delta_size;	/* delta data size (uncompressed) */
  	unsigned long z_delta_size;	/* delta data size (compressed) */
  	enum object_type type;
  	enum object_type in_pack_type;	/* could be delta */
  	uint32_t hash;			/* name hint hash */
  	unsigned int in_pack_pos;
  	unsigned char in_pack_header_size;
  	unsigned preferred_base:1; /*
  				    * we do not pack this, but is available
  				    * to be used as the base object to delta
  				    * objects against.
  				    */
  	unsigned no_try_delta:1;
  	unsigned tagged:1; /* near the very tip of refs */
  	unsigned filled:1; /* assigned write-order */
  };
  
  struct packing_data {
  	struct object_entry *objects;
  	uint32_t nr_objects, nr_alloc;
  
  	int32_t *index;
  	uint32_t index_size;
  };
  
  struct object_entry *packlist_alloc(struct packing_data *pdata,
  				    const unsigned char *sha1,
  				    uint32_t index_pos);
  
  struct object_entry *packlist_find(struct packing_data *pdata,
  				   const unsigned char *sha1,
  				   uint32_t *index_pos);
  
  static inline uint32_t pack_name_hash(const char *name)
  {
  	uint32_t c, hash = 0;
  
  	if (!name)
  		return 0;
  
  	/*
  	 * This effectively just creates a sortable number from the
  	 * last sixteen non-whitespace characters. Last characters
  	 * count "most", so things that end in ".c" sort together.
  	 */
  	while ((c = *name++) != 0) {
  		if (isspace(c))
  			continue;
  		hash = (hash >> 2) + (c << 24);
  	}
  	return hash;
  }
  
  #endif
  