/* Bcj2.h -- BCJ2 Converter for x86 code 2014-11-10 : Igor Pavlov : Public domain */ #ifndef __BCJ2_H #define __BCJ2_H #include "7zTypes.h" EXTERN_C_BEGIN #define BCJ2_NUM_STREAMS … enum { … }; enum { … }; enum { … }; #define BCJ2_IS_32BIT_STREAM(s) … /* CBcj2Dec / CBcj2Enc bufs sizes: BUF_SIZE(n) = lims[n] - bufs[n] bufs sizes for BCJ2_STREAM_CALL and BCJ2_STREAM_JUMP must be mutliply of 4: (BUF_SIZE(BCJ2_STREAM_CALL) & 3) == 0 (BUF_SIZE(BCJ2_STREAM_JUMP) & 3) == 0 */ /* CBcj2Dec: dest is allowed to overlap with bufs[BCJ2_STREAM_MAIN], with the following conditions: bufs[BCJ2_STREAM_MAIN] >= dest && bufs[BCJ2_STREAM_MAIN] - dest >= tempReserv + BUF_SIZE(BCJ2_STREAM_CALL) + BUF_SIZE(BCJ2_STREAM_JUMP) tempReserv = 0 : for first call of Bcj2Dec_Decode tempReserv = 4 : for any other calls of Bcj2Dec_Decode overlap with offset = 1 is not allowed */ CBcj2Dec; void Bcj2Dec_Init(CBcj2Dec *p); /* Returns: SZ_OK or SZ_ERROR_DATA */ SRes Bcj2Dec_Decode(CBcj2Dec *p); #define Bcj2Dec_IsFinished(_p_) … EBcj2Enc_FinishMode; CBcj2Enc; void Bcj2Enc_Init(CBcj2Enc *p); void Bcj2Enc_Encode(CBcj2Enc *p); #define Bcj2Enc_Get_InputData_Size(p) … #define Bcj2Enc_IsFinished(p) … #define BCJ2_RELAT_LIMIT_NUM_BITS … #define BCJ2_RELAT_LIMIT … /* limit for CBcj2Enc::fileSize variable */ #define BCJ2_FileSize_MAX … EXTERN_C_END #endif