⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 inflatetables.h

📁 基于东南大学开发的SEP3203的ARM7中的所有驱动
💻 H
📖 第 1 页 / 共 2 页
字号:
/*
 * Copyright (c) 1999-2001 Sun Microsystems, Inc. All Rights Reserved.
 *
 * This software is the confidential and proprietary information of Sun
 * Microsystems, Inc. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Sun.
 *
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
 * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
 * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
 * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
 * THIS SOFTWARE OR ITS DERIVATIVES.
 *
 */

/*=========================================================================
 * SYSTEM:    KVM
 * SUBSYSTEM: JAR file reader / inflater.
 * FILE:      inflatetables.h
 * OVERVIEW:  Public header file for the data tables needed by
 *            the JAR file reader / inflater.
 * AUTHOR:    Ioi Lam 
 *            Tasneem Sayeed
 *=========================================================================*/

#ifndef _KJARTABLES_H_
#define _KJARTABLES_H_

static const unsigned char ll_extra_bits[] = {
    /* 257 */   0,   /* 3       */
    /* 258 */   0,   /* 4       */
    /* 259 */   0,   /* 5       */
    /* 260 */   0,   /* 6       */
    /* 261 */   0,   /* 7       */
    /* 262 */   0,   /* 8       */
    /* 263 */   0,   /* 9       */
    /* 264 */   0,   /* 10      */
    /* 265 */   1,   /* 11,12   */
    /* 266 */   1,   /* 13,14   */

    /* 267 */   1,   /* 15,16   */
    /* 268 */   1,   /* 17,18   */
    /* 269 */   2,   /* 19-22   */
    /* 270 */   2,   /* 23-26   */
    /* 271 */   2,   /* 27-30   */
    /* 272 */   2,   /* 31-34   */
    /* 273 */   3,   /* 35-42   */
    /* 274 */   3,   /* 43-50   */
    /* 275 */   3,   /* 51-58   */
    /* 276 */   3,   /* 59-66   */

    /* 277 */   4,   /* 67-82   */
    /* 278 */   4,   /* 83-98   */
    /* 279 */   4,   /* 99-114  */
    /* 280 */   4,   /* 115-130 */
    /* 281 */   5,   /* 131-162 */
    /* 282 */   5,   /* 163-194 */
    /* 283 */   5,   /* 195-226 */
    /* 284 */   5,   /* 227-257 */
    /* 285 */   0,   /* 258     */
};

#define MAX_ZIP_EXTRA_LENGTH_BITS 5

static const unsigned short ll_length_base[] = {
    /* 257   0 */   3,
    /* 258   0 */   4,
    /* 259   0 */   5,
    /* 260   0 */   6,
    /* 261   0 */   7,
    /* 262   0 */   8,
    /* 263   0 */   9,
    /* 264   0 */   10,
    /* 265   1 */   11,  /* - 12 */ 
    /* 266   1 */   13,  /* - 14 */ 

    /* 267   1 */   15,  /* - 16 */ 
    /* 268   1 */   17,  /* - 18 */ 
    /* 269   2 */   19,  /* - 22 */ 
    /* 270   2 */   23,  /* - 26 */ 
    /* 271   2 */   27,  /* - 30 */ 
    /* 272   2 */   31,  /* - 34 */ 
    /* 273   3 */   35,  /* - 42 */ 
    /* 274   3 */   43,  /* - 50 */ 
    /* 275   3 */   51,  /* - 58 */ 
    /* 276   3 */   59,  /* - 66 */ 

    /* 277   4 */   67,  /* - 82 */ 
    /* 278   4 */   83,  /* - 98 */ 
    /* 279   4 */   99,  /* - 114 */ 
    /* 280   4 */   115, /* - 130 */ 
    /* 281   5 */   131, /* - 162 */ 
    /* 282   5 */   163, /* - 194 */ 
    /* 283   5 */   195, /* - 226 */ 
    /* 284   5 */   227, /* - 257 */ 
    /* 285   0 */   258
};


static const unsigned char dist_extra_bits[] = {
    /*  0 */   0,    /* 1            */
    /*  1 */   0,    /* 2            */
    /*  2 */   0,    /* 3            */
    /*  3 */   0,    /* 4            */
    /*  4 */   1,    /* 5,6          */
    /*  5 */   1,    /* 7,8          */
    /*  6 */   2,    /* 9-12         */
    /*  7 */   2,    /* 13-16        */
    /*  8 */   3,    /* 17-24        */
    /*  9 */   3,    /* 25-32        */

    /* 10 */   4,    /* 33-48        */
    /* 11 */   4,    /* 49-64        */
    /* 12 */   5,    /* 65-96        */
    /* 13 */   5,    /* 97-128       */
    /* 14 */   6,    /* 129-192      */
    /* 15 */   6,    /* 193-256      */
    /* 16 */   7,    /* 257-384      */
    /* 17 */   7,    /* 385-512      */
    /* 18 */   8,    /* 513-768      */
    /* 19 */   8,    /* 769-1024     */

    /* 20 */   9,    /* 1025-1536    */
    /* 21 */   9,    /* 1537-2048    */
    /* 22 */   10,   /* 2049-3072    */
    /* 23 */   10,   /* 3073-4096    */
    /* 24 */   11,   /* 4097-6144    */
    /* 25 */   11,   /* 6145-8192    */
    /* 26 */   12,   /* 8193-12288   */
    /* 27 */   12,   /* 12289-16384  */
    /* 28 */   13,   /* 16385-24576  */
    /* 29 */   13,   /* 24577-32768  */
};

#define MAX_ZIP_EXTRA_DISTANCE_BITS 13
#define MAX_ZIP_DISTANCE_CODE 29

static const unsigned int dist_base[] = {
    /*  0   0  */   1,
    /*  1   0  */   2,
    /*  2   0  */   3,
    /*  3   0  */   4,
    /*  4   1  */   5,      /* -6     */
    /*  5   1  */   7,      /* -8     */
    /*  6   2  */   9,      /* -12    */
    /*  7   2  */   13,     /* -16    */
    /*  8   3  */   17,     /* -24    */
    /*  9   3  */   25,     /* -32    */

    /* 10   4  */   33,     /* -48    */
    /* 11   4  */   49,     /* -64    */
    /* 12   5  */   65,     /* -96    */
    /* 13   5  */   97,     /* -128   */
    /* 14   6  */   129,    /* -192   */
    /* 15   6  */   193,    /* -256   */
    /* 16   7  */   257,    /* -384   */
    /* 17   7  */   385,    /* -512   */
    /* 18   8  */   513,    /* -768   */
    /* 19   8  */   769,    /* -1024  */
    /* 20   9  */   1025,   /* -1536  */
    /* 21   9  */   1537,   /* -2048  */
    /* 22   10 */   2049,   /* -3072  */
    /* 23   10 */   3073,   /* -4096  */
    /* 24   11 */   4097,   /* -6144  */
    /* 25   11 */   6145,   /* -8192  */
    /* 26   12 */   8193,   /* -12288 */
    /* 27   12 */   12289,  /* -16384 */
    /* 28   13 */   16385,  /* -24576 */
    /* 29   13 */   24577,  /* -32768 */
};


/*
 * The order in which the code lengths of the Code Length Alphabet is
 * given. See section 3.2.7 of RFC 1951.
 */

static const char ccode_idx[] = {
    16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15,
};

/* A table for reversing 5 bits in a binary number */

static const unsigned char reverse5[] = {
    0x0, 0x10, 0x8, 0x18, 0x4, 0x14, 0xc, 0x1c,
    0x2, 0x12, 0xa, 0x1a, 0x6, 0x16, 0xe, 0x1e,
    0x1, 0x11, 0x9, 0x19, 0x5, 0x15, 0xd, 0x1d,
    0x3, 0x13, 0xb, 0x1b, 0x7, 0x17, 0xf, 0x1f
};

#define REVERSE_5BITS(code) reverse5[code]
#define REVERSE_9BITS(code) \
      ((reverse5[((code) & 0x1F)] << 4) | reverse5[(code) >> 4])
#define REVERSE_15BITS(code) \
      (  (reverse5[code & 0x1F] << 10) | (reverse5[((code) >> 5) & 0x1F] << 5) \
       | (reverse5[code >> 10]) )


#define HUFFMAN_ENTRY(char, bits) ((char << 4) + bits)


#ifdef USE_FIXED_HUFFMAN_CODE_TABLES

/* The following tables can be removed from releases
 * that care for size rather that speed. 
 *
 * "Fixed Huffman" can use the following tables, rather than doing the
 * complicated calculations that it does.
 */

static const struct HuffmanCodeTable fixedHuffmanCodeTable = { 
    { 
        7,            /* min code length */
        9,            /* max code length */
    }, 
    { 
        HUFFMAN_ENTRY(0x100, 7), 
        HUFFMAN_ENTRY('P',   8), 
        HUFFMAN_ENTRY(0x010, 8), 
        HUFFMAN_ENTRY(0x118, 8), 
        HUFFMAN_ENTRY(0x110, 7), 
        HUFFMAN_ENTRY('p',   8), 
        HUFFMAN_ENTRY('0',   8), 
        HUFFMAN_ENTRY(0x0c0, 9), 
        HUFFMAN_ENTRY(0x108, 7), 
        HUFFMAN_ENTRY('`',   8), 
        HUFFMAN_ENTRY(' ',   8), 
        HUFFMAN_ENTRY(0x0a0, 9), 
        HUFFMAN_ENTRY(0x000, 8), 
        HUFFMAN_ENTRY(0x080, 8), 
        HUFFMAN_ENTRY('@',   8), 
        HUFFMAN_ENTRY(0x0e0, 9), 
        HUFFMAN_ENTRY(0x104, 7), 
        HUFFMAN_ENTRY('X',   8), 
        HUFFMAN_ENTRY(0x018, 8), 
        HUFFMAN_ENTRY(0x090, 9), 
        HUFFMAN_ENTRY(0x114, 7), 
        HUFFMAN_ENTRY('x',   8), 
        HUFFMAN_ENTRY('8',   8), 
        HUFFMAN_ENTRY(0x0d0, 9), 
        HUFFMAN_ENTRY(0x10c, 7), 
        HUFFMAN_ENTRY('h',   8), 
        HUFFMAN_ENTRY('(',   8), 
        HUFFMAN_ENTRY(0x0b0, 9), 
        HUFFMAN_ENTRY(0x008, 8), 
        HUFFMAN_ENTRY(0x088, 8), 
        HUFFMAN_ENTRY('H',   8), 
        HUFFMAN_ENTRY(0x0f0, 9), 
        HUFFMAN_ENTRY(0x102, 7), 
        HUFFMAN_ENTRY('T',   8), 
        HUFFMAN_ENTRY(0x014, 8), 
        HUFFMAN_ENTRY(0x11c, 8), 
        HUFFMAN_ENTRY(0x112, 7), 
        HUFFMAN_ENTRY('t',   8), 
        HUFFMAN_ENTRY('4',   8), 
        HUFFMAN_ENTRY(0x0c8, 9), 
        HUFFMAN_ENTRY(0x10a, 7), 
        HUFFMAN_ENTRY('d',   8), 
        HUFFMAN_ENTRY('$',   8), 
        HUFFMAN_ENTRY(0x0a8, 9), 
        HUFFMAN_ENTRY(0x004, 8), 
        HUFFMAN_ENTRY(0x084, 8), 
        HUFFMAN_ENTRY('D',   8), 
        HUFFMAN_ENTRY(0x0e8, 9), 
        HUFFMAN_ENTRY(0x106, 7), 
        HUFFMAN_ENTRY('\\',  8), 
        HUFFMAN_ENTRY(0x01c, 8), 
        HUFFMAN_ENTRY(0x098, 9), 
        HUFFMAN_ENTRY(0x116, 7), 
        HUFFMAN_ENTRY('|',   8), 
        HUFFMAN_ENTRY('<',   8), 
        HUFFMAN_ENTRY(0x0d8, 9), 
        HUFFMAN_ENTRY(0x10e, 7), 
        HUFFMAN_ENTRY('l',   8), 
        HUFFMAN_ENTRY(',',   8), 
        HUFFMAN_ENTRY(0x0b8, 9), 
        HUFFMAN_ENTRY(0x00c, 8), 
        HUFFMAN_ENTRY(0x08c, 8), 
        HUFFMAN_ENTRY('L',   8), 
        HUFFMAN_ENTRY(0x0f8, 9), 
        HUFFMAN_ENTRY(0x101, 7), 
        HUFFMAN_ENTRY('R',   8), 
        HUFFMAN_ENTRY(0x012, 8), 
        HUFFMAN_ENTRY(0x11a, 8), 
        HUFFMAN_ENTRY(0x111, 7), 
        HUFFMAN_ENTRY('r',   8), 
        HUFFMAN_ENTRY('2',   8), 
        HUFFMAN_ENTRY(0x0c4, 9), 
        HUFFMAN_ENTRY(0x109, 7), 
        HUFFMAN_ENTRY('b',   8), 
        HUFFMAN_ENTRY('"',   8), 
        HUFFMAN_ENTRY(0x0a4, 9), 
        HUFFMAN_ENTRY(0x002, 8), 
        HUFFMAN_ENTRY(0x082, 8), 
        HUFFMAN_ENTRY('B',   8), 
        HUFFMAN_ENTRY(0x0e4, 9), 
        HUFFMAN_ENTRY(0x105, 7), 
        HUFFMAN_ENTRY('Z',   8), 
        HUFFMAN_ENTRY(0x01a, 8), 
        HUFFMAN_ENTRY(0x094, 9), 
        HUFFMAN_ENTRY(0x115, 7), 
        HUFFMAN_ENTRY('z',   8), 
        HUFFMAN_ENTRY(':',   8), 
        HUFFMAN_ENTRY(0x0d4, 9), 
        HUFFMAN_ENTRY(0x10d, 7), 
        HUFFMAN_ENTRY('j',   8), 
        HUFFMAN_ENTRY('*',   8), 
        HUFFMAN_ENTRY(0x0b4, 9), 
        HUFFMAN_ENTRY(0x00a, 8), 
        HUFFMAN_ENTRY(0x08a, 8), 
        HUFFMAN_ENTRY('J',   8), 
        HUFFMAN_ENTRY(0x0f4, 9), 
        HUFFMAN_ENTRY(0x103, 7), 
        HUFFMAN_ENTRY('V',   8), 
        HUFFMAN_ENTRY(0x016, 8), 
        HUFFMAN_ENTRY(0x11e, 8), 
        HUFFMAN_ENTRY(0x113, 7), 
        HUFFMAN_ENTRY('v',   8), 
        HUFFMAN_ENTRY('6',   8), 
        HUFFMAN_ENTRY(0x0cc, 9), 
        HUFFMAN_ENTRY(0x10b, 7), 
        HUFFMAN_ENTRY('f',   8), 
        HUFFMAN_ENTRY('&',   8), 
        HUFFMAN_ENTRY(0x0ac, 9), 
        HUFFMAN_ENTRY(0x006, 8), 
        HUFFMAN_ENTRY(0x086, 8), 
        HUFFMAN_ENTRY('F',   8), 
        HUFFMAN_ENTRY(0x0ec, 9), 
        HUFFMAN_ENTRY(0x107, 7), 
        HUFFMAN_ENTRY('^',   8), 
        HUFFMAN_ENTRY(0x01e, 8), 
        HUFFMAN_ENTRY(0x09c, 9), 
        HUFFMAN_ENTRY(0x117, 7), 
        HUFFMAN_ENTRY('~',   8), 
        HUFFMAN_ENTRY('>',   8), 
        HUFFMAN_ENTRY(0x0dc, 9), 
        HUFFMAN_ENTRY(0x10f, 7), 
        HUFFMAN_ENTRY('n',   8), 
        HUFFMAN_ENTRY('.',   8), 
        HUFFMAN_ENTRY(0x0bc, 9), 
        HUFFMAN_ENTRY(0x00e, 8), 
        HUFFMAN_ENTRY(0x08e, 8), 
        HUFFMAN_ENTRY('N',   8), 
        HUFFMAN_ENTRY(0x0fc, 9), 
        HUFFMAN_ENTRY(0x100, 7), 
        HUFFMAN_ENTRY('Q',   8), 
        HUFFMAN_ENTRY(0x011, 8), 
        HUFFMAN_ENTRY(0x119, 8), 
        HUFFMAN_ENTRY(0x110, 7), 
        HUFFMAN_ENTRY('q',   8), 
        HUFFMAN_ENTRY('1',   8), 
        HUFFMAN_ENTRY(0x0c2, 9), 
        HUFFMAN_ENTRY(0x108, 7), 
        HUFFMAN_ENTRY('a',   8), 
        HUFFMAN_ENTRY('!',   8), 
        HUFFMAN_ENTRY(0x0a2, 9), 
        HUFFMAN_ENTRY(0x001, 8), 
        HUFFMAN_ENTRY(0x081, 8), 
        HUFFMAN_ENTRY('A',   8), 
        HUFFMAN_ENTRY(0x0e2, 9), 
        HUFFMAN_ENTRY(0x104, 7), 
        HUFFMAN_ENTRY('Y',   8), 
        HUFFMAN_ENTRY(0x019, 8), 
        HUFFMAN_ENTRY(0x092, 9), 
        HUFFMAN_ENTRY(0x114, 7), 
        HUFFMAN_ENTRY('y',   8), 
        HUFFMAN_ENTRY('9',   8), 
        HUFFMAN_ENTRY(0x0d2, 9), 
        HUFFMAN_ENTRY(0x10c, 7), 
        HUFFMAN_ENTRY('i',   8), 
        HUFFMAN_ENTRY(')',   8), 
        HUFFMAN_ENTRY(0x0b2, 9), 
        HUFFMAN_ENTRY(0x009, 8), 
        HUFFMAN_ENTRY(0x089, 8), 
        HUFFMAN_ENTRY('I',   8), 
        HUFFMAN_ENTRY(0x0f2, 9), 
        HUFFMAN_ENTRY(0x102, 7), 
        HUFFMAN_ENTRY('U',   8), 
        HUFFMAN_ENTRY(0x015, 8), 
        HUFFMAN_ENTRY(0x11d, 8), 
        HUFFMAN_ENTRY(0x112, 7), 
        HUFFMAN_ENTRY('u',   8), 
        HUFFMAN_ENTRY('5',   8), 
        HUFFMAN_ENTRY(0x0ca, 9), 
        HUFFMAN_ENTRY(0x10a, 7), 
        HUFFMAN_ENTRY('e',   8), 
        HUFFMAN_ENTRY('%',   8), 
        HUFFMAN_ENTRY(0x0aa, 9), 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -