ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/liblzf/lzfP.h
(Generate patch)

Comparing liblzf/lzfP.h (file contents):
Revision 1.21 by root, Tue Jun 1 01:15:34 2010 UTC vs.
Revision 1.28 by root, Sun Feb 26 03:17:50 2012 UTC

47 * Size of hashtable is (1 << HLOG) * sizeof (char *) 47 * Size of hashtable is (1 << HLOG) * sizeof (char *)
48 * decompression is independent of the hash table size 48 * decompression is independent of the hash table size
49 * the difference between 15 and 14 is very small 49 * the difference between 15 and 14 is very small
50 * for small blocks (and 14 is usually a bit faster). 50 * for small blocks (and 14 is usually a bit faster).
51 * For a low-memory/faster configuration, use HLOG == 13; 51 * For a low-memory/faster configuration, use HLOG == 13;
52 * For best compression, use 15 or 16 (or more, up to 23). 52 * For best compression, use 15 or 16 (or more, up to 22).
53 */ 53 */
54#ifndef HLOG 54#ifndef HLOG
55# define HLOG 16 55# define HLOG 16
56#endif 56#endif
57 57
86 * You may choose to pre-set the hash table (might be faster on some 86 * You may choose to pre-set the hash table (might be faster on some
87 * modern cpus and large (>>64k) blocks, and also makes compression 87 * modern cpus and large (>>64k) blocks, and also makes compression
88 * deterministic/repeatable when the configuration otherwise is the same). 88 * deterministic/repeatable when the configuration otherwise is the same).
89 */ 89 */
90#ifndef INIT_HTAB 90#ifndef INIT_HTAB
91# define INIT_HTAB 0 91# define INIT_HTAB 1
92#endif 92#endif
93 93
94/* 94/*
95 * Avoid assigning values to errno variable? for some embedding purposes 95 * Avoid assigning values to errno variable? for some embedding purposes
96 * (linux kernel for example), this is necessary. NOTE: this breaks 96 * (linux kernel for example), this is necessary. NOTE: this breaks
119 */ 119 */
120#ifndef CHECK_INPUT 120#ifndef CHECK_INPUT
121# define CHECK_INPUT 1 121# define CHECK_INPUT 1
122#endif 122#endif
123 123
124/*
125 * Whether the target CPU has a slow multiplication. This affects
126 * the default hash function for the compressor, and enables a slightly
127 * worse hash function that needs only shifts.
128 */
129#ifndef MULTIPLICATION_IS_SLOW
130# define MULTIPLICATION_IS_SLOW 0
131#endif
132
133/*
134 * If defined, then this data type will be used for storing offsets.
135 * This can be useful if you want to use a huge hashtable, want to
136 * conserve memory, or both, and your data fits into e.g. 64kb.
137 * If instead you want to compress data > 4GB, then it's better to
138 * to "#define LZF_USE_OFFSETS 0" instead.
139 */
140/*#define LZF_HSLOT unsigned short*/
141
142/*
143 * Whether to store pointers or offsets inside the hash table. On
144 * 64 bit architetcures, pointers take up twice as much space,
145 * and might also be slower. Default is to autodetect.
146 */
147/*#define LZF_USE_OFFSETS autodetect */
148
124/*****************************************************************************/ 149/*****************************************************************************/
125/* nothing should be changed below */ 150/* nothing should be changed below */
126 151
127#ifdef __cplusplus 152#ifdef __cplusplus
128# include <cstring> 153# include <cstring>
154# include <climits>
129using namespace std; 155using namespace std;
130#else 156#else
131# include <string.h> 157# include <string.h>
158# include <limits.h>
159#endif
160
161#ifndef LZF_USE_OFFSETS
162# ifdef _WIN32
163# define LZF_USE_OFFSETS defined(_M_X64)
164# else
165# if __cplusplus > 199711L
166# include <cstdint>
167# else
168# include <stdint.h>
169# endif
170# define LZF_USE_OFFSETS (UINTPTR_MAX > 0xffffffffU)
171# endif
132#endif 172#endif
133 173
134typedef unsigned char u8; 174typedef unsigned char u8;
135 175
136typedef const u8 *LZF_STATE[1 << (HLOG)]; 176#ifdef LZF_HSLOT
137 177# define LZF_HSLOT_BIAS ((const u8 *)in_data)
138#if !STRICT_ALIGN 178#else
139/* for unaligned accesses we need a 16 bit datatype. */ 179# if LZF_USE_OFFSETS
140# ifdef __cplusplus 180# define LZF_HSLOT_BIAS ((const u8 *)in_data)
141# include <climits> 181 typedef unsigned int LZF_HSLOT;
142# else 182# else
143# include <limits.h> 183# define LZF_HSLOT_BIAS 0
184 typedef const u8 *LZF_HSLOT;
144# endif 185# endif
186#endif
187
188typedef LZF_HSLOT LZF_STATE[1 << (HLOG)];
189
145# if USHRT_MAX == 65535 190#if USHRT_MAX == 65535
146 typedef unsigned short u16; 191 typedef unsigned short u16;
147# elif UINT_MAX == 65535 192#elif UINT_MAX == 65535
148 typedef unsigned int u16; 193 typedef unsigned int u16;
149# else 194#else
150# undef STRICT_ALIGN 195# undef STRICT_ALIGN
151# define STRICT_ALIGN 1 196# define STRICT_ALIGN 1
152# endif
153#endif 197#endif
154 198
155#if ULTRA_FAST 199#if ULTRA_FAST
156# undef VERY_FAST 200# undef VERY_FAST
157#endif 201#endif

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines