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

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

?? inftrees.c

?? dc++(一個曾經(jīng)大量使用的p2p)的源代碼,dc++,開源的p2p源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* inftrees.c -- generate Huffman trees for efficient decoding
 * Copyright (C) 1995-2002 Mark Adler
 * For conditions of distribution and use, see copyright notice in zlib.h 
 */

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

#if !defined(BUILDFIXED) && !defined(STDC)
#  define BUILDFIXED   /* non ANSI compilers may not accept inffixed.h */
#endif

const char inflate_copyright[] =
   " inflate 1.1.4 Copyright 1995-2002 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 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) */
    inflate_huft *,     /* space for trees */
    uInt *,             /* hufts used in space */
    uIntf * ));         /* space for values */

/* 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 */

local int huft_build(b, n, s, d, e, t, m, hp, hn, v)
uIntf *b;               /* code lengths in bits (all assumed <= BMAX) */
uInt n;                 /* number of codes (assumed <= 288) */
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 */
inflate_huft *hp;       /* space for trees */
uInt *hn;               /* hufts used in space */
uIntf *v;               /* working area: values in order of bit length */
/* 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), or Z_DATA_ERROR if the input is invalid. */
{

  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) */
  uInt mask;                    /* (1 << w) - 1, to avoid cc -O bug on HP */
  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 */
  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 */
            }
        }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲日本电影在线| 亚洲精品少妇30p| 色综合视频一区二区三区高清| 午夜精品久久久久久不卡8050| 久久免费电影网| 欧美伦理视频网站| 99精品视频在线免费观看| 麻豆精品一区二区三区| 亚洲男人的天堂在线aⅴ视频| 精品人伦一区二区色婷婷| 色综合久久久久| 国产成人三级在线观看| 日韩电影一区二区三区四区| 亚洲免费看黄网站| 久久久国际精品| 精品日本一线二线三线不卡| 欧美三级在线看| 91美女视频网站| 不卡av在线网| 国产成人h网站| 韩国精品主播一区二区在线观看 | 亚洲女与黑人做爰| 中文字幕精品一区二区三区精品| 精品久久99ma| 一区二区免费在线播放| 久久久综合精品| 精品久久久久久亚洲综合网| 欧美精选午夜久久久乱码6080| 在线中文字幕一区二区| 91麻豆swag| 99热在这里有精品免费| 成人精品免费网站| 成年人网站91| 91亚洲永久精品| 91女人视频在线观看| a4yy欧美一区二区三区| 成人国产一区二区三区精品| 丁香激情综合国产| 成人午夜激情在线| 99精品欧美一区二区三区小说| 懂色av噜噜一区二区三区av| 高潮精品一区videoshd| 国产成人自拍在线| 精品一区二区三区免费视频| 麻豆一区二区三区| 蜜臀av一区二区| 久久99热这里只有精品| 黄色日韩三级电影| 国产精品一卡二| 成人性生交大片免费| 成人在线视频一区| 91在线观看免费视频| 国产成人综合网站| 成人性生交大片免费看在线播放| 不卡一区二区在线| 一本一道久久a久久精品| 在线免费观看日本欧美| 欧美唯美清纯偷拍| 6080午夜不卡| 国产无人区一区二区三区| 中文字幕一区二区5566日韩| 亚洲欧美精品午睡沙发| 亚洲18影院在线观看| 免费久久精品视频| 国产91高潮流白浆在线麻豆| 99精品欧美一区二区三区小说| 日本精品一级二级| 91精品欧美一区二区三区综合在| 精品国产91久久久久久久妲己| 国产亚洲欧美激情| 亚洲精品国产无天堂网2021| 青青草原综合久久大伊人精品 | 亚洲一区二区三区影院| 奇米在线7777在线精品| 国产成a人亚洲精品| 色婷婷综合久色| 欧美一卡二卡在线| 中文字幕高清一区| 天堂va蜜桃一区二区三区 | 成人一级黄色片| 欧美性猛交xxxx黑人交| 26uuu久久综合| 亚洲图片另类小说| 麻豆精品视频在线| 99热在这里有精品免费| 日韩女优电影在线观看| 亚洲欧洲三级电影| 爽好久久久欧美精品| 国产在线播放一区三区四| 色久优优欧美色久优优| 欧美xxxx老人做受| 亚洲香肠在线观看| 成人小视频在线| 欧美日韩国产精品成人| 国产精品国产三级国产专播品爱网| 亚洲午夜羞羞片| 成人性视频免费网站| 91麻豆精品国产91久久久久| 国产精品的网站| 韩国在线一区二区| 67194成人在线观看| 日韩码欧中文字| 国产精品中文欧美| 在线不卡欧美精品一区二区三区| 中文字幕欧美三区| 精品制服美女久久| 69p69国产精品| 亚洲永久精品国产| 精品国产免费人成在线观看| 亚洲亚洲精品在线观看| 成人福利视频网站| 久久精品免视看| 日韩av中文字幕一区二区三区| 色视频成人在线观看免| 中文在线资源观看网站视频免费不卡| 免费在线视频一区| 欧美日韩和欧美的一区二区| 亚洲三级电影全部在线观看高清| 国产一区二区三区综合| 日韩欧美成人激情| 奇米色777欧美一区二区| 欧美理论在线播放| 亚洲一区二区偷拍精品| 色悠悠久久综合| 中文字幕中文乱码欧美一区二区 | 国产精品一二三四区| 精品美女在线播放| 麻豆精品久久精品色综合| 欧美一区二区网站| 日日摸夜夜添夜夜添亚洲女人| 欧日韩精品视频| 亚洲高清三级视频| 欧美三区免费完整视频在线观看| 一区二区成人在线观看| 色8久久人人97超碰香蕉987| 综合色中文字幕| 日本高清免费不卡视频| 一区二区三区日韩在线观看| a美女胸又www黄视频久久| 中文字幕日韩一区| 91网上在线视频| 一区二区成人在线| 欧美裸体一区二区三区| 日本视频在线一区| 精品人伦一区二区色婷婷| 另类小说欧美激情| 久久精品亚洲麻豆av一区二区 | 亚洲人午夜精品天堂一二香蕉| av电影在线不卡| 一区二区三区毛片| 欧美日韩二区三区| 蜜臀91精品一区二区三区| 精品国产电影一区二区| 国产剧情一区二区三区| 国产精品大尺度| 欧美日韩一二区| 美女精品一区二区| 国产亚洲精久久久久久| 91麻豆免费看片| 三级欧美在线一区| 久久久久久一二三区| av一本久道久久综合久久鬼色| 亚洲人成在线观看一区二区| 欧美乱妇15p| 久久99精品国产| 一色桃子久久精品亚洲| 欧美性猛交xxxx黑人交| 免费成人av资源网| 国产精品毛片无遮挡高清| 欧洲视频一区二区| 久久99精品国产| 亚洲女厕所小便bbb| 精品少妇一区二区三区| 99精品欧美一区二区蜜桃免费| 午夜久久久久久久久| 久久久综合视频| 欧美日韩在线播放三区四区| 极品少妇一区二区| 亚洲免费在线观看视频| 欧美日韩国产精选| 国产成人精品免费在线| 亚洲国产精品一区二区久久恐怖片| 日韩免费视频一区| 91污片在线观看| 蜜臀99久久精品久久久久久软件| 国产精品久久777777| 欧美老女人在线| av不卡免费电影| 加勒比av一区二区| 亚洲一卡二卡三卡四卡| 国产精品无人区| 欧美成人三级电影在线| 91蜜桃婷婷狠狠久久综合9色| 狂野欧美性猛交blacked| 亚洲精品中文在线影院| 国产人成亚洲第一网站在线播放| 7777精品伊人久久久大香线蕉完整版 | 一区二区三区四区激情| 久久久久久久久99精品| 777xxx欧美|