KDevelop API Documentation

decompress.cpp File Reference

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "decompress.h"

Include dependency graph for decompress.cpp:

Include dependency graph

Go to the source code of this file.

Classes

struct  LZXstate

Defines

#define LZX_MIN_MATCH   (2)
#define LZX_MAX_MATCH   (257)
#define LZX_NUM_CHARS   (256)
#define LZX_BLOCKTYPE_INVALID   (0)
#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)
#define LZX_NUM_PRIMARY_LENGTHS   (7)
#define LZX_NUM_SECONDARY_LENGTHS   (249)
#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)
#define LZX_DECLARE_TABLE(tbl)
#define CAB(x)   (decomp_state.x)
#define LZX(x)   (decomp_state.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)
#define ULONG_BITS   (sizeof(ULONG)<<3)
#define INIT_BITSTREAM   do { bitsleft = 0; bitbuf = 0; } while (0)
#define ENSURE_BITS(n)
#define PEEK_BITS(n)   (bitbuf >> (ULONG_BITS - (n)))
#define REMOVE_BITS(n)   ((bitbuf <<= (n)), (bitsleft -= (n)))
#define READ_BITS(v, n)
#define TABLEBITS(tbl)   (LZX_##tbl##_TABLEBITS)
#define MAXSYMBOLS(tbl)   (LZX_##tbl##_MAXSYMBOLS)
#define SYMTABLE(tbl)   (LZX(tbl##_table))
#define LENTABLE(tbl)   (LZX(tbl##_len))
#define BUILD_TABLE(tbl)
#define READ_HUFFSYM(tbl, var)
#define READ_LENGTHS(tbl, first, last)

Functions

int make_decode_table (ULONG nsyms, ULONG nbits, UBYTE *length, UWORD *table)
int lzx_read_lens (UBYTE *lens, ULONG first, ULONG last, lzx_bits *lb)
int LZXinit (int window)
int LZXdecompress (UBYTE *inpos, int inlen, UBYTE *outpos, int outlen)

Variables

struct {
   LZXstate   lzx
decomp_state
ULONG position_base [51]
UBYTE extra_bits [51]


Define Documentation

#define BUILD_TABLE tbl   ) 
 

Value:

if (make_decode_table(                      \
    MAXSYMBOLS(tbl), TABLEBITS(tbl), LENTABLE(tbl), SYMTABLE(tbl)   \
  )) { return DECR_ILLEGALDATA; }

Definition at line 274 of file decompress.cpp.

#define CAB  )     (decomp_state.x)
 

Definition at line 89 of file decompress.cpp.

#define DECR_CHECKSUM   (4)
 

Definition at line 95 of file decompress.cpp.

#define DECR_DATAFORMAT   (1)
 

Definition at line 92 of file decompress.cpp.

#define DECR_ILLEGALDATA   (2)
 

Definition at line 93 of file decompress.cpp.

#define DECR_INPUT   (5)
 

Definition at line 96 of file decompress.cpp.

#define DECR_NOMEMORY   (3)
 

Definition at line 94 of file decompress.cpp.

#define DECR_OK   (0)
 

Definition at line 91 of file decompress.cpp.

#define DECR_OUTPUT   (6)
 

Definition at line 97 of file decompress.cpp.

#define ENSURE_BITS  ) 
 

Value:

while (bitsleft < (n)) {                        \
    bitbuf |= ((inpos[1]<<8)|inpos[0]) << (ULONG_BITS-16 - bitsleft);   \
    bitsleft += 16; inpos+=2;                       \
  }

Definition at line 246 of file decompress.cpp.

#define INIT_BITSTREAM   do { bitsleft = 0; bitbuf = 0; } while (0)
 

Definition at line 244 of file decompress.cpp.

#define LENTABLE tbl   )     (LZX(tbl##_len))
 

Definition at line 267 of file decompress.cpp.

#define LZX  )     (decomp_state.lzx.x)
 

Definition at line 90 of file decompress.cpp.

#define LZX_ALIGNED_MAXSYMBOLS   (LZX_ALIGNED_NUM_ELEMENTS)
 

Definition at line 55 of file decompress.cpp.

#define LZX_ALIGNED_NUM_ELEMENTS   (8)
 

Definition at line 44 of file decompress.cpp.

#define LZX_ALIGNED_TABLEBITS   (7)
 

Definition at line 56 of file decompress.cpp.

#define LZX_BLOCKTYPE_ALIGNED   (2)
 

Definition at line 41 of file decompress.cpp.

#define LZX_BLOCKTYPE_INVALID   (0)
 

Definition at line 39 of file decompress.cpp.

#define LZX_BLOCKTYPE_UNCOMPRESSED   (3)
 

Definition at line 42 of file decompress.cpp.

#define LZX_BLOCKTYPE_VERBATIM   (1)
 

Definition at line 40 of file decompress.cpp.

#define LZX_DECLARE_TABLE tbl   ) 
 

Value:

UWORD tbl##_table[(1<<LZX_##tbl##_TABLEBITS) + (LZX_##tbl##_MAXSYMBOLS<<1)];\
  UBYTE tbl##_len  [LZX_##tbl##_MAXSYMBOLS + LZX_LENTABLE_SAFETY]

Definition at line 60 of file decompress.cpp.

#define LZX_LENGTH_MAXSYMBOLS   (LZX_NUM_SECONDARY_LENGTHS+1)
 

Definition at line 53 of file decompress.cpp.

#define LZX_LENGTH_TABLEBITS   (12)
 

Definition at line 54 of file decompress.cpp.

#define LZX_LENTABLE_SAFETY   (64)
 

Definition at line 58 of file decompress.cpp.

#define LZX_MAINTREE_MAXSYMBOLS   (LZX_NUM_CHARS + 50*8)
 

Definition at line 51 of file decompress.cpp.

#define LZX_MAINTREE_TABLEBITS   (12)
 

Definition at line 52 of file decompress.cpp.

#define LZX_MAX_MATCH   (257)
 

Definition at line 37 of file decompress.cpp.

#define LZX_MIN_MATCH   (2)
 

Definition at line 36 of file decompress.cpp.

#define LZX_NUM_CHARS   (256)
 

Definition at line 38 of file decompress.cpp.

#define LZX_NUM_PRIMARY_LENGTHS   (7)
 

Definition at line 45 of file decompress.cpp.

#define LZX_NUM_SECONDARY_LENGTHS   (249)
 

Definition at line 46 of file decompress.cpp.

#define LZX_PRETREE_MAXSYMBOLS   (LZX_PRETREE_NUM_ELEMENTS)
 

Definition at line 49 of file decompress.cpp.

#define LZX_PRETREE_NUM_ELEMENTS   (20)
 

Definition at line 43 of file decompress.cpp.

#define LZX_PRETREE_TABLEBITS   (6)
 

Definition at line 50 of file decompress.cpp.

#define MAXSYMBOLS tbl   )     (LZX_##tbl##_MAXSYMBOLS)
 

Definition at line 265 of file decompress.cpp.

#define PEEK_BITS  )     (bitbuf >> (ULONG_BITS - (n)))
 

Definition at line 252 of file decompress.cpp.

#define READ_BITS v,
 ) 
 

Value:

do {                        \
  ENSURE_BITS(n);                           \
  (v) = PEEK_BITS(n);                           \
  REMOVE_BITS(n);                           \
} while (0)

Definition at line 255 of file decompress.cpp.

#define READ_HUFFSYM tbl,
var   ) 
 

Value:

do {                    \
  ENSURE_BITS(16);                          \
  hufftbl = SYMTABLE(tbl);                      \
  if ((i = hufftbl[PEEK_BITS(TABLEBITS(tbl))]) >= MAXSYMBOLS(tbl)) {    \
    j = 1 << (ULONG_BITS - TABLEBITS(tbl));             \
    do {                                \
      j >>= 1; i <<= 1; i |= (bitbuf & j) ? 1 : 0;          \
      if (!j) { return DECR_ILLEGALDATA; }                          \
    } while ((i = hufftbl[i]) >= MAXSYMBOLS(tbl));          \
  }                                 \
  j = LENTABLE(tbl)[(var) = i];                     \
  REMOVE_BITS(j);                           \
} while (0)

Definition at line 283 of file decompress.cpp.

#define READ_LENGTHS tbl,
first,
last   ) 
 

Value:

do { \
  lb.bb = bitbuf; lb.bl = bitsleft; lb.ip = inpos; \
  if (lzx_read_lens(LENTABLE(tbl),(first),(last),&lb)) { \
    return DECR_ILLEGALDATA; \
  } \
  bitbuf = lb.bb; bitsleft = lb.bl; inpos = lb.ip; \
} while (0)

Definition at line 302 of file decompress.cpp.

#define REMOVE_BITS  )     ((bitbuf <<= (n)), (bitsleft -= (n)))
 

Definition at line 253 of file decompress.cpp.

#define SYMTABLE tbl   )     (LZX(tbl##_table))
 

Definition at line 266 of file decompress.cpp.

#define TABLEBITS tbl   )     (LZX_##tbl##_TABLEBITS)
 

Definition at line 264 of file decompress.cpp.

#define ULONG_BITS   (sizeof(ULONG)<<3)
 

Definition at line 242 of file decompress.cpp.


Function Documentation

int lzx_read_lens UBYTE lens,
ULONG  first,
ULONG  last,
lzx_bits lb
 

int LZXdecompress UBYTE inpos,
int  inlen,
UBYTE outpos,
int  outlen
 

Definition at line 453 of file decompress.cpp.

References BUILD_TABLE, ENSURE_BITS, extra_bits, LENTABLE, LONG, LZX, LZX_BLOCKTYPE_ALIGNED, LZX_BLOCKTYPE_UNCOMPRESSED, LZX_BLOCKTYPE_VERBATIM, LZX_NUM_SECONDARY_LENGTHS, position_base, READ_BITS, READ_HUFFSYM, READ_LENGTHS, UBYTE, ULONG, and UWORD.

Referenced by Chm::read().

int LZXinit int  window  ) 
 

Definition at line 164 of file decompress.cpp.

References extra_bits, LZX, LZX_NUM_CHARS, position_base, UBYTE, and ULONG.

Referenced by Chm::read().

int make_decode_table ULONG  nsyms,
ULONG  nbits,
UBYTE length,
UWORD table
 


Variable Documentation

struct { ... } decomp_state
 

UBYTE extra_bits[51] [static]
 

Definition at line 161 of file decompress.cpp.

Referenced by LZXdecompress(), and LZXinit().

struct LZXstate lzx
 

Definition at line 101 of file decompress.cpp.

ULONG position_base[51] [static]
 

Definition at line 160 of file decompress.cpp.

Referenced by LZXdecompress(), and LZXinit().

KDE Logo
This file is part of the documentation for KDevelop Version 3.1.2.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Feb 22 09:31:57 2005 by doxygen 1.3.9.1 written by Dimitri van Heesch, © 1997-2003