aibika 1.3.12

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,223 @@
1
+ /* LzmaDec.h -- LZMA Decoder
2
+ 2008-10-04 : Igor Pavlov : Public domain */
3
+
4
+ #ifndef __LZMADEC_H
5
+ #define __LZMADEC_H
6
+
7
+ #include "Types.h"
8
+
9
+ /* #define _LZMA_PROB32 */
10
+ /* _LZMA_PROB32 can increase the speed on some CPUs,
11
+ but memory usage for CLzmaDec::probs will be doubled in that case */
12
+
13
+ #ifdef _LZMA_PROB32
14
+ #define CLzmaProb UInt32
15
+ #else
16
+ #define CLzmaProb UInt16
17
+ #endif
18
+
19
+
20
+ /* ---------- LZMA Properties ---------- */
21
+
22
+ #define LZMA_PROPS_SIZE 5
23
+
24
+ typedef struct _CLzmaProps
25
+ {
26
+ unsigned lc, lp, pb;
27
+ UInt32 dicSize;
28
+ } CLzmaProps;
29
+
30
+ /* LzmaProps_Decode - decodes properties
31
+ Returns:
32
+ SZ_OK
33
+ SZ_ERROR_UNSUPPORTED - Unsupported properties
34
+ */
35
+
36
+ SRes LzmaProps_Decode(CLzmaProps *p, const Byte *data, unsigned size);
37
+
38
+
39
+ /* ---------- LZMA Decoder state ---------- */
40
+
41
+ /* LZMA_REQUIRED_INPUT_MAX = number of required input bytes for worst case.
42
+ Num bits = log2((2^11 / 31) ^ 22) + 26 < 134 + 26 = 160; */
43
+
44
+ #define LZMA_REQUIRED_INPUT_MAX 20
45
+
46
+ typedef struct
47
+ {
48
+ CLzmaProps prop;
49
+ CLzmaProb *probs;
50
+ Byte *dic;
51
+ const Byte *buf;
52
+ UInt32 range, code;
53
+ SizeT dicPos;
54
+ SizeT dicBufSize;
55
+ UInt32 processedPos;
56
+ UInt32 checkDicSize;
57
+ unsigned state;
58
+ UInt32 reps[4];
59
+ unsigned remainLen;
60
+ int needFlush;
61
+ int needInitState;
62
+ UInt32 numProbs;
63
+ unsigned tempBufSize;
64
+ Byte tempBuf[LZMA_REQUIRED_INPUT_MAX];
65
+ } CLzmaDec;
66
+
67
+ #define LzmaDec_Construct(p) { (p)->dic = 0; (p)->probs = 0; }
68
+
69
+ void LzmaDec_Init(CLzmaDec *p);
70
+
71
+ /* There are two types of LZMA streams:
72
+ 0) Stream with end mark. That end mark adds about 6 bytes to compressed size.
73
+ 1) Stream without end mark. You must know exact uncompressed size to decompress such stream. */
74
+
75
+ typedef enum
76
+ {
77
+ LZMA_FINISH_ANY, /* finish at any point */
78
+ LZMA_FINISH_END /* block must be finished at the end */
79
+ } ELzmaFinishMode;
80
+
81
+ /* ELzmaFinishMode has meaning only if the decoding reaches output limit !!!
82
+
83
+ You must use LZMA_FINISH_END, when you know that current output buffer
84
+ covers last bytes of block. In other cases you must use LZMA_FINISH_ANY.
85
+
86
+ If LZMA decoder sees end marker before reaching output limit, it returns SZ_OK,
87
+ and output value of destLen will be less than output buffer size limit.
88
+ You can check status result also.
89
+
90
+ You can use multiple checks to test data integrity after full decompression:
91
+ 1) Check Result and "status" variable.
92
+ 2) Check that output(destLen) = uncompressedSize, if you know real uncompressedSize.
93
+ 3) Check that output(srcLen) = compressedSize, if you know real compressedSize.
94
+ You must use correct finish mode in that case. */
95
+
96
+ typedef enum
97
+ {
98
+ LZMA_STATUS_NOT_SPECIFIED, /* use main error code instead */
99
+ LZMA_STATUS_FINISHED_WITH_MARK, /* stream was finished with end mark. */
100
+ LZMA_STATUS_NOT_FINISHED, /* stream was not finished */
101
+ LZMA_STATUS_NEEDS_MORE_INPUT, /* you must provide more input bytes */
102
+ LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK /* there is probability that stream was finished without end mark */
103
+ } ELzmaStatus;
104
+
105
+ /* ELzmaStatus is used only as output value for function call */
106
+
107
+
108
+ /* ---------- Interfaces ---------- */
109
+
110
+ /* There are 3 levels of interfaces:
111
+ 1) Dictionary Interface
112
+ 2) Buffer Interface
113
+ 3) One Call Interface
114
+ You can select any of these interfaces, but don't mix functions from different
115
+ groups for same object. */
116
+
117
+
118
+ /* There are two variants to allocate state for Dictionary Interface:
119
+ 1) LzmaDec_Allocate / LzmaDec_Free
120
+ 2) LzmaDec_AllocateProbs / LzmaDec_FreeProbs
121
+ You can use variant 2, if you set dictionary buffer manually.
122
+ For Buffer Interface you must always use variant 1.
123
+
124
+ LzmaDec_Allocate* can return:
125
+ SZ_OK
126
+ SZ_ERROR_MEM - Memory allocation error
127
+ SZ_ERROR_UNSUPPORTED - Unsupported properties
128
+ */
129
+
130
+ SRes LzmaDec_AllocateProbs(CLzmaDec *p, const Byte *props, unsigned propsSize, ISzAlloc *alloc);
131
+ void LzmaDec_FreeProbs(CLzmaDec *p, ISzAlloc *alloc);
132
+
133
+ SRes LzmaDec_Allocate(CLzmaDec *state, const Byte *prop, unsigned propsSize, ISzAlloc *alloc);
134
+ void LzmaDec_Free(CLzmaDec *state, ISzAlloc *alloc);
135
+
136
+ /* ---------- Dictionary Interface ---------- */
137
+
138
+ /* You can use it, if you want to eliminate the overhead for data copying from
139
+ dictionary to some other external buffer.
140
+ You must work with CLzmaDec variables directly in this interface.
141
+
142
+ STEPS:
143
+ LzmaDec_Constr()
144
+ LzmaDec_Allocate()
145
+ for (each new stream)
146
+ {
147
+ LzmaDec_Init()
148
+ while (it needs more decompression)
149
+ {
150
+ LzmaDec_DecodeToDic()
151
+ use data from CLzmaDec::dic and update CLzmaDec::dicPos
152
+ }
153
+ }
154
+ LzmaDec_Free()
155
+ */
156
+
157
+ /* LzmaDec_DecodeToDic
158
+
159
+ The decoding to internal dictionary buffer (CLzmaDec::dic).
160
+ You must manually update CLzmaDec::dicPos, if it reaches CLzmaDec::dicBufSize !!!
161
+
162
+ finishMode:
163
+ It has meaning only if the decoding reaches output limit (dicLimit).
164
+ LZMA_FINISH_ANY - Decode just dicLimit bytes.
165
+ LZMA_FINISH_END - Stream must be finished after dicLimit.
166
+
167
+ Returns:
168
+ SZ_OK
169
+ status:
170
+ LZMA_STATUS_FINISHED_WITH_MARK
171
+ LZMA_STATUS_NOT_FINISHED
172
+ LZMA_STATUS_NEEDS_MORE_INPUT
173
+ LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK
174
+ SZ_ERROR_DATA - Data error
175
+ */
176
+
177
+ SRes LzmaDec_DecodeToDic(CLzmaDec *p, SizeT dicLimit,
178
+ const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status);
179
+
180
+
181
+ /* ---------- Buffer Interface ---------- */
182
+
183
+ /* It's zlib-like interface.
184
+ See LzmaDec_DecodeToDic description for information about STEPS and return results,
185
+ but you must use LzmaDec_DecodeToBuf instead of LzmaDec_DecodeToDic and you don't need
186
+ to work with CLzmaDec variables manually.
187
+
188
+ finishMode:
189
+ It has meaning only if the decoding reaches output limit (*destLen).
190
+ LZMA_FINISH_ANY - Decode just destLen bytes.
191
+ LZMA_FINISH_END - Stream must be finished after (*destLen).
192
+ */
193
+
194
+ SRes LzmaDec_DecodeToBuf(CLzmaDec *p, Byte *dest, SizeT *destLen,
195
+ const Byte *src, SizeT *srcLen, ELzmaFinishMode finishMode, ELzmaStatus *status);
196
+
197
+
198
+ /* ---------- One Call Interface ---------- */
199
+
200
+ /* LzmaDecode
201
+
202
+ finishMode:
203
+ It has meaning only if the decoding reaches output limit (*destLen).
204
+ LZMA_FINISH_ANY - Decode just destLen bytes.
205
+ LZMA_FINISH_END - Stream must be finished after (*destLen).
206
+
207
+ Returns:
208
+ SZ_OK
209
+ status:
210
+ LZMA_STATUS_FINISHED_WITH_MARK
211
+ LZMA_STATUS_NOT_FINISHED
212
+ LZMA_STATUS_MAYBE_FINISHED_WITHOUT_MARK
213
+ SZ_ERROR_DATA - Data error
214
+ SZ_ERROR_MEM - Memory allocation error
215
+ SZ_ERROR_UNSUPPORTED - Unsupported properties
216
+ SZ_ERROR_INPUT_EOF - It needs more bytes in input buffer (src).
217
+ */
218
+
219
+ SRes LzmaDecode(Byte *dest, SizeT *destLen, const Byte *src, SizeT *srcLen,
220
+ const Byte *propData, unsigned propSize, ELzmaFinishMode finishMode,
221
+ ELzmaStatus *status, ISzAlloc *alloc);
222
+
223
+ #endif
data/src/lzma/Types.h ADDED
@@ -0,0 +1,208 @@
1
+ /* Types.h -- Basic types
2
+ 2008-11-23 : Igor Pavlov : Public domain */
3
+
4
+ #ifndef __7Z_TYPES_H
5
+ #define __7Z_TYPES_H
6
+
7
+ #include <stddef.h>
8
+
9
+ #ifdef _WIN32
10
+ #include <windows.h>
11
+ #endif
12
+
13
+ #define SZ_OK 0
14
+
15
+ #define SZ_ERROR_DATA 1
16
+ #define SZ_ERROR_MEM 2
17
+ #define SZ_ERROR_CRC 3
18
+ #define SZ_ERROR_UNSUPPORTED 4
19
+ #define SZ_ERROR_PARAM 5
20
+ #define SZ_ERROR_INPUT_EOF 6
21
+ #define SZ_ERROR_OUTPUT_EOF 7
22
+ #define SZ_ERROR_READ 8
23
+ #define SZ_ERROR_WRITE 9
24
+ #define SZ_ERROR_PROGRESS 10
25
+ #define SZ_ERROR_FAIL 11
26
+ #define SZ_ERROR_THREAD 12
27
+
28
+ #define SZ_ERROR_ARCHIVE 16
29
+ #define SZ_ERROR_NO_ARCHIVE 17
30
+
31
+ typedef int SRes;
32
+
33
+ #ifdef _WIN32
34
+ typedef DWORD WRes;
35
+ #else
36
+ typedef int WRes;
37
+ #endif
38
+
39
+ #ifndef RINOK
40
+ #define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; }
41
+ #endif
42
+
43
+ typedef unsigned char Byte;
44
+ typedef short Int16;
45
+ typedef unsigned short UInt16;
46
+
47
+ #ifdef _LZMA_UINT32_IS_ULONG
48
+ typedef long Int32;
49
+ typedef unsigned long UInt32;
50
+ #else
51
+ typedef int Int32;
52
+ typedef unsigned int UInt32;
53
+ #endif
54
+
55
+ #ifdef _SZ_NO_INT_64
56
+
57
+ /* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers.
58
+ NOTES: Some code will work incorrectly in that case! */
59
+
60
+ typedef long Int64;
61
+ typedef unsigned long UInt64;
62
+
63
+ #else
64
+
65
+ #if defined(_MSC_VER) || defined(__BORLANDC__)
66
+ typedef __int64 Int64;
67
+ typedef unsigned __int64 UInt64;
68
+ #else
69
+ typedef long long int Int64;
70
+ typedef unsigned long long int UInt64;
71
+ #endif
72
+
73
+ #endif
74
+
75
+ #ifdef _LZMA_NO_SYSTEM_SIZE_T
76
+ typedef UInt32 SizeT;
77
+ #else
78
+ typedef size_t SizeT;
79
+ #endif
80
+
81
+ typedef int Bool;
82
+ #define True 1
83
+ #define False 0
84
+
85
+
86
+ #ifdef _MSC_VER
87
+
88
+ #if _MSC_VER >= 1300
89
+ #define MY_NO_INLINE __declspec(noinline)
90
+ #else
91
+ #define MY_NO_INLINE
92
+ #endif
93
+
94
+ #define MY_CDECL __cdecl
95
+ #define MY_STD_CALL __stdcall
96
+ #define MY_FAST_CALL MY_NO_INLINE __fastcall
97
+
98
+ #else
99
+
100
+ #define MY_CDECL
101
+ #define MY_STD_CALL
102
+ #define MY_FAST_CALL
103
+
104
+ #endif
105
+
106
+
107
+ /* The following interfaces use first parameter as pointer to structure */
108
+
109
+ typedef struct
110
+ {
111
+ SRes (*Read)(void *p, void *buf, size_t *size);
112
+ /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
113
+ (output(*size) < input(*size)) is allowed */
114
+ } ISeqInStream;
115
+
116
+ /* it can return SZ_ERROR_INPUT_EOF */
117
+ SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size);
118
+ SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType);
119
+ SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf);
120
+
121
+ typedef struct
122
+ {
123
+ size_t (*Write)(void *p, const void *buf, size_t size);
124
+ /* Returns: result - the number of actually written bytes.
125
+ (result < size) means error */
126
+ } ISeqOutStream;
127
+
128
+ typedef enum
129
+ {
130
+ SZ_SEEK_SET = 0,
131
+ SZ_SEEK_CUR = 1,
132
+ SZ_SEEK_END = 2
133
+ } ESzSeek;
134
+
135
+ typedef struct
136
+ {
137
+ SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */
138
+ SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);
139
+ } ISeekInStream;
140
+
141
+ typedef struct
142
+ {
143
+ SRes (*Look)(void *p, void **buf, size_t *size);
144
+ /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
145
+ (output(*size) > input(*size)) is not allowed
146
+ (output(*size) < input(*size)) is allowed */
147
+ SRes (*Skip)(void *p, size_t offset);
148
+ /* offset must be <= output(*size) of Look */
149
+
150
+ SRes (*Read)(void *p, void *buf, size_t *size);
151
+ /* reads directly (without buffer). It's same as ISeqInStream::Read */
152
+ SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);
153
+ } ILookInStream;
154
+
155
+ SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size);
156
+ SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset);
157
+
158
+ /* reads via ILookInStream::Read */
159
+ SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType);
160
+ SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size);
161
+
162
+ #define LookToRead_BUF_SIZE (1 << 14)
163
+
164
+ typedef struct
165
+ {
166
+ ILookInStream s;
167
+ ISeekInStream *realStream;
168
+ size_t pos;
169
+ size_t size;
170
+ Byte buf[LookToRead_BUF_SIZE];
171
+ } CLookToRead;
172
+
173
+ void LookToRead_CreateVTable(CLookToRead *p, int lookahead);
174
+ void LookToRead_Init(CLookToRead *p);
175
+
176
+ typedef struct
177
+ {
178
+ ISeqInStream s;
179
+ ILookInStream *realStream;
180
+ } CSecToLook;
181
+
182
+ void SecToLook_CreateVTable(CSecToLook *p);
183
+
184
+ typedef struct
185
+ {
186
+ ISeqInStream s;
187
+ ILookInStream *realStream;
188
+ } CSecToRead;
189
+
190
+ void SecToRead_CreateVTable(CSecToRead *p);
191
+
192
+ typedef struct
193
+ {
194
+ SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize);
195
+ /* Returns: result. (result != SZ_OK) means break.
196
+ Value (UInt64)(Int64)-1 for size means unknown value. */
197
+ } ICompressProgress;
198
+
199
+ typedef struct
200
+ {
201
+ void *(*Alloc)(void *p, size_t size);
202
+ void (*Free)(void *p, void *address); /* address can be 0 */
203
+ } ISzAlloc;
204
+
205
+ #define IAlloc_Alloc(p, size) (p)->Alloc((p), size)
206
+ #define IAlloc_Free(p, a) (p)->Free((p), a)
207
+
208
+ #endif
data/src/seb.exe ADDED
Binary file