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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? inflate.c

?? 一款最完整的工業組態軟源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* inflate.c -- zlib decompression
 * Copyright (C) 1995-2003 Mark Adler
 * For conditions of distribution and use, see copyright notice in zlib.h
 */

/*
 * Change history:
 *
 * 1.2.beta0    24 Nov 2002
 * - First version -- complete rewrite of inflate to simplify code, avoid
 *   creation of window when not needed, minimize use of window when it is
 *   needed, make inffast.c even faster, implement gzip decoding, and to
 *   improve code readability and style over the previous zlib inflate code
 *
 * 1.2.beta1    25 Nov 2002
 * - Use pointers for available input and output checking in inffast.c
 * - Remove input and output counters in inffast.c
 * - Change inffast.c entry and loop from avail_in >= 7 to >= 6
 * - Remove unnecessary second byte pull from length extra in inffast.c
 * - Unroll direct copy to three copies per loop in inffast.c
 *
 * 1.2.beta2    4 Dec 2002
 * - Change external routine names to reduce potential conflicts
 * - Correct filename to inffixed.h for fixed tables in inflate.c
 * - Make hbuf[] unsigned char to match parameter type in inflate.c
 * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset)
 *   to avoid negation problem on Alphas (64 bit) in inflate.c
 *
 * 1.2.beta3    22 Dec 2002
 * - Add comments on state->bits assertion in inffast.c
 * - Add comments on op field in inftrees.h
 * - Fix bug in reuse of allocated window after inflateReset()
 * - Remove bit fields--back to byte structure for speed
 * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths
 * - Change post-increments to pre-increments in inflate_fast(), PPC biased?
 * - Add compile time option, POSTINC, to use post-increments instead (Intel?)
 * - Make MATCH copy in inflate() much faster for when inflate_fast() not used
 * - Use local copies of stream next and avail values, as well as local bit
 *   buffer and bit count in inflate()--for speed when inflate_fast() not used
 *
 * 1.2.beta4    1 Jan 2003
 * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings
 * - Move a comment on output buffer sizes from inffast.c to inflate.c
 * - Add comments in inffast.c to introduce the inflate_fast() routine
 * - Rearrange window copies in inflate_fast() for speed and simplification
 * - Unroll last copy for window match in inflate_fast()
 * - Use local copies of window variables in inflate_fast() for speed
 * - Pull out common write == 0 case for speed in inflate_fast()
 * - Make op and len in inflate_fast() unsigned for consistency
 * - Add FAR to lcode and dcode declarations in inflate_fast()
 * - Simplified bad distance check in inflate_fast()
 * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new
 *   source file infback.c to provide a call-back interface to inflate for
 *   programs like gzip and unzip -- uses window as output buffer to avoid
 *   window copying
 *
 * 1.2.beta5    1 Jan 2003
 * - Improved inflateBack() interface to allow the caller to provide initial
 *   input in strm.
 * - Fixed stored blocks bug in inflateBack()
 *
 * 1.2.beta6    4 Jan 2003
 * - Added comments in inffast.c on effectiveness of POSTINC
 * - Typecasting all around to reduce compiler warnings
 * - Changed loops from while (1) or do {} while (1) to for (;;), again to
 *   make compilers happy
 * - Changed type of window in inflateBackInit() to unsigned char *
 *
 * 1.2.beta7    27 Jan 2003
 * - Changed many types to unsigned or unsigned short to avoid warnings
 * - Added inflateCopy() function
 *
 * 1.2.0        9 Mar 2003
 * - Changed inflateBack() interface to provide separate opaque descriptors
 *   for the in() and out() functions
 * - Changed inflateBack() argument and in_func typedef to swap the length
 *   and buffer address return values for the input function
 * - Check next_in and next_out for Z_NULL on entry to inflate()
 *
 * The history for versions after 1.2.0 are in ChangeLog in zlib distribution.
 */

#include "zutil.h"
#include "inftrees.h"
#include "inflate.h"
#include "inffast.h"

#ifdef MAKEFIXED
#  ifndef BUILDFIXED
#    define BUILDFIXED
#  endif
#endif

/* function prototypes */
local void fixedtables OF((struct inflate_state FAR *state));
local int updatewindow OF((z_streamp strm, unsigned out));
#ifdef BUILDFIXED
   void makefixed OF((void));
#endif
local unsigned syncsearch OF((unsigned FAR *have, unsigned char FAR *buf,
                              unsigned len));

int ZEXPORT inflateReset(strm)
z_streamp strm;
{
    struct inflate_state FAR *state;

    if (strm == Z_NULL || strm->state == Z_NULL) return Z_STREAM_ERROR;
    state = (struct inflate_state FAR *)strm->state;
    strm->total_in = strm->total_out = state->total = 0;
    strm->msg = Z_NULL;
    state->mode = HEAD;
    state->last = 0;
    state->havedict = 0;
    state->wsize = 0;
    state->whave = 0;
    state->hold = 0;
    state->bits = 0;
    state->lencode = state->distcode = state->next = state->codes;
    Tracev((stderr, "inflate: reset\n"));
    return Z_OK;
}

int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size)
z_streamp strm;
int windowBits;
const char *version;
int stream_size;
{
    struct inflate_state FAR *state;

    if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
        stream_size != (int)(sizeof(z_stream)))
        return Z_VERSION_ERROR;
    if (strm == Z_NULL) return Z_STREAM_ERROR;
    strm->msg = Z_NULL;                 /* in case we return an error */
    if (strm->zalloc == (alloc_func)0) {
        strm->zalloc = zcalloc;
        strm->opaque = (voidpf)0;
    }
    if (strm->zfree == (free_func)0) strm->zfree = zcfree;
    state = (struct inflate_state FAR *)
            ZALLOC(strm, 1, sizeof(struct inflate_state));
    if (state == Z_NULL) return Z_MEM_ERROR;
    Tracev((stderr, "inflate: allocated\n"));
    strm->state = (voidpf)state;
    if (windowBits < 0) {
        state->wrap = 0;
        windowBits = -windowBits;
    }
    else {
        state->wrap = (windowBits >> 4) + 1;
#ifdef GUNZIP
        if (windowBits < 48) windowBits &= 15;
#endif
    }
    if (windowBits < 8 || windowBits > 15) {
        ZFREE(strm, state);
        strm->state = Z_NULL;
        return Z_STREAM_ERROR;
    }
    state->wbits = (unsigned)windowBits;
    state->window = Z_NULL;
    return inflateReset(strm);
}

int ZEXPORT inflateInit_(strm, version, stream_size)
z_streamp strm;
const char *version;
int stream_size;
{
    return inflateInit2_(strm, DEF_WBITS, version, stream_size);
}

/*
   Return state with length and distance decoding tables and index sizes set to
   fixed code decoding.  Normally this returns fixed tables from inffixed.h.
   If BUILDFIXED is defined, then instead this routine builds the tables the
   first time it's called, and returns those tables the first time and
   thereafter.  This reduces the size of the code by about 2K bytes, in
   exchange for a little execution time.  However, BUILDFIXED should not be
   used for threaded applications, since the rewriting of the tables and virgin
   may not be thread-safe.
 */
local void fixedtables(state)
struct inflate_state FAR *state;
{
#ifdef BUILDFIXED
    static int virgin = 1;
    static code *lenfix, *distfix;
    static code fixed[544];

    /* build fixed huffman tables if first call (may not be thread safe) */
    if (virgin) {
        unsigned sym, bits;
        static code *next;

        /* literal/length table */
        sym = 0;
        while (sym < 144) state->lens[sym++] = 8;
        while (sym < 256) state->lens[sym++] = 9;
        while (sym < 280) state->lens[sym++] = 7;
        while (sym < 288) state->lens[sym++] = 8;
        next = fixed;
        lenfix = next;
        bits = 9;
        inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work);

        /* distance table */
        sym = 0;
        while (sym < 32) state->lens[sym++] = 5;
        distfix = next;
        bits = 5;
        inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work);

        /* do this just once */
        virgin = 0;
    }
#else /* !BUILDFIXED */
#   include "inffixed.h"
#endif /* BUILDFIXED */
    state->lencode = lenfix;
    state->lenbits = 9;
    state->distcode = distfix;
    state->distbits = 5;
}

#ifdef MAKEFIXED
#include <stdio.h>

/*
   Write out the inffixed.h that is #include'd above.  Defining MAKEFIXED also
   defines BUILDFIXED, so the tables are built on the fly.  makefixed() writes
   those tables to stdout, which would be piped to inffixed.h.  A small program
   can simply call makefixed to do this:

    void makefixed(void);

    int main(void)
    {
        makefixed();
        return 0;
    }

   Then that can be linked with zlib built with MAKEFIXED defined and run:

    a.out > inffixed.h
 */
void makefixed()
{
    unsigned low, size;
    struct inflate_state state;

    fixedtables(&state);
    puts("    /* inffixed.h -- table for decoding fixed codes");
    puts("     * Generated automatically by makefixed().");
    puts("     */");
    puts("");
    puts("    /* WARNING: this file should *not* be used by applications.");
    puts("       It is part of the implementation of this library and is");
    puts("       subject to change. Applications should only use zlib.h.");
    puts("     */");
    puts("");
    size = 1U << 9;
    printf("    static const code lenfix[%u] = {", size);
    low = 0;
    for (;;) {
        if ((low % 7) == 0) printf("\n        ");
        printf("{%u,%u,%d}", state.lencode[low].op, state.lencode[low].bits,
               state.lencode[low].val);
        if (++low == size) break;
        putchar(',');
    }
    puts("\n    };");
    size = 1U << 5;
    printf("\n    static const code distfix[%u] = {", size);
    low = 0;
    for (;;) {
        if ((low % 6) == 0) printf("\n        ");
        printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits,
               state.distcode[low].val);
        if (++low == size) break;
        putchar(',');
    }
    puts("\n    };");
}
#endif /* MAKEFIXED */

/*
   Update the window with the last wsize (normally 32K) bytes written before
   returning.  If window does not exist yet, create it.  This is only called
   when a window is already in use, or when output has been written during this
   inflate call, but the end of the deflate stream has not been reached yet.
   It is also called to create a window for dictionary data when a dictionary
   is loaded.

   Providing output buffers larger than 32K to inflate() should provide a speed
   advantage, since only the last 32K of output is copied to the sliding window
   upon return from inflate(), and since all distances after the first 32K of
   output will fall in the output data, making match copies simpler and faster.
   The advantage may be dependent on the size of the processor's data caches.
 */
local int updatewindow(strm, out)
z_streamp strm;
unsigned out;
{
    struct inflate_state FAR *state;
    unsigned copy, dist;

    state = (struct inflate_state FAR *)strm->state;

    /* if it hasn't been done already, allocate space for the window */
    if (state->window == Z_NULL) {
        state->window = (unsigned char FAR *)
                        ZALLOC(strm, 1U << state->wbits,
                               sizeof(unsigned char));
        if (state->window == Z_NULL) return 1;
    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国精品自拍自在线| 懂色av一区二区三区免费看| 91浏览器入口在线观看| 国产精品乱人伦| 99re热这里只有精品视频| 17c精品麻豆一区二区免费| 一本久久综合亚洲鲁鲁五月天| 中文字幕一区不卡| 欧美亚洲一区二区在线| 亚洲一区二区三区在线播放| 91精品国产综合久久香蕉麻豆| 蜜臀av一区二区在线观看| 日韩欧美自拍偷拍| 国产成人精品影视| 伊人开心综合网| 91精品国产免费| 国产精品 日产精品 欧美精品| 国产精品视频在线看| 欧洲亚洲精品在线| 奇米色一区二区| 国产精品久久久久天堂| 欧美在线视频你懂得| 日本亚洲最大的色成网站www| 精品日本一线二线三线不卡| av中文一区二区三区| 亚洲国产婷婷综合在线精品| 日韩精品一区二区三区四区| 播五月开心婷婷综合| 亚洲.国产.中文慕字在线| www国产成人| 色综合咪咪久久| 另类专区欧美蜜桃臀第一页| 国产精品久久久久久久久免费相片| 91成人看片片| 国产精品影视在线观看| 一区二区三区资源| 久久蜜桃一区二区| 欧美日韩精品一区二区三区四区 | 国产在线视频一区二区| 欧美激情在线一区二区| 欧美欧美欧美欧美首页| 91丨国产丨九色丨pron| 毛片av一区二区| 夜夜夜精品看看| 国产精品私人影院| 欧美精品一区二区三区蜜臀| 欧美伊人久久久久久午夜久久久久| 国产一区二区三区蝌蚪| 亚洲mv大片欧洲mv大片精品| 国产精品久久久久aaaa| 精品国产污污免费网站入口| 色av一区二区| 懂色av中文一区二区三区| 九九九久久久精品| 国内精品免费**视频| 一区二区三区中文免费| 国产精品人人做人人爽人人添| 日韩一级黄色片| 欧美天天综合网| 91尤物视频在线观看| 国产高清不卡二三区| 九九视频精品免费| 麻豆国产欧美日韩综合精品二区 | 日韩一级二级三级| 欧美日韩国产一二三| 91老司机福利 在线| 国产精品自拍三区| 韩国v欧美v日本v亚洲v| 美女在线视频一区| 青青青爽久久午夜综合久久午夜| 午夜精品国产更新| 午夜久久久久久久久| 亚洲一区二区视频在线观看| 亚洲综合视频在线观看| 一区二区三区久久| 中文字幕一区日韩精品欧美| 美女视频网站久久| 蜜桃视频一区二区三区| 日韩中文字幕av电影| 天天色天天操综合| 日本少妇一区二区| 三级成人在线视频| 日韩黄色免费电影| 另类欧美日韩国产在线| 欧美精品一区男女天堂| 精品剧情在线观看| 一区二区三区国产精华| 在线综合亚洲欧美在线视频| 欧美va亚洲va| 日韩高清不卡一区二区| 99久精品国产| 成人丝袜高跟foot| 日本不卡高清视频| 久久99精品一区二区三区三区| 理论片日本一区| 国产成人综合网| 成人99免费视频| 色狠狠av一区二区三区| 欧美日韩亚洲综合一区二区三区| 777精品伊人久久久久大香线蕉| 日韩一区二区三区四区| 久久亚洲精品小早川怜子| 国产日本欧美一区二区| 亚洲人成伊人成综合网小说| 亚洲国产成人av| 经典三级在线一区| 不卡的电影网站| 欧美酷刑日本凌虐凌虐| 精品国产髙清在线看国产毛片| 久久男人中文字幕资源站| 亚洲欧洲成人精品av97| 亚洲韩国精品一区| 久国产精品韩国三级视频| 成人爱爱电影网址| 欧美日韩免费一区二区三区| 精品99久久久久久| 亚洲视频1区2区| 蜜臀va亚洲va欧美va天堂| 成人动漫中文字幕| 欧美一区二区三区喷汁尤物| 国产亚洲精品bt天堂精选| 亚洲影院理伦片| 精品伊人久久久久7777人| 成人看片黄a免费看在线| 欧美三级三级三级爽爽爽| 久久久久国产精品厨房| 亚洲精品欧美二区三区中文字幕| 美女尤物国产一区| 91网站最新网址| 精品日韩一区二区三区免费视频| 中文字幕亚洲一区二区av在线| 日韩av在线免费观看不卡| 99视频在线精品| www精品美女久久久tv| 午夜欧美大尺度福利影院在线看| 国产伦精一区二区三区| 欧美剧在线免费观看网站| 国产欧美视频一区二区三区| 视频在线观看一区二区三区| av在线不卡电影| 久久综合九色综合欧美就去吻 | 色老综合老女人久久久| 2022国产精品视频| 亚洲综合久久久久| 成人国产一区二区三区精品| 精品国产91洋老外米糕| 久久99国产精品久久99果冻传媒| 欧亚一区二区三区| 国产精品久久久久四虎| 国产电影一区在线| 精品乱人伦小说| 男人操女人的视频在线观看欧美| 欧美日韩一区二区在线观看 | 国产在线精品一区二区三区不卡| 欧美日韩五月天| 亚洲综合在线视频| 91浏览器在线视频| 1000部国产精品成人观看| 豆国产96在线|亚洲| 久久色.com| 激情六月婷婷久久| 精品久久久影院| 久久91精品国产91久久小草| 日韩精品中文字幕一区 | 精品一区二区三区av| 日韩一级大片在线观看| 免费精品视频在线| 日韩精品中午字幕| 国产在线一区观看| 久久精品日韩一区二区三区| 黄页视频在线91| 欧美xxxxxxxx| 激情欧美日韩一区二区| 久久精品一区二区| 成人精品视频一区| 一区在线中文字幕| 色94色欧美sute亚洲13| 亚洲一区二区av在线| 欧美视频一区二区三区在线观看 | 最新久久zyz资源站| 不卡在线视频中文字幕| 亚洲欧洲av另类| 在线观看日韩精品| 亚洲国产成人porn| 日韩免费在线观看| 粉嫩av一区二区三区粉嫩| 国产精品欧美极品| 在线观看网站黄不卡| 日韩福利电影在线观看| 日韩精品一区二区三区三区免费| 国产一区美女在线| 亚洲欧洲成人精品av97| 欧美午夜电影在线播放| 青青草国产精品97视觉盛宴| 日韩视频中午一区| 国产成人av电影在线| 亚洲免费大片在线观看| 宅男噜噜噜66一区二区66| 国产精品2024| 夜夜精品浪潮av一区二区三区 |