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

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

?? definit.c

?? windows gzip source code
?? C
字號:
//
// definit.c
//
// Initialisation code for deflate (compression stage)
//
// Includes both some one-time init routines, as well as a per context/reset init routine
//
#include "types.h"
#include "deflate.h"
#include "inflate.h"
#include "defproto.h"
#include <string.h>
#include <stdio.h>
#include <crtdbg.h>


//
// This function is called by the standard and optimal encoders, and creates the initial tree
// used to record literals for the first block.  After the first block we use the last block's
// trees to record data.
//
// This function does not change global data, and is called one a per context creation/reset.
//
VOID DeflateInitRecordingTables(
    BYTE *  recording_literal_len,
    USHORT *recording_literal_code,
    BYTE *  recording_dist_len,
    USHORT *recording_dist_code
)
{
    // BUGBUG These frequencies were taken from running on some text file, better stats could
    // be obtained from using an html page.  This barely affects compression though; bad estimates
    // will just make the recording buffer fill up a little bit sooner, making us output a block
    // a little sooner, which isn't always a bad thing anyway.
	USHORT	recording_dist_tree_freq[MAX_DIST_TREE_ELEMENTS*2] = 
	{
		2,2,3,4,3,7,16,22,42,60,100,80,149,158,223,200,380,324,537,
		477,831,752,1231,999,1369,1100,2034,1667,2599,2216,0,0
	};

	USHORT	recording_literal_tree_freq[MAX_LITERAL_TREE_ELEMENTS*2];

    int i;

	makeTree(
		MAX_DIST_TREE_ELEMENTS, 
		RECORDING_DIST_MAX_CODE_LEN, 
		recording_dist_tree_freq, 
		recording_dist_code, 
		recording_dist_len
	);

    // BUGBUG Put a better estimation in here!  This assumes all literals (chars and matches)
    // are equally likely, which they aren't (although all chars might be fairly equal for a
    // binary file).
	for (i = 0; i < MAX_LITERAL_TREE_ELEMENTS; i++)
		recording_literal_tree_freq[i] = 1;

	makeTree(
		MAX_LITERAL_TREE_ELEMENTS, 
		RECORDING_LIT_MAX_CODE_LEN, 
		recording_literal_tree_freq, 
		recording_literal_code, 
		recording_literal_len
	);
}


//
// One-time init
//
// Generate the global slot tables which allow us to convert a distance
// (0..32K) to a distance slot (0..29), and a length (3..258) to
// a length slot (0...28)
//
static void GenerateSlotTables(void)
{
	int code, length, dist, n;

        /* Initialize the mapping length (0..255) -> length code (0..28) */
	length = 0;
	
	for (code = 0; code < NUM_LENGTH_BASE_CODES-1; code++)
	{
		for (n = 0; n < (1 << g_ExtraLengthBits[code]); n++) 
			g_LengthLookup[length++] = (byte) code;
	}

	g_LengthLookup[length-1] = (byte) code;

        /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
	dist = 0;
    
	for (code = 0 ; code < 16; code++)
	{
		for (n = 0; n < (1 << g_ExtraDistanceBits[code]); n++)
			g_DistLookup[dist++] = (byte) code;
	}

	dist >>= 7; /* from now on, all distances are divided by 128 */
    
	for ( ; code < NUM_DIST_BASE_CODES; code++) 
	{
		for (n = 0; n < (1 << (g_ExtraDistanceBits[code]-7)); n++) 
			g_DistLookup[256 + dist++] = (byte) code;
	}

    // ensure we didn't overflow the array
    _ASSERT(256 + dist <= sizeof(g_DistLookup)/sizeof(g_DistLookup[0]));
}


//
// One-time init
//
// Generate tables for encoding static blocks
//
static void GenerateStaticEncodingTables(void)
{
    int     i;
    int     len_cnt[17];
    BYTE    StaticDistanceTreeLength[MAX_DIST_TREE_ELEMENTS];

    // ensure we have already created the StaticLiteralTreeLength array
    // if we haven't, then this value would be zero
    _ASSERT(g_StaticLiteralTreeLength[0] != 0);

    //
    // Make literal tree
    //
    for (i = 0; i < 17; i++)
        len_cnt[i] = 0;

    // length count (how many length 8's, 9's, etc. there are) - needed to call makeCode()
    len_cnt[8] = 144;
    len_cnt[9] = 255-144+1;
    len_cnt[7] = 279-256+1;
    len_cnt[8] += (287-280)+1;

    makeCode(
        MAX_LITERAL_TREE_ELEMENTS, 
        len_cnt, 
        g_StaticLiteralTreeLength,
        g_StaticLiteralTreeCode
    );

    //
    // Make distance tree; there are 32 5-bit codes
    //
    for (i = 0; i < 17; i++)
        len_cnt[i] = 0;

    len_cnt[5] = 32;

    // We don't store StaticDistanceTreeLength[] globally, since it's 5 for everything,
    // but we need it to call makeCode()
    for (i = 0; i < MAX_DIST_TREE_ELEMENTS; i++)
        StaticDistanceTreeLength[i] = 5;

    makeCode(
        MAX_DIST_TREE_ELEMENTS, 
        len_cnt, 
        StaticDistanceTreeLength,
        g_StaticDistanceTreeCode
    );
}


//
// Initialise global deflate data in the DLL
//
VOID deflateInit(VOID)
{
    GenerateSlotTables();
    InitStaticBlock();
    GenerateStaticEncodingTables();

    // For the fast encoder, take the hard-coded global tree we're using (which is NOT the same as
    // a static block's tree), generate the bitwise output for outputting the structure of that
    // tree, and record that globally, so that we can do a simple memcpy() to output the tree for
    // the fast encoder, instead of calling the tree output routine all the time.  This is a nifty
    // performance optimisation.
    FastEncoderGenerateDynamicTreeEncoding();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色香蕉成人二区免费| 国模娜娜一区二区三区| 欧美经典三级视频一区二区三区| 91精品一区二区三区久久久久久| 色婷婷久久久综合中文字幕| 91免费版在线| 欧美系列在线观看| 欧美午夜精品久久久久久超碰 | 欧美岛国在线观看| 日韩亚洲欧美中文三级| 日韩欧美的一区| 久久久久国产精品麻豆ai换脸| 日本一区二区三区视频视频| 国产精品免费免费| 一区二区三区日韩精品| 日韩激情中文字幕| 国产精品乡下勾搭老头1| 成人小视频免费在线观看| 日本高清不卡视频| 欧美一区二区三区视频| 国产日韩精品一区二区三区在线| 中文字幕亚洲综合久久菠萝蜜| 亚洲国产wwwccc36天堂| 美国三级日本三级久久99| 成人理论电影网| 欧美亚洲国产bt| 久久综合给合久久狠狠狠97色69| 国产精品乱码人人做人人爱| 亚洲国产欧美在线人成| 国内偷窥港台综合视频在线播放| 成人小视频在线观看| 欧美日韩精品三区| 久久精品视频网| 午夜精品福利一区二区三区蜜桃| 国产一区二区不卡老阿姨| 91一区二区三区在线观看| 777午夜精品免费视频| 中文字幕不卡三区| 日韩电影免费在线看| av一区二区三区| 日韩精品中午字幕| 亚洲精品老司机| 国产成人av电影在线观看| 99re这里只有精品首页| 成人av网在线| 国产美女娇喘av呻吟久久| 99久久久久久99| 91精品国产一区二区| 国产三级欧美三级日产三级99| 亚洲国产一二三| 粉嫩aⅴ一区二区三区四区| 日韩视频123| 一区二区成人在线视频| 成人精品电影在线观看| 精品国产伦一区二区三区观看方式 | 51久久夜色精品国产麻豆| 中文字幕精品综合| 国产一区二区看久久| 在线播放91灌醉迷j高跟美女| 综合久久给合久久狠狠狠97色| 精品在线播放免费| 欧美一级二级三级乱码| 亚洲国产日韩a在线播放性色| 91在线视频在线| 国产精品天美传媒沈樵| 国产精品亚洲а∨天堂免在线| 欧美mv和日韩mv国产网站| 美女爽到高潮91| 日韩一级片网站| 免费成人在线播放| 日韩免费福利电影在线观看| 日韩av在线发布| 日韩精品一区二区在线| 日本不卡免费在线视频| 日韩一区二区精品在线观看| 日韩国产欧美在线播放| 91精品国产欧美一区二区18| 亚洲成人动漫精品| 欧美午夜在线一二页| 亚洲美女在线一区| 欧美三级电影网站| 日韩精品电影一区亚洲| 欧美一级欧美三级在线观看| 久久www免费人成看片高清| 精品蜜桃在线看| 国产伦精品一区二区三区视频青涩 | 欧美久久高跟鞋激| 天天av天天翘天天综合网色鬼国产| 欧美日韩亚洲丝袜制服| 免费高清不卡av| 国产欧美日韩三级| 色婷婷一区二区| 天天操天天综合网| 国产亚洲一区二区三区| 99国产精品视频免费观看| 亚洲在线视频免费观看| 日韩一级大片在线观看| 成人免费视频caoporn| 亚洲综合一区二区| 日韩色视频在线观看| 成人av在线资源| 日韩vs国产vs欧美| 国产欧美日韩综合| 欧美日本一区二区三区| 国产精品自拍av| 一区二区在线观看免费视频播放| 欧美精品在线视频| 国产精品一区二区三区99| 亚洲欧美一区二区三区极速播放 | 国产精品欧美经典| 欧美性感一区二区三区| 加勒比av一区二区| 亚洲乱码国产乱码精品精的特点 | 久久奇米777| av在线综合网| 韩国欧美国产1区| 亚洲三级免费观看| 精品久久久久99| 欧美日韩在线播放三区四区| 国产一区二区主播在线| 亚洲国产美女搞黄色| 中文幕一区二区三区久久蜜桃| 欧美精选午夜久久久乱码6080| 成人精品在线视频观看| 久久不见久久见免费视频7| 亚洲精品免费播放| 国产校园另类小说区| 日韩欧美中文字幕一区| 色综合久久九月婷婷色综合| 国产一区91精品张津瑜| 日韩精品国产精品| 亚洲国产精品一区二区www在线| 中国av一区二区三区| 精品国产91洋老外米糕| 91精品国产91久久久久久一区二区 | 91视频国产资源| 粉嫩高潮美女一区二区三区| 黄色日韩网站视频| 麻豆精品新av中文字幕| 蜜臀久久久99精品久久久久久| 亚洲一级片在线观看| 一区二区三区在线视频免费| 自拍偷自拍亚洲精品播放| 中文字幕高清一区| 国产精品久久影院| 国产精品久久久久影院| 国产精品免费视频一区| 国产精品视频线看| 中文字幕av在线一区二区三区| 国产亚洲人成网站| 国产亚洲欧洲一区高清在线观看| 日韩免费看网站| 欧美大肚乱孕交hd孕妇| 日韩午夜av电影| 精品理论电影在线| 久久精品一区蜜桃臀影院| 欧美国产成人精品| 国产精品免费av| 国产精品国产三级国产专播品爱网| 国产亚洲精品资源在线26u| 国产精品视频一区二区三区不卡| 国产欧美日韩综合| 亚洲欧洲另类国产综合| 亚洲自拍偷拍九九九| 舔着乳尖日韩一区| 久久国产精品99久久久久久老狼| 国产在线不卡一卡二卡三卡四卡| 国产精品1区二区.| 91丝袜高跟美女视频| 欧美裸体bbwbbwbbw| 日韩精品一区在线| 欧美激情艳妇裸体舞| 亚洲激情在线播放| 轻轻草成人在线| 粉嫩一区二区三区在线看| 色狠狠一区二区三区香蕉| 欧美日韩久久一区二区| 精品国产三级电影在线观看| 国产精品久久久久一区二区三区| 亚洲一级片在线观看| 韩国女主播成人在线观看| 91在线免费播放| 欧美日韩一本到| 国产日产欧产精品推荐色| 一区二区三区国产精品| 免费高清视频精品| 91免费观看视频| 欧美sm美女调教| 一区二区三区在线免费观看| 久久www免费人成看片高清| 91在线云播放| 久久无码av三级| 亚洲bt欧美bt精品777| 成人污污视频在线观看| 69堂成人精品免费视频| 亚洲欧美自拍偷拍色图| 久久不见久久见免费视频1| 欧美亚洲一区二区三区四区| 欧美国产日韩a欧美在线观看| 午夜一区二区三区视频|