summaryrefslogtreecommitdiff
path: root/xdelta3/xdelta3-internal.h
diff options
context:
space:
mode:
Diffstat (limited to 'xdelta3/xdelta3-internal.h')
-rw-r--r--xdelta3/xdelta3-internal.h62
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,
64int xd3_main_cmdline (int argc, char **argv); 64int xd3_main_cmdline (int argc, char **argv);
65#endif 65#endif
66 66
67#if REGRESSION_TEST
68int xd3_selftest (void);
69#endif
70
67/* main_file->mode values */ 71/* main_file->mode values */
68typedef enum 72typedef 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
158usize_t xd3_large_cksum (const uint8_t *seg, const usize_t ln); 162#define UINT32_OFLOW_MASK 0xfe000000U
159usize_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
198int xd3_size_hashtable (xd3_stream *stream,
199 usize_t slots,
200 usize_t look,
201 xd3_hash_cfg *cfg);
202
203usize_t xd3_checksum_hash (const xd3_hash_cfg *cfg, const usize_t cksum);
204
205#if USE_UINT32
206uint32_t xd3_large32_cksum (xd3_hash_cfg *cfg, const uint8_t *base, const usize_t look);
207uint32_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
212uint64_t xd3_large64_cksum (xd3_hash_cfg *cfg, const uint8_t *base, const usize_t look);
213uint64_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__ */