7 char magic[8]; // "\0plocate";
8 uint32_t version; // 1.
9 uint32_t hashtable_size;
10 uint32_t extra_ht_slots;
12 uint64_t hash_table_offset_bytes;
13 uint64_t filename_index_offset_bytes;
15 // Version 1 and up only.
16 uint32_t max_version; // Nominally 1 or 2, but can be increased if more features are added in a backward-compatible way.
17 uint32_t zstd_dictionary_length_bytes;
18 uint64_t zstd_dictionary_offset_bytes;
20 // Only if max_version >= 2, and only relevant for updatedb.
21 uint64_t directory_data_length_bytes;
22 uint64_t directory_data_offset_bytes;
23 uint64_t next_zstd_dictionary_length_bytes;
24 uint64_t next_zstd_dictionary_offset_bytes;
25 uint64_t conf_block_length_bytes;
26 uint64_t conf_block_offset_bytes;
28 // Only if max_version >= 2.
29 bool check_visibility;
37 bool operator==(const Trigram &other) const
39 return trgm == other.trgm;
41 bool operator<(const Trigram &other) const
43 return trgm < other.trgm;
47 inline uint32_t hash_trigram(uint32_t trgm, uint32_t ht_size)
49 // CRC-like computation.
51 for (int i = 0; i < 32; i++) {
52 bool bit = crc & 0x80000000;
61 #endif // !defined(DB_H)