At present we use wide characters for Unicode but this is not necessary. Change the code to use the 'u' literal instead. This helps to fix build warnings for sandbox on the Raspberry Pi. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
235 lines
5.0 KiB
C
235 lines
5.0 KiB
C
/* Types.h -- Basic types
|
|
2010-10-09 : Igor Pavlov : Public domain */
|
|
|
|
#ifndef __7Z_TYPES_H
|
|
#define __7Z_TYPES_H
|
|
|
|
#include <stddef.h>
|
|
|
|
#ifdef _WIN32
|
|
#include <windows.h>
|
|
#endif
|
|
|
|
#define SZ_OK 0
|
|
|
|
#define SZ_ERROR_DATA 1
|
|
#define SZ_ERROR_MEM 2
|
|
#define SZ_ERROR_CRC 3
|
|
#define SZ_ERROR_UNSUPPORTED 4
|
|
#define SZ_ERROR_PARAM 5
|
|
#define SZ_ERROR_INPUT_EOF 6
|
|
#define SZ_ERROR_OUTPUT_EOF 7
|
|
#define SZ_ERROR_READ 8
|
|
#define SZ_ERROR_WRITE 9
|
|
#define SZ_ERROR_PROGRESS 10
|
|
#define SZ_ERROR_FAIL 11
|
|
#define SZ_ERROR_THREAD 12
|
|
|
|
#define SZ_ERROR_ARCHIVE 16
|
|
#define SZ_ERROR_NO_ARCHIVE 17
|
|
|
|
typedef int SRes;
|
|
|
|
#ifdef _WIN32
|
|
typedef DWORD WRes;
|
|
#else
|
|
typedef int WRes;
|
|
#endif
|
|
|
|
#ifndef RINOK
|
|
#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; }
|
|
#endif
|
|
|
|
typedef unsigned char Byte;
|
|
typedef short Int16;
|
|
typedef unsigned short UInt16;
|
|
|
|
#ifdef _LZMA_UINT32_IS_ULONG
|
|
typedef long Int32;
|
|
typedef unsigned long UInt32;
|
|
#else
|
|
typedef int Int32;
|
|
typedef unsigned int UInt32;
|
|
#endif
|
|
|
|
#ifdef _SZ_NO_INT_64
|
|
|
|
/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers.
|
|
NOTES: Some code will work incorrectly in that case! */
|
|
|
|
typedef long Int64;
|
|
typedef unsigned long UInt64;
|
|
|
|
#else
|
|
|
|
#if defined(_MSC_VER) || defined(__BORLANDC__)
|
|
typedef __int64 Int64;
|
|
typedef unsigned __int64 UInt64;
|
|
#define UINT64_CONST(n) n
|
|
#else
|
|
typedef long long int Int64;
|
|
typedef unsigned long long int UInt64;
|
|
#define UINT64_CONST(n) n ## ULL
|
|
#endif
|
|
|
|
#endif
|
|
|
|
#ifdef _LZMA_NO_SYSTEM_SIZE_T
|
|
typedef UInt32 SizeT;
|
|
#else
|
|
typedef size_t SizeT;
|
|
#endif
|
|
|
|
typedef int Bool;
|
|
#define True 1
|
|
#define False 0
|
|
|
|
|
|
#ifdef _MSC_VER
|
|
|
|
#if _MSC_VER >= 1300
|
|
#define MY_NO_INLINE __declspec(noinline)
|
|
#else
|
|
#define MY_NO_INLINE
|
|
#endif
|
|
|
|
#define MY_CDECL __cdecl
|
|
#define MY_FAST_CALL __fastcall
|
|
|
|
#else
|
|
|
|
#define MY_CDECL
|
|
#define MY_FAST_CALL
|
|
|
|
#endif
|
|
|
|
|
|
/* The following interfaces use first parameter as pointer to structure */
|
|
|
|
typedef struct
|
|
{
|
|
Byte (*Read)(void *p); /* reads one byte, returns 0 in case of EOF or error */
|
|
} IByteIn;
|
|
|
|
typedef struct
|
|
{
|
|
void (*Write)(void *p, Byte b);
|
|
} IByteOut;
|
|
|
|
typedef struct
|
|
{
|
|
SRes (*Read)(void *p, void *buf, size_t *size);
|
|
/* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
|
|
(output(*size) < input(*size)) is allowed */
|
|
} ISeqInStream;
|
|
|
|
/* it can return SZ_ERROR_INPUT_EOF */
|
|
SRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size);
|
|
SRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType);
|
|
SRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf);
|
|
|
|
typedef struct
|
|
{
|
|
size_t (*Write)(void *p, const void *buf, size_t size);
|
|
/* Returns: result - the number of actually written bytes.
|
|
(result < size) means error */
|
|
} ISeqOutStream;
|
|
|
|
typedef enum
|
|
{
|
|
SZ_SEEK_SET = 0,
|
|
SZ_SEEK_CUR = 1,
|
|
SZ_SEEK_END = 2
|
|
} ESzSeek;
|
|
|
|
typedef struct
|
|
{
|
|
SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */
|
|
SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);
|
|
} ISeekInStream;
|
|
|
|
typedef struct
|
|
{
|
|
SRes (*Look)(void *p, const void **buf, size_t *size);
|
|
/* if (input(*size) != 0 && output(*size) == 0) means end_of_stream.
|
|
(output(*size) > input(*size)) is not allowed
|
|
(output(*size) < input(*size)) is allowed */
|
|
SRes (*Skip)(void *p, size_t offset);
|
|
/* offset must be <= output(*size) of Look */
|
|
|
|
SRes (*Read)(void *p, void *buf, size_t *size);
|
|
/* reads directly (without buffer). It's same as ISeqInStream::Read */
|
|
SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin);
|
|
} ILookInStream;
|
|
|
|
SRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size);
|
|
SRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset);
|
|
|
|
/* reads via ILookInStream::Read */
|
|
SRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType);
|
|
SRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size);
|
|
|
|
#define LookToRead_BUF_SIZE (1 << 14)
|
|
|
|
typedef struct
|
|
{
|
|
ILookInStream s;
|
|
ISeekInStream *realStream;
|
|
size_t pos;
|
|
size_t size;
|
|
Byte buf[LookToRead_BUF_SIZE];
|
|
} CLookToRead;
|
|
|
|
void LookToRead_CreateVTable(CLookToRead *p, int lookahead);
|
|
void LookToRead_Init(CLookToRead *p);
|
|
|
|
typedef struct
|
|
{
|
|
ISeqInStream s;
|
|
ILookInStream *realStream;
|
|
} CSecToLook;
|
|
|
|
void SecToLook_CreateVTable(CSecToLook *p);
|
|
|
|
typedef struct
|
|
{
|
|
ISeqInStream s;
|
|
ILookInStream *realStream;
|
|
} CSecToRead;
|
|
|
|
void SecToRead_CreateVTable(CSecToRead *p);
|
|
|
|
typedef struct
|
|
{
|
|
SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize);
|
|
/* Returns: result. (result != SZ_OK) means break.
|
|
Value (UInt64)(Int64)-1 for size means unknown value. */
|
|
} ICompressProgress;
|
|
|
|
typedef struct
|
|
{
|
|
void *(*Alloc)(void *p, size_t size);
|
|
void (*Free)(void *p, void *address); /* address can be 0 */
|
|
} ISzAlloc;
|
|
|
|
#define IAlloc_Alloc(p, size) (p)->Alloc((p), size)
|
|
#define IAlloc_Free(p, a) (p)->Free((p), a)
|
|
|
|
#ifdef _WIN32
|
|
|
|
#define CHAR_PATH_SEPARATOR '\\'
|
|
#define WCHAR_PATH_SEPARATOR L'\\'
|
|
#define STRING_PATH_SEPARATOR "\\"
|
|
#define WSTRING_PATH_SEPARATOR L"\\"
|
|
|
|
#else
|
|
|
|
#define CHAR_PATH_SEPARATOR '/'
|
|
#define WCHAR_PATH_SEPARATOR u'/'
|
|
#define STRING_PATH_SEPARATOR "/"
|
|
#define WSTRING_PATH_SEPARATOR u"/"
|
|
|
|
#endif
|
|
|
|
#endif
|