diff options
Diffstat (limited to 'xdelta3/xdelta3-internal.h')
-rw-r--r-- | xdelta3/xdelta3-internal.h | 62 |
1 files changed, 58 insertions, 4 deletions
diff --git a/xdelta3/xdelta3-internal.h b/xdelta3/xdelta3-internal.h index d9d56b9..d584141 100644 --- a/xdelta3/xdelta3-internal.h +++ b/xdelta3/xdelta3-internal.h | |||
@@ -64,6 +64,10 @@ int xd3_process_stream (int is_encode, | |||
64 | int xd3_main_cmdline (int argc, char **argv); | 64 | int xd3_main_cmdline (int argc, char **argv); |
65 | #endif | 65 | #endif |
66 | 66 | ||
67 | #if REGRESSION_TEST | ||
68 | int xd3_selftest (void); | ||
69 | #endif | ||
70 | |||
67 | /* main_file->mode values */ | 71 | /* main_file->mode values */ |
68 | typedef enum | 72 | typedef enum |
69 | { | 73 | { |
@@ -155,9 +159,59 @@ void xprintf(const char *fmt, ...) PRINTF_ATTRIBUTE(1,2); | |||
155 | #define UINT64_MAX 18446744073709551615ULL | 159 | #define UINT64_MAX 18446744073709551615ULL |
156 | #endif | 160 | #endif |
157 | 161 | ||
158 | usize_t xd3_large_cksum (const uint8_t *seg, const usize_t ln); | 162 | #define UINT32_OFLOW_MASK 0xfe000000U |
159 | usize_t xd3_large_cksum_update (usize_t cksum, | 163 | #define UINT64_OFLOW_MASK 0xfe00000000000000ULL |
160 | const uint8_t *base, | 164 | |
161 | usize_t look); | 165 | #if SIZEOF_USIZE_T == 4 |
166 | #define USIZE_T_MAX UINT32_MAX | ||
167 | #define xd3_decode_size xd3_decode_uint32_t | ||
168 | #define xd3_emit_size xd3_emit_uint32_t | ||
169 | #define xd3_sizeof_size xd3_sizeof_uint32_t | ||
170 | #define xd3_read_size xd3_read_uint32_t | ||
171 | #define xd3_large_cksum xd3_large32_cksum | ||
172 | #define xd3_large_cksum_update xd3_large32_cksum_update | ||
173 | #define xd3_hash_multiplier xd3_hash_multiplier32 | ||
174 | #elif SIZEOF_USIZE_T == 8 | ||
175 | #define USIZE_T_MAX UINT64_MAX | ||
176 | #define xd3_decode_size xd3_decode_uint64_t | ||
177 | #define xd3_emit_size xd3_emit_uint64_t | ||
178 | #define xd3_sizeof_size xd3_sizeof_uint64_t | ||
179 | #define xd3_read_size xd3_read_uint64_t | ||
180 | #define xd3_large_cksum xd3_large64_cksum | ||
181 | #define xd3_large_cksum_update xd3_large64_cksum_update | ||
182 | #define xd3_hash_multiplier xd3_hash_multiplier64 | ||
183 | #endif | ||
184 | |||
185 | #if SIZEOF_XOFF_T == 4 | ||
186 | #define XOFF_T_MAX UINT32_MAX | ||
187 | #define xd3_decode_offset xd3_decode_uint32_t | ||
188 | #define xd3_emit_offset xd3_emit_uint32_t | ||
189 | #elif SIZEOF_XOFF_T == 8 | ||
190 | #define XOFF_T_MAX UINT64_MAX | ||
191 | #define xd3_decode_offset xd3_decode_uint64_t | ||
192 | #define xd3_emit_offset xd3_emit_uint64_t | ||
193 | #endif | ||
194 | |||
195 | #define USIZE_T_OVERFLOW(a,b) ((USIZE_T_MAX - (usize_t) (a)) < (usize_t) (b)) | ||
196 | #define XOFF_T_OVERFLOW(a,b) ((XOFF_T_MAX - (xoff_t) (a)) < (xoff_t) (b)) | ||
197 | |||
198 | int xd3_size_hashtable (xd3_stream *stream, | ||
199 | usize_t slots, | ||
200 | usize_t look, | ||
201 | xd3_hash_cfg *cfg); | ||
202 | |||
203 | usize_t xd3_checksum_hash (const xd3_hash_cfg *cfg, const usize_t cksum); | ||
204 | |||
205 | #if USE_UINT32 | ||
206 | uint32_t xd3_large32_cksum (xd3_hash_cfg *cfg, const uint8_t *base, const usize_t look); | ||
207 | uint32_t xd3_large32_cksum_update (xd3_hash_cfg *cfg, uint32_t cksum, | ||
208 | const uint8_t *base, const usize_t look); | ||
209 | #endif /* USE_UINT32 */ | ||
210 | |||
211 | #if USE_UINT64 | ||
212 | uint64_t xd3_large64_cksum (xd3_hash_cfg *cfg, const uint8_t *base, const usize_t look); | ||
213 | uint64_t xd3_large64_cksum_update (xd3_hash_cfg *cfg, uint64_t cksum, | ||
214 | const uint8_t *base, const usize_t look); | ||
215 | #endif /* USE_UINT64 */ | ||
162 | 216 | ||
163 | #endif /* XDELTA3_INTERNAL_H__ */ | 217 | #endif /* XDELTA3_INTERNAL_H__ */ |