]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/LzmaCompress/Sdk/C/Types.h
ArmPkg/CpuDxe: set DmaBufferAlignment according to CWG
[mirror_edk2.git] / BaseTools / Source / C / LzmaCompress / Sdk / C / Types.h
CommitLineData
30fdf114
LG
1/* Types.h -- Basic types\r
22008-11-23 : Igor Pavlov : Public domain */\r
3\r
4#ifndef __7Z_TYPES_H\r
5#define __7Z_TYPES_H\r
6\r
7#include <stddef.h>\r
8\r
9#ifdef _WIN32\r
10#include <windows.h>\r
11#endif\r
12\r
13#define SZ_OK 0\r
14\r
15#define SZ_ERROR_DATA 1\r
16#define SZ_ERROR_MEM 2\r
17#define SZ_ERROR_CRC 3\r
18#define SZ_ERROR_UNSUPPORTED 4\r
19#define SZ_ERROR_PARAM 5\r
20#define SZ_ERROR_INPUT_EOF 6\r
21#define SZ_ERROR_OUTPUT_EOF 7\r
22#define SZ_ERROR_READ 8\r
23#define SZ_ERROR_WRITE 9\r
24#define SZ_ERROR_PROGRESS 10\r
25#define SZ_ERROR_FAIL 11\r
26#define SZ_ERROR_THREAD 12\r
27\r
28#define SZ_ERROR_ARCHIVE 16\r
29#define SZ_ERROR_NO_ARCHIVE 17\r
30\r
31typedef int SRes;\r
32\r
33#ifdef _WIN32\r
34typedef DWORD WRes;\r
35#else\r
36typedef int WRes;\r
37#endif\r
38\r
39#ifndef RINOK\r
40#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; }\r
41#endif\r
42\r
43typedef unsigned char Byte;\r
44typedef short Int16;\r
45typedef unsigned short UInt16;\r
46\r
47#ifdef _LZMA_UINT32_IS_ULONG\r
48typedef long Int32;\r
49typedef unsigned long UInt32;\r
50#else\r
51typedef int Int32;\r
52typedef unsigned int UInt32;\r
53#endif\r
54\r
55#ifdef _SZ_NO_INT_64\r
56\r
57/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers.\r
58 NOTES: Some code will work incorrectly in that case! */\r
59\r
60typedef long Int64;\r
61typedef unsigned long UInt64;\r
62\r
63#else\r
64\r
65#if defined(_MSC_VER) || defined(__BORLANDC__)\r
66typedef __int64 Int64;\r
67typedef unsigned __int64 UInt64;\r
68#else\r
69typedef long long int Int64;\r
70typedef unsigned long long int UInt64;\r
71#endif\r
72\r
73#endif\r
74\r
75#ifdef _LZMA_NO_SYSTEM_SIZE_T\r
76typedef UInt32 SizeT;\r
77#else\r
78typedef size_t SizeT;\r
79#endif\r
80\r
81typedef int Bool;\r
82#define True 1\r
83#define False 0\r
84\r
85\r
86#ifdef _MSC_VER\r
87\r
88#if _MSC_VER >= 1300\r
89#define MY_NO_INLINE __declspec(noinline)\r
90#else\r
91#define MY_NO_INLINE\r
92#endif\r
93\r
94#define MY_CDECL __cdecl\r
95#define MY_STD_CALL __stdcall\r
96#define MY_FAST_CALL MY_NO_INLINE __fastcall\r
97\r
98#else\r
99\r
100#define MY_CDECL\r
101#define MY_STD_CALL\r
102#define MY_FAST_CALL\r
103\r
104#endif\r
105\r
106\r
107/* The following interfaces use first parameter as pointer to structure */\r
108\r
109typedef struct\r
110{\r
111 SRes (*Read)(void *p, void *buf, size_t *size);\r
112 /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.\r
113 (output(*size) < input(*size)) is allowed */\r
114} ISeqInStream;\r
115\r
116/* it can return SZ_ERROR_INPUT_EOF */\r
117SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size);\r
118SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType);\r
119SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf);\r
120\r
121typedef struct\r
122{\r
123 size_t (*Write)(void *p, const void *buf, size_t size);\r
124 /* Returns: result - the number of actually written bytes.\r
125 (result < size) means error */\r
126} ISeqOutStream;\r
127\r
128typedef enum\r
129{\r
130 SZ_SEEK_SET = 0,\r
131 SZ_SEEK_CUR = 1,\r
132 SZ_SEEK_END = 2\r
133} ESzSeek;\r
134\r
135typedef struct\r
136{\r
137 SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */\r
138 SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);\r
139} ISeekInStream;\r
140\r
141typedef struct\r
142{\r
143 SRes (*Look)(void *p, void **buf, size_t *size);\r
144 /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.\r
145 (output(*size) > input(*size)) is not allowed\r
146 (output(*size) < input(*size)) is allowed */\r
147 SRes (*Skip)(void *p, size_t offset);\r
148 /* offset must be <= output(*size) of Look */\r
149\r
150 SRes (*Read)(void *p, void *buf, size_t *size);\r
151 /* reads directly (without buffer). It's same as ISeqInStream::Read */\r
152 SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);\r
153} ILookInStream;\r
154\r
155SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size);\r
156SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset);\r
157\r
158/* reads via ILookInStream::Read */\r
159SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType);\r
160SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size);\r
161\r
162#define LookToRead_BUF_SIZE (1 << 14)\r
163\r
164typedef struct\r
165{\r
166 ILookInStream s;\r
167 ISeekInStream *realStream;\r
168 size_t pos;\r
169 size_t size;\r
170 Byte buf[LookToRead_BUF_SIZE];\r
171} CLookToRead;\r
172\r
173void LookToRead_CreateVTable(CLookToRead *p, int lookahead);\r
174void LookToRead_Init(CLookToRead *p);\r
175\r
176typedef struct\r
177{\r
178 ISeqInStream s;\r
179 ILookInStream *realStream;\r
180} CSecToLook;\r
181\r
182void SecToLook_CreateVTable(CSecToLook *p);\r
183\r
184typedef struct\r
185{\r
186 ISeqInStream s;\r
187 ILookInStream *realStream;\r
188} CSecToRead;\r
189\r
190void SecToRead_CreateVTable(CSecToRead *p);\r
191\r
192typedef struct\r
193{\r
194 SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize);\r
195 /* Returns: result. (result != SZ_OK) means break.\r
196 Value (UInt64)(Int64)-1 for size means unknown value. */\r
197} ICompressProgress;\r
198\r
199typedef struct\r
200{\r
201 void *(*Alloc)(void *p, size_t size);\r
202 void (*Free)(void *p, void *address); /* address can be 0 */\r
203} ISzAlloc;\r
204\r
205#define IAlloc_Alloc(p, size) (p)->Alloc((p), size)\r
206#define IAlloc_Free(p, a) (p)->Free((p), a)\r
207\r
208#endif\r