亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? inftrees.c

?? ocx 代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* inftrees.c -- generate Huffman trees for efficient decoding
 * Copyright (C) 1995-1996 Mark Adler
 * For conditions of distribution and use, see copyright notice in zlib.h 
 */

#include "zutil.h"
#include "inftrees.h"

char inflate_copyright[] = " inflate 1.0.4 Copyright 1995-1996 Mark Adler ";
/*
  If you use the zlib library in a product, an acknowledgment is welcome
  in the documentation of your product. If for some reason you cannot
  include such an acknowledgment, I would appreciate that you keep this
  copyright string in the executable of your product.
 */
struct internal_state  {int dummy;}; /* for buggy compilers */

/* simplify the use of the inflate_huft type with some defines */
#define base more.Base
#define next more.Next
#define exop word.what.Exop
#define bits word.what.Bits


local int huft_build OF((
    uIntf *,            /* code lengths in bits */
    uInt,               /* number of codes */
    uInt,               /* number of "simple" codes */
    const uIntf *,      /* list of base values for non-simple codes */
    const uIntf *,      /* list of extra bits for non-simple codes */
    inflate_huft * FAR*,/* result: starting table */
    uIntf *,            /* maximum lookup bits (returns actual) */
    z_streamp ));       /* for zalloc function */

local voidpf falloc OF((
    voidpf,             /* opaque pointer (not used) */
    uInt,               /* number of items */
    uInt));             /* size of item */

/* Tables for deflate from PKZIP's appnote.txt. */
local const uInt cplens[31] = { /* Copy lengths for literal codes 257..285 */
        3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
        35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
        /* see note #13 above about 258 */
local const uInt cplext[31] = { /* Extra bits for literal codes 257..285 */
        0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
        3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112}; /* 112==invalid */
local const uInt cpdist[30] = { /* Copy offsets for distance codes 0..29 */
        1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
        257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
        8193, 12289, 16385, 24577};
local const uInt cpdext[30] = { /* Extra bits for distance codes */
        0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
        7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
        12, 12, 13, 13};

/*
   Huffman code decoding is performed using a multi-level table lookup.
   The fastest way to decode is to simply build a lookup table whose
   size is determined by the longest code.  However, the time it takes
   to build this table can also be a factor if the data being decoded
   is not very long.  The most common codes are necessarily the
   shortest codes, so those codes dominate the decoding time, and hence
   the speed.  The idea is you can have a shorter table that decodes the
   shorter, more probable codes, and then point to subsidiary tables for
   the longer codes.  The time it costs to decode the longer codes is
   then traded against the time it takes to make longer tables.

   This results of this trade are in the variables lbits and dbits
   below.  lbits is the number of bits the first level table for literal/
   length codes can decode in one step, and dbits is the same thing for
   the distance codes.  Subsequent tables are also less than or equal to
   those sizes.  These values may be adjusted either when all of the
   codes are shorter than that, in which case the longest code length in
   bits is used, or when the shortest code is *longer* than the requested
   table size, in which case the length of the shortest code in bits is
   used.

   There are two different values for the two tables, since they code a
   different number of possibilities each.  The literal/length table
   codes 286 possible values, or in a flat code, a little over eight
   bits.  The distance table codes 30 possible values, or a little less
   than five bits, flat.  The optimum values for speed end up being
   about one bit more than those, so lbits is 8+1 and dbits is 5+1.
   The optimum values may differ though from machine to machine, and
   possibly even between compilers.  Your mileage may vary.
 */


/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */
#define BMAX 15         /* maximum bit length of any code */
#define N_MAX 288       /* maximum number of codes in any set */

#ifdef DEBUG
  uInt inflate_hufts;
#endif

local int huft_build(b, n, s, d, e, t, m, zs)
uIntf *b;               /* code lengths in bits (all assumed <= BMAX) */
uInt n;                 /* number of codes (assumed <= N_MAX) */
uInt s;                 /* number of simple-valued codes (0..s-1) */
const uIntf *d;         /* list of base values for non-simple codes */
const uIntf *e;         /* list of extra bits for non-simple codes */
inflate_huft * FAR *t;  /* result: starting table */
uIntf *m;               /* maximum lookup bits, returns actual */
z_streamp zs;           /* for zalloc function */
/* Given a list of code lengths and a maximum table size, make a set of
   tables to decode that set of codes.  Return Z_OK on success, Z_BUF_ERROR
   if the given code set is incomplete (the tables are still built in this
   case), Z_DATA_ERROR if the input is invalid (an over-subscribed set of
   lengths), or Z_MEM_ERROR if not enough memory. */
{

  uInt a;                       /* counter for codes of length k */
  uInt c[BMAX+1];               /* bit length count table */
  uInt f;                       /* i repeats in table every f entries */
  int g;                        /* maximum code length */
  int h;                        /* table level */
  register uInt i;              /* counter, current code */
  register uInt j;              /* counter */
  register int k;               /* number of bits in current code */
  int l;                        /* bits per table (returned in m) */
  register uIntf *p;            /* pointer into c[], b[], or v[] */
  inflate_huft *q;              /* points to current table */
  struct inflate_huft_s r;      /* table entry for structure assignment */
  inflate_huft *u[BMAX];        /* table stack */
  uInt v[N_MAX];                /* values in order of bit length */
  register int w;               /* bits before this table == (l * h) */
  uInt x[BMAX+1];               /* bit offsets, then code stack */
  uIntf *xp;                    /* pointer into x */
  int y;                        /* number of dummy codes added */
  uInt z;                       /* number of entries in current table */


  /* Generate counts for each bit length */
  p = c;
#define C0 *p++ = 0;
#define C2 C0 C0 C0 C0
#define C4 C2 C2 C2 C2
  C4                            /* clear c[]--assume BMAX+1 is 16 */
  p = b;  i = n;
  do {
    c[*p++]++;                  /* assume all entries <= BMAX */
  } while (--i);
  if (c[0] == n)                /* null input--all zero length codes */
  {
    *t = (inflate_huft *)Z_NULL;
    *m = 0;
    return Z_OK;
  }


  /* Find minimum and maximum length, bound *m by those */
  l = *m;
  for (j = 1; j <= BMAX; j++)
    if (c[j])
      break;
  k = j;                        /* minimum code length */
  if ((uInt)l < j)
    l = j;
  for (i = BMAX; i; i--)
    if (c[i])
      break;
  g = i;                        /* maximum code length */
  if ((uInt)l > i)
    l = i;
  *m = l;


  /* Adjust last length count to fill out codes, if needed */
  for (y = 1 << j; j < i; j++, y <<= 1)
    if ((y -= c[j]) < 0)
      return Z_DATA_ERROR;
  if ((y -= c[i]) < 0)
    return Z_DATA_ERROR;
  c[i] += y;


  /* Generate starting offsets into the value table for each length */
  x[1] = j = 0;
  p = c + 1;  xp = x + 2;
  while (--i) {                 /* note that i == g from above */
    *xp++ = (j += *p++);
  }


  /* Make a table of values in order of bit lengths */
  p = b;  i = 0;
  do {
    if ((j = *p++) != 0)
      v[x[j]++] = i;
  } while (++i < n);
  n = x[g];                   /* set n to length of v */


  /* Generate the Huffman codes and for each, make the table entries */
  x[0] = i = 0;                 /* first Huffman code is zero */
  p = v;                        /* grab values in bit order */
  h = -1;                       /* no tables yet--level -1 */
  w = -l;                       /* bits decoded == (l * h) */
  u[0] = (inflate_huft *)Z_NULL;        /* just to keep compilers happy */
  q = (inflate_huft *)Z_NULL;   /* ditto */
  z = 0;                        /* ditto */

  /* go through the bit lengths (k already is bits in shortest code) */
  for (; k <= g; k++)
  {
    a = c[k];
    while (a--)
    {
      /* here i is the Huffman code of length k bits for value *p */
      /* make tables up to required level */
      while (k > w + l)
      {
        h++;
        w += l;                 /* previous table always l bits */

        /* compute minimum size table less than or equal to l bits */
        z = g - w;
        z = z > (uInt)l ? l : z;        /* table size upper limit */
        if ((f = 1 << (j = k - w)) > a + 1)     /* try a k-w bit table */
        {                       /* too few codes for k-w bit table */
          f -= a + 1;           /* deduct codes from patterns left */
          xp = c + k;
          if (j < z)
            while (++j < z)     /* try smaller tables up to z bits */
            {
              if ((f <<= 1) <= *++xp)
                break;          /* enough codes to use up j bits */
              f -= *xp;         /* else deduct codes from patterns */
            }
        }
        z = 1 << j;             /* table entries for j-bit table */

        /* allocate and link in new table */
        if ((q = (inflate_huft *)ZALLOC
             (zs,z + 1,sizeof(inflate_huft))) == Z_NULL)
        {
          if (h)
            inflate_trees_free(u[0], zs);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合久久综合久久| 91亚洲国产成人精品一区二三| 国产精品夜夜爽| 欧美四级电影网| 国产日产欧美一区| 国产精品综合视频| 久久夜色精品国产欧美乱极品| 免费欧美高清视频| 欧美一区欧美二区| 轻轻草成人在线| 日韩欧美自拍偷拍| 久久99精品久久久久久| 日韩欧美一区二区三区在线| 蜜臀av性久久久久av蜜臀妖精| 91精品国产综合久久福利软件| 美腿丝袜在线亚洲一区| 日韩一二三四区| 精品一区二区在线观看| 久久婷婷综合激情| 国产成人精品影视| 亚洲欧洲成人精品av97| 日本高清视频一区二区| 天天综合日日夜夜精品| 91.com在线观看| 久久99精品国产麻豆不卡| 久久你懂得1024| 91麻豆免费观看| 一区二区视频在线看| 在线亚洲一区观看| 亚洲成a人v欧美综合天堂下载 | 91精品国产综合久久香蕉的特点 | 久久国产精品免费| 日韩一区二区在线看片| 日本欧美一区二区在线观看| 久久一二三国产| 97se狠狠狠综合亚洲狠狠| 香蕉影视欧美成人| 精品人伦一区二区色婷婷| 高清av一区二区| 亚洲国产你懂的| 久久九九久久九九| 成人高清免费在线播放| |精品福利一区二区三区| 欧美精选午夜久久久乱码6080| 国产在线麻豆精品观看| 亚洲欧美日韩久久精品| 91精品国产一区二区人妖| 国产不卡免费视频| 亚洲综合精品自拍| 精品国产成人在线影院| 一本一本大道香蕉久在线精品 | 亚洲国产精品国自产拍av| 在线欧美一区二区| 久久99精品久久只有精品| 国产精品免费av| 91精品国产综合久久久蜜臀粉嫩 | 久久99精品久久久久久| 一区二区三区在线视频免费| 精品国产一区二区亚洲人成毛片| 91免费精品国自产拍在线不卡| 久久精品国产亚洲aⅴ| 一区二区三区欧美视频| 91精品国产黑色紧身裤美女| 成人av午夜影院| 美女网站在线免费欧美精品| 亚洲人成影院在线观看| 国产亚洲一区字幕| 日韩限制级电影在线观看| 国产91丝袜在线播放九色| 日韩国产精品久久久久久亚洲| 亚洲免费观看高清| 国产目拍亚洲精品99久久精品 | 欧美乱妇20p| 99在线精品一区二区三区| 日日夜夜免费精品| 日本一区二区综合亚洲| 色婷婷综合久久久久中文一区二区| 香蕉影视欧美成人| 一区二区三区四区在线播放| 久久久精品tv| 精品成人佐山爱一区二区| 欧美精品一卡两卡| 欧美日韩综合色| 欧美优质美女网站| 99精品国产视频| av一二三不卡影片| 成人h动漫精品一区二| 国产成人精品免费网站| 国内精品久久久久影院色| 丝瓜av网站精品一区二区| 亚洲一区二区综合| 亚洲一区二区在线观看视频| 专区另类欧美日韩| 亚洲欧洲精品一区二区精品久久久| 欧美精彩视频一区二区三区| 精品国精品国产尤物美女| 精品理论电影在线观看| 日韩一区二区在线观看视频播放| 欧美日韩美少妇| 91麻豆精品国产91久久久使用方法| 欧美日本视频在线| 欧美日韩国产123区| 欧美精品乱码久久久久久按摩| 欧美人妖巨大在线| 欧美电影在线免费观看| 欧美一区二区三区男人的天堂 | 91麻豆国产自产在线观看| 91网站最新网址| 91蜜桃视频在线| 91一区一区三区| 欧美三级一区二区| 91精品在线一区二区| 欧美精品一区二区三区蜜桃 | 精品在线播放免费| 国产一区亚洲一区| 成人福利视频网站| 懂色av中文一区二区三区| av综合在线播放| 欧美影院一区二区| 精品久久久久久久久久久院品网| 久久久午夜精品| 亚洲私人黄色宅男| 亚洲综合一二区| 美女国产一区二区| 风间由美性色一区二区三区| 色婷婷综合久久久久中文| 欧美日本在线观看| 国产蜜臀97一区二区三区| 一区二区成人在线视频| 日韩高清不卡一区| 波多野结衣在线aⅴ中文字幕不卡| 在线视频中文字幕一区二区| 久久看人人爽人人| 日韩一区欧美二区| 成人蜜臀av电影| 26uuu国产在线精品一区二区| 亚洲制服丝袜av| www..com久久爱| 久久综合色天天久久综合图片| 一卡二卡三卡日韩欧美| 成人影视亚洲图片在线| 日韩一区二区三| 一区二区视频免费在线观看| 大桥未久av一区二区三区中文| 欧美一区二区性放荡片| 一区二区三区四区不卡在线| 成人免费毛片嘿嘿连载视频| 2020国产精品久久精品美国| 青青草91视频| 91精品国产入口| 天天综合色天天综合色h| 色婷婷久久99综合精品jk白丝| 国产精品水嫩水嫩| 国产成人在线看| 久久久久亚洲蜜桃| 蜜桃av噜噜一区| 欧美一级理论性理论a| 亚洲成人三级小说| 欧美三级视频在线| 夜夜嗨av一区二区三区中文字幕| 99精品视频在线播放观看| 国产日韩精品视频一区| 国模冰冰炮一区二区| 欧美成人三级在线| 裸体歌舞表演一区二区| 日韩你懂的在线播放| 男男成人高潮片免费网站| 欧美一区二区播放| 日产国产欧美视频一区精品| 91精品国产麻豆国产自产在线| 婷婷国产在线综合| 日韩一区二区三区三四区视频在线观看| 亚洲第一狼人社区| 91精品国产综合久久国产大片| 日韩av中文在线观看| 欧美一三区三区四区免费在线看| 午夜成人免费电影| 日韩免费在线观看| 国产九色精品成人porny| 国产日韩欧美高清在线| 91在线精品一区二区| 亚洲美女视频在线观看| 在线观看一区二区精品视频| 亚洲高清中文字幕| 日韩欧美国产高清| 国产精品一级片| 亚洲欧洲美洲综合色网| 欧美在线看片a免费观看| 五月婷婷另类国产| 欧美大胆一级视频| 国产成a人亚洲| 亚洲主播在线观看| 日韩精品一区二区在线| 国产成a人亚洲| 一二三区精品视频| 精品国产网站在线观看| 成人动漫av在线| 五月激情六月综合| 国产亚洲成aⅴ人片在线观看| 91丨porny丨在线|