]> git.proxmox.com Git - mirror_edk2.git/blob - IntelFrameworkModulePkg/Library/LzmaCustomDecompressLib/Sdk/C/Types.h
Update the copyright notice format
[mirror_edk2.git] / IntelFrameworkModulePkg / Library / LzmaCustomDecompressLib / Sdk / C / Types.h
1 /** @file
2 Types.h
3
4 Based on LZMA SDK 4.65:
5 Types.h -- Basic types
6 2008-11-23 : Igor Pavlov : Public domain
7
8 Copyright (c) 2009, Intel Corporation. All rights reserved.<BR>
9 This program and the accompanying materials
10 are licensed and made available under the terms and conditions of the BSD License
11 which accompanies this distribution. The full text of the license may be found at
12 http://opensource.org/licenses/bsd-license.php
13
14 THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
15 WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
16
17 **/
18
19 #ifndef __7Z_TYPES_H
20 #define __7Z_TYPES_H
21
22 #ifdef EFIAPI
23
24 #include "UefiLzma.h"
25
26 #else
27
28 #include <stddef.h>
29
30 #ifdef _WIN32
31 #include <windows.h>
32 #endif
33
34 #endif
35
36 #define SZ_OK 0
37
38 #define SZ_ERROR_DATA 1
39 #define SZ_ERROR_MEM 2
40 #define SZ_ERROR_CRC 3
41 #define SZ_ERROR_UNSUPPORTED 4
42 #define SZ_ERROR_PARAM 5
43 #define SZ_ERROR_INPUT_EOF 6
44 #define SZ_ERROR_OUTPUT_EOF 7
45 #define SZ_ERROR_READ 8
46 #define SZ_ERROR_WRITE 9
47 #define SZ_ERROR_PROGRESS 10
48 #define SZ_ERROR_FAIL 11
49 #define SZ_ERROR_THREAD 12
50
51 #define SZ_ERROR_ARCHIVE 16
52 #define SZ_ERROR_NO_ARCHIVE 17
53
54 typedef int SRes;
55
56 #ifdef _WIN32
57 typedef DWORD WRes;
58 #else
59 typedef int WRes;
60 #endif
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 #else
92 typedef long long int Int64;
93 typedef unsigned long long int UInt64;
94 #endif
95
96 #endif
97
98 #ifdef _LZMA_NO_SYSTEM_SIZE_T
99 typedef UInt32 SizeT;
100 #else
101 typedef size_t SizeT;
102 #endif
103
104 typedef int Bool;
105 #define True 1
106 #define False 0
107
108
109 #ifdef _MSC_VER
110
111 #if _MSC_VER >= 1300
112 #define MY_NO_INLINE __declspec(noinline)
113 #else
114 #define MY_NO_INLINE
115 #endif
116
117 #define MY_CDECL __cdecl
118 #define MY_STD_CALL __stdcall
119 #define MY_FAST_CALL MY_NO_INLINE __fastcall
120
121 #else
122
123 #define MY_CDECL
124 #define MY_STD_CALL
125 #define MY_FAST_CALL
126
127 #endif
128
129
130 /* The following interfaces use first parameter as pointer to structure */
131
132 typedef struct
133 {
134 SRes (*Read)(void *p, void *buf, size_t *size);
135 /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
136 (output(*size) < input(*size)) is allowed */
137 } ISeqInStream;
138
139 /* it can return SZ_ERROR_INPUT_EOF */
140 SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size);
141 SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType);
142 SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf);
143
144 typedef struct
145 {
146 size_t (*Write)(void *p, const void *buf, size_t size);
147 /* Returns: result - the number of actually written bytes.
148 (result < size) means error */
149 } ISeqOutStream;
150
151 typedef enum
152 {
153 SZ_SEEK_SET = 0,
154 SZ_SEEK_CUR = 1,
155 SZ_SEEK_END = 2
156 } ESzSeek;
157
158 typedef struct
159 {
160 SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */
161 SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);
162 } ISeekInStream;
163
164 typedef struct
165 {
166 SRes (*Look)(void *p, void **buf, size_t *size);
167 /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
168 (output(*size) > input(*size)) is not allowed
169 (output(*size) < input(*size)) is allowed */
170 SRes (*Skip)(void *p, size_t offset);
171 /* offset must be <= output(*size) of Look */
172
173 SRes (*Read)(void *p, void *buf, size_t *size);
174 /* reads directly (without buffer). It's same as ISeqInStream::Read */
175 SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);
176 } ILookInStream;
177
178 SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size);
179 SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset);
180
181 /* reads via ILookInStream::Read */
182 SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType);
183 SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size);
184
185 #define LookToRead_BUF_SIZE (1 << 14)
186
187 typedef struct
188 {
189 ILookInStream s;
190 ISeekInStream *realStream;
191 size_t pos;
192 size_t size;
193 Byte buf[LookToRead_BUF_SIZE];
194 } CLookToRead;
195
196 void LookToRead_CreateVTable(CLookToRead *p, int lookahead);
197 void LookToRead_Init(CLookToRead *p);
198
199 typedef struct
200 {
201 ISeqInStream s;
202 ILookInStream *realStream;
203 } CSecToLook;
204
205 void SecToLook_CreateVTable(CSecToLook *p);
206
207 typedef struct
208 {
209 ISeqInStream s;
210 ILookInStream *realStream;
211 } CSecToRead;
212
213 void SecToRead_CreateVTable(CSecToRead *p);
214
215 typedef struct
216 {
217 SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize);
218 /* Returns: result. (result != SZ_OK) means break.
219 Value (UInt64)(Int64)-1 for size means unknown value. */
220 } ICompressProgress;
221
222 typedef struct
223 {
224 void *(*Alloc)(void *p, size_t size);
225 void (*Free)(void *p, void *address); /* address can be 0 */
226 } ISzAlloc;
227
228 #define IAlloc_Alloc(p, size) (p)->Alloc((p), size)
229 #define IAlloc_Free(p, a) (p)->Free((p), a)
230
231 #endif