123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- /*
- LzmaDecode.h
- LZMA Decoder interface
- LZMA SDK 4.40 Copyright (c) 1999-2006 Igor Pavlov (2006-05-01)
- http://www.7-zip.org/
- LZMA SDK is licensed under two licenses:
- 1) GNU Lesser General Public License (GNU LGPL)
- 2) Common Public License (CPL)
- It means that you can select one of these two licenses and
- follow rules of that license.
- SPECIAL EXCEPTION:
- Igor Pavlov, as the author of this code, expressly permits you to
- statically or dynamically link your code (or bind by name) to the
- interfaces of this file without subjecting your linked code to the
- terms of the CPL or GNU LGPL. Any modifications or additions
- to this file, however, are subject to the LGPL or CPL terms.
- */
- #ifndef __LZMADECODE_H
- #define __LZMADECODE_H
- #include "LzmaTypes.h"
- /* #define _LZMA_IN_CB */
- /* Use callback for input data */
- /* #define _LZMA_OUT_READ */
- /* Use read function for output data */
- /* #define _LZMA_PROB32 */
- /* It can increase speed on some 32-bit CPUs,
- but memory usage will be doubled in that case */
- /* #define _LZMA_LOC_OPT */
- /* Enable local speed optimizations inside code */
- #ifdef _LZMA_PROB32
- #define CProb UInt32
- #else
- #define CProb UInt16
- #endif
- #define LZMA_RESULT_OK 0
- #define LZMA_RESULT_DATA_ERROR 1
- #ifdef _LZMA_IN_CB
- typedef struct _ILzmaInCallback
- {
- int (*Read)(void *object, const unsigned char **buffer, SizeT *bufferSize);
- } ILzmaInCallback;
- #endif
- #define LZMA_BASE_SIZE 1846
- #define LZMA_LIT_SIZE 768
- #define LZMA_PROPERTIES_SIZE 5
- typedef struct _CLzmaProperties
- {
- int lc;
- int lp;
- int pb;
- #ifdef _LZMA_OUT_READ
- UInt32 DictionarySize;
- #endif
- }CLzmaProperties;
- int LzmaDecodeProperties(CLzmaProperties *propsRes, const unsigned char *propsData, int size);
- #define LzmaGetNumProbs(Properties) (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << ((Properties)->lc + (Properties)->lp)))
- #define kLzmaNeedInitId (-2)
- typedef struct _CLzmaDecoderState
- {
- CLzmaProperties Properties;
- CProb *Probs;
- #ifdef _LZMA_IN_CB
- const unsigned char *Buffer;
- const unsigned char *BufferLim;
- #endif
- #ifdef _LZMA_OUT_READ
- unsigned char *Dictionary;
- UInt32 Range;
- UInt32 Code;
- UInt32 DictionaryPos;
- UInt32 GlobalPos;
- UInt32 DistanceLimit;
- UInt32 Reps[4];
- int State;
- int RemainLen;
- unsigned char TempDictionary[4];
- #endif
- } CLzmaDecoderState;
- #ifdef _LZMA_OUT_READ
- #define LzmaDecoderInit(vs) { (vs)->RemainLen = kLzmaNeedInitId; }
- #endif
- int LzmaDecode(CLzmaDecoderState *vs,
- #ifdef _LZMA_IN_CB
- ILzmaInCallback *inCallback,
- #else
- const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed,
- #endif
- unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed);
- #endif
|