chd 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +30 -0
  3. data/chd.gemspec +29 -0
  4. data/ext/chd.c +1008 -0
  5. data/ext/extconf.rb +60 -0
  6. data/lib/chd/cd.rb +272 -0
  7. data/lib/chd/metadata.rb +196 -0
  8. data/lib/chd/version.rb +4 -0
  9. data/lib/chd.rb +21 -0
  10. data/libchdr/CMakeLists.txt +104 -0
  11. data/libchdr/LICENSE.txt +24 -0
  12. data/libchdr/README.md +7 -0
  13. data/libchdr/deps/lzma-19.00/CMakeLists.txt +33 -0
  14. data/libchdr/deps/lzma-19.00/LICENSE +3 -0
  15. data/libchdr/deps/lzma-19.00/include/7zTypes.h +375 -0
  16. data/libchdr/deps/lzma-19.00/include/Alloc.h +51 -0
  17. data/libchdr/deps/lzma-19.00/include/Bra.h +64 -0
  18. data/libchdr/deps/lzma-19.00/include/Compiler.h +33 -0
  19. data/libchdr/deps/lzma-19.00/include/CpuArch.h +336 -0
  20. data/libchdr/deps/lzma-19.00/include/Delta.h +19 -0
  21. data/libchdr/deps/lzma-19.00/include/LzFind.h +121 -0
  22. data/libchdr/deps/lzma-19.00/include/LzHash.h +57 -0
  23. data/libchdr/deps/lzma-19.00/include/Lzma86.h +111 -0
  24. data/libchdr/deps/lzma-19.00/include/LzmaDec.h +234 -0
  25. data/libchdr/deps/lzma-19.00/include/LzmaEnc.h +76 -0
  26. data/libchdr/deps/lzma-19.00/include/LzmaLib.h +131 -0
  27. data/libchdr/deps/lzma-19.00/include/Precomp.h +10 -0
  28. data/libchdr/deps/lzma-19.00/include/Sort.h +18 -0
  29. data/libchdr/deps/lzma-19.00/lzma-history.txt +446 -0
  30. data/libchdr/deps/lzma-19.00/lzma.txt +328 -0
  31. data/libchdr/deps/lzma-19.00/lzma.vcxproj +543 -0
  32. data/libchdr/deps/lzma-19.00/lzma.vcxproj.filters +17 -0
  33. data/libchdr/deps/lzma-19.00/src/Alloc.c +455 -0
  34. data/libchdr/deps/lzma-19.00/src/Bra86.c +82 -0
  35. data/libchdr/deps/lzma-19.00/src/BraIA64.c +53 -0
  36. data/libchdr/deps/lzma-19.00/src/CpuArch.c +218 -0
  37. data/libchdr/deps/lzma-19.00/src/Delta.c +64 -0
  38. data/libchdr/deps/lzma-19.00/src/LzFind.c +1127 -0
  39. data/libchdr/deps/lzma-19.00/src/Lzma86Dec.c +54 -0
  40. data/libchdr/deps/lzma-19.00/src/LzmaDec.c +1185 -0
  41. data/libchdr/deps/lzma-19.00/src/LzmaEnc.c +1330 -0
  42. data/libchdr/deps/lzma-19.00/src/Sort.c +141 -0
  43. data/libchdr/deps/zlib-1.2.11/CMakeLists.txt +29 -0
  44. data/libchdr/deps/zlib-1.2.11/ChangeLog +1515 -0
  45. data/libchdr/deps/zlib-1.2.11/FAQ +368 -0
  46. data/libchdr/deps/zlib-1.2.11/INDEX +68 -0
  47. data/libchdr/deps/zlib-1.2.11/Makefile +5 -0
  48. data/libchdr/deps/zlib-1.2.11/Makefile.in +410 -0
  49. data/libchdr/deps/zlib-1.2.11/README +115 -0
  50. data/libchdr/deps/zlib-1.2.11/adler32.c +186 -0
  51. data/libchdr/deps/zlib-1.2.11/compress.c +86 -0
  52. data/libchdr/deps/zlib-1.2.11/configure +921 -0
  53. data/libchdr/deps/zlib-1.2.11/crc32.c +442 -0
  54. data/libchdr/deps/zlib-1.2.11/crc32.h +441 -0
  55. data/libchdr/deps/zlib-1.2.11/deflate.c +2163 -0
  56. data/libchdr/deps/zlib-1.2.11/deflate.h +349 -0
  57. data/libchdr/deps/zlib-1.2.11/doc/algorithm.txt +209 -0
  58. data/libchdr/deps/zlib-1.2.11/doc/rfc1950.txt +619 -0
  59. data/libchdr/deps/zlib-1.2.11/doc/rfc1951.txt +955 -0
  60. data/libchdr/deps/zlib-1.2.11/doc/rfc1952.txt +675 -0
  61. data/libchdr/deps/zlib-1.2.11/doc/txtvsbin.txt +107 -0
  62. data/libchdr/deps/zlib-1.2.11/gzclose.c +25 -0
  63. data/libchdr/deps/zlib-1.2.11/gzguts.h +218 -0
  64. data/libchdr/deps/zlib-1.2.11/gzlib.c +637 -0
  65. data/libchdr/deps/zlib-1.2.11/gzread.c +654 -0
  66. data/libchdr/deps/zlib-1.2.11/gzwrite.c +665 -0
  67. data/libchdr/deps/zlib-1.2.11/infback.c +640 -0
  68. data/libchdr/deps/zlib-1.2.11/inffast.c +323 -0
  69. data/libchdr/deps/zlib-1.2.11/inffast.h +11 -0
  70. data/libchdr/deps/zlib-1.2.11/inffixed.h +94 -0
  71. data/libchdr/deps/zlib-1.2.11/inflate.c +1561 -0
  72. data/libchdr/deps/zlib-1.2.11/inflate.h +125 -0
  73. data/libchdr/deps/zlib-1.2.11/inftrees.c +304 -0
  74. data/libchdr/deps/zlib-1.2.11/inftrees.h +62 -0
  75. data/libchdr/deps/zlib-1.2.11/make_vms.com +867 -0
  76. data/libchdr/deps/zlib-1.2.11/treebuild.xml +116 -0
  77. data/libchdr/deps/zlib-1.2.11/trees.c +1203 -0
  78. data/libchdr/deps/zlib-1.2.11/trees.h +128 -0
  79. data/libchdr/deps/zlib-1.2.11/uncompr.c +93 -0
  80. data/libchdr/deps/zlib-1.2.11/zconf.h +534 -0
  81. data/libchdr/deps/zlib-1.2.11/zconf.h.cmakein +536 -0
  82. data/libchdr/deps/zlib-1.2.11/zconf.h.in +534 -0
  83. data/libchdr/deps/zlib-1.2.11/zlib.3 +149 -0
  84. data/libchdr/deps/zlib-1.2.11/zlib.3.pdf +0 -0
  85. data/libchdr/deps/zlib-1.2.11/zlib.h +1912 -0
  86. data/libchdr/deps/zlib-1.2.11/zlib.map +94 -0
  87. data/libchdr/deps/zlib-1.2.11/zlib.pc.cmakein +13 -0
  88. data/libchdr/deps/zlib-1.2.11/zlib.pc.in +13 -0
  89. data/libchdr/deps/zlib-1.2.11/zlib2ansi +152 -0
  90. data/libchdr/deps/zlib-1.2.11/zutil.c +325 -0
  91. data/libchdr/deps/zlib-1.2.11/zutil.h +271 -0
  92. data/libchdr/include/dr_libs/dr_flac.h +12280 -0
  93. data/libchdr/include/libchdr/bitstream.h +43 -0
  94. data/libchdr/include/libchdr/cdrom.h +110 -0
  95. data/libchdr/include/libchdr/chd.h +427 -0
  96. data/libchdr/include/libchdr/chdconfig.h +10 -0
  97. data/libchdr/include/libchdr/coretypes.h +60 -0
  98. data/libchdr/include/libchdr/flac.h +50 -0
  99. data/libchdr/include/libchdr/huffman.h +90 -0
  100. data/libchdr/pkg-config.pc.in +10 -0
  101. data/libchdr/src/libchdr_bitstream.c +125 -0
  102. data/libchdr/src/libchdr_cdrom.c +415 -0
  103. data/libchdr/src/libchdr_chd.c +2744 -0
  104. data/libchdr/src/libchdr_flac.c +302 -0
  105. data/libchdr/src/libchdr_huffman.c +545 -0
  106. data/libchdr/src/link.T +5 -0
  107. data/libchdr/tests/CMakeLists.txt +2 -0
  108. data/libchdr/tests/benchmark.c +52 -0
  109. metadata +183 -0
@@ -0,0 +1,33 @@
1
+ add_library(lzma STATIC
2
+ include/7zTypes.h
3
+ include/Alloc.h
4
+ include/Bra.h
5
+ include/Compiler.h
6
+ include/CpuArch.h
7
+ include/Delta.h
8
+ include/LzFind.h
9
+ include/LzHash.h
10
+ include/Lzma86.h
11
+ include/LzmaDec.h
12
+ include/LzmaEnc.h
13
+ include/LzmaLib.h
14
+ include/Precomp.h
15
+ include/Sort.h
16
+ src/Alloc.c
17
+ src/Bra86.c
18
+ src/BraIA64.c
19
+ src/CpuArch.c
20
+ src/Delta.c
21
+ src/LzFind.c
22
+ src/Lzma86Dec.c
23
+ src/LzmaDec.c
24
+ src/LzmaEnc.c
25
+ src/Sort.c
26
+ )
27
+
28
+ target_compile_definitions(lzma PRIVATE _7ZIP_ST)
29
+
30
+ target_include_directories(lzma PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/include")
31
+ target_include_directories(lzma INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/include")
32
+
33
+ set_target_properties(lzma PROPERTIES POSITION_INDEPENDENT_CODE ON)
@@ -0,0 +1,3 @@
1
+ LZMA SDK is placed in the public domain.
2
+
3
+ Anyone is free to copy, modify, publish, use, compile, sell, or distribute the original LZMA SDK code, either in source code form or as a compiled binary, for any purpose, commercial or non-commercial, and by any means.
@@ -0,0 +1,375 @@
1
+ /* 7zTypes.h -- Basic types
2
+ 2018-08-04 : Igor Pavlov : Public domain */
3
+
4
+ #ifndef __7Z_TYPES_H
5
+ #define __7Z_TYPES_H
6
+
7
+ #ifdef _WIN32
8
+ /* #include <windows.h> */
9
+ #endif
10
+
11
+ #include <stddef.h>
12
+
13
+ #ifndef EXTERN_C_BEGIN
14
+ #ifdef __cplusplus
15
+ #define EXTERN_C_BEGIN extern "C" {
16
+ #define EXTERN_C_END }
17
+ #else
18
+ #define EXTERN_C_BEGIN
19
+ #define EXTERN_C_END
20
+ #endif
21
+ #endif
22
+
23
+ EXTERN_C_BEGIN
24
+
25
+ #define SZ_OK 0
26
+
27
+ #define SZ_ERROR_DATA 1
28
+ #define SZ_ERROR_MEM 2
29
+ #define SZ_ERROR_CRC 3
30
+ #define SZ_ERROR_UNSUPPORTED 4
31
+ #define SZ_ERROR_PARAM 5
32
+ #define SZ_ERROR_INPUT_EOF 6
33
+ #define SZ_ERROR_OUTPUT_EOF 7
34
+ #define SZ_ERROR_READ 8
35
+ #define SZ_ERROR_WRITE 9
36
+ #define SZ_ERROR_PROGRESS 10
37
+ #define SZ_ERROR_FAIL 11
38
+ #define SZ_ERROR_THREAD 12
39
+
40
+ #define SZ_ERROR_ARCHIVE 16
41
+ #define SZ_ERROR_NO_ARCHIVE 17
42
+
43
+ typedef int SRes;
44
+
45
+
46
+ #ifdef _WIN32
47
+
48
+ /* typedef DWORD WRes; */
49
+ typedef unsigned WRes;
50
+ #define MY_SRes_HRESULT_FROM_WRes(x) HRESULT_FROM_WIN32(x)
51
+
52
+ #else
53
+
54
+ typedef int WRes;
55
+ #define MY__FACILITY_WIN32 7
56
+ #define MY__FACILITY__WRes MY__FACILITY_WIN32
57
+ #define MY_SRes_HRESULT_FROM_WRes(x) ((HRESULT)(x) <= 0 ? ((HRESULT)(x)) : ((HRESULT) (((x) & 0x0000FFFF) | (MY__FACILITY__WRes << 16) | 0x80000000)))
58
+
59
+ #endif
60
+
61
+
62
+ #ifndef RINOK
63
+ #define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; }
64
+ #endif
65
+
66
+ typedef unsigned char Byte;
67
+ typedef short Int16;
68
+ typedef unsigned short UInt16;
69
+
70
+ #ifdef _LZMA_UINT32_IS_ULONG
71
+ typedef long Int32;
72
+ typedef unsigned long UInt32;
73
+ #else
74
+ typedef int Int32;
75
+ typedef unsigned int UInt32;
76
+ #endif
77
+
78
+ #ifdef _SZ_NO_INT_64
79
+
80
+ /* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers.
81
+ NOTES: Some code will work incorrectly in that case! */
82
+
83
+ typedef long Int64;
84
+ typedef unsigned long UInt64;
85
+
86
+ #else
87
+
88
+ #if defined(_MSC_VER) || defined(__BORLANDC__)
89
+ typedef __int64 Int64;
90
+ typedef unsigned __int64 UInt64;
91
+ #define UINT64_CONST(n) n
92
+ #else
93
+ typedef long long int Int64;
94
+ typedef unsigned long long int UInt64;
95
+ #define UINT64_CONST(n) n ## ULL
96
+ #endif
97
+
98
+ #endif
99
+
100
+ #ifdef _LZMA_NO_SYSTEM_SIZE_T
101
+ typedef UInt32 SizeT;
102
+ #else
103
+ typedef size_t SizeT;
104
+ #endif
105
+
106
+ typedef int BoolInt;
107
+ /* typedef BoolInt Bool; */
108
+ #define True 1
109
+ #define False 0
110
+
111
+
112
+ #ifdef _WIN32
113
+ #define MY_STD_CALL __stdcall
114
+ #else
115
+ #define MY_STD_CALL
116
+ #endif
117
+
118
+ #ifdef _MSC_VER
119
+
120
+ #if _MSC_VER >= 1300
121
+ #define MY_NO_INLINE __declspec(noinline)
122
+ #else
123
+ #define MY_NO_INLINE
124
+ #endif
125
+
126
+ #define MY_FORCE_INLINE __forceinline
127
+
128
+ #define MY_CDECL __cdecl
129
+ #define MY_FAST_CALL __fastcall
130
+
131
+ #else
132
+
133
+ #define MY_NO_INLINE
134
+ #define MY_FORCE_INLINE
135
+ #define MY_CDECL
136
+ #define MY_FAST_CALL
137
+
138
+ /* inline keyword : for C++ / C99 */
139
+
140
+ /* GCC, clang: */
141
+ /*
142
+ #if defined (__GNUC__) && (__GNUC__ >= 4)
143
+ #define MY_FORCE_INLINE __attribute__((always_inline))
144
+ #define MY_NO_INLINE __attribute__((noinline))
145
+ #endif
146
+ */
147
+
148
+ #endif
149
+
150
+
151
+ /* The following interfaces use first parameter as pointer to structure */
152
+
153
+ typedef struct IByteIn IByteIn;
154
+ struct IByteIn
155
+ {
156
+ Byte (*Read)(const IByteIn *p); /* reads one byte, returns 0 in case of EOF or error */
157
+ };
158
+ #define IByteIn_Read(p) (p)->Read(p)
159
+
160
+
161
+ typedef struct IByteOut IByteOut;
162
+ struct IByteOut
163
+ {
164
+ void (*Write)(const IByteOut *p, Byte b);
165
+ };
166
+ #define IByteOut_Write(p, b) (p)->Write(p, b)
167
+
168
+
169
+ typedef struct ISeqInStream ISeqInStream;
170
+ struct ISeqInStream
171
+ {
172
+ SRes (*Read)(const ISeqInStream *p, void *buf, size_t *size);
173
+ /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
174
+ (output(*size) < input(*size)) is allowed */
175
+ };
176
+ #define ISeqInStream_Read(p, buf, size) (p)->Read(p, buf, size)
177
+
178
+ /* it can return SZ_ERROR_INPUT_EOF */
179
+ SRes SeqInStream_Read(const ISeqInStream *stream, void *buf, size_t size);
180
+ SRes SeqInStream_Read2(const ISeqInStream *stream, void *buf, size_t size, SRes errorType);
181
+ SRes SeqInStream_ReadByte(const ISeqInStream *stream, Byte *buf);
182
+
183
+
184
+ typedef struct ISeqOutStream ISeqOutStream;
185
+ struct ISeqOutStream
186
+ {
187
+ size_t (*Write)(const ISeqOutStream *p, const void *buf, size_t size);
188
+ /* Returns: result - the number of actually written bytes.
189
+ (result < size) means error */
190
+ };
191
+ #define ISeqOutStream_Write(p, buf, size) (p)->Write(p, buf, size)
192
+
193
+ typedef enum
194
+ {
195
+ SZ_SEEK_SET = 0,
196
+ SZ_SEEK_CUR = 1,
197
+ SZ_SEEK_END = 2
198
+ } ESzSeek;
199
+
200
+
201
+ typedef struct ISeekInStream ISeekInStream;
202
+ struct ISeekInStream
203
+ {
204
+ SRes (*Read)(const ISeekInStream *p, void *buf, size_t *size); /* same as ISeqInStream::Read */
205
+ SRes (*Seek)(const ISeekInStream *p, Int64 *pos, ESzSeek origin);
206
+ };
207
+ #define ISeekInStream_Read(p, buf, size) (p)->Read(p, buf, size)
208
+ #define ISeekInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin)
209
+
210
+
211
+ typedef struct ILookInStream ILookInStream;
212
+ struct ILookInStream
213
+ {
214
+ SRes (*Look)(const ILookInStream *p, const void **buf, size_t *size);
215
+ /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
216
+ (output(*size) > input(*size)) is not allowed
217
+ (output(*size) < input(*size)) is allowed */
218
+ SRes (*Skip)(const ILookInStream *p, size_t offset);
219
+ /* offset must be <= output(*size) of Look */
220
+
221
+ SRes (*Read)(const ILookInStream *p, void *buf, size_t *size);
222
+ /* reads directly (without buffer). It's same as ISeqInStream::Read */
223
+ SRes (*Seek)(const ILookInStream *p, Int64 *pos, ESzSeek origin);
224
+ };
225
+
226
+ #define ILookInStream_Look(p, buf, size) (p)->Look(p, buf, size)
227
+ #define ILookInStream_Skip(p, offset) (p)->Skip(p, offset)
228
+ #define ILookInStream_Read(p, buf, size) (p)->Read(p, buf, size)
229
+ #define ILookInStream_Seek(p, pos, origin) (p)->Seek(p, pos, origin)
230
+
231
+
232
+ SRes LookInStream_LookRead(const ILookInStream *stream, void *buf, size_t *size);
233
+ SRes LookInStream_SeekTo(const ILookInStream *stream, UInt64 offset);
234
+
235
+ /* reads via ILookInStream::Read */
236
+ SRes LookInStream_Read2(const ILookInStream *stream, void *buf, size_t size, SRes errorType);
237
+ SRes LookInStream_Read(const ILookInStream *stream, void *buf, size_t size);
238
+
239
+
240
+
241
+ typedef struct
242
+ {
243
+ ILookInStream vt;
244
+ const ISeekInStream *realStream;
245
+
246
+ size_t pos;
247
+ size_t size; /* it's data size */
248
+
249
+ /* the following variables must be set outside */
250
+ Byte *buf;
251
+ size_t bufSize;
252
+ } CLookToRead2;
253
+
254
+ void LookToRead2_CreateVTable(CLookToRead2 *p, int lookahead);
255
+
256
+ #define LookToRead2_Init(p) { (p)->pos = (p)->size = 0; }
257
+
258
+
259
+ typedef struct
260
+ {
261
+ ISeqInStream vt;
262
+ const ILookInStream *realStream;
263
+ } CSecToLook;
264
+
265
+ void SecToLook_CreateVTable(CSecToLook *p);
266
+
267
+
268
+
269
+ typedef struct
270
+ {
271
+ ISeqInStream vt;
272
+ const ILookInStream *realStream;
273
+ } CSecToRead;
274
+
275
+ void SecToRead_CreateVTable(CSecToRead *p);
276
+
277
+
278
+ typedef struct ICompressProgress ICompressProgress;
279
+
280
+ struct ICompressProgress
281
+ {
282
+ SRes (*Progress)(const ICompressProgress *p, UInt64 inSize, UInt64 outSize);
283
+ /* Returns: result. (result != SZ_OK) means break.
284
+ Value (UInt64)(Int64)-1 for size means unknown value. */
285
+ };
286
+ #define ICompressProgress_Progress(p, inSize, outSize) (p)->Progress(p, inSize, outSize)
287
+
288
+
289
+
290
+ typedef struct ISzAlloc ISzAlloc;
291
+ typedef const ISzAlloc * ISzAllocPtr;
292
+
293
+ struct ISzAlloc
294
+ {
295
+ void *(*Alloc)(ISzAllocPtr p, size_t size);
296
+ void (*Free)(ISzAllocPtr p, void *address); /* address can be 0 */
297
+ };
298
+
299
+ #define ISzAlloc_Alloc(p, size) (p)->Alloc(p, size)
300
+ #define ISzAlloc_Free(p, a) (p)->Free(p, a)
301
+
302
+ /* deprecated */
303
+ #define IAlloc_Alloc(p, size) ISzAlloc_Alloc(p, size)
304
+ #define IAlloc_Free(p, a) ISzAlloc_Free(p, a)
305
+
306
+
307
+
308
+
309
+
310
+ #ifndef MY_offsetof
311
+ #ifdef offsetof
312
+ #define MY_offsetof(type, m) offsetof(type, m)
313
+ /*
314
+ #define MY_offsetof(type, m) FIELD_OFFSET(type, m)
315
+ */
316
+ #else
317
+ #define MY_offsetof(type, m) ((size_t)&(((type *)0)->m))
318
+ #endif
319
+ #endif
320
+
321
+
322
+
323
+ #ifndef MY_container_of
324
+
325
+ /*
326
+ #define MY_container_of(ptr, type, m) container_of(ptr, type, m)
327
+ #define MY_container_of(ptr, type, m) CONTAINING_RECORD(ptr, type, m)
328
+ #define MY_container_of(ptr, type, m) ((type *)((char *)(ptr) - offsetof(type, m)))
329
+ #define MY_container_of(ptr, type, m) (&((type *)0)->m == (ptr), ((type *)(((char *)(ptr)) - MY_offsetof(type, m))))
330
+ */
331
+
332
+ /*
333
+ GCC shows warning: "perhaps the 'offsetof' macro was used incorrectly"
334
+ GCC 3.4.4 : classes with constructor
335
+ GCC 4.8.1 : classes with non-public variable members"
336
+ */
337
+
338
+ #define MY_container_of(ptr, type, m) ((type *)((char *)(1 ? (ptr) : &((type *)0)->m) - MY_offsetof(type, m)))
339
+
340
+
341
+ #endif
342
+
343
+ #define CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m) ((type *)(ptr))
344
+
345
+ /*
346
+ #define CONTAINER_FROM_VTBL(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m)
347
+ */
348
+ #define CONTAINER_FROM_VTBL(ptr, type, m) MY_container_of(ptr, type, m)
349
+
350
+ #define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL_SIMPLE(ptr, type, m)
351
+ /*
352
+ #define CONTAINER_FROM_VTBL_CLS(ptr, type, m) CONTAINER_FROM_VTBL(ptr, type, m)
353
+ */
354
+
355
+
356
+
357
+ #ifdef _WIN32
358
+
359
+ #define CHAR_PATH_SEPARATOR '\\'
360
+ #define WCHAR_PATH_SEPARATOR L'\\'
361
+ #define STRING_PATH_SEPARATOR "\\"
362
+ #define WSTRING_PATH_SEPARATOR L"\\"
363
+
364
+ #else
365
+
366
+ #define CHAR_PATH_SEPARATOR '/'
367
+ #define WCHAR_PATH_SEPARATOR L'/'
368
+ #define STRING_PATH_SEPARATOR "/"
369
+ #define WSTRING_PATH_SEPARATOR L"/"
370
+
371
+ #endif
372
+
373
+ EXTERN_C_END
374
+
375
+ #endif
@@ -0,0 +1,51 @@
1
+ /* Alloc.h -- Memory allocation functions
2
+ 2018-02-19 : Igor Pavlov : Public domain */
3
+
4
+ #ifndef __COMMON_ALLOC_H
5
+ #define __COMMON_ALLOC_H
6
+
7
+ #include "7zTypes.h"
8
+
9
+ EXTERN_C_BEGIN
10
+
11
+ void *MyAlloc(size_t size);
12
+ void MyFree(void *address);
13
+
14
+ #ifdef _WIN32
15
+
16
+ void SetLargePageSize();
17
+
18
+ void *MidAlloc(size_t size);
19
+ void MidFree(void *address);
20
+ void *BigAlloc(size_t size);
21
+ void BigFree(void *address);
22
+
23
+ #else
24
+
25
+ #define MidAlloc(size) MyAlloc(size)
26
+ #define MidFree(address) MyFree(address)
27
+ #define BigAlloc(size) MyAlloc(size)
28
+ #define BigFree(address) MyFree(address)
29
+
30
+ #endif
31
+
32
+ extern const ISzAlloc g_Alloc;
33
+ extern const ISzAlloc g_BigAlloc;
34
+ extern const ISzAlloc g_MidAlloc;
35
+ extern const ISzAlloc g_AlignedAlloc;
36
+
37
+
38
+ typedef struct
39
+ {
40
+ ISzAlloc vt;
41
+ ISzAllocPtr baseAlloc;
42
+ unsigned numAlignBits; /* ((1 << numAlignBits) >= sizeof(void *)) */
43
+ size_t offset; /* (offset == (k * sizeof(void *)) && offset < (1 << numAlignBits) */
44
+ } CAlignOffsetAlloc;
45
+
46
+ void AlignOffsetAlloc_CreateVTable(CAlignOffsetAlloc *p);
47
+
48
+
49
+ EXTERN_C_END
50
+
51
+ #endif
@@ -0,0 +1,64 @@
1
+ /* Bra.h -- Branch converters for executables
2
+ 2013-01-18 : Igor Pavlov : Public domain */
3
+
4
+ #ifndef __BRA_H
5
+ #define __BRA_H
6
+
7
+ #include "7zTypes.h"
8
+
9
+ EXTERN_C_BEGIN
10
+
11
+ /*
12
+ These functions convert relative addresses to absolute addresses
13
+ in CALL instructions to increase the compression ratio.
14
+
15
+ In:
16
+ data - data buffer
17
+ size - size of data
18
+ ip - current virtual Instruction Pinter (IP) value
19
+ state - state variable for x86 converter
20
+ encoding - 0 (for decoding), 1 (for encoding)
21
+
22
+ Out:
23
+ state - state variable for x86 converter
24
+
25
+ Returns:
26
+ The number of processed bytes. If you call these functions with multiple calls,
27
+ you must start next call with first byte after block of processed bytes.
28
+
29
+ Type Endian Alignment LookAhead
30
+
31
+ x86 little 1 4
32
+ ARMT little 2 2
33
+ ARM little 4 0
34
+ PPC big 4 0
35
+ SPARC big 4 0
36
+ IA64 little 16 0
37
+
38
+ size must be >= Alignment + LookAhead, if it's not last block.
39
+ If (size < Alignment + LookAhead), converter returns 0.
40
+
41
+ Example:
42
+
43
+ UInt32 ip = 0;
44
+ for ()
45
+ {
46
+ ; size must be >= Alignment + LookAhead, if it's not last block
47
+ SizeT processed = Convert(data, size, ip, 1);
48
+ data += processed;
49
+ size -= processed;
50
+ ip += processed;
51
+ }
52
+ */
53
+
54
+ #define x86_Convert_Init(state) { state = 0; }
55
+ SizeT x86_Convert(Byte *data, SizeT size, UInt32 ip, UInt32 *state, int encoding);
56
+ SizeT ARM_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);
57
+ SizeT ARMT_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);
58
+ SizeT PPC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);
59
+ SizeT SPARC_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);
60
+ SizeT IA64_Convert(Byte *data, SizeT size, UInt32 ip, int encoding);
61
+
62
+ EXTERN_C_END
63
+
64
+ #endif
@@ -0,0 +1,33 @@
1
+ /* Compiler.h
2
+ 2017-04-03 : Igor Pavlov : Public domain */
3
+
4
+ #ifndef __7Z_COMPILER_H
5
+ #define __7Z_COMPILER_H
6
+
7
+ #ifdef _MSC_VER
8
+
9
+ #ifdef UNDER_CE
10
+ #define RPC_NO_WINDOWS_H
11
+ /* #pragma warning(disable : 4115) // '_RPC_ASYNC_STATE' : named type definition in parentheses */
12
+ #pragma warning(disable : 4201) // nonstandard extension used : nameless struct/union
13
+ #pragma warning(disable : 4214) // nonstandard extension used : bit field types other than int
14
+ #endif
15
+
16
+ #if _MSC_VER >= 1300
17
+ #pragma warning(disable : 4996) // This function or variable may be unsafe
18
+ #else
19
+ #pragma warning(disable : 4511) // copy constructor could not be generated
20
+ #pragma warning(disable : 4512) // assignment operator could not be generated
21
+ #pragma warning(disable : 4514) // unreferenced inline function has been removed
22
+ #pragma warning(disable : 4702) // unreachable code
23
+ #pragma warning(disable : 4710) // not inlined
24
+ #pragma warning(disable : 4714) // function marked as __forceinline not inlined
25
+ #pragma warning(disable : 4786) // identifier was truncated to '255' characters in the debug information
26
+ #endif
27
+
28
+ #endif
29
+
30
+ #define UNUSED_VAR(x) (void)x;
31
+ /* #define UNUSED_VAR(x) x=x; */
32
+
33
+ #endif