File Annotation

Not logged in
5128eecc9f 2011-02-23        kinaba: #ifndef AFX_LZHDECODER2_H__31F8AA04_3F84_11D4_8D96_8AB5A6462337__INCLUDED_
5128eecc9f 2011-02-23        kinaba: #define AFX_LZHDECODER2_H__31F8AA04_3F84_11D4_8D96_8AB5A6462337__INCLUDED_
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: #define MAXMATCH	256
5128eecc9f 2011-02-23        kinaba: #define THRESHOLD	3
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: #define NT      (16+3)
5128eecc9f 2011-02-23        kinaba: #define TBIT 	5
5128eecc9f 2011-02-23        kinaba: #define CBIT	9
5128eecc9f 2011-02-23        kinaba: #define NC 	    (255+MAXMATCH+2-THRESHOLD)
5128eecc9f 2011-02-23        kinaba: #define NPT 	0x80
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: #define N_CHAR      (256+60-THRESHOLD+1)
5128eecc9f 2011-02-23        kinaba: #define TREESIZE_C  (N_CHAR*2)
5128eecc9f 2011-02-23        kinaba: #define TREESIZE_P  (128*2)
5128eecc9f 2011-02-23        kinaba: #define TREESIZE    (TREESIZE_C+TREESIZE_P)
5128eecc9f 2011-02-23        kinaba: #define ROOT_C      0
5128eecc9f 2011-02-23        kinaba: #define ROOT_P      TREESIZE_C
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: enum lzh_method{ LH0,LH4,LH5,LH6,LH7,UNKNOWN };
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: class CLzhDecoder2
5128eecc9f 2011-02-23        kinaba: {
5128eecc9f 2011-02-23        kinaba: public:
5128eecc9f 2011-02-23        kinaba: 	void Decode( lzh_method mhd,FILE* infile,DWORD insize,
5128eecc9f 2011-02-23        kinaba: 								FILE* outfile,DWORD outsize );
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: private:
5128eecc9f 2011-02-23        kinaba: 	void Unstore();
5128eecc9f 2011-02-23        kinaba: 	WORD Decode_C(lzh_method mhd)
5128eecc9f 2011-02-23        kinaba: 	{switch( mhd ){
5128eecc9f 2011-02-23        kinaba: 		case LH4:
5128eecc9f 2011-02-23        kinaba: 		case LH5:
5128eecc9f 2011-02-23        kinaba: 		case LH6:
5128eecc9f 2011-02-23        kinaba: 		case LH7:return decode_c_st1();
5128eecc9f 2011-02-23        kinaba: 	}return 0;};
5128eecc9f 2011-02-23        kinaba: 	WORD Decode_P(lzh_method mhd)
5128eecc9f 2011-02-23        kinaba: 	{switch( mhd ){
5128eecc9f 2011-02-23        kinaba: 		case LH4:
5128eecc9f 2011-02-23        kinaba: 		case LH5:
5128eecc9f 2011-02-23        kinaba: 		case LH6:
5128eecc9f 2011-02-23        kinaba: 		case LH7:return decode_p_st1();
5128eecc9f 2011-02-23        kinaba: 	}return 0;};
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: private:
5128eecc9f 2011-02-23        kinaba: 	// 全般的に
5128eecc9f 2011-02-23        kinaba: 	FILE *in,*out;
5128eecc9f 2011-02-23        kinaba: 	DWORD cmpsize,orisize;
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	DWORD loc;
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// lh4-lh7
5128eecc9f 2011-02-23        kinaba: 	void make_table(WORD nchar,BYTE* bitlen,WORD tablebits,WORD* table);
5128eecc9f 2011-02-23        kinaba: 	void read_pt_len(short nn,short nbit,short i_special);
5128eecc9f 2011-02-23        kinaba: 	void read_c_len();
5128eecc9f 2011-02-23        kinaba: 	WORD decode_c_st1();
5128eecc9f 2011-02-23        kinaba: 	WORD decode_p_st1();
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	WORD left[ 2*NC-1 ], right[ 2*NC-1 ];
5128eecc9f 2011-02-23        kinaba: 	BYTE c_len[NC], pt_len[NPT];
5128eecc9f 2011-02-23        kinaba: 	WORD c_table[4096],pt_table[256];
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	WORD blocksize;
5128eecc9f 2011-02-23        kinaba: 	int  pbit;
5128eecc9f 2011-02-23        kinaba: 	int  np;
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: 	// bit単位のread&write
5128eecc9f 2011-02-23        kinaba: 	void init_getbits();
5128eecc9f 2011-02-23        kinaba: 	void fillbuf(BYTE n);
5128eecc9f 2011-02-23        kinaba: 	WORD getbits(BYTE n);
5128eecc9f 2011-02-23        kinaba: 	WORD bitbuf;BYTE subbitbuf,bitcount;
5128eecc9f 2011-02-23        kinaba: };
5128eecc9f 2011-02-23        kinaba: 
5128eecc9f 2011-02-23        kinaba: #endif