⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lzx_int.h

📁 CHMTools
💻 H
字号:
/* generic stuff *///#define CAB(x) (decomp_state.x)//#define ZIP(x) (decomp_state.methods.zip.x)//#define QTM(x) (decomp_state.methods.qtm.x)#define LZX(x) (decomp_state.methods.lzx.x)#define DECR_OK           (0)#define DECR_DATAFORMAT   (1)#define DECR_ILLEGALDATA  (2)#define DECR_NOMEMORY     (3)#define DECR_CHECKSUM     (4)#define DECR_INPUT        (5)#define DECR_OUTPUT       (6)/* CAB data blocks are <= 32768 bytes in uncompressed form. Uncompressed * blocks have zero growth. MSZIP guarantees that it won't grow above * uncompressed size by more than 12 bytes. LZX guarantees it won't grow * more than 6144 bytes. */#define CAB_BLOCKMAX (32768)#define CAB_INPUTMAX (CAB_BLOCKMAX+6144)/* LZX stuff *//* some constants defined by the LZX specification */#define LZX_MIN_MATCH                (2)#define LZX_MAX_MATCH                (257)#define LZX_NUM_CHARS                (256)#define LZX_BLOCKTYPE_INVALID        (0)   /* also blocktypes 4-7 invalid */#define LZX_BLOCKTYPE_VERBATIM       (1)#define LZX_BLOCKTYPE_ALIGNED        (2)#define LZX_BLOCKTYPE_UNCOMPRESSED   (3)#define LZX_PRETREE_NUM_ELEMENTS     (20)#define LZX_ALIGNED_NUM_ELEMENTS     (8)   /* aligned offset tree #elements */#define LZX_NUM_PRIMARY_LENGTHS      (7)   /* this one missing from spec! */#define LZX_NUM_SECONDARY_LENGTHS    (249) /* length tree #elements *//* LZX huffman defines: tweak tablebits as desired */#define LZX_PRETREE_MAXSYMBOLS  (LZX_PRETREE_NUM_ELEMENTS)#define LZX_PRETREE_TABLEBITS   (6)#define LZX_MAINTREE_MAXSYMBOLS (LZX_NUM_CHARS + 50*8)#define LZX_MAINTREE_TABLEBITS  (12)#define LZX_LENGTH_MAXSYMBOLS   (LZX_NUM_SECONDARY_LENGTHS+1)#define LZX_LENGTH_TABLEBITS    (12)#define LZX_ALIGNED_MAXSYMBOLS  (LZX_ALIGNED_NUM_ELEMENTS)#define LZX_ALIGNED_TABLEBITS   (7)#define LZX_LENTABLE_SAFETY (64) /* we allow length table decoding overruns */#define LZX_DECLARE_TABLE(tbl) \  UWORD tbl##_table[(1<<LZX_##tbl##_TABLEBITS) + (LZX_##tbl##_MAXSYMBOLS<<1)];\  UBYTE tbl##_len  [LZX_##tbl##_MAXSYMBOLS + LZX_LENTABLE_SAFETY]struct LZXstate {    UBYTE *window;         /* the actual decoding window              */    ULONG window_size;     /* window size (32Kb through 2Mb)          */    ULONG actual_size;     /* window size when it was first allocated */    ULONG window_posn;     /* current offset within the window        */    ULONG R0, R1, R2;      /* for the LRU offset system               */    UWORD main_elements;   /* number of main tree elements            */    int   header_read;     /* have we started decoding at all yet?    */    UWORD block_type;      /* type of this block                      */    ULONG block_length;    /* uncompressed length of this block       */    ULONG block_remaining; /* uncompressed bytes still left to decode */    ULONG frames_read;     /* the number of CFDATA blocks processed   */    LONG  intel_filesize;  /* magic header value used for transform   */    LONG  intel_curpos;    /* current offset in transform space       */    int   intel_started;   /* have we seen any translatable data yet? */    LZX_DECLARE_TABLE(PRETREE);    LZX_DECLARE_TABLE(MAINTREE);    LZX_DECLARE_TABLE(LENGTH);    LZX_DECLARE_TABLE(ALIGNED);};struct {  struct folder *current; /* current folder we're extracting from  */  ULONG offset;           /* uncompressed offset within folder     */  UBYTE *outpos;          /* (high level) start of data to use up  */  UWORD outlen;           /* (high level) amount of data to use up */  UWORD split;            /* at which split in current folder?     */  int (*decompress)(int, int); /* the chosen compression func      */  UBYTE inbuf[CAB_INPUTMAX+2]; /* +2 for lzx bitbuffer overflows!  */  UBYTE outbuf[CAB_BLOCKMAX];  union {    //    struct ZIPstate zip;    //    struct QTMstate qtm;    struct LZXstate lzx;  } methods;} decomp_state;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -