1cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 2cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-------------------------------------------------------------*/ 3cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*--- Private header file for the library. ---*/ 4cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*--- bzlib_private.h ---*/ 5cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-------------------------------------------------------------*/ 6cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 7cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/* ------------------------------------------------------------------ 8cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project This file is part of bzip2/libbzip2, a program and library for 9cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project lossless, block-sorting data compression. 10cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 11172b266ed7845eac2edc7e7f8a72371356a9a277Nick Kralevich bzip2/libbzip2 version 1.0.6 of 6 September 2010 12172b266ed7845eac2edc7e7f8a72371356a9a277Nick Kralevich Copyright (C) 1996-2010 Julian Seward <jseward@bzip.org> 13cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 14cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Please read the WARNING, DISCLAIMER and PATENTS sections in the 15cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project README file. 16cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 17cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project This program is released under the terms of the license contained 18cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project in the file LICENSE. 19cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project ------------------------------------------------------------------ */ 20cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 21cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 22cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#ifndef _BZLIB_PRIVATE_H 23cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define _BZLIB_PRIVATE_H 24cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 25cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#include <stdlib.h> 26cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 27cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#ifndef BZ_NO_STDIO 28cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#include <stdio.h> 29cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#include <ctype.h> 30cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#include <string.h> 31cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#endif 32cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 33cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#include "bzlib.h" 34cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 35cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 36cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 37cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- General stuff. --*/ 38cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 39172b266ed7845eac2edc7e7f8a72371356a9a277Nick Kralevich#define BZ_VERSION "1.0.6, 6-Sept-2010" 40cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 41cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef char Char; 42cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef unsigned char Bool; 43cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef unsigned char UChar; 44cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef int Int32; 45cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef unsigned int UInt32; 46cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef short Int16; 47cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef unsigned short UInt16; 48cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 49cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define True ((Bool)1) 50cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define False ((Bool)0) 51cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 52cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#ifndef __GNUC__ 53cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define __inline__ /* */ 54cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#endif 55cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 56cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#ifndef BZ_NO_STDIO 57cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 58cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern void BZ2_bz__AssertH__fail ( int errcode ); 59cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define AssertH(cond,errcode) \ 60cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project { if (!(cond)) BZ2_bz__AssertH__fail ( errcode ); } 61cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 62cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#if BZ_DEBUG 63cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define AssertD(cond,msg) \ 64cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project { if (!(cond)) { \ 65cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project fprintf ( stderr, \ 66cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project "\n\nlibbzip2(debug build): internal error\n\t%s\n", msg );\ 67cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project exit(1); \ 68cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project }} 69cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#else 70cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define AssertD(cond,msg) /* */ 71cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#endif 72cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 73cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf0(zf) \ 74cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project fprintf(stderr,zf) 75cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf1(zf,za1) \ 76cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project fprintf(stderr,zf,za1) 77cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf2(zf,za1,za2) \ 78cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project fprintf(stderr,zf,za1,za2) 79cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf3(zf,za1,za2,za3) \ 80cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project fprintf(stderr,zf,za1,za2,za3) 81cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf4(zf,za1,za2,za3,za4) \ 82cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project fprintf(stderr,zf,za1,za2,za3,za4) 83cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf5(zf,za1,za2,za3,za4,za5) \ 84cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project fprintf(stderr,zf,za1,za2,za3,za4,za5) 85cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 86cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#else 87cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 88cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern void bz_internal_error ( int errcode ); 89cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define AssertH(cond,errcode) \ 90cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project { if (!(cond)) bz_internal_error ( errcode ); } 91cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define AssertD(cond,msg) do { } while (0) 92cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf0(zf) do { } while (0) 93cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf1(zf,za1) do { } while (0) 94cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf2(zf,za1,za2) do { } while (0) 95cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf3(zf,za1,za2,za3) do { } while (0) 96cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf4(zf,za1,za2,za3,za4) do { } while (0) 97cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define VPrintf5(zf,za1,za2,za3,za4,za5) do { } while (0) 98cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 99cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#endif 100cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 101cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 102cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZALLOC(nnn) (strm->bzalloc)(strm->opaque,(nnn),1) 103cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZFREE(ppp) (strm->bzfree)(strm->opaque,(ppp)) 104cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 105cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 106cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- Header bytes. --*/ 107cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 108cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_HDR_B 0x42 /* 'B' */ 109cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_HDR_Z 0x5a /* 'Z' */ 110cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_HDR_h 0x68 /* 'h' */ 111cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_HDR_0 0x30 /* '0' */ 112cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 113cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- Constants for the back end. --*/ 114cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 115cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_MAX_ALPHA_SIZE 258 116cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_MAX_CODE_LEN 23 117cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 118cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_RUNA 0 119cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_RUNB 1 120cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 121cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_N_GROUPS 6 122cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_G_SIZE 50 123cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_N_ITERS 4 124cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 125cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_MAX_SELECTORS (2 + (900000 / BZ_G_SIZE)) 126cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 127cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 128cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 129cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- Stuff for randomising repetitive blocks. --*/ 130cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 131cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern Int32 BZ2_rNums[512]; 132cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 133cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_RAND_DECLS \ 134cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 rNToGo; \ 135cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 rTPos \ 136cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 137cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_RAND_INIT_MASK \ 138cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->rNToGo = 0; \ 139cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->rTPos = 0 \ 140cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 141cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_RAND_MASK ((s->rNToGo == 1) ? 1 : 0) 142cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 143cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_RAND_UPD_MASK \ 144cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project if (s->rNToGo == 0) { \ 145cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->rNToGo = BZ2_rNums[s->rTPos]; \ 146cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->rTPos++; \ 147cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project if (s->rTPos == 512) s->rTPos = 0; \ 148cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project } \ 149cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->rNToGo--; 150cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 151cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 152cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 153cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- Stuff for doing CRCs. --*/ 154cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 155cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern UInt32 BZ2_crc32Table[256]; 156cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 157cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_INITIALISE_CRC(crcVar) \ 158cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project{ \ 159cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project crcVar = 0xffffffffL; \ 160cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project} 161cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 162cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_FINALISE_CRC(crcVar) \ 163cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project{ \ 164cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project crcVar = ~(crcVar); \ 165cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project} 166cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 167cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_UPDATE_CRC(crcVar,cha) \ 168cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project{ \ 169cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project crcVar = (crcVar << 8) ^ \ 170cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project BZ2_crc32Table[(crcVar >> 24) ^ \ 171cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project ((UChar)cha)]; \ 172cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project} 173cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 174cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 175cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 176cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- States and modes for compression. --*/ 177cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 178cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_M_IDLE 1 179cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_M_RUNNING 2 180cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_M_FLUSHING 3 181cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_M_FINISHING 4 182cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 183cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_S_OUTPUT 1 184cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_S_INPUT 2 185cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 186cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_N_RADIX 2 187cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_N_QSORT 12 188cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_N_SHELL 18 189cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_N_OVERSHOOT (BZ_N_RADIX + BZ_N_QSORT + BZ_N_SHELL + 2) 190cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 191cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 192cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 193cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 194cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- Structure holding all the compression-side stuff. --*/ 195cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 196cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef 197cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project struct { 198cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* pointer back to the struct bz_stream */ 199cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project bz_stream* strm; 200cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 201cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* mode this stream is in, and whether inputting */ 202cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* or outputting data */ 203cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 mode; 204cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 state; 205cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 206cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* remembers avail_in when flush/finish requested */ 207cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 avail_in_expect; 208cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 209cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* for doing the block sorting */ 210cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32* arr1; 211cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32* arr2; 212cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32* ftab; 213cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 origPtr; 214cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 215cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* aliases for arr1 and arr2 */ 216cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32* ptr; 217cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar* block; 218cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt16* mtfv; 219cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar* zbits; 220cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 221cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* for deciding when to use the fallback sorting algorithm */ 222cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 workFactor; 223cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 224cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* run-length-encoding of the input */ 225cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 state_in_ch; 226cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 state_in_len; 227cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project BZ_RAND_DECLS; 228cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 229cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* input and output limits and current posns */ 230cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 nblock; 231cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 nblockMAX; 232cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 numZ; 233cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 state_out_pos; 234cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 235cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* map of bytes used in block */ 236cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 nInUse; 237cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Bool inUse[256]; 238cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar unseqToSeq[256]; 239cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 240cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* the buffer for bit stream creation */ 241cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 bsBuff; 242cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 bsLive; 243cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 244cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* block and combined CRCs */ 245cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 blockCRC; 246cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 combinedCRC; 247cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 248cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* misc administratium */ 249cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 verbosity; 250cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 blockNo; 251cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 blockSize100k; 252cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 253cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* stuff for coding the MTF values */ 254cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 nMTF; 255cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 mtfFreq [BZ_MAX_ALPHA_SIZE]; 256cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar selector [BZ_MAX_SELECTORS]; 257cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar selectorMtf[BZ_MAX_SELECTORS]; 258cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 259cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; 260cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 code [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; 261cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 rfreq [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; 262cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* second dimension: only 3 needed; 4 makes index calculations faster */ 263cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 len_pack[BZ_MAX_ALPHA_SIZE][4]; 264cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 265cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project } 266cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project EState; 267cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 268cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 269cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 270cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- externs for compression. --*/ 271cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 272cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern void 273cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectBZ2_blockSort ( EState* ); 274cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 275cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern void 276cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectBZ2_compressBlock ( EState*, Bool ); 277cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 278cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern void 279cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectBZ2_bsInitWrite ( EState* ); 280cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 281cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern void 282cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectBZ2_hbAssignCodes ( Int32*, UChar*, Int32, Int32, Int32 ); 283cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 284cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern void 285cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectBZ2_hbMakeCodeLengths ( UChar*, Int32*, Int32, Int32 ); 286cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 287cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 288cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 289cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- states for decompression. --*/ 290cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 291cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_IDLE 1 292cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_OUTPUT 2 293cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 294cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MAGIC_1 10 295cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MAGIC_2 11 296cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MAGIC_3 12 297cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MAGIC_4 13 298cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BLKHDR_1 14 299cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BLKHDR_2 15 300cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BLKHDR_3 16 301cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BLKHDR_4 17 302cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BLKHDR_5 18 303cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BLKHDR_6 19 304cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BCRC_1 20 305cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BCRC_2 21 306cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BCRC_3 22 307cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_BCRC_4 23 308cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_RANDBIT 24 309cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_ORIGPTR_1 25 310cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_ORIGPTR_2 26 311cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_ORIGPTR_3 27 312cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MAPPING_1 28 313cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MAPPING_2 29 314cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_SELECTOR_1 30 315cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_SELECTOR_2 31 316cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_SELECTOR_3 32 317cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_CODING_1 33 318cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_CODING_2 34 319cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_CODING_3 35 320cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MTF_1 36 321cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MTF_2 37 322cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MTF_3 38 323cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MTF_4 39 324cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MTF_5 40 325cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_MTF_6 41 326cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_ENDHDR_2 42 327cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_ENDHDR_3 43 328cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_ENDHDR_4 44 329cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_ENDHDR_5 45 330cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_ENDHDR_6 46 331cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_CCRC_1 47 332cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_CCRC_2 48 333cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_CCRC_3 49 334cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_X_CCRC_4 50 335cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 336cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 337cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 338cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- Constants for the fast MTF decoder. --*/ 339cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 340cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define MTFA_SIZE 4096 341cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define MTFL_SIZE 16 342cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 343cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 344cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 345cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- Structure holding all the decompression-side stuff. --*/ 346cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 347cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projecttypedef 348cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project struct { 349cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* pointer back to the struct bz_stream */ 350cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project bz_stream* strm; 351cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 352cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* state indicator for this stream */ 353cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 state; 354cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 355cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* for doing the final run-length decoding */ 356cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar state_out_ch; 357cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 state_out_len; 358cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Bool blockRandomised; 359cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project BZ_RAND_DECLS; 360cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 361cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* the buffer for bit stream reading */ 362cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 bsBuff; 363cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 bsLive; 364cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 365cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* misc administratium */ 366cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 blockSize100k; 367cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Bool smallDecompress; 368cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 currBlockNo; 369cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 verbosity; 370cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 371cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* for undoing the Burrows-Wheeler transform */ 372cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 origPtr; 373cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 tPos; 374cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 k0; 375cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 unzftab[256]; 376cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 nblock_used; 377cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 cftab[257]; 378cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 cftabCopy[257]; 379cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 380cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* for undoing the Burrows-Wheeler transform (FAST) */ 381cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 *tt; 382cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 383cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* for undoing the Burrows-Wheeler transform (SMALL) */ 384cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt16 *ll16; 385cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar *ll4; 386cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 387cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* stored and calculated CRCs */ 388cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 storedBlockCRC; 389cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 storedCombinedCRC; 390cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 calculatedBlockCRC; 391cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UInt32 calculatedCombinedCRC; 392cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 393cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* map of bytes used in block */ 394cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 nInUse; 395cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Bool inUse[256]; 396cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Bool inUse16[16]; 397cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar seqToUnseq[256]; 398cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 399cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* for decoding the MTF values */ 400cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar mtfa [MTFA_SIZE]; 401cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 mtfbase[256 / MTFL_SIZE]; 402cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar selector [BZ_MAX_SELECTORS]; 403cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar selectorMtf[BZ_MAX_SELECTORS]; 404cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project UChar len [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; 405cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 406cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 limit [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; 407cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 base [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; 408cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 perm [BZ_N_GROUPS][BZ_MAX_ALPHA_SIZE]; 409cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 minLens[BZ_N_GROUPS]; 410cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 411cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* save area for scalars in the main decompress code */ 412cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_i; 413cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_j; 414cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_t; 415cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_alphaSize; 416cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_nGroups; 417cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_nSelectors; 418cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_EOB; 419cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_groupNo; 420cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_groupPos; 421cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_nextSym; 422cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_nblockMAX; 423cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_nblock; 424cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_es; 425cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_N; 426cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_curr; 427cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_zt; 428cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_zn; 429cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_zvec; 430cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_zj; 431cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_gSel; 432cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32 save_gMinlen; 433cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32* save_gLimit; 434cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32* save_gBase; 435cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32* save_gPerm; 436cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 437cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project } 438cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project DState; 439cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 440cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 441cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 442cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- Macros for decompression. --*/ 443cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 444cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_GET_FAST(cccc) \ 445cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* c_tPos is unsigned, hence test < 0 is pointless. */ \ 446cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ 447cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->tPos = s->tt[s->tPos]; \ 448cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project cccc = (UChar)(s->tPos & 0xff); \ 449cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->tPos >>= 8; 450cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 451cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_GET_FAST_C(cccc) \ 452cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* c_tPos is unsigned, hence test < 0 is pointless. */ \ 453cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project if (c_tPos >= (UInt32)100000 * (UInt32)ro_blockSize100k) return True; \ 454cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project c_tPos = c_tt[c_tPos]; \ 455cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project cccc = (UChar)(c_tPos & 0xff); \ 456cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project c_tPos >>= 8; 457cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 458cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define SET_LL4(i,n) \ 459cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project { if (((i) & 0x1) == 0) \ 460cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0xf0) | (n); else \ 461cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->ll4[(i) >> 1] = (s->ll4[(i) >> 1] & 0x0f) | ((n) << 4); \ 462cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project } 463cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 464cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define GET_LL4(i) \ 465cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project ((((UInt32)(s->ll4[(i) >> 1])) >> (((i) << 2) & 0x4)) & 0xF) 466cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 467cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define SET_LL(i,n) \ 468cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project { s->ll16[i] = (UInt16)(n & 0x0000ffff); \ 469cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project SET_LL4(i, n >> 16); \ 470cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project } 471cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 472cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define GET_LL(i) \ 473cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project (((UInt32)s->ll16[i]) | (GET_LL4(i) << 16)) 474cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 475cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define BZ_GET_SMALL(cccc) \ 476cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project /* c_tPos is unsigned, hence test < 0 is pointless. */ \ 477cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project if (s->tPos >= (UInt32)100000 * (UInt32)s->blockSize100k) return True; \ 478cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project cccc = BZ2_indexIntoF ( s->tPos, s->cftab ); \ 479cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project s->tPos = GET_LL(s->tPos); 480cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 481cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 482cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- externs for decompression. --*/ 483cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 484cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern Int32 485cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectBZ2_indexIntoF ( Int32, Int32* ); 486cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 487cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern Int32 488cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectBZ2_decompress ( DState* ); 489cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 490cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Projectextern void 491cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source ProjectBZ2_hbCreateDecodeTables ( Int32*, Int32*, Int32*, UChar*, 492cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project Int32, Int32, Int32 ); 493cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 494cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 495cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#endif 496cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 497cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 498cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-- BZ_NO_STDIO seems to make NULL disappear on some platforms. --*/ 499cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 500cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#ifdef BZ_NO_STDIO 501cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#ifndef NULL 502cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#define NULL 0 503cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#endif 504cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project#endif 505cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 506cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project 507cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-------------------------------------------------------------*/ 508cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*--- end bzlib_private.h ---*/ 509cfb3b2780016b4e9ab4849e22d9c3acbaf535248The Android Open Source Project/*-------------------------------------------------------------*/ 510