~ubuntu-branches/ubuntu/saucy/argyll/saucy

« back to all changes in this revision

Viewing changes to spectro/LzmaTypes.h

  • Committer: Package Import Robot
  • Author(s): Christian Marillat
  • Date: 2012-04-25 07:46:07 UTC
  • mfrom: (1.2.2) (13.1.15 sid)
  • Revision ID: package-import@ubuntu.com-20120425074607-yjqadetw8kum9skc
Tags: 1.4.0-4
Should Build-Depends on libusb-dev (Closes: #670329).

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/* Types.h -- Basic types
 
2
2010-10-09 : 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
#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
#ifdef _WIN32
 
46
typedef DWORD WRes;
 
47
#else
 
48
typedef int WRes;
 
49
#endif
 
50
 
 
51
#ifndef RINOK
 
52
#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; }
 
53
#endif
 
54
 
 
55
typedef unsigned char Byte;
 
56
typedef short Int16;
 
57
typedef unsigned short UInt16;
 
58
 
 
59
#ifdef _LZMA_UINT32_IS_ULONG
 
60
typedef long Int32;
 
61
typedef unsigned long UInt32;
 
62
#else
 
63
typedef int Int32;
 
64
typedef unsigned int UInt32;
 
65
#endif
 
66
 
 
67
#ifdef _SZ_NO_INT_64
 
68
 
 
69
/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers.
 
70
   NOTES: Some code will work incorrectly in that case! */
 
71
 
 
72
typedef long Int64;
 
73
typedef unsigned long UInt64;
 
74
 
 
75
#else
 
76
 
 
77
#if defined(_MSC_VER) || defined(__BORLANDC__)
 
78
typedef __int64 Int64;
 
79
typedef unsigned __int64 UInt64;
 
80
#define UINT64_CONST(n) n
 
81
#else
 
82
typedef long long int Int64;
 
83
typedef unsigned long long int UInt64;
 
84
#define UINT64_CONST(n) n ## ULL
 
85
#endif
 
86
 
 
87
#endif
 
88
 
 
89
#ifdef _LZMA_NO_SYSTEM_SIZE_T
 
90
typedef UInt32 SizeT;
 
91
#else
 
92
typedef size_t SizeT;
 
93
#endif
 
94
 
 
95
typedef int Bool;
 
96
#define True 1
 
97
#define False 0
 
98
 
 
99
 
 
100
#ifdef _WIN32
 
101
#define MY_STD_CALL __stdcall
 
102
#else
 
103
#define MY_STD_CALL
 
104
#endif
 
105
 
 
106
#ifdef _MSC_VER
 
107
 
 
108
#if _MSC_VER >= 1300
 
109
#define MY_NO_INLINE __declspec(noinline)
 
110
#else
 
111
#define MY_NO_INLINE
 
112
#endif
 
113
 
 
114
#define MY_CDECL __cdecl
 
115
#define MY_FAST_CALL __fastcall
 
116
 
 
117
#else
 
118
 
 
119
#define MY_CDECL
 
120
#define MY_FAST_CALL
 
121
 
 
122
#endif
 
123
 
 
124
 
 
125
/* The following interfaces use first parameter as pointer to structure */
 
126
 
 
127
typedef struct
 
128
{
 
129
  Byte (*Read)(void *p); /* reads one byte, returns 0 in case of EOF or error */
 
130
} IByteIn;
 
131
 
 
132
typedef struct
 
133
{
 
134
  void (*Write)(void *p, Byte b);
 
135
} IByteOut;
 
136
 
 
137
typedef struct
 
138
{
 
139
  SRes (*Read)(void *p, void *buf, size_t *size);
 
140
    /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
 
141
       (output(*size) < input(*size)) is allowed */
 
142
} ISeqInStream;
 
143
 
 
144
/* it can return SZ_ERROR_INPUT_EOF */
 
145
SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size);
 
146
SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType);
 
147
SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf);
 
148
 
 
149
typedef struct
 
150
{
 
151
  size_t (*Write)(void *p, const void *buf, size_t size);
 
152
    /* Returns: result - the number of actually written bytes.
 
153
       (result < size) means error */
 
154
} ISeqOutStream;
 
155
 
 
156
typedef enum
 
157
{
 
158
  SZ_SEEK_SET = 0,
 
159
  SZ_SEEK_CUR = 1,
 
160
  SZ_SEEK_END = 2
 
161
} ESzSeek;
 
162
 
 
163
typedef struct
 
164
{
 
165
  SRes (*Read)(void *p, void *buf, size_t *size);  /* same as ISeqInStream::Read */
 
166
  SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);
 
167
} ISeekInStream;
 
168
 
 
169
typedef struct
 
170
{
 
171
  SRes (*Look)(void *p, const void **buf, size_t *size);
 
172
    /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
 
173
       (output(*size) > input(*size)) is not allowed
 
174
       (output(*size) < input(*size)) is allowed */
 
175
  SRes (*Skip)(void *p, size_t offset);
 
176
    /* offset must be <= output(*size) of Look */
 
177
 
 
178
  SRes (*Read)(void *p, void *buf, size_t *size);
 
179
    /* reads directly (without buffer). It's same as ISeqInStream::Read */
 
180
  SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);
 
181
} ILookInStream;
 
182
 
 
183
SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size);
 
184
SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset);
 
185
 
 
186
/* reads via ILookInStream::Read */
 
187
SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType);
 
188
SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size);
 
189
 
 
190
#define LookToRead_BUF_SIZE (1 << 14)
 
191
 
 
192
typedef struct
 
193
{
 
194
  ILookInStream s;
 
195
  ISeekInStream *realStream;
 
196
  size_t pos;
 
197
  size_t size;
 
198
  Byte buf[LookToRead_BUF_SIZE];
 
199
} CLookToRead;
 
200
 
 
201
void LookToRead_CreateVTable(CLookToRead *p, int lookahead);
 
202
void LookToRead_Init(CLookToRead *p);
 
203
 
 
204
typedef struct
 
205
{
 
206
  ISeqInStream s;
 
207
  ILookInStream *realStream;
 
208
} CSecToLook;
 
209
 
 
210
void SecToLook_CreateVTable(CSecToLook *p);
 
211
 
 
212
typedef struct
 
213
{
 
214
  ISeqInStream s;
 
215
  ILookInStream *realStream;
 
216
} CSecToRead;
 
217
 
 
218
void SecToRead_CreateVTable(CSecToRead *p);
 
219
 
 
220
typedef struct
 
221
{
 
222
  SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize);
 
223
    /* Returns: result. (result != SZ_OK) means break.
 
224
       Value (UInt64)(Int64)-1 for size means unknown value. */
 
225
} ICompressProgress;
 
226
 
 
227
typedef struct
 
228
{
 
229
  void *(*Alloc)(void *p, size_t size);
 
230
  void (*Free)(void *p, void *address); /* address can be 0 */
 
231
} ISzAlloc;
 
232
 
 
233
#define IAlloc_Alloc(p, size) (p)->Alloc((p), size)
 
234
#define IAlloc_Free(p, a) (p)->Free((p), a)
 
235
 
 
236
#ifdef _WIN32
 
237
 
 
238
#define CHAR_PATH_SEPARATOR '\\'
 
239
#define WCHAR_PATH_SEPARATOR L'\\'
 
240
#define STRING_PATH_SEPARATOR "\\"
 
241
#define WSTRING_PATH_SEPARATOR L"\\"
 
242
 
 
243
#else
 
244
 
 
245
#define CHAR_PATH_SEPARATOR '/'
 
246
#define WCHAR_PATH_SEPARATOR L'/'
 
247
#define STRING_PATH_SEPARATOR "/"
 
248
#define WSTRING_PATH_SEPARATOR L"/"
 
249
 
 
250
#endif
 
251
 
 
252
EXTERN_C_END
 
253
 
 
254
#endif