tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

Lzma2DecMt.h (2180B)


      1 /* Lzma2DecMt.h -- LZMA2 Decoder Multi-thread
      2 2018-02-17 : Igor Pavlov : Public domain */
      3 
      4 #ifndef __LZMA2_DEC_MT_H
      5 #define __LZMA2_DEC_MT_H
      6 
      7 #include "7zTypes.h"
      8 
      9 EXTERN_C_BEGIN
     10 
     11 typedef struct
     12 {
     13  size_t inBufSize_ST;
     14  size_t outStep_ST;
     15  
     16  #ifndef _7ZIP_ST
     17  unsigned numThreads;
     18  size_t inBufSize_MT;
     19  size_t outBlockMax;
     20  size_t inBlockMax;
     21  #endif
     22 } CLzma2DecMtProps;
     23 
     24 /* init to single-thread mode */
     25 void Lzma2DecMtProps_Init(CLzma2DecMtProps *p);
     26 
     27 
     28 /* ---------- CLzma2DecMtHandle Interface ---------- */
     29 
     30 /* Lzma2DecMt_ * functions can return the following exit codes:
     31 SRes:
     32  SZ_OK           - OK
     33  SZ_ERROR_MEM    - Memory allocation error
     34  SZ_ERROR_PARAM  - Incorrect paramater in props
     35  SZ_ERROR_WRITE  - ISeqOutStream write callback error
     36  // SZ_ERROR_OUTPUT_EOF - output buffer overflow - version with (Byte *) output
     37  SZ_ERROR_PROGRESS - some break from progress callback
     38  SZ_ERROR_THREAD - error in multithreading functions (only for Mt version)
     39 */
     40 
     41 typedef void * CLzma2DecMtHandle;
     42 
     43 CLzma2DecMtHandle Lzma2DecMt_Create(ISzAllocPtr alloc, ISzAllocPtr allocMid);
     44 void Lzma2DecMt_Destroy(CLzma2DecMtHandle p);
     45 
     46 SRes Lzma2DecMt_Decode(CLzma2DecMtHandle p,
     47    Byte prop,
     48    const CLzma2DecMtProps *props,
     49    ISeqOutStream *outStream,
     50    const UInt64 *outDataSize, // NULL means undefined
     51    int finishMode,            // 0 - partial unpacking is allowed, 1 - if lzma2 stream must be finished
     52    // Byte *outBuf, size_t *outBufSize,
     53    ISeqInStream *inStream,
     54    // const Byte *inData, size_t inDataSize,
     55    
     56    // out variables:
     57    UInt64 *inProcessed,
     58    int *isMT,  /* out: (*isMT == 0), if single thread decoding was used */
     59 
     60    // UInt64 *outProcessed,
     61    ICompressProgress *progress);
     62 
     63 
     64 /* ---------- Read from CLzma2DecMtHandle Interface ---------- */
     65 
     66 SRes Lzma2DecMt_Init(CLzma2DecMtHandle pp,
     67    Byte prop,
     68    const CLzma2DecMtProps *props,
     69    const UInt64 *outDataSize, int finishMode,
     70    ISeqInStream *inStream);
     71 
     72 SRes Lzma2DecMt_Read(CLzma2DecMtHandle pp,
     73    Byte *data, size_t *outSize,
     74    UInt64 *inStreamProcessed);
     75 
     76 
     77 EXTERN_C_END
     78 
     79 #endif