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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? trees.c

?? gz124src.zip is a mini Gzip.
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* trees.c -- output deflated data using Huffman coding * Copyright (C) 1992-1993 Jean-loup Gailly * This is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License, see the file COPYING. *//* *  PURPOSE * *      Encode various sets of source values using variable-length *      binary code trees. * *  DISCUSSION * *      The PKZIP "deflation" process uses several Huffman trees. The more *      common source values are represented by shorter bit sequences. * *      Each code tree is stored in the ZIP file in a compressed form *      which is itself a Huffman encoding of the lengths of *      all the code strings (in ascending order by source values). *      The actual code strings are reconstructed from the lengths in *      the UNZIP process, as described in the "application note" *      (APPNOTE.TXT) distributed as part of PKWARE's PKZIP program. * *  REFERENCES * *      Lynch, Thomas J. *          Data Compression:  Techniques and Applications, pp. 53-55. *          Lifetime Learning Publications, 1985.  ISBN 0-534-03418-7. * *      Storer, James A. *          Data Compression:  Methods and Theory, pp. 49-50. *          Computer Science Press, 1988.  ISBN 0-7167-8156-5. * *      Sedgewick, R. *          Algorithms, p290. *          Addison-Wesley, 1983. ISBN 0-201-06672-6. * *  INTERFACE * *      void ct_init (ush *attr, int *methodp) *          Allocate the match buffer, initialize the various tables and save *          the location of the internal file attribute (ascii/binary) and *          method (DEFLATE/STORE) * *      void ct_tally (int dist, int lc); *          Save the match info and tally the frequency counts. * *      long flush_block (char *buf, ulg stored_len, int eof) *          Determine the best encoding for the current block: dynamic trees, *          static trees or store, and output the encoded block to the zip *          file. Returns the total compressed length for the file so far. * */#include <ctype.h>#include "tailor.h"#include "gzip.h"#ifdef RCSIDstatic char rcsid[] = "$Id: trees.c,v 0.12 1993/06/10 13:27:54 jloup Exp $";#endif/* =========================================================================== * Constants */#define MAX_BITS 15/* All codes must not exceed MAX_BITS bits */#define MAX_BL_BITS 7/* Bit length codes must not exceed MAX_BL_BITS bits */#define LENGTH_CODES 29/* number of length codes, not counting the special END_BLOCK code */#define LITERALS  256/* number of literal bytes 0..255 */#define END_BLOCK 256/* end of block literal code */#define L_CODES (LITERALS+1+LENGTH_CODES)/* number of Literal or Length codes, including the END_BLOCK code */#define D_CODES   30/* number of distance codes */#define BL_CODES  19/* number of codes used to transfer the bit lengths */local int near extra_lbits[LENGTH_CODES] /* extra bits for each length code */   = {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};local int near extra_dbits[D_CODES] /* extra bits for each distance code */   = {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};local int near extra_blbits[BL_CODES]/* extra bits for each bit length code */   = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7};#define STORED_BLOCK 0#define STATIC_TREES 1#define DYN_TREES    2/* The three kinds of block type */#ifndef LIT_BUFSIZE#  ifdef SMALL_MEM#    define LIT_BUFSIZE  0x2000#  else#  ifdef MEDIUM_MEM#    define LIT_BUFSIZE  0x4000#  else#    define LIT_BUFSIZE  0x8000#  endif#  endif#endif#ifndef DIST_BUFSIZE#  define DIST_BUFSIZE  LIT_BUFSIZE#endif/* Sizes of match buffers for literals/lengths and distances.  There are * 4 reasons for limiting LIT_BUFSIZE to 64K: *   - frequencies can be kept in 16 bit counters *   - if compression is not successful for the first block, all input data is *     still in the window so we can still emit a stored block even when input *     comes from standard input.  (This can also be done for all blocks if *     LIT_BUFSIZE is not greater than 32K.) *   - if compression is not successful for a file smaller than 64K, we can *     even emit a stored file instead of a stored block (saving 5 bytes). *   - creating new Huffman trees less frequently may not provide fast *     adaptation to changes in the input data statistics. (Take for *     example a binary file with poorly compressible code followed by *     a highly compressible string table.) Smaller buffer sizes give *     fast adaptation but have of course the overhead of transmitting trees *     more frequently. *   - I can't count above 4 * The current code is general and allows DIST_BUFSIZE < LIT_BUFSIZE (to save * memory at the expense of compression). Some optimizations would be possible * if we rely on DIST_BUFSIZE == LIT_BUFSIZE. */#if LIT_BUFSIZE > INBUFSIZ    error cannot overlay l_buf and inbuf#endif#define REP_3_6      16/* repeat previous bit length 3-6 times (2 bits of repeat count) */#define REPZ_3_10    17/* repeat a zero length 3-10 times  (3 bits of repeat count) */#define REPZ_11_138  18/* repeat a zero length 11-138 times  (7 bits of repeat count) *//* =========================================================================== * Local data *//* Data structure describing a single value and its code string. */typedef struct ct_data {    union {        ush  freq;       /* frequency count */        ush  code;       /* bit string */    } fc;    union {        ush  dad;        /* father node in Huffman tree */        ush  len;        /* length of bit string */    } dl;} ct_data;#define Freq fc.freq#define Code fc.code#define Dad  dl.dad#define Len  dl.len#define HEAP_SIZE (2*L_CODES+1)/* maximum heap size */local ct_data near dyn_ltree[HEAP_SIZE];   /* literal and length tree */local ct_data near dyn_dtree[2*D_CODES+1]; /* distance tree */local ct_data near static_ltree[L_CODES+2];/* The static literal tree. Since the bit lengths are imposed, there is no * need for the L_CODES extra codes used during heap construction. However * The codes 286 and 287 are needed to build a canonical tree (see ct_init * below). */local ct_data near static_dtree[D_CODES];/* The static distance tree. (Actually a trivial tree since all codes use * 5 bits.) */local ct_data near bl_tree[2*BL_CODES+1];/* Huffman tree for the bit lengths */typedef struct tree_desc {    ct_data near *dyn_tree;      /* the dynamic tree */    ct_data near *static_tree;   /* corresponding static tree or NULL */    int     near *extra_bits;    /* extra bits for each code or NULL */    int     extra_base;          /* base index for extra_bits */    int     elems;               /* max number of elements in the tree */    int     max_length;          /* max bit length for the codes */    int     max_code;            /* largest code with non zero frequency */} tree_desc;local tree_desc near l_desc ={dyn_ltree, static_ltree, extra_lbits, LITERALS+1, L_CODES, MAX_BITS, 0};local tree_desc near d_desc ={dyn_dtree, static_dtree, extra_dbits, 0,          D_CODES, MAX_BITS, 0};local tree_desc near bl_desc ={bl_tree, (ct_data near *)0, extra_blbits, 0,      BL_CODES, MAX_BL_BITS, 0};local ush near bl_count[MAX_BITS+1];/* number of codes at each bit length for an optimal tree */local uch near bl_order[BL_CODES]   = {16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15};/* The lengths of the bit length codes are sent in order of decreasing * probability, to avoid transmitting the lengths for unused bit length codes. */local int near heap[2*L_CODES+1]; /* heap used to build the Huffman trees */local int heap_len;               /* number of elements in the heap */local int heap_max;               /* element of largest frequency *//* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. * The same heap array is used to build all trees. */local uch near depth[2*L_CODES+1];/* Depth of each subtree used as tie breaker for trees of equal frequency */local uch length_code[MAX_MATCH-MIN_MATCH+1];/* length code for each normalized match length (0 == MIN_MATCH) */local uch dist_code[512];/* distance codes. The first 256 values correspond to the distances * 3 .. 258, the last 256 values correspond to the top 8 bits of * the 15 bit distances. */local int near base_length[LENGTH_CODES];/* First normalized length for each code (0 = MIN_MATCH) */local int near base_dist[D_CODES];/* First normalized distance for each code (0 = distance of 1) */#define l_buf inbuf/* DECLARE(uch, l_buf, LIT_BUFSIZE);  buffer for literals or lengths *//* DECLARE(ush, d_buf, DIST_BUFSIZE); buffer for distances */local uch near flag_buf[(LIT_BUFSIZE/8)];/* flag_buf is a bit array distinguishing literals from lengths in * l_buf, thus indicating the presence or absence of a distance. */local unsigned last_lit;    /* running index in l_buf */local unsigned last_dist;   /* running index in d_buf */local unsigned last_flags;  /* running index in flag_buf */local uch flags;            /* current flags not yet saved in flag_buf */local uch flag_bit;         /* current bit used in flags *//* bits are filled in flags starting at bit 0 (least significant). * Note: these flags are overkill in the current code since we don't * take advantage of DIST_BUFSIZE == LIT_BUFSIZE. */local ulg opt_len;        /* bit length of current block with optimal trees */local ulg static_len;     /* bit length of current block with static trees */local ulg compressed_len; /* total bit length of compressed file */local ulg input_len;      /* total byte length of input file *//* input_len is for debugging only since we can get it by other means. */ush *file_type;        /* pointer to UNKNOWN, BINARY or ASCII */int *file_method;      /* pointer to DEFLATE or STORE */#ifdef DEBUGextern ulg bits_sent;  /* bit length of the compressed data */extern long isize;     /* byte length of input file */#endifextern long block_start;       /* window offset of current block */extern unsigned near strstart; /* window offset of current string *//* =========================================================================== * Local (static) routines in this file. */local void init_block     OF((void));local void pqdownheap     OF((ct_data near *tree, int k));local void gen_bitlen     OF((tree_desc near *desc));local void gen_codes      OF((ct_data near *tree, int max_code));local void build_tree     OF((tree_desc near *desc));local void scan_tree      OF((ct_data near *tree, int max_code));local void send_tree      OF((ct_data near *tree, int max_code));local int  build_bl_tree  OF((void));local void send_all_trees OF((int lcodes, int dcodes, int blcodes));local void compress_block OF((ct_data near *ltree, ct_data near *dtree));local void set_file_type  OF((void));#ifndef DEBUG#  define send_code(c, tree) send_bits(tree[c].Code, tree[c].Len)   /* Send a code of the given tree. c and tree must not have side effects */#else /* DEBUG */#  define send_code(c, tree) \     { if (verbose>1) fprintf(stderr,"\ncd %3d ",(c)); \       send_bits(tree[c].Code, tree[c].Len); }#endif#define d_code(dist) \   ((dist) < 256 ? dist_code[dist] : dist_code[256+((dist)>>7)])/* Mapping from a distance to a distance code. dist is the distance - 1 and * must not have side effects. dist_code[256] and dist_code[257] are never * used. */#define MAX(a,b) (a >= b ? a : b)/* the arguments must not have side effects *//* =========================================================================== * Allocate the match buffer, initialize the various tables and save the * location of the internal file attribute (ascii/binary) and method * (DEFLATE/STORE). */void ct_init(attr, methodp)    ush  *attr;   /* pointer to internal file attribute */    int  *methodp; /* pointer to compression method */{    int n;        /* iterates over tree elements */    int bits;     /* bit counter */    int length;   /* length value */    int code;     /* code value */    int dist;     /* distance index */    file_type = attr;    file_method = methodp;    compressed_len = input_len = 0L;            if (static_dtree[0].Len != 0) return; /* ct_init already called */    /* Initialize the mapping length (0..255) -> length code (0..28) */    length = 0;    for (code = 0; code < LENGTH_CODES-1; code++) {        base_length[code] = length;        for (n = 0; n < (1<<extra_lbits[code]); n++) {            length_code[length++] = (uch)code;        }    }    Assert (length == 256, "ct_init: length != 256");    /* Note that the length 255 (match length 258) can be represented     * in two different ways: code 284 + 5 bits or code 285, so we     * overwrite length_code[255] to use the best encoding:

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美专区亚洲专区| 午夜精品久久久久久久99樱桃| 久久影院午夜论| 久久综合久色欧美综合狠狠| 亚洲精品在线三区| 在线播放91灌醉迷j高跟美女 | 亚洲国产精品ⅴa在线观看| 精品日韩在线一区| 精品国产乱码久久久久久免费| 久久婷婷综合激情| 最近日韩中文字幕| 日韩精品一级中文字幕精品视频免费观看 | 蜜臀va亚洲va欧美va天堂| 高清久久久久久| 欧美日本在线视频| 国产午夜亚洲精品羞羞网站| 亚洲在线成人精品| 韩国中文字幕2020精品| 色噜噜夜夜夜综合网| 精品国产在天天线2019| 怡红院av一区二区三区| 国产另类ts人妖一区二区| 色8久久精品久久久久久蜜 | 国产一区二区91| 在线日韩av片| 欧美经典一区二区| 午夜免费久久看| 成人动漫在线一区| 欧美一二三在线| 亚洲综合色成人| 国产成+人+日韩+欧美+亚洲| 欧美人狂配大交3d怪物一区| 亚洲欧美在线观看| 国产精品一区二区视频| 欧美二区在线观看| 亚洲精品成人在线| 国产 欧美在线| 欧美成人性战久久| 亚洲亚洲人成综合网络| www.日本不卡| 久久亚洲精品小早川怜子| av动漫一区二区| 欧美一区二区三区色| 亚洲色图欧洲色图婷婷| 国产精品影视网| 日韩一级精品视频在线观看| 亚洲五码中文字幕| 色婷婷综合五月| 中文一区一区三区高中清不卡| 美女网站色91| 91麻豆精品国产91久久久更新时间| 亚洲视频网在线直播| 国产精品夜夜嗨| 欧美va亚洲va在线观看蝴蝶网| 天天色 色综合| 色94色欧美sute亚洲线路一久 | 波多野结衣中文字幕一区二区三区| 精品乱码亚洲一区二区不卡| 首页国产欧美久久| 欧美日韩久久一区| 亚洲电影一区二区三区| 色天使色偷偷av一区二区| 亚洲欧美日韩一区二区三区在线观看| 夫妻av一区二区| 国产网站一区二区三区| 国产精品一区二区三区网站| 2024国产精品| 国产毛片精品一区| 久久久国产一区二区三区四区小说 | 成人小视频在线| 久久久国产精品不卡| 国产精品影视在线| 国产清纯白嫩初高生在线观看91| 另类综合日韩欧美亚洲| 欧美电影免费观看高清完整版在| 免费看精品久久片| 欧美变态口味重另类| 欧美色综合影院| 一区二区三区中文字幕| 在线免费观看视频一区| 亚洲一级片在线观看| 欧美写真视频网站| 日韩激情视频网站| 欧美一级二级三级蜜桃| 久久99久国产精品黄毛片色诱| 欧美大片一区二区| 粉嫩欧美一区二区三区高清影视 | www.av亚洲| 一区二区三区免费观看| 精品视频999| 欧美aaa在线| 久久婷婷成人综合色| 成人亚洲一区二区一| 亚洲欧美日韩在线| 欧美老肥妇做.爰bbww| 久久国产尿小便嘘嘘尿| 国产三级欧美三级| 97精品国产97久久久久久久久久久久| 一区二区三区在线观看网站| 9191成人精品久久| 国产乱色国产精品免费视频| 国产精品久久国产精麻豆99网站| 91福利在线导航| 日本一区中文字幕 | 黑人精品欧美一区二区蜜桃| 国产欧美精品一区aⅴ影院| 97精品电影院| 日韩不卡手机在线v区| 久久久噜噜噜久久中文字幕色伊伊| 粉嫩绯色av一区二区在线观看 | 欧美精品久久久久久久多人混战 | 国产视频一区二区三区在线观看| 91麻豆福利精品推荐| 三级精品在线观看| 中文字幕欧美三区| 欧美日韩国产精品自在自线| 国模冰冰炮一区二区| 自拍偷拍国产精品| 欧美一区二区私人影院日本| 成人激情黄色小说| 亚洲成人久久影院| 久久精品视频网| 欧美日韩精品福利| 国产一区二区三区观看| 一区二区三区在线视频观看58| 欧美xfplay| 日本高清免费不卡视频| 久久精品国产精品亚洲红杏| 中文字幕亚洲一区二区va在线| 欧美电影在线免费观看| 成人av网址在线| 日韩有码一区二区三区| 国产精品免费视频一区| 日韩欧美亚洲国产另类| 99久久99久久精品免费观看| 久久精品av麻豆的观看方式| 亚洲日本欧美天堂| 精品久久五月天| 欧美女孩性生活视频| eeuss影院一区二区三区| 麻豆精品久久久| 亚洲另类在线一区| 国产丝袜美腿一区二区三区| 欧美日本韩国一区| 欧美成人一区二区| 色8久久人人97超碰香蕉987| 国产成人午夜电影网| 丝袜美腿亚洲一区二区图片| 亚洲欧美日韩一区二区| 中文幕一区二区三区久久蜜桃| 日韩精品综合一本久道在线视频| 欧美性猛交xxxxxx富婆| av不卡在线观看| 国产福利电影一区二区三区| 免费成人小视频| 亚洲成在人线在线播放| 成人免费一区二区三区视频| 国产亚洲一二三区| 日韩一级大片在线观看| 欧美美女直播网站| 色悠悠亚洲一区二区| 丁香网亚洲国际| 国产福利精品一区二区| 国产综合久久久久久鬼色| 日韩激情一二三区| 天天射综合影视| 午夜伊人狠狠久久| 亚洲国产精品久久久久秋霞影院 | 色噜噜狠狠成人中文综合 | 亚洲三级理论片| 中文字幕中文乱码欧美一区二区| 26uuu精品一区二区| 日韩精品专区在线影院重磅| 在线综合亚洲欧美在线视频| 在线播放欧美女士性生活| 欧美日韩精品综合在线| 欧美日韩一卡二卡三卡| 欧美在线视频不卡| 欧美性受xxxx| 欧美午夜免费电影| 欧美日韩视频在线一区二区| 欧美性大战久久| 欧美精品免费视频| 3d成人h动漫网站入口| 91精品国产福利在线观看| 宅男在线国产精品| 日韩三区在线观看| www国产精品av| 久久老女人爱爱| 国产视频视频一区| 中文字幕一区三区| 亚洲图片另类小说| 亚洲精品视频自拍| 亚洲精品成a人| 亚洲一区二区三区小说| 五月婷婷另类国产| 蜜桃视频第一区免费观看| 麻豆精品在线观看| 国产原创一区二区三区| 国产成人鲁色资源国产91色综|