Upload 2.0.2
[physicsfs] / lzma / C / Archive / 7z / 7zExtract.h
1 /* 7zExtract.h */
2
3 #ifndef __7Z_EXTRACT_H
4 #define __7Z_EXTRACT_H
5
6 #include "7zIn.h"
7
8 /*
9   SzExtract extracts file from archive
10
11   *outBuffer must be 0 before first call for each new archive. 
12
13   Extracting cache:
14     If you need to decompress more than one file, you can send 
15     these values from previous call:
16       *blockIndex, 
17       *outBuffer, 
18       *outBufferSize
19     You can consider "*outBuffer" as cache of solid block. If your archive is solid, 
20     it will increase decompression speed.
21   
22     If you use external function, you can declare these 3 cache variables 
23     (blockIndex, outBuffer, outBufferSize) as static in that external function.
24     
25     Free *outBuffer and set *outBuffer to 0, if you want to flush cache.
26 */
27
28 SZ_RESULT SzExtract(
29     ISzInStream *inStream, 
30     CArchiveDatabaseEx *db,
31     UInt32 fileIndex,         /* index of file */
32     UInt32 *blockIndex,       /* index of solid block */
33     Byte **outBuffer,         /* pointer to pointer to output buffer (allocated with allocMain) */
34     size_t *outBufferSize,    /* buffer size for output buffer */
35     size_t *offset,           /* offset of stream for required file in *outBuffer */
36     size_t *outSizeProcessed, /* size of file in *outBuffer */
37     ISzAlloc *allocMain,
38     ISzAlloc *allocTemp);
39
40 #endif