35 #ifndef AIMS_COMPRESSION_HUFFMAN_H 
   36 #define AIMS_COMPRESSION_HUFFMAN_H 
   44 #define NHUFFSYMBOLS ( 256 + 16 + 2 ) 
   57     return tmp ? (tmp < 0): (x.
i - i < 0);
 
   94     static void _addGroup( 
int* groups, 
int group, 
int nBits );
 
  107     enum { maxMatchOver = 517, maxRaw = 64 };
 
  110     void putRaw( 
const byte* src, 
size_t sz );
 
  111     void putMatch( 
const byte* src, 
size_t nRaw, 
size_t matchOver, 
size_t disp);
 
  124     void _put( 
ushort symbol );
 
  125     void _put( 
ushort symbol, 
int codeBits, 
uint code );
 
  126     void _putBits( 
int codeBits, 
uint code );
 
  151             : _stat( stat ), _sstat( stat->stat ), _nextStat( stat->nextStat )
 
  153   _dst = _dstBegin = dst;
 
  166 void LZHLEncoder::_putBits( 
int codeBits, 
uint code )
 
  169   _bits |= ( code << ( 32 - _nBits - codeBits ) );
 
  173     *_dst++ = (
byte)( _bits >> 24 );
 
  174     *_dst++ = (
byte)( _bits >> 16 );
 
  182 void LZHLEncoder::_put( 
ushort symbol )
 
  185   if ( --_nextStat <= 0 )
 
  198 void LZHLEncoder::_put( 
ushort symbol, 
int codeBits, 
uint code )
 
  202   if ( --_nextStat <= 0 )
 
  210   int nBits = item->
nBits;
 
  211   _putBits( nBits + codeBits, ( item->
code << codeBits ) | code );
 
int _makeSortedTmp(HuffStatTmpStruct *)
 
void calcStat(int *groups)
 
LZHLEncoder(LZHLEncoderStat *stat, byte *dst)
 
void putMatch(const byte *src, size_t nRaw, size_t matchOver, size_t disp)
 
void putRaw(const byte *src, size_t sz)
 
static size_t calcMaxBuf(size_t rawSz)
 
bool operator<(const HuffStatTmpStruct &x)