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

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

?? vs_compress.pas

?? KSDev.VirtualSream.v1.01.rar 虛擬文件系統,
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
{==============================================================================

  Copyright (C) 1998-2004 by Evgeny Kryukov
  All rights reserved

  All contents of this file and all other files included in this archive
  are Copyright (C) 2004 Evgeny Kryukov. Use and/or distribution of
  them requires acceptance of the License Agreement.

  See License.txt for licence information

  $Id: vs_compress.pas,v 1.1.1.1 2006/09/26 09:49:37 eugene Exp $

===============================================================================}

{ Original:
  zlib.h -- interface of the 'zlib' general purpose compression library
  version 1.1.2, Mar, 1998

  Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler

  This software is provided 'as-is', without any express or implied
  warranty.  In no event will the authors be held liable for any damages
  arising from the use of this software.

  Permission is granted to anyone to use this software for any purpose,
  including commercial applications, and to alter it and redistribute it
  freely, subject to the following restrictions:

  1. The origin of this software must not be misrepresented; you must not
     claim that you wrote the original software. If you use this software
     in a product, an acknowledgment in the product documentation would be
     appreciated but is not required.
  2. Altered source versions must be plainly marked as such, and must not be
     misrepresented as being the original software.
  3. This notice may not be removed or altered from any source distribution.

  Jean-loup Gailly        Mark Adler
  jloup@gzip.org          madler@alumni.caltech.edu


  The data format used by the zlib library is described by RFCs (Request for
  Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
  (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).

  Pascal tranlastion
  Copyright (C) 1998 by Jacques Nomssi Nzali

  Delphi & BCB Translation 
  Copyright (C) 2002 by Egor Kryukov

  CLX Edition & Kylix Translation
  Copyright (C) 2002 by Evgeny Kryukov

}

unit vs_compress;

{$T-}
{$define patch112}        { apply patch from the zlib home page }
{$define ORG_DEBUG}
{$DEFINE MAX_MATCH_IS_258}

interface

uses SysUtils, Classes;

{!============================================================================!}

const
  kscCompressVersion = '2.0';
  kscCompressVersionPropText = 'LibCommpress Version ' + kscCompressVersion;

var
  SigCompress: PChar = '- ' + kscCompressVersionPropText +
    {$IFDEF KS_DELPHI4} ' - D4 - '+ {$ENDIF}
    {$IFDEF KS_CBUILDER4} ' - CB4 - ' + {$ENDIF}
    {$IFDEF KS_DELPHI5} ' - D5 - '+ {$ENDIF}
    {$IFDEF KS_CBUILDER5} ' - CB5 - '+ {$ENDIF}
    {$IFDEF KS_DELPHI6} ' - D6 - '+ {$ENDIF}
    {$IFDEF KS_CBUILDER6} ' - CB6 - '+ {$ENDIF}
    {$IFDEF KS_DELPHI7} ' - D7 - '+ {$ENDIF}
    {$IFDEF KS_CBUILDER7} ' - CB7 - '+ {$ENDIF}
    'Copyright (C) 1998-2003 by Evgeny Kryukov -';


type
  {Byte   = usigned char;  8 bits}
  Bytef  = byte;
  charf  = byte;

  int    = integer;

  intf   = int;
  uInt   = cardinal;     { 16 bits or more }
  uIntf  = uInt;

  Long   = longint;
  uLong  = LongInt;      { 32 bits or more }
  uLongf = uLong;

  voidp  = pointer;
  voidpf = voidp;
  pBytef = ^Bytef;
  pIntf  = ^intf;
  puIntf = ^uIntf;
  puLong = ^uLongf;

  ptr2int = uInt;
{ a pointer to integer casting is used to do pointer arithmetic.
  ptr2int must be an integer type and sizeof(ptr2int) must be less
  than sizeof(pointer) - Nomssi }

type
  zByteArray = array[0..(MaxInt div SizeOf(Bytef))-1] of Bytef;
  pzByteArray = ^zByteArray;
type
  zIntfArray = array[0..(MaxInt div SizeOf(Intf))-1] of Intf;
  pzIntfArray = ^zIntfArray;
type
  zuIntArray = array[0..(MaxInt div SizeOf(uInt))-1] of uInt;
  PuIntArray = ^zuIntArray;

{ Type declarations - only for deflate }

type
  uch  = Byte;
  uchf = uch; { FAR }
  ush  = Word;
  ushf = ush;
  ulg  = LongInt;

  unsigned = uInt;

  pcharf = ^charf;
  puchf = ^uchf;
  pushf = ^ushf;

type
  zuchfArray = zByteArray;
  puchfArray = ^zuchfArray;
type
  zushfArray = array[0..(MaxInt div SizeOf(ushf))-1] of ushf;
  pushfArray = ^zushfArray;

procedure zmemcpy(destp : pBytef; sourcep : pBytef; len : uInt);
function zmemcmp(s1p, s2p : pBytef; len : uInt) : int;
procedure zmemzero(destp : pBytef; len : uInt);
procedure zcfree(opaque : voidpf; ptr : voidpf);
function zcalloc (opaque : voidpf; items : uInt; size : uInt) : voidpf;


{ zlib.h }

{ Maximum value for memLevel in deflateInit2 }
const
  MAX_MEM_LEVEL = 9;
  DEF_MEM_LEVEL = 8; { if MAX_MEM_LEVEL > 8 }

{ Maximum value for windowBits in deflateInit2 and inflateInit2 }
const
  MAX_WBITS = 15; { 32K LZ77 window }
{ default windowBits for decompression. MAX_WBITS is for compression only }
const
  DEF_WBITS = MAX_WBITS;

{ The memory requirements for deflate are (in bytes):
            1 shl (windowBits+2)   +  1 shl (memLevel+9)
 that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
 plus a few kilobytes for small objects. For example, if you want to reduce
 the default memory requirements from 256K to 128K, compile with
     DMAX_WBITS=14 DMAX_MEM_LEVEL=7
 Of course this will generally degrade compression (there's no free lunch).

 The memory requirements for inflate are (in bytes) 1 shl windowBits
 that is, 32K for windowBits=15 (default value) plus a few kilobytes
 for small objects. }


{ Huffman code lookup table entry--this entry is four bytes for machines
  that have 16-bit pointers (e.g. PC's in the small or medium model). }

type
  pInflate_huft = ^inflate_huft;
  inflate_huft = Record
    Exop,             { number of extra bits or operation }
    bits : Byte;      { number of bits in this code or subcode }
    {pad : uInt;}       { pad structure to a power of 2 (4 bytes for }
                      {  16-bit, 8 bytes for 32-bit int's) }
    base : uInt;      { literal, length base, or distance base }
                      { or table offset }
  End;

type
  huft_field = Array[0..(MaxInt div SizeOf(inflate_huft))-1] of inflate_huft;
  huft_ptr = ^huft_field;
type
  ppInflate_huft = ^pInflate_huft;

type
  inflate_codes_mode = ( { waiting for "i:"=input, "o:"=output, "x:"=nothing }
        START,    { x: set up for LEN }
        LEN,      { i: get length/literal/eob next }
        LENEXT,   { i: getting length extra (have base) }
        DIST,     { i: get distance next }
        DISTEXT,  { i: getting distance extra }
        COPY,     { o: copying bytes in window, waiting for space }
        LIT,      { o: got literal, waiting for output space }
        WASH,     { o: got eob, possibly still output waiting }
        ZEND,     { x: got eob and all data flushed }
        BADCODE); { x: got error }

{ inflate codes private state }
type
  pInflate_codes_state = ^inflate_codes_state;
  inflate_codes_state = record

    mode : inflate_codes_mode;        { current inflate_codes mode }

    { mode dependent information }
    len : uInt;
    sub : record                      { submode }
      Case Byte of
      0:(code : record                { if LEN or DIST, where in tree }
          tree : pInflate_huft;       { pointer into tree }
          need : uInt;                { bits needed }
         end);
      1:(lit : uInt);                 { if LIT, literal }
      2:(copy: record                 { if EXT or COPY, where and how much }
           get : uInt;                { bits to get for extra }
           dist : uInt;               { distance back to copy from }
         end);
    end;

    { mode independent information }
    lbits : Byte;                     { ltree bits decoded per branch }
    dbits : Byte;                     { dtree bits decoder per branch }
    ltree : pInflate_huft;            { literal/length/eob tree }
    dtree : pInflate_huft;            { distance tree }
  end;

type
  check_func = function(check : uLong;
                        buf : pBytef;
                        {const buf : array of byte;}
	                len : uInt) : uLong;
type
  inflate_block_mode =
     (ZTYPE,    { get type bits (3, including end bit) }
      LENS,     { get lengths for stored }
      STORED,   { processing stored block }
      TABLE,    { get table lengths }
      BTREE,    { get bit lengths tree for a dynamic block }
      DTREE,    { get length, distance trees for a dynamic block }
      CODES,    { processing fixed or dynamic block }
      DRY,      { output remaining window bytes }
      BLKDONE,  { finished last block, done }
      BLKBAD);  { got a data error--stuck here }

type
  pInflate_blocks_state = ^inflate_blocks_state;

{ inflate blocks semi-private state }
  inflate_blocks_state = record

    mode : inflate_block_mode;     { current inflate_block mode }

    { mode dependent information }
    sub : record                  { submode }
    case Byte of
    0:(left : uInt);              { if STORED, bytes left to copy }
    1:(trees : record             { if DTREE, decoding info for trees }
        table : uInt;               { table lengths (14 bits) }
        index : uInt;               { index into blens (or border) }
        blens : PuIntArray;         { bit lengths of codes }
        bb : uInt;                  { bit length tree depth }
        tb : pInflate_huft;         { bit length decoding tree }
      end);
    2:(decode : record            { if CODES, current state }
        tl : pInflate_huft;
        td : pInflate_huft;         { trees to free }
        codes : pInflate_codes_state;
      end);
    end;
    last : boolean;               { true if this block is the last block }

    { mode independent information }
    bitk : uInt;            { bits in bit buffer }
    bitb : uLong;           { bit buffer }
    hufts : huft_ptr; {pInflate_huft;}  { single malloc for tree space }
    window : pBytef;        { sliding window }
    zend : pBytef;          { one byte after sliding window }
    read : pBytef;          { window read pointer }
    write : pBytef;         { window write pointer }
    checkfn : check_func;   { check function }
    check : uLong;          { check on output }
  end;

type
  inflate_mode = (
      METHOD,   { waiting for method byte }
      FLAG,     { waiting for flag byte }
      DICT4,    { four dictionary check bytes to go }
      DICT3,    { three dictionary check bytes to go }
      DICT2,    { two dictionary check bytes to go }
      DICT1,    { one dictionary check byte to go }
      DICT0,    { waiting for inflateSetDictionary }
      BLOCKS,   { decompressing blocks }
      CHECK4,   { four check bytes to go }
      CHECK3,   { three check bytes to go }
      CHECK2,   { two check bytes to go }
      CHECK1,   { one check byte to go }
      DONE,     { finished check, done }
      BAD);     { got an error--stay here }

{ inflate private state }
type
  pInternal_state = ^internal_state; { or point to a deflate_state record }
  internal_state = record

     mode : inflate_mode;  { current inflate mode }

     { mode dependent information }
     sub : record          { submode }
       case byte of
       0:(method : uInt);  { if FLAGS, method byte }
       1:(check : record   { if CHECK, check values to compare }
           was : uLong;        { computed check value }
           need : uLong;       { stream check value }
          end);
       2:(marker : uInt);  { if BAD, inflateSync's marker bytes count }
     end;

     { mode independent information }
     nowrap : boolean;      { flag for no wrapper }
     wbits : uInt;          { log2(window size)  (8..15, defaults to 15) }
     blocks : pInflate_blocks_state;    { current inflate_blocks state }
   end;

type
  alloc_func = function(opaque : voidpf; items : uInt; size : uInt) : voidpf;
  free_func = procedure(opaque : voidpf; address : voidpf);

type
  z_streamp = ^z_stream;
  z_stream = record
    next_in : pBytef;     { next input byte }
    avail_in : uInt;      { number of bytes available at next_in }
    total_in : uLong;     { total nb of input bytes read so far }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩综合在线| 欧美亚洲动漫制服丝袜| 成人一区在线观看| 91在线精品一区二区| 在线视频你懂得一区| 日韩午夜激情视频| 国产精品私人影院| 天堂在线亚洲视频| 成人网页在线观看| 91精品国产综合久久香蕉麻豆| 久久久久久久av麻豆果冻| 洋洋成人永久网站入口| 蜜臀av一区二区在线免费观看 | 国产成人自拍高清视频在线免费播放| 成人app软件下载大全免费| 欧美色精品天天在线观看视频| 精品国产精品一区二区夜夜嗨| 亚洲欧洲国产日韩| 蓝色福利精品导航| 欧美午夜精品久久久久久孕妇| 久久久久国产精品麻豆| 亚洲一区二区av电影| 国模一区二区三区白浆| 欧美午夜寂寞影院| 国产精品久久久久久久久晋中| 日韩电影在线一区| 欧美无人高清视频在线观看| 国产精品拍天天在线| 久久国产夜色精品鲁鲁99| 欧美日韩国产一区| 亚洲精品一二三| 国产精品原创巨作av| 日韩一区二区三| 肉色丝袜一区二区| 欧美日韩国产一区| 亚洲一区二区三区在线播放| 国产精品小仙女| 精品久久一二三区| 日本欧美一区二区| 欧美一区二区三区啪啪| 午夜精品福利一区二区三区蜜桃| 色一情一乱一乱一91av| 国产三级欧美三级| 激情五月激情综合网| 日韩免费成人网| 蜜臀精品一区二区三区在线观看| 欧美日韩成人综合| 日韩精品亚洲专区| 7777精品伊人久久久大香线蕉| 亚洲综合男人的天堂| 91久久免费观看| 亚洲一二三区在线观看| 欧美三级视频在线观看| 亚洲一区欧美一区| 日本韩国欧美一区| 亚洲成人动漫在线免费观看| 欧美三区免费完整视频在线观看| 亚洲精品成人精品456| 欧美性受xxxx黑人xyx性爽| 亚洲国产一二三| 欧美伦理影视网| 老司机免费视频一区二区| 久久久噜噜噜久久中文字幕色伊伊| 国产一区二区三区日韩| 中文字幕的久久| 久99久精品视频免费观看| 欧美精品一区二区三区蜜桃视频| 国产一区二区主播在线| 中文字幕在线观看不卡视频| 国产精品综合二区| 国产欧美日产一区| 粉嫩av一区二区三区在线播放 | 国产成人精品一区二| 欧美国产精品一区| 日本韩国欧美国产| 蜜桃视频免费观看一区| 2019国产精品| 成人97人人超碰人人99| 亚洲第一福利视频在线| 日韩免费性生活视频播放| 国产a区久久久| 亚洲国产另类av| 精品理论电影在线| 一道本成人在线| 精品一区二区三区免费播放| 国产精品亲子乱子伦xxxx裸| 欧美三级中文字幕在线观看| 精品一区二区三区久久| 亚洲人成7777| 精品少妇一区二区三区视频免付费 | 日韩一级片网站| 成人av网站免费观看| 亚洲男同性视频| 在线观看91av| 成人av动漫在线| 老司机精品视频在线| 亚洲欧美一区二区三区极速播放 | 99国产精品久久久久| 日韩精品视频网| 中文字幕亚洲精品在线观看| 欧美一区二区视频免费观看| 波多野结衣的一区二区三区| 韩国理伦片一区二区三区在线播放| 国产调教视频一区| 欧美一区二区视频在线观看2020 | 成人污视频在线观看| 五月激情六月综合| 日韩一区日韩二区| 精品久久久久一区二区国产| 欧美伊人久久久久久久久影院| 国产91精品在线观看| 理论片日本一区| 日韩高清欧美激情| 亚洲一区精品在线| 亚洲免费在线播放| 国产精品色一区二区三区| 精品国产一区二区精华| 欧美一区二区三区视频免费播放| 色婷婷久久综合| 91网页版在线| 精品在线亚洲视频| 日韩精品一二三区| 亚洲国产精品久久人人爱蜜臀| 中文字幕一区二区三| 国产人久久人人人人爽| 久久精品夜色噜噜亚洲a∨| 日韩午夜av一区| 欧美一区二区三区的| 日本福利一区二区| www.视频一区| 9l国产精品久久久久麻豆| 国产99久久久国产精品潘金| 国产一区二区精品久久99| 黄色成人免费在线| 国精产品一区一区三区mba视频 | 99天天综合性| 欧美午夜不卡视频| 日韩视频免费直播| 久久久精品免费免费| 亚洲欧洲无码一区二区三区| 一区二区免费视频| 蜜桃久久精品一区二区| 国产成人精品午夜视频免费| 91色在线porny| 91精品久久久久久久99蜜桃| 久久久国产精品午夜一区ai换脸| 18涩涩午夜精品.www| 日韩国产成人精品| 成人午夜电影网站| 日韩一级二级三级| 国产精品传媒在线| 日韩精品1区2区3区| 国产成人高清视频| 欧美日韩一区二区三区视频| xnxx国产精品| 夜夜夜精品看看| 国内精品伊人久久久久av影院| 91玉足脚交白嫩脚丫在线播放| 91精品免费观看| 国产精品丝袜黑色高跟| 日韩va欧美va亚洲va久久| 成人免费视频国产在线观看| 欧美日韩国产天堂| 成人欧美一区二区三区白人| 日韩av电影天堂| 99久久久久久| 精品美女在线播放| 亚洲福利视频一区二区| 成人禁用看黄a在线| 日韩一区二区在线观看视频播放| 国产精品免费aⅴ片在线观看| 日韩影院在线观看| 91黄色激情网站| 久久精品日产第一区二区三区高清版| 亚洲午夜免费电影| 99riav久久精品riav| 久久久精品日韩欧美| 日本视频一区二区三区| 色欧美88888久久久久久影院| 久久精品一二三| 国产一区二区三区高清播放| 在线播放日韩导航| 亚洲线精品一区二区三区八戒| 成人性生交大片免费看中文网站 | 欧美视频在线一区| 1024国产精品| 成人短视频下载| 国产日产亚洲精品系列| 精品一区二区免费| 日韩无一区二区| 青青草国产成人99久久| 欧美日韩国产另类不卡| 亚洲激情av在线| 91国产成人在线| 亚洲综合色成人| 欧美日韩高清不卡| 日韩福利电影在线| 日韩一区二区三区免费看| 免费观看在线综合| 欧美tickle裸体挠脚心vk|