extlzham 0.0.1.PROTOTYPE3-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.md +27 -0
  3. data/README.md +74 -0
  4. data/Rakefile +152 -0
  5. data/contrib/lzham/LICENSE +22 -0
  6. data/contrib/lzham/README.md +209 -0
  7. data/contrib/lzham/include/lzham.h +781 -0
  8. data/contrib/lzham/lzhamcomp/lzham_comp.h +38 -0
  9. data/contrib/lzham/lzhamcomp/lzham_lzbase.cpp +244 -0
  10. data/contrib/lzham/lzhamcomp/lzham_lzbase.h +45 -0
  11. data/contrib/lzham/lzhamcomp/lzham_lzcomp.cpp +608 -0
  12. data/contrib/lzham/lzhamcomp/lzham_lzcomp_internal.cpp +1966 -0
  13. data/contrib/lzham/lzhamcomp/lzham_lzcomp_internal.h +472 -0
  14. data/contrib/lzham/lzhamcomp/lzham_lzcomp_state.cpp +1413 -0
  15. data/contrib/lzham/lzhamcomp/lzham_match_accel.cpp +562 -0
  16. data/contrib/lzham/lzhamcomp/lzham_match_accel.h +146 -0
  17. data/contrib/lzham/lzhamcomp/lzham_null_threading.h +97 -0
  18. data/contrib/lzham/lzhamcomp/lzham_pthreads_threading.cpp +229 -0
  19. data/contrib/lzham/lzhamcomp/lzham_pthreads_threading.h +520 -0
  20. data/contrib/lzham/lzhamcomp/lzham_threading.h +12 -0
  21. data/contrib/lzham/lzhamcomp/lzham_win32_threading.cpp +220 -0
  22. data/contrib/lzham/lzhamcomp/lzham_win32_threading.h +368 -0
  23. data/contrib/lzham/lzhamdecomp/lzham_assert.cpp +66 -0
  24. data/contrib/lzham/lzhamdecomp/lzham_assert.h +40 -0
  25. data/contrib/lzham/lzhamdecomp/lzham_checksum.cpp +73 -0
  26. data/contrib/lzham/lzhamdecomp/lzham_checksum.h +13 -0
  27. data/contrib/lzham/lzhamdecomp/lzham_config.h +23 -0
  28. data/contrib/lzham/lzhamdecomp/lzham_core.h +264 -0
  29. data/contrib/lzham/lzhamdecomp/lzham_decomp.h +37 -0
  30. data/contrib/lzham/lzhamdecomp/lzham_helpers.h +54 -0
  31. data/contrib/lzham/lzhamdecomp/lzham_huffman_codes.cpp +262 -0
  32. data/contrib/lzham/lzhamdecomp/lzham_huffman_codes.h +14 -0
  33. data/contrib/lzham/lzhamdecomp/lzham_lzdecomp.cpp +1527 -0
  34. data/contrib/lzham/lzhamdecomp/lzham_lzdecompbase.cpp +131 -0
  35. data/contrib/lzham/lzhamdecomp/lzham_lzdecompbase.h +89 -0
  36. data/contrib/lzham/lzhamdecomp/lzham_math.h +142 -0
  37. data/contrib/lzham/lzhamdecomp/lzham_mem.cpp +284 -0
  38. data/contrib/lzham/lzhamdecomp/lzham_mem.h +112 -0
  39. data/contrib/lzham/lzhamdecomp/lzham_platform.cpp +157 -0
  40. data/contrib/lzham/lzhamdecomp/lzham_platform.h +284 -0
  41. data/contrib/lzham/lzhamdecomp/lzham_prefix_coding.cpp +351 -0
  42. data/contrib/lzham/lzhamdecomp/lzham_prefix_coding.h +146 -0
  43. data/contrib/lzham/lzhamdecomp/lzham_symbol_codec.cpp +1484 -0
  44. data/contrib/lzham/lzhamdecomp/lzham_symbol_codec.h +556 -0
  45. data/contrib/lzham/lzhamdecomp/lzham_timer.cpp +147 -0
  46. data/contrib/lzham/lzhamdecomp/lzham_timer.h +99 -0
  47. data/contrib/lzham/lzhamdecomp/lzham_traits.h +141 -0
  48. data/contrib/lzham/lzhamdecomp/lzham_types.h +97 -0
  49. data/contrib/lzham/lzhamdecomp/lzham_utils.h +58 -0
  50. data/contrib/lzham/lzhamdecomp/lzham_vector.cpp +75 -0
  51. data/contrib/lzham/lzhamdecomp/lzham_vector.h +588 -0
  52. data/contrib/lzham/lzhamlib/lzham_lib.cpp +179 -0
  53. data/examples/basic.rb +48 -0
  54. data/ext/constants.c +64 -0
  55. data/ext/decoder.c +313 -0
  56. data/ext/depend +5 -0
  57. data/ext/encoder.c +372 -0
  58. data/ext/error.c +80 -0
  59. data/ext/extconf.rb +29 -0
  60. data/ext/extlzham.c +34 -0
  61. data/ext/extlzham.h +62 -0
  62. data/gemstub.rb +22 -0
  63. data/lib/2.0/extlzham.so +0 -0
  64. data/lib/2.1/extlzham.so +0 -0
  65. data/lib/2.2/extlzham.so +0 -0
  66. data/lib/extlzham.rb +158 -0
  67. data/lib/extlzham/version.rb +5 -0
  68. data/test/test_extlzham.rb +35 -0
  69. metadata +156 -0
@@ -0,0 +1,66 @@
1
+ // File: lzham_assert.cpp
2
+ // See Copyright Notice and license at the end of include/lzham.h
3
+ #include "lzham_core.h"
4
+
5
+ static bool g_fail_exceptions;
6
+ static bool g_exit_on_failure = true;
7
+
8
+ void lzham_enable_fail_exceptions(bool enabled)
9
+ {
10
+ g_fail_exceptions = enabled;
11
+ }
12
+
13
+ void lzham_assert(const char* pExp, const char* pFile, unsigned line)
14
+ {
15
+ char buf[512];
16
+
17
+ sprintf_s(buf, sizeof(buf), "%s(%u): Assertion failed: \"%s\"\n", pFile, line, pExp);
18
+
19
+ lzham_output_debug_string(buf);
20
+
21
+ printf("%s", buf);
22
+
23
+ if (lzham_is_debugger_present())
24
+ lzham_debug_break();
25
+ }
26
+
27
+ void lzham_fail(const char* pExp, const char* pFile, unsigned line)
28
+ {
29
+ char buf[512];
30
+
31
+ sprintf_s(buf, sizeof(buf), "%s(%u): Failure: \"%s\"\n", pFile, line, pExp);
32
+
33
+ lzham_output_debug_string(buf);
34
+
35
+ printf("%s", buf);
36
+
37
+ if (lzham_is_debugger_present())
38
+ lzham_debug_break();
39
+
40
+ #if LZHAM_USE_WIN32_API
41
+ if (g_fail_exceptions)
42
+ RaiseException(LZHAM_FAIL_EXCEPTION_CODE, 0, 0, NULL);
43
+ else
44
+ #endif
45
+ if (g_exit_on_failure)
46
+ exit(EXIT_FAILURE);
47
+ }
48
+
49
+ void lzham_trace(const char* pFmt, va_list args)
50
+ {
51
+ if (lzham_is_debugger_present())
52
+ {
53
+ char buf[512];
54
+ vsprintf_s(buf, sizeof(buf), pFmt, args);
55
+
56
+ lzham_output_debug_string(buf);
57
+ }
58
+ };
59
+
60
+ void lzham_trace(const char* pFmt, ...)
61
+ {
62
+ va_list args;
63
+ va_start(args, pFmt);
64
+ lzham_trace(pFmt, args);
65
+ va_end(args);
66
+ };
@@ -0,0 +1,40 @@
1
+ // File: lzham_assert.h
2
+ // See Copyright Notice and license at the end of include/lzham.h
3
+ #pragma once
4
+
5
+ const unsigned int LZHAM_FAIL_EXCEPTION_CODE = 256U;
6
+ void lzham_enable_fail_exceptions(bool enabled);
7
+
8
+ void lzham_assert(const char* pExp, const char* pFile, unsigned line);
9
+ void lzham_fail(const char* pExp, const char* pFile, unsigned line);
10
+
11
+ #ifdef NDEBUG
12
+ #define LZHAM_ASSERT(x) ((void)0)
13
+ #else
14
+ #define LZHAM_ASSERT(_exp) (void)( (!!(_exp)) || (lzham_assert(#_exp, __FILE__, __LINE__), 0) )
15
+ #define LZHAM_ASSERTS_ENABLED 1
16
+ #endif
17
+
18
+ #define LZHAM_VERIFY(_exp) (void)( (!!(_exp)) || (lzham_assert(#_exp, __FILE__, __LINE__), 0) )
19
+
20
+ #define LZHAM_FAIL(msg) do { lzham_fail(#msg, __FILE__, __LINE__); } while(0)
21
+
22
+ #define LZHAM_ASSERT_OPEN_RANGE(x, l, h) LZHAM_ASSERT((x >= l) && (x < h))
23
+ #define LZHAM_ASSERT_CLOSED_RANGE(x, l, h) LZHAM_ASSERT((x >= l) && (x <= h))
24
+
25
+ void lzham_trace(const char* pFmt, va_list args);
26
+ void lzham_trace(const char* pFmt, ...);
27
+
28
+ // Borrowed from boost libraries.
29
+ template <bool x> struct assume_failure;
30
+ template <> struct assume_failure<true> { enum { blah = 1 }; };
31
+ template<int x> struct assume_try { };
32
+
33
+ #define LZHAM_JOINER_FINAL(a, b) a##b
34
+ #define LZHAM_JOINER(a, b) LZHAM_JOINER_FINAL(a, b)
35
+ #define LZHAM_JOIN(a, b) LZHAM_JOINER(a, b)
36
+ #if defined(__GNUC__)
37
+ #define LZHAM_ASSUME(p) typedef assume_try < sizeof(assume_failure< (bool)(p) > ) > LZHAM_JOIN(assume_typedef, __COUNTER__) __attribute__((unused))
38
+ #else
39
+ #define LZHAM_ASSUME(p) typedef assume_try < sizeof(assume_failure< (bool)(p) > ) > LZHAM_JOIN(assume_typedef, __COUNTER__)
40
+ #endif
@@ -0,0 +1,73 @@
1
+ // File: lzham_checksum.cpp
2
+ #include "lzham_core.h"
3
+ #include "lzham_checksum.h"
4
+
5
+ namespace lzham
6
+ {
7
+ // Originally from the public domain stb.h header.
8
+ uint adler32(const void* pBuf, size_t buflen, uint adler32)
9
+ {
10
+ if (!pBuf)
11
+ return cInitAdler32;
12
+
13
+ const uint8* buffer = static_cast<const uint8*>(pBuf);
14
+
15
+ const unsigned long ADLER_MOD = 65521;
16
+ unsigned long s1 = adler32 & 0xffff, s2 = adler32 >> 16;
17
+ size_t blocklen;
18
+ unsigned long i;
19
+
20
+ blocklen = buflen % 5552;
21
+ while (buflen)
22
+ {
23
+ for (i=0; i + 7 < blocklen; i += 8)
24
+ {
25
+ s1 += buffer[0], s2 += s1;
26
+ s1 += buffer[1], s2 += s1;
27
+ s1 += buffer[2], s2 += s1;
28
+ s1 += buffer[3], s2 += s1;
29
+ s1 += buffer[4], s2 += s1;
30
+ s1 += buffer[5], s2 += s1;
31
+ s1 += buffer[6], s2 += s1;
32
+ s1 += buffer[7], s2 += s1;
33
+
34
+ buffer += 8;
35
+ }
36
+
37
+ for (; i < blocklen; ++i)
38
+ s1 += *buffer++, s2 += s1;
39
+
40
+ s1 %= ADLER_MOD, s2 %= ADLER_MOD;
41
+ buflen -= blocklen;
42
+ blocklen = 5552;
43
+ }
44
+ return static_cast<uint>((s2 << 16) + s1);
45
+ }
46
+
47
+ // Karl Malbrain's compact CRC-32, with pre and post conditioning.
48
+ // See "A compact CCITT crc16 and crc32 C implementation that balances processor cache usage against speed":
49
+ // http://www.geocities.com/malbrain/
50
+ static const lzham_uint32 s_crc32[16] =
51
+ {
52
+ 0x00000000, 0x1db71064, 0x3b6e20c8, 0x26d930ac, 0x76dc4190, 0x6b6b51f4, 0x4db26158, 0x5005713c,
53
+ 0xedb88320, 0xf00f9344, 0xd6d6a3e8, 0xcb61b38c, 0x9b64c2b0, 0x86d3d2d4, 0xa00ae278, 0xbdbdf21c
54
+ };
55
+
56
+ uint crc32(uint crc, const lzham_uint8 *ptr, size_t buf_len)
57
+ {
58
+ if (!ptr)
59
+ return cInitCRC32;
60
+
61
+ crc = ~crc;
62
+ while (buf_len--)
63
+ {
64
+ lzham_uint8 b = *ptr++;
65
+ crc = (crc >> 4) ^ s_crc32[(crc & 0xF) ^ (b & 0xF)];
66
+ crc = (crc >> 4) ^ s_crc32[(crc & 0xF) ^ (b >> 4)];
67
+ }
68
+ return ~crc;
69
+ }
70
+
71
+
72
+ } // namespace lzham
73
+
@@ -0,0 +1,13 @@
1
+ // File: lzham_checksum.h
2
+ // See Copyright Notice and license at the end of include/lzham.h
3
+ #pragma once
4
+
5
+ namespace lzham
6
+ {
7
+ const uint cInitAdler32 = 1U;
8
+ uint adler32(const void* pBuf, size_t buflen, uint adler32 = cInitAdler32);
9
+
10
+ const uint cInitCRC32 = 0U;
11
+ uint crc32(uint crc, const lzham_uint8 *ptr, size_t buf_len);
12
+
13
+ } // namespace lzham
@@ -0,0 +1,23 @@
1
+ // File: lzham_config.h
2
+ // See Copyright Notice and license at the end of include/lzham.h
3
+ #pragma once
4
+
5
+ #if defined(_DEBUG) || defined(DEBUG)
6
+ #define LZHAM_BUILD_DEBUG
7
+
8
+ #ifndef DEBUG
9
+ #define DEBUG
10
+ #endif
11
+ #else
12
+ #define LZHAM_BUILD_RELEASE
13
+
14
+ #ifndef NDEBUG
15
+ #define NDEBUG
16
+ #endif
17
+
18
+ #ifdef DEBUG
19
+ #error DEBUG cannot be defined in LZHAM_BUILD_RELEASE
20
+ #endif
21
+ #endif
22
+ #define LZHAM_BUFFERED_PRINTF 0
23
+ #define LZHAM_PERF_SECTIONS 0
@@ -0,0 +1,264 @@
1
+ // File: lzham_core.h
2
+ // See Copyright Notice and license at the end of include/lzham.h
3
+ #pragma once
4
+
5
+ #if defined(_MSC_VER)
6
+ #pragma warning (disable: 4127) // conditional expression is constant
7
+ #endif
8
+
9
+ // Enable this when first porting to new platforms - disables all threading and atomic ops in compressor:
10
+ //#define LZHAM_ANSI_CPLUSPLUS 1
11
+
12
+ #if defined(__FreeBSD__) || defined(__NetBSD__)
13
+ // TODO: I haven't compiled/tested on these platforms yet, let's play it safe for now.
14
+ #define LZHAM_ANSI_CPLUSPLUS 1
15
+ #endif
16
+
17
+ #if defined(__APPLE__) && defined(__MACH__)
18
+ // Apple OSX and iOS
19
+ #include <TargetConditionals.h>
20
+ #endif
21
+
22
+ #if defined(_XBOX) && !defined(LZHAM_ANSI_CPLUSPLUS)
23
+ // --- X360 - This hasn't been tested since early an alpha.
24
+ #include <xtl.h>
25
+ #define _HAS_EXCEPTIONS 0
26
+ #define NOMINMAX
27
+
28
+ #define LZHAM_PLATFORM_X360 1
29
+ #define LZHAM_USE_WIN32_API 1
30
+ #define LZHAM_USE_WIN32_ATOMIC_FUNCTIONS 1
31
+ #define LZHAM_64BIT_POINTERS 0
32
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 1
33
+ #define LZHAM_BIG_ENDIAN_CPU 1
34
+ #define LZHAM_USE_UNALIGNED_INT_LOADS 1
35
+ #define LZHAM_RESTRICT __restrict
36
+ #define LZHAM_FORCE_INLINE __forceinline
37
+ #define LZHAM_NOTE_UNUSED(x) (void)x
38
+
39
+ #elif defined(WIN32) && !defined(LZHAM_ANSI_CPLUSPLUS)
40
+ // --- Windows: MSVC or MinGW, x86 or x64, Win32 API's for threading and Win32 Interlocked API's or GCC built-ins for atomic ops.
41
+ #ifdef NDEBUG
42
+ // Ensure checked iterators are disabled.
43
+ #define _SECURE_SCL 0
44
+ #define _HAS_ITERATOR_DEBUGGING 0
45
+ #endif
46
+ #ifndef _DLL
47
+ // If we're using the DLL form of the run-time libs, we're also going to be enabling exceptions because we'll be building CLR apps.
48
+ // Otherwise, we disable exceptions for a small speed boost.
49
+ #define _HAS_EXCEPTIONS 0
50
+ #endif
51
+ #define NOMINMAX
52
+
53
+ #ifndef _WIN32_WINNT
54
+ #define _WIN32_WINNT 0x500
55
+ #endif
56
+
57
+ #ifndef WIN32_LEAN_AND_MEAN
58
+ #define WIN32_LEAN_AND_MEAN
59
+ #endif
60
+
61
+ #include <windows.h>
62
+
63
+ #define LZHAM_USE_WIN32_API 1
64
+
65
+ #if defined(__MINGW32__) || defined(__MINGW64__)
66
+ #define LZHAM_USE_GCC_ATOMIC_BUILTINS 1
67
+ #else
68
+ #define LZHAM_USE_WIN32_ATOMIC_FUNCTIONS 1
69
+ #endif
70
+
71
+ #define LZHAM_PLATFORM_PC 1
72
+
73
+ #ifdef _WIN64
74
+ #define LZHAM_PLATFORM_PC_X64 1
75
+ #define LZHAM_64BIT_POINTERS 1
76
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 1
77
+ #define LZHAM_LITTLE_ENDIAN_CPU 1
78
+ #else
79
+ #define LZHAM_PLATFORM_PC_X86 1
80
+ #define LZHAM_64BIT_POINTERS 0
81
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 0
82
+ #define LZHAM_LITTLE_ENDIAN_CPU 1
83
+ #endif
84
+
85
+ #define LZHAM_USE_UNALIGNED_INT_LOADS 1
86
+ #define LZHAM_RESTRICT __restrict
87
+ #define LZHAM_FORCE_INLINE __forceinline
88
+
89
+ #if defined(_MSC_VER) || defined(__MINGW32__) || defined(__MINGW64__)
90
+ #define LZHAM_USE_MSVC_INTRINSICS 1
91
+ #endif
92
+
93
+ #define LZHAM_NOTE_UNUSED(x) (void)x
94
+
95
+ #elif defined(__APPLE__) && !defined(LZHAM_ANSI_CPLUSPLUS)
96
+ // --- Apple: iOS or OSX
97
+ #if (TARGET_IPHONE_SIMULATOR == 1) || (TARGET_OS_IPHONE == 1)
98
+ #define LZHAM_PLATFORM_PC 0
99
+
100
+ #if defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__)
101
+ #define LZHAM_PLATFORM_PC_X64 0
102
+ #define LZHAM_64BIT_POINTERS 1
103
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 1
104
+ #else
105
+ #define LZHAM_PLATFORM_PC_X86 0
106
+ #define LZHAM_64BIT_POINTERS 0
107
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 0
108
+ #endif
109
+
110
+ #define LZHAM_USE_UNALIGNED_INT_LOADS 0
111
+
112
+ #if __BIG_ENDIAN__
113
+ #define LZHAM_BIG_ENDIAN_CPU 1
114
+ #else
115
+ #define LZHAM_LITTLE_ENDIAN_CPU 1
116
+ #endif
117
+
118
+ #define LZHAM_USE_PTHREADS_API 1
119
+ #define LZHAM_USE_GCC_ATOMIC_BUILTINS 1
120
+
121
+ #define LZHAM_RESTRICT
122
+
123
+ #if defined(__clang__)
124
+ #define LZHAM_FORCE_INLINE inline
125
+ #else
126
+ #define LZHAM_FORCE_INLINE inline __attribute__((__always_inline__,__gnu_inline__))
127
+ #endif
128
+
129
+ #define LZHAM_NOTE_UNUSED(x) (void)x
130
+
131
+ #elif (TARGET_OS_MAC == 1)
132
+ #define LZHAM_PLATFORM_PC 1
133
+
134
+ #if defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__)
135
+ #define LZHAM_PLATFORM_PC_X64 1
136
+ #define LZHAM_64BIT_POINTERS 1
137
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 1
138
+ #else
139
+ #define LZHAM_PLATFORM_PC_X86 1
140
+ #define LZHAM_64BIT_POINTERS 0
141
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 0
142
+ #endif
143
+
144
+ #define LZHAM_USE_UNALIGNED_INT_LOADS 1
145
+
146
+ #if __BIG_ENDIAN__
147
+ #define LZHAM_BIG_ENDIAN_CPU 1
148
+ #else
149
+ #define LZHAM_LITTLE_ENDIAN_CPU 1
150
+ #endif
151
+
152
+ #define LZHAM_USE_PTHREADS_API 1
153
+ #define LZHAM_USE_GCC_ATOMIC_BUILTINS 1
154
+
155
+ #define LZHAM_RESTRICT
156
+
157
+ #if defined(__clang__)
158
+ #define LZHAM_FORCE_INLINE inline
159
+ #else
160
+ #define LZHAM_FORCE_INLINE inline __attribute__((__always_inline__,__gnu_inline__))
161
+ #endif
162
+
163
+ #define LZHAM_NOTE_UNUSED(x) (void)x
164
+ #elif
165
+ #error TODO: Unknown Apple target
166
+ #endif
167
+
168
+ #elif defined(__linux__) && (defined(__i386__) || defined(__x86_64__)) && !defined(LZHAM_ANSI_CPLUSPLUS)
169
+ // --- Generic GCC/clang path for x86/x64, clang or GCC, Linux, OSX, FreeBSD or NetBSD, pthreads for threading, GCC built-ins for atomic ops.
170
+ #define LZHAM_PLATFORM_PC 1
171
+
172
+ #if defined(_LP64) || defined(__LP64__) || defined(__x86_64__)
173
+ // 64-bit build assumes pointers are always 64-bit
174
+ #define LZHAM_PLATFORM_PC_X64 1
175
+ #define LZHAM_64BIT_POINTERS 1
176
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 1
177
+ #else
178
+ #define LZHAM_PLATFORM_PC_X86 1
179
+ #define LZHAM_64BIT_POINTERS 0
180
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 0
181
+ #endif
182
+
183
+ #define LZHAM_USE_UNALIGNED_INT_LOADS 1
184
+
185
+ #if __BIG_ENDIAN__
186
+ #define LZHAM_BIG_ENDIAN_CPU 1
187
+ #else
188
+ #define LZHAM_LITTLE_ENDIAN_CPU 1
189
+ #endif
190
+
191
+ #define LZHAM_USE_PTHREADS_API 1
192
+ #define LZHAM_USE_GCC_ATOMIC_BUILTINS 1
193
+
194
+ #define LZHAM_RESTRICT
195
+
196
+ #if defined(__clang__)
197
+ #define LZHAM_FORCE_INLINE inline
198
+ #else
199
+ #define LZHAM_FORCE_INLINE inline __attribute__((__always_inline__,__gnu_inline__))
200
+ #endif
201
+
202
+ #define LZHAM_NOTE_UNUSED(x) (void)x
203
+ #else
204
+ #warning Building as vanilla ANSI-C/C++, multi-threaded compression is disabled! Please configure lzhamdecomp/lzham_core.h.
205
+
206
+ // --- Vanilla ANSI-C/C++
207
+ // No threading support, unaligned loads are NOT okay, no atomic ops.
208
+ #if defined(_WIN64) || defined(__MINGW64__) || defined(_LP64) || defined(__LP64__)
209
+ #define LZHAM_64BIT_POINTERS 1
210
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 1
211
+ #else
212
+ #define LZHAM_64BIT_POINTERS 0
213
+ #define LZHAM_CPU_HAS_64BIT_REGISTERS 0
214
+ #endif
215
+
216
+ #define LZHAM_USE_UNALIGNED_INT_LOADS 0
217
+
218
+ #if __BIG_ENDIAN__
219
+ #define LZHAM_BIG_ENDIAN_CPU 1
220
+ #else
221
+ #define LZHAM_LITTLE_ENDIAN_CPU 1
222
+ #endif
223
+
224
+ #define LZHAM_USE_GCC_ATOMIC_BUILTINS 0
225
+ #define LZHAM_USE_WIN32_ATOMIC_FUNCTIONS 0
226
+
227
+ #define LZHAM_RESTRICT
228
+ #define LZHAM_FORCE_INLINE inline
229
+
230
+ #define LZHAM_NOTE_UNUSED(x) (void)x
231
+ #endif
232
+
233
+ #if LZHAM_LITTLE_ENDIAN_CPU
234
+ const bool c_lzham_little_endian_platform = true;
235
+ #else
236
+ const bool c_lzham_little_endian_platform = false;
237
+ #endif
238
+
239
+ const bool c_lzham_big_endian_platform = !c_lzham_little_endian_platform;
240
+
241
+ #include <stdlib.h>
242
+ #include <stdio.h>
243
+ #include <math.h>
244
+ #if !defined(__APPLE__) && !defined(__FreeBSD__)
245
+ #include <malloc.h>
246
+ #endif
247
+ #include <stdarg.h>
248
+ #include <memory.h>
249
+ #include <limits.h>
250
+ #include <algorithm>
251
+ #include <errno.h>
252
+
253
+ #include "lzham.h"
254
+ #include "lzham_config.h"
255
+ #include "lzham_types.h"
256
+ #include "lzham_assert.h"
257
+ #include "lzham_platform.h"
258
+
259
+ #include "lzham_helpers.h"
260
+ #include "lzham_traits.h"
261
+ #include "lzham_mem.h"
262
+ #include "lzham_math.h"
263
+ #include "lzham_utils.h"
264
+ #include "lzham_vector.h"