1306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten/** @file 2306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten Types.h 3306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 4306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten Based on LZMA SDK 4.65: 5306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten Types.h -- Basic types 6306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 2008-11-23 : Igor Pavlov : Public domain 7306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 8180a5a35cb49699bd249dee19e41cee34c856a58hhtian Copyright (c) 2009, Intel Corporation. All rights reserved.<BR> 9180a5a35cb49699bd249dee19e41cee34c856a58hhtian This program and the accompanying materials 10306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten are licensed and made available under the terms and conditions of the BSD License 11306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten which accompanies this distribution. The full text of the license may be found at 12306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten http://opensource.org/licenses/bsd-license.php 13306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 14306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, 15306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. 16306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 17306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten**/ 18306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 19306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifndef __7Z_TYPES_H 20306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define __7Z_TYPES_H 21306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 22306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifdef EFIAPI 23306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 24306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#include "UefiLzma.h" 25306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 26306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#else 27306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 28306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#include <stddef.h> 29306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 30306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifdef _WIN32 31306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#include <windows.h> 32306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 33306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 34306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 35306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 36306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_OK 0 37306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 38306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_DATA 1 39306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_MEM 2 40306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_CRC 3 41306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_UNSUPPORTED 4 42306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_PARAM 5 43306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_INPUT_EOF 6 44306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_OUTPUT_EOF 7 45306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_READ 8 46306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_WRITE 9 47306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_PROGRESS 10 48306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_FAIL 11 49306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_THREAD 12 50306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 51306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_ARCHIVE 16 52306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define SZ_ERROR_NO_ARCHIVE 17 53306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 54306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef int SRes; 55306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 56306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifdef _WIN32 57306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef DWORD WRes; 58306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#else 59306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef int WRes; 60306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 61306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 62306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifndef RINOK 63306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define RINOK(x) { int __result__ = (x); if (__result__ != 0) return __result__; } 64306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 65306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 66306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef unsigned char Byte; 67306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef short Int16; 68306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef unsigned short UInt16; 69306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 70306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifdef _LZMA_UINT32_IS_ULONG 71306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef long Int32; 72306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef unsigned long UInt32; 73306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#else 74306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef int Int32; 75306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef unsigned int UInt32; 76306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 77306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 78306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifdef _SZ_NO_INT_64 79306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 80306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten/* define _SZ_NO_INT_64, if your compiler doesn't support 64-bit integers. 81306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten NOTES: Some code will work incorrectly in that case! */ 82306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 83306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef long Int64; 84306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef unsigned long UInt64; 85306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 86306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#else 87306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 88306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#if defined(_MSC_VER) || defined(__BORLANDC__) 89306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef __int64 Int64; 90306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef unsigned __int64 UInt64; 91306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#else 92306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef long long int Int64; 93306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef unsigned long long int UInt64; 94306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 95306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 96306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 97306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 98306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifdef _LZMA_NO_SYSTEM_SIZE_T 99306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef UInt32 SizeT; 100306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#else 101306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef size_t SizeT; 102306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 103306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 104306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef int Bool; 105306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define True 1 106306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define False 0 107306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 108306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 109306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#ifdef _MSC_VER 110306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 111306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#if _MSC_VER >= 1300 112306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define MY_NO_INLINE __declspec(noinline) 113306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#else 114306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define MY_NO_INLINE 115306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 116306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 117306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define MY_CDECL __cdecl 118306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define MY_STD_CALL __stdcall 119306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define MY_FAST_CALL MY_NO_INLINE __fastcall 120306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 121306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#else 122306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 123306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define MY_CDECL 124306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define MY_STD_CALL 125306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define MY_FAST_CALL 126306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 127306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 128306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 129306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 130306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten/* The following interfaces use first parameter as pointer to structure */ 131306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 132306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 133306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 134306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SRes (*Read)(void *p, void *buf, size_t *size); 135306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. 136306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten (output(*size) < input(*size)) is allowed */ 137306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} ISeqInStream; 138306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 139306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten/* it can return SZ_ERROR_INPUT_EOF */ 140306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenSRes SeqInStream_Read(ISeqInStream *stream, void *buf, size_t size); 141306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenSRes SeqInStream_Read2(ISeqInStream *stream, void *buf, size_t size, SRes errorType); 142306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenSRes SeqInStream_ReadByte(ISeqInStream *stream, Byte *buf); 143306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 144306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 145306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 146306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten size_t (*Write)(void *p, const void *buf, size_t size); 147306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten /* Returns: result - the number of actually written bytes. 148306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten (result < size) means error */ 149306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} ISeqOutStream; 150306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 151306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef enum 152306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 153306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SZ_SEEK_SET = 0, 154306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SZ_SEEK_CUR = 1, 155306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SZ_SEEK_END = 2 156306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} ESzSeek; 157306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 158306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 159306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 160306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SRes (*Read)(void *p, void *buf, size_t *size); /* same as ISeqInStream::Read */ 161306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); 162306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} ISeekInStream; 163306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 164306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 165306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 166306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SRes (*Look)(void *p, void **buf, size_t *size); 167306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten /* if (input(*size) != 0 && output(*size) == 0) means end_of_stream. 168306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten (output(*size) > input(*size)) is not allowed 169306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten (output(*size) < input(*size)) is allowed */ 170306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SRes (*Skip)(void *p, size_t offset); 171306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten /* offset must be <= output(*size) of Look */ 172306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 173306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SRes (*Read)(void *p, void *buf, size_t *size); 174306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten /* reads directly (without buffer). It's same as ISeqInStream::Read */ 175306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SRes (*Seek)(void *p, Int64 *pos, ESzSeek origin); 176306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} ILookInStream; 177306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 178306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenSRes LookInStream_LookRead(ILookInStream *stream, void *buf, size_t *size); 179306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenSRes LookInStream_SeekTo(ILookInStream *stream, UInt64 offset); 180306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 181306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten/* reads via ILookInStream::Read */ 182306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenSRes LookInStream_Read2(ILookInStream *stream, void *buf, size_t size, SRes errorType); 183306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenSRes LookInStream_Read(ILookInStream *stream, void *buf, size_t size); 184306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 185306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define LookToRead_BUF_SIZE (1 << 14) 186306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 187306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 188306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 189306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten ILookInStream s; 190306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten ISeekInStream *realStream; 191306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten size_t pos; 192306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten size_t size; 193306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten Byte buf[LookToRead_BUF_SIZE]; 194306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} CLookToRead; 195306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 196306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenvoid LookToRead_CreateVTable(CLookToRead *p, int lookahead); 197306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenvoid LookToRead_Init(CLookToRead *p); 198306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 199306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 200306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 201306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten ISeqInStream s; 202306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten ILookInStream *realStream; 203306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} CSecToLook; 204306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 205306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenvoid SecToLook_CreateVTable(CSecToLook *p); 206306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 207306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 208306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 209306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten ISeqInStream s; 210306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten ILookInStream *realStream; 211306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} CSecToRead; 212306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 213306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustenvoid SecToRead_CreateVTable(CSecToRead *p); 214306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 215306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 216306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 217306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten SRes (*Progress)(void *p, UInt64 inSize, UInt64 outSize); 218306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten /* Returns: result. (result != SZ_OK) means break. 219306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten Value (UInt64)(Int64)-1 for size means unknown value. */ 220306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} ICompressProgress; 221306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 222306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljustentypedef struct 223306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten{ 224306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten void *(*Alloc)(void *p, size_t size); 225306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten void (*Free)(void *p, void *address); /* address can be 0 */ 226306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten} ISzAlloc; 227306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 228306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define IAlloc_Alloc(p, size) (p)->Alloc((p), size) 229306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#define IAlloc_Free(p, a) (p)->Free((p), a) 230306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten 231306bf4e22a1139b47357b9e3fd70cfc1c0f05f9cjljusten#endif 232