Blame bzlib_private.h

Packit 71fd91
Packit 71fd91
/*-------------------------------------------------------------*/
Packit 71fd91
/*--- Private header file for the library.                  ---*/
Packit 71fd91
/*---                                       bzlib_private.h ---*/
Packit 71fd91
/*-------------------------------------------------------------*/
Packit 71fd91
Packit 71fd91
/* ------------------------------------------------------------------
Packit 71fd91
   This file is part of bzip2/libbzip2, a program and library for
Packit 71fd91
   lossless, block-sorting data compression.
Packit 71fd91
Packit 71fd91
   bzip2/libbzip2 version 1.0.6 of 6 September 2010
Packit 71fd91
   Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org>
Packit 71fd91
Packit 71fd91
   Please read the WARNING, DISCLAIMER and PATENTS sections in the 
Packit 71fd91
   README file.
Packit 71fd91
Packit 71fd91
   This program is released under the terms of the license contained
Packit 71fd91
   in the file LICENSE.
Packit 71fd91
   ------------------------------------------------------------------ */
Packit 71fd91
Packit 71fd91
Packit 71fd91
#ifndef _BZLIB_PRIVATE_H
Packit 71fd91
#define _BZLIB_PRIVATE_H
Packit 71fd91
Packit 71fd91
#include <stdlib.h>
Packit 71fd91
Packit 71fd91
#ifndef BZ_NO_STDIO
Packit 71fd91
#include <stdio.h>
Packit 71fd91
#include <ctype.h>
Packit 71fd91
#include <string.h>
Packit 71fd91
#endif
Packit 71fd91
Packit 71fd91
#include "bzlib.h"
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- General stuff. --*/
Packit 71fd91
Packit 71fd91
#define BZ_VERSION  "1.0.6, 6-Sept-2010"
Packit 71fd91
Packit 71fd91
typedef char            Char;
Packit 71fd91
typedef unsigned char   Bool;
Packit 71fd91
typedef unsigned char   UChar;
Packit 71fd91
typedef int             Int32;
Packit 71fd91
typedef unsigned int    UInt32;
Packit 71fd91
typedef short           Int16;
Packit 71fd91
typedef unsigned short  UInt16;
Packit 71fd91
Packit 71fd91
#define True  ((Bool)1)
Packit 71fd91
#define False ((Bool)0)
Packit 71fd91
Packit 71fd91
#ifndef __GNUC__
Packit 71fd91
#define __inline__  /* */
Packit 71fd91
#endif 
Packit 71fd91
Packit 71fd91
#ifndef BZ_NO_STDIO
Packit 71fd91
Packit 71fd91
extern void BZ2_bz__AssertH__fail ( int errcode );
Packit 71fd91
#define AssertH(cond,errcode) \
Packit 71fd91
   { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); }
Packit 71fd91
Packit 71fd91
#if BZ_DEBUG
Packit 71fd91
#define AssertD(cond,msg) \
Packit 71fd91
   { if (!(cond)) {       \
Packit 71fd91
      fprintf ( stderr,   \
Packit 71fd91
        "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\
Packit 71fd91
      exit(1); \
Packit 71fd91
   }}
Packit 71fd91
#else
Packit 71fd91
#define AssertD(cond,msg) /* */
Packit 71fd91
#endif
Packit 71fd91
Packit 71fd91
#define VPrintf0(zf) \
Packit 71fd91
   fprintf(stderr,zf)
Packit 71fd91
#define VPrintf1(zf,za1) \
Packit 71fd91
   fprintf(stderr,zf,za1)
Packit 71fd91
#define VPrintf2(zf,za1,za2) \
Packit 71fd91
   fprintf(stderr,zf,za1,za2)
Packit 71fd91
#define VPrintf3(zf,za1,za2,za3) \
Packit 71fd91
   fprintf(stderr,zf,za1,za2,za3)
Packit 71fd91
#define VPrintf4(zf,za1,za2,za3,za4) \
Packit 71fd91
   fprintf(stderr,zf,za1,za2,za3,za4)
Packit 71fd91
#define VPrintf5(zf,za1,za2,za3,za4,za5) \
Packit 71fd91
   fprintf(stderr,zf,za1,za2,za3,za4,za5)
Packit 71fd91
Packit 71fd91
#else
Packit 71fd91
Packit 71fd91
extern void bz_internal_error ( int errcode );
Packit 71fd91
#define AssertH(cond,errcode) \
Packit 71fd91
   { if (!(cond)) bz_internal_error ( errcode ); }
Packit 71fd91
#define AssertD(cond,msg)                do { } while (0)
Packit 71fd91
#define VPrintf0(zf)                     do { } while (0)
Packit 71fd91
#define VPrintf1(zf,za1)                 do { } while (0)
Packit 71fd91
#define VPrintf2(zf,za1,za2)             do { } while (0)
Packit 71fd91
#define VPrintf3(zf,za1,za2,za3)         do { } while (0)
Packit 71fd91
#define VPrintf4(zf,za1,za2,za3,za4)     do { } while (0)
Packit 71fd91
#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0)
Packit 71fd91
Packit 71fd91
#endif
Packit 71fd91
Packit 71fd91
Packit 71fd91
#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1)
Packit 71fd91
#define BZFREE(ppp)  (strm->bzfree)(strm->opaque,(ppp))
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- Header bytes. --*/
Packit 71fd91
Packit 71fd91
#define BZ_HDR_B 0x42   /* 'B' */
Packit 71fd91
#define BZ_HDR_Z 0x5a   /* 'Z' */
Packit 71fd91
#define BZ_HDR_h 0x68   /* 'h' */
Packit 71fd91
#define BZ_HDR_0 0x30   /* '0' */
Packit 71fd91
  
Packit 71fd91
/*-- Constants for the back end. --*/
Packit 71fd91
Packit 71fd91
#define BZ_MAX_ALPHA_SIZE 258
Packit 71fd91
#define BZ_MAX_CODE_LEN    23
Packit 71fd91
Packit 71fd91
#define BZ_RUNA 0
Packit 71fd91
#define BZ_RUNB 1
Packit 71fd91
Packit 71fd91
#define BZ_N_GROUPS 6
Packit 71fd91
#define BZ_G_SIZE   50
Packit 71fd91
#define BZ_N_ITERS  4
Packit 71fd91
Packit 71fd91
#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE))
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- Stuff for randomising repetitive blocks. --*/
Packit 71fd91
Packit 71fd91
extern Int32 BZ2_rNums[512];
Packit 71fd91
Packit 71fd91
#define BZ_RAND_DECLS                          \
Packit 71fd91
   Int32 rNToGo;                               \
Packit 71fd91
   Int32 rTPos                                 \
Packit 71fd91
Packit 71fd91
#define BZ_RAND_INIT_MASK                      \
Packit 71fd91
   s->rNToGo = 0;                              \
Packit 71fd91
   s->rTPos  = 0                               \
Packit 71fd91
Packit 71fd91
#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0)
Packit 71fd91
Packit 71fd91
#define BZ_RAND_UPD_MASK                       \
Packit 71fd91
   if (s->rNToGo == 0) {                       \
Packit 71fd91
      s->rNToGo = BZ2_rNums[s->rTPos];         \
Packit 71fd91
      s->rTPos++;                              \
Packit 71fd91
      if (s->rTPos == 512) s->rTPos = 0;       \
Packit 71fd91
   }                                           \
Packit 71fd91
   s->rNToGo--;
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- Stuff for doing CRCs. --*/
Packit 71fd91
Packit 71fd91
extern UInt32 BZ2_crc32Table[256];
Packit 71fd91
Packit 71fd91
#define BZ_INITIALISE_CRC(crcVar)              \
Packit 71fd91
{                                              \
Packit 71fd91
   crcVar = 0xffffffffL;                       \
Packit 71fd91
}
Packit 71fd91
Packit 71fd91
#define BZ_FINALISE_CRC(crcVar)                \
Packit 71fd91
{                                              \
Packit 71fd91
   crcVar = ~(crcVar);                         \
Packit 71fd91
}
Packit 71fd91
Packit 71fd91
#define BZ_UPDATE_CRC(crcVar,cha)              \
Packit 71fd91
{                                              \
Packit 71fd91
   crcVar = (crcVar << 8) ^                    \
Packit 71fd91
            BZ2_crc32Table[(crcVar >> 24) ^    \
Packit 71fd91
                           ((UChar)cha)];      \
Packit 71fd91
}
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- States and modes for compression. --*/
Packit 71fd91
Packit 71fd91
#define BZ_M_IDLE      1
Packit 71fd91
#define BZ_M_RUNNING   2
Packit 71fd91
#define BZ_M_FLUSHING  3
Packit 71fd91
#define BZ_M_FINISHING 4
Packit 71fd91
Packit 71fd91
#define BZ_S_OUTPUT    1
Packit 71fd91
#define BZ_S_INPUT     2
Packit 71fd91
Packit 71fd91
#define BZ_N_RADIX 2
Packit 71fd91
#define BZ_N_QSORT 12
Packit 71fd91
#define BZ_N_SHELL 18
Packit 71fd91
#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2)
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- Structure holding all the compression-side stuff. --*/
Packit 71fd91
Packit 71fd91
typedef
Packit 71fd91
   struct {
Packit 71fd91
      /* pointer back to the struct bz_stream */
Packit 71fd91
      bz_stream* strm;
Packit 71fd91
Packit 71fd91
      /* mode this stream is in, and whether inputting */
Packit 71fd91
      /* or outputting data */
Packit 71fd91
      Int32    mode;
Packit 71fd91
      Int32    state;
Packit 71fd91
Packit 71fd91
      /* remembers avail_in when flush/finish requested */
Packit 71fd91
      UInt32   avail_in_expect;
Packit 71fd91
Packit 71fd91
      /* for doing the block sorting */
Packit 71fd91
      UInt32*  arr1;
Packit 71fd91
      UInt32*  arr2;
Packit 71fd91
      UInt32*  ftab;
Packit 71fd91
      Int32    origPtr;
Packit 71fd91
Packit 71fd91
      /* aliases for arr1 and arr2 */
Packit 71fd91
      UInt32*  ptr;
Packit 71fd91
      UChar*   block;
Packit 71fd91
      UInt16*  mtfv;
Packit 71fd91
      UChar*   zbits;
Packit 71fd91
Packit 71fd91
      /* for deciding when to use the fallback sorting algorithm */
Packit 71fd91
      Int32    workFactor;
Packit 71fd91
Packit 71fd91
      /* run-length-encoding of the input */
Packit 71fd91
      UInt32   state_in_ch;
Packit 71fd91
      Int32    state_in_len;
Packit 71fd91
      BZ_RAND_DECLS;
Packit 71fd91
Packit 71fd91
      /* input and output limits and current posns */
Packit 71fd91
      Int32    nblock;
Packit 71fd91
      Int32    nblockMAX;
Packit 71fd91
      Int32    numZ;
Packit 71fd91
      Int32    state_out_pos;
Packit 71fd91
Packit 71fd91
      /* map of bytes used in block */
Packit 71fd91
      Int32    nInUse;
Packit 71fd91
      Bool     inUse[256];
Packit 71fd91
      UChar    unseqToSeq[256];
Packit 71fd91
Packit 71fd91
      /* the buffer for bit stream creation */
Packit 71fd91
      UInt32   bsBuff;
Packit 71fd91
      Int32    bsLive;
Packit 71fd91
Packit 71fd91
      /* block and combined CRCs */
Packit 71fd91
      UInt32   blockCRC;
Packit 71fd91
      UInt32   combinedCRC;
Packit 71fd91
Packit 71fd91
      /* misc administratium */
Packit 71fd91
      Int32    verbosity;
Packit 71fd91
      Int32    blockNo;
Packit 71fd91
      Int32    blockSize100k;
Packit 71fd91
Packit 71fd91
      /* stuff for coding the MTF values */
Packit 71fd91
      Int32    nMTF;
Packit 71fd91
      Int32    mtfFreq    [BZ_MAX_ALPHA_SIZE];
Packit 71fd91
      UChar    selector   [BZ_MAX_SELECTORS];
Packit 71fd91
      UChar    selectorMtf[BZ_MAX_SELECTORS];
Packit 71fd91
Packit 71fd91
      UChar    len     [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Packit 71fd91
      Int32    code    [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Packit 71fd91
      Int32    rfreq   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Packit 71fd91
      /* second dimension: only 3 needed; 4 makes index calculations faster */
Packit 71fd91
      UInt32   len_pack[BZ_MAX_ALPHA_SIZE][4];
Packit 71fd91
Packit 71fd91
   }
Packit 71fd91
   EState;
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- externs for compression. --*/
Packit 71fd91
Packit 71fd91
extern void 
Packit 71fd91
BZ2_blockSort ( EState* );
Packit 71fd91
Packit 71fd91
extern void 
Packit 71fd91
BZ2_compressBlock ( EState*, Bool );
Packit 71fd91
Packit 71fd91
extern void 
Packit 71fd91
BZ2_bsInitWrite ( EState* );
Packit 71fd91
Packit 71fd91
extern void 
Packit 71fd91
BZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 );
Packit 71fd91
Packit 71fd91
extern void 
Packit 71fd91
BZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 );
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- states for decompression. --*/
Packit 71fd91
Packit 71fd91
#define BZ_X_IDLE        1
Packit 71fd91
#define BZ_X_OUTPUT      2
Packit 71fd91
Packit 71fd91
#define BZ_X_MAGIC_1     10
Packit 71fd91
#define BZ_X_MAGIC_2     11
Packit 71fd91
#define BZ_X_MAGIC_3     12
Packit 71fd91
#define BZ_X_MAGIC_4     13
Packit 71fd91
#define BZ_X_BLKHDR_1    14
Packit 71fd91
#define BZ_X_BLKHDR_2    15
Packit 71fd91
#define BZ_X_BLKHDR_3    16
Packit 71fd91
#define BZ_X_BLKHDR_4    17
Packit 71fd91
#define BZ_X_BLKHDR_5    18
Packit 71fd91
#define BZ_X_BLKHDR_6    19
Packit 71fd91
#define BZ_X_BCRC_1      20
Packit 71fd91
#define BZ_X_BCRC_2      21
Packit 71fd91
#define BZ_X_BCRC_3      22
Packit 71fd91
#define BZ_X_BCRC_4      23
Packit 71fd91
#define BZ_X_RANDBIT     24
Packit 71fd91
#define BZ_X_ORIGPTR_1   25
Packit 71fd91
#define BZ_X_ORIGPTR_2   26
Packit 71fd91
#define BZ_X_ORIGPTR_3   27
Packit 71fd91
#define BZ_X_MAPPING_1   28
Packit 71fd91
#define BZ_X_MAPPING_2   29
Packit 71fd91
#define BZ_X_SELECTOR_1  30
Packit 71fd91
#define BZ_X_SELECTOR_2  31
Packit 71fd91
#define BZ_X_SELECTOR_3  32
Packit 71fd91
#define BZ_X_CODING_1    33
Packit 71fd91
#define BZ_X_CODING_2    34
Packit 71fd91
#define BZ_X_CODING_3    35
Packit 71fd91
#define BZ_X_MTF_1       36
Packit 71fd91
#define BZ_X_MTF_2       37
Packit 71fd91
#define BZ_X_MTF_3       38
Packit 71fd91
#define BZ_X_MTF_4       39
Packit 71fd91
#define BZ_X_MTF_5       40
Packit 71fd91
#define BZ_X_MTF_6       41
Packit 71fd91
#define BZ_X_ENDHDR_2    42
Packit 71fd91
#define BZ_X_ENDHDR_3    43
Packit 71fd91
#define BZ_X_ENDHDR_4    44
Packit 71fd91
#define BZ_X_ENDHDR_5    45
Packit 71fd91
#define BZ_X_ENDHDR_6    46
Packit 71fd91
#define BZ_X_CCRC_1      47
Packit 71fd91
#define BZ_X_CCRC_2      48
Packit 71fd91
#define BZ_X_CCRC_3      49
Packit 71fd91
#define BZ_X_CCRC_4      50
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- Constants for the fast MTF decoder. --*/
Packit 71fd91
Packit 71fd91
#define MTFA_SIZE 4096
Packit 71fd91
#define MTFL_SIZE 16
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- Structure holding all the decompression-side stuff. --*/
Packit 71fd91
Packit 71fd91
typedef
Packit 71fd91
   struct {
Packit 71fd91
      /* pointer back to the struct bz_stream */
Packit 71fd91
      bz_stream* strm;
Packit 71fd91
Packit 71fd91
      /* state indicator for this stream */
Packit 71fd91
      Int32    state;
Packit 71fd91
Packit 71fd91
      /* for doing the final run-length decoding */
Packit 71fd91
      UChar    state_out_ch;
Packit 71fd91
      Int32    state_out_len;
Packit 71fd91
      Bool     blockRandomised;
Packit 71fd91
      BZ_RAND_DECLS;
Packit 71fd91
Packit 71fd91
      /* the buffer for bit stream reading */
Packit 71fd91
      UInt32   bsBuff;
Packit 71fd91
      Int32    bsLive;
Packit 71fd91
Packit 71fd91
      /* misc administratium */
Packit 71fd91
      Int32    blockSize100k;
Packit 71fd91
      Bool     smallDecompress;
Packit 71fd91
      Int32    currBlockNo;
Packit 71fd91
      Int32    verbosity;
Packit 71fd91
Packit 71fd91
      /* for undoing the Burrows-Wheeler transform */
Packit 71fd91
      Int32    origPtr;
Packit 71fd91
      UInt32   tPos;
Packit 71fd91
      Int32    k0;
Packit 71fd91
      Int32    unzftab[256];
Packit 71fd91
      Int32    nblock_used;
Packit 71fd91
      Int32    cftab[257];
Packit 71fd91
      Int32    cftabCopy[257];
Packit 71fd91
Packit 71fd91
      /* for undoing the Burrows-Wheeler transform (FAST) */
Packit 71fd91
      UInt32   *tt;
Packit 71fd91
Packit 71fd91
      /* for undoing the Burrows-Wheeler transform (SMALL) */
Packit 71fd91
      UInt16   *ll16;
Packit 71fd91
      UChar    *ll4;
Packit 71fd91
Packit 71fd91
      /* stored and calculated CRCs */
Packit 71fd91
      UInt32   storedBlockCRC;
Packit 71fd91
      UInt32   storedCombinedCRC;
Packit 71fd91
      UInt32   calculatedBlockCRC;
Packit 71fd91
      UInt32   calculatedCombinedCRC;
Packit 71fd91
Packit 71fd91
      /* map of bytes used in block */
Packit 71fd91
      Int32    nInUse;
Packit 71fd91
      Bool     inUse[256];
Packit 71fd91
      Bool     inUse16[16];
Packit 71fd91
      UChar    seqToUnseq[256];
Packit 71fd91
Packit 71fd91
      /* for decoding the MTF values */
Packit 71fd91
      UChar    mtfa   [MTFA_SIZE];
Packit 71fd91
      Int32    mtfbase[256 / MTFL_SIZE];
Packit 71fd91
      UChar    selector   [BZ_MAX_SELECTORS];
Packit 71fd91
      UChar    selectorMtf[BZ_MAX_SELECTORS];
Packit 71fd91
      UChar    len  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Packit 71fd91
Packit 71fd91
      Int32    limit  [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Packit 71fd91
      Int32    base   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Packit 71fd91
      Int32    perm   [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE];
Packit 71fd91
      Int32    minLens[BZ_N_GROUPS];
Packit 71fd91
Packit 71fd91
      /* save area for scalars in the main decompress code */
Packit 71fd91
      Int32    save_i;
Packit 71fd91
      Int32    save_j;
Packit 71fd91
      Int32    save_t;
Packit 71fd91
      Int32    save_alphaSize;
Packit 71fd91
      Int32    save_nGroups;
Packit 71fd91
      Int32    save_nSelectors;
Packit 71fd91
      Int32    save_EOB;
Packit 71fd91
      Int32    save_groupNo;
Packit 71fd91
      Int32    save_groupPos;
Packit 71fd91
      Int32    save_nextSym;
Packit 71fd91
      Int32    save_nblockMAX;
Packit 71fd91
      Int32    save_nblock;
Packit 71fd91
      Int32    save_es;
Packit 71fd91
      Int32    save_N;
Packit 71fd91
      Int32    save_curr;
Packit 71fd91
      Int32    save_zt;
Packit 71fd91
      Int32    save_zn; 
Packit 71fd91
      Int32    save_zvec;
Packit 71fd91
      Int32    save_zj;
Packit 71fd91
      Int32    save_gSel;
Packit 71fd91
      Int32    save_gMinlen;
Packit 71fd91
      Int32*   save_gLimit;
Packit 71fd91
      Int32*   save_gBase;
Packit 71fd91
      Int32*   save_gPerm;
Packit 71fd91
Packit 71fd91
   }
Packit 71fd91
   DState;
Packit 71fd91
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- Macros for decompression. --*/
Packit 71fd91
Packit 71fd91
#define BZ_GET_FAST(cccc)                     \
Packit 71fd91
    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
Packit 71fd91
    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
Packit 71fd91
    s->tPos = s->tt[s->tPos];                 \
Packit 71fd91
    cccc = (UChar)(s->tPos & 0xff);           \
Packit 71fd91
    s->tPos >>= 8;
Packit 71fd91
Packit 71fd91
#define BZ_GET_FAST_C(cccc)                   \
Packit 71fd91
    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
Packit 71fd91
    if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \
Packit 71fd91
    c_tPos = c_tt[c_tPos];                    \
Packit 71fd91
    cccc = (UChar)(c_tPos & 0xff);            \
Packit 71fd91
    c_tPos >>= 8;
Packit 71fd91
Packit 71fd91
#define SET_LL4(i,n)                                          \
Packit 71fd91
   { if (((i) & 0x1) == 0)                                    \
Packit 71fd91
        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else    \
Packit 71fd91
        s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4);  \
Packit 71fd91
   }
Packit 71fd91
Packit 71fd91
#define GET_LL4(i)                             \
Packit 71fd91
   ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF)
Packit 71fd91
Packit 71fd91
#define SET_LL(i,n)                          \
Packit 71fd91
   { s->ll16[i] = (UInt16)(n & 0x0000ffff);  \
Packit 71fd91
     SET_LL4(i, n >> 16);                    \
Packit 71fd91
   }
Packit 71fd91
Packit 71fd91
#define GET_LL(i) \
Packit 71fd91
   (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16))
Packit 71fd91
Packit 71fd91
#define BZ_GET_SMALL(cccc)                            \
Packit 71fd91
    /* c_tPos is unsigned, hence test < 0 is pointless. */ \
Packit 71fd91
    if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \
Packit 71fd91
    cccc = BZ2_indexIntoF ( s->tPos, s->cftab );    \
Packit 71fd91
    s->tPos = GET_LL(s->tPos);
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- externs for decompression. --*/
Packit 71fd91
Packit 71fd91
extern Int32 
Packit 71fd91
BZ2_indexIntoF ( Int32, Int32* );
Packit 71fd91
Packit 71fd91
extern Int32 
Packit 71fd91
BZ2_decompress ( DState* );
Packit 71fd91
Packit 71fd91
extern void 
Packit 71fd91
BZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*,
Packit 71fd91
                           Int32,  Int32, Int32 );
Packit 71fd91
Packit 71fd91
Packit 71fd91
#endif
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/
Packit 71fd91
Packit 71fd91
#ifdef BZ_NO_STDIO
Packit 71fd91
#ifndef NULL
Packit 71fd91
#define NULL 0
Packit 71fd91
#endif
Packit 71fd91
#endif
Packit 71fd91
Packit 71fd91
Packit 71fd91
/*-------------------------------------------------------------*/
Packit 71fd91
/*--- end                                   bzlib_private.h ---*/
Packit 71fd91
/*-------------------------------------------------------------*/