Main Page   Packages   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members   Search  

C:/temp/src/j2k/LZH/LZHLEncoder.cpp

Go to the documentation of this file.
00001 #ifndef __J2K__LZH__LZHLEncoder_CPP__
00002 #define __J2K__LZH__LZHLEncoder_CPP__
00003 
00004 inline LZHLEncoder::LZHLEncoder( LZHLEncoderStat* stat_, BYTE* dst_ )
00005   : stat( stat_ ),
00006     sstat( stat_->stat ),
00007     nextStat( stat_->nextStat ),
00008     dst( dst_ ),
00009     dstBegin( dst_ ),
00010     bits( 0 ),
00011     nBits( 0 )
00012 { }
00013 
00014 inline LZHLEncoder::~LZHLEncoder() { }
00015 
00016 inline void LZHLEncoder::_putBits( int codeBits, UINT32 code ) {
00017   assert( codeBits <= 16 );
00018   bits |= ( code << ( 32 - nBits - codeBits ) );
00019   nBits += codeBits;
00020 
00021   if ( nBits >= 16 ) {
00022     *dst++ = (BYTE)( bits >> 24 );
00023     *dst++ = (BYTE)( bits >> 16 );
00024 
00025     nBits -= 16;
00026     bits <<= 16;
00027   }
00028 }
00029 
00030 inline void LZHLEncoder::_put( UINT16 symbol ) {
00031   assert( symbol < NHUFFSYMBOLS );
00032 
00033   if ( --nextStat <= 0 ) {
00034     _callStat();
00035   }
00036 
00037   ++sstat[ symbol ];
00038 
00039   LZHLEncoderStat::Symbol* item = &stat->symbolTable[ symbol ];
00040   assert( item->nBits >= 0 );
00041 
00042   _putBits( item->nBits, item->code );
00043 }
00044 
00045 inline void LZHLEncoder::_put( UINT16 symbol, int codeBits, UINT32 code ) {
00046   assert( symbol < NHUFFSYMBOLS );
00047   assert( codeBits <= 4 );
00048 
00049   if ( --nextStat <= 0 ) {
00050     _callStat();
00051   }
00052 
00053   ++sstat[ symbol ];
00054 
00055   LZHLEncoderStat::Symbol* item = &stat->symbolTable[ symbol ];
00056   assert( item->nBits >= 0 );
00057 
00058   int nBits = item->nBits;
00059   _putBits( nBits + codeBits, ( item->code << codeBits ) | code );
00060 }
00061 
00062 #endif

Generated on Sun Oct 14 18:46:33 2001 for Standard J2K Library by doxygen1.2.11.1 written by Dimitri van Heesch, © 1997-2001