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

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

?? gzip.cpp

?? #include "pch.h" #include "base64.h" NAMESPACE_BEGIN(CryptoPP) static const int MAX_LINE_LENG
?? CPP
字號:
// gzip.cpp - written and placed in the public domain by Wei Dai

#include "pch.h"
#include "gzip.h"

NAMESPACE_BEGIN(CryptoPP)

Gzip::Gzip(int dlevel, BufferedTransformation *bt)
	: Deflator(dlevel, bt),
	  totalLen(0)
{
	assert (dlevel >= 1 && dlevel <= 9);
	outQueue->Put(MAGIC1);
	outQueue->Put(MAGIC2);
	outQueue->Put(DEFLATED);
	outQueue->Put(0);       // general flag
	outQueue->PutLong(0);   // time stamp
	byte extra = (dlevel == 1) ? FAST : ((dlevel == 9) ? SLOW : 0);
	outQueue->Put(extra);
	outQueue->Put(GZIP_OS_CODE);
}

void Gzip::Put(byte inByte)
{
	Deflator::Put(inByte);
	crc.Update(&inByte, 1);
	++totalLen;
}

void Gzip::Put(const byte *inString, unsigned int length)
{
	Deflator::Put(inString, length);
	crc.Update(inString, length);
	totalLen += length;
}

void Gzip::InputFinished()
{
	Deflator::InputFinished();
	outQueue->PutLong(crc.GetCrc(), false);
	outQueue->PutLong(totalLen, false);
}

// 'this' : used in base member initializer list
#pragma warning(disable: 4355)

Gunzip::Gunzip(BufferedTransformation *output,
			   BufferedTransformation *bypassed)
	: Fork(2), inflater(new BodyProcesser(*this), new TailProcesser(*this))
{
	SelectOutPort(1);
	Attach(bypassed ? bypassed : new BitBucket);
	SelectOutPort(0);
	Attach(output);

	state = PROCESS_HEADER;
	tailLen = 0;
}

void Gunzip::Put(const byte *inString, unsigned int length)
{
	switch (state)
	{
		case PROCESS_HEADER:
			inQueue.Put(inString, length);
			if (inQueue.CurrentSize()>=MAX_HEADERSIZE)
				ProcessHeader();
			break;
		case PROCESS_BODY:
			inflater.Put(inString, length);
			break;
		case AFTER_END:
			AccessPort(1).Put(inString, length);
			break;
	}
}

void Gunzip::InputFinished()
{
	if (state==PROCESS_HEADER)
		ProcessHeader();

	if (state!=AFTER_END)
		inflater.InputFinished();
}

void Gunzip::ProcessHeader()
{
	byte buf[6];
	byte b, flags;

	if (inQueue.Get(buf, 2)!=2) goto error;
	if (buf[0] != MAGIC1 || buf[1] != MAGIC2) goto error;
	if (!inQueue.Skip(1)) goto error;    // skip extra flags
	if (!inQueue.Get(flags)) goto error;
	if (flags & (ENCRYPTED | CONTINUED)) goto error;
	if (inQueue.Skip(6)!=6) goto error;    // Skip file time, extra flags and OS type

	if (flags & EXTRA_FIELDS)   // skip extra fields
	{
		word16 length;
		if(!inQueue.GetShort(length, false)) goto error;
		if (inQueue.Skip(length)!=length) goto error;
	}

	if (flags & FILENAME)   // skip filename
		do
			if(!inQueue.Get(b)) goto error;
		while (b);

	if (flags & COMMENTS)   // skip comments
		do
			if(!inQueue.Get(b)) goto error;
		while (b);

	inQueue.TransferTo(inflater);
	state = PROCESS_BODY;
	return;
error:
	throw HeaderErr();
}

void Gunzip::ProcessTail()
{
	assert(tailLen == 8);

	word32 calculatedCrc = crc.GetCrc();

	if ((((word32)tail[0]) | ((word32)tail[1] << 8) | ((word32)tail[2] << 16) | ((word32)tail[3] << 24)) != calculatedCrc)
		throw CrcErr();

	if ((((word32)tail[4]) | ((word32)tail[5] << 8) | ((word32)tail[6] << 16) | ((word32)tail[7] << 24)) != totalLen)
		throw LengthErr();

	tailLen = 9;    // signal TailProcesser to bypass everything from now on
}

Gunzip::BodyProcesser::BodyProcesser(Gunzip &parent)
	: parent(parent)
{
	parent.totalLen = 0;
}

void Gunzip::BodyProcesser::Put(const byte *inString, unsigned int length)
{
	parent.AccessPort(0).Put(inString, length);
	parent.crc.Update(inString, length);
	parent.totalLen += length;
}

Gunzip::TailProcesser::TailProcesser(Gunzip &parent)
	: parent(parent)
{
	parent.tailLen = 0;
}

void Gunzip::TailProcesser::Put(const byte *inString, unsigned int length)
{
	if (parent.tailLen < 8)
	{
		int l = STDMIN(8-parent.tailLen, length);
		memcpy(parent.tail+parent.tailLen, inString, l);
		inString += l;
		length -= l;
		parent.tailLen += l;
	}

	if (parent.tailLen == 8)
		parent.ProcessTail();

	if (length)
		parent.AccessPort(1).Put(inString, length);
}

NAMESPACE_END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频免费观看| 麻豆成人久久精品二区三区小说| 国产成人免费视频网站 | 91在线观看下载| 亚洲欧美视频在线观看| 色综合 综合色| 亚洲成a人片在线观看中文| 91精品国产综合久久国产大片| 免费视频最近日韩| 国产欧美精品区一区二区三区| 成人一级视频在线观看| 亚洲激情图片qvod| 欧美一区二区精美| 成人中文字幕在线| 成人免费在线视频观看| 欧美精品日日鲁夜夜添| 激情文学综合丁香| 亚洲欧洲成人av每日更新| 日本高清不卡aⅴ免费网站| 五月综合激情婷婷六月色窝| 精品国产成人在线影院| heyzo一本久久综合| 五月天一区二区| 久久久久久99久久久精品网站| aaa欧美色吧激情视频| 婷婷成人综合网| 国产日韩综合av| 欧美羞羞免费网站| 国产精品一区二区三区网站| 亚洲美女电影在线| 精品国产三级电影在线观看| 97精品电影院| 久久精品久久综合| 亚洲久草在线视频| 久久看人人爽人人| 欧美精品一卡二卡| av在线不卡网| 久久精品噜噜噜成人av农村| 亚洲欧美激情一区二区| 精品国产一区二区三区忘忧草| 色偷偷久久人人79超碰人人澡| 精品一区二区三区日韩| 一区二区三区国产精华| 国产校园另类小说区| 欧美日韩一区二区三区四区| 国产成人午夜精品5599| 三级精品在线观看| 亚洲老司机在线| 欧美国产在线观看| 日韩一区二区视频| 欧美日本一区二区在线观看| 波多野结衣视频一区| 美国三级日本三级久久99| 伊人婷婷欧美激情| 国产欧美日本一区二区三区| 日韩欧美成人一区| 在线播放/欧美激情| 在线一区二区视频| 91麻豆自制传媒国产之光| 国产在线不卡一区| 麻豆精品新av中文字幕| 丝袜美腿亚洲综合| 亚洲品质自拍视频| 亚洲欧洲在线观看av| 欧美国产成人在线| 久久综合一区二区| 欧美mv和日韩mv的网站| 日韩欧美国产一区二区三区 | 婷婷一区二区三区| 亚洲一区二区三区自拍| 成人欧美一区二区三区| 亚洲欧洲韩国日本视频| 欧美国产欧美亚州国产日韩mv天天看完整 | 国产欧美精品在线观看| 欧美大片在线观看一区二区| 91精品国产日韩91久久久久久| 欧美日韩国产免费一区二区 | 一区二区三区电影在线播| 国产精品伦一区| 亚洲国产精品精华液ab| 国产精品视频在线看| 中文在线一区二区| 亚洲国产精品传媒在线观看| 国产精品国产三级国产普通话蜜臀| 国产日韩在线不卡| 中文字幕一区在线| 亚洲精品国产一区二区精华液| 亚洲乱码精品一二三四区日韩在线| 国产精品高潮呻吟| 亚洲综合色视频| 午夜精品久久久久久久99樱桃 | 精品少妇一区二区三区在线视频| 精品蜜桃在线看| 亚洲国产精品成人综合色在线婷婷| 国产精品私人影院| 亚洲一卡二卡三卡四卡五卡| 日韩成人精品在线观看| 国产精品一区专区| 日本韩国精品在线| 91精品国产aⅴ一区二区| 亚洲精品一区二区三区精华液| 国产精品乱码久久久久久| 一区二区三区日韩欧美| 日韩不卡一区二区| 国产精华液一区二区三区| 色视频欧美一区二区三区| 91麻豆精品国产91久久久资源速度 | 欧美欧美午夜aⅴ在线观看| 91精品国产一区二区| 精品国产在天天线2019| 国产精品卡一卡二| 亚洲二区在线视频| 久久er精品视频| 99re6这里只有精品视频在线观看| 日本精品一级二级| 精品99一区二区| 一区二区三区影院| 精品综合久久久久久8888| 色婷婷久久久亚洲一区二区三区| 欧美一区二区三区在线观看 | 亚洲精品视频免费看| 美女一区二区三区| 99综合影院在线| 精品久久五月天| 亚洲永久精品大片| 国产伦精品一区二区三区免费| 91免费看`日韩一区二区| 日韩一卡二卡三卡国产欧美| 亚洲视频在线观看三级| 精品无人码麻豆乱码1区2区| 91浏览器入口在线观看| 久久综合久色欧美综合狠狠| 亚洲h精品动漫在线观看| 成人午夜在线免费| 欧美一区二区人人喊爽| 中文字幕亚洲视频| 韩国午夜理伦三级不卡影院| 在线亚洲+欧美+日本专区| 国产日韩三级在线| 另类小说欧美激情| 欧美日韩成人综合| 18成人在线视频| 粉嫩aⅴ一区二区三区四区五区| 欧美三级电影在线观看| 亚洲婷婷在线视频| 国产乱子伦一区二区三区国色天香| 欧美人狂配大交3d怪物一区| 亚洲视频一区在线| av一区二区久久| 国产欧美日韩精品一区| 国产成人精品网址| 欧美精品一区二区三区在线| 免费一区二区视频| 91精品国产综合久久精品| 婷婷国产在线综合| 欧美三级中文字幕| 亚洲国产一区二区视频| 欧美综合在线视频| 亚洲图片另类小说| 色屁屁一区二区| 亚洲精品国产无套在线观| 91免费国产视频网站| 亚洲免费毛片网站| 色先锋久久av资源部| 亚洲黄色性网站| 欧美在线视频日韩| 亚洲成人tv网| 国产盗摄一区二区三区| 欧美一区二区二区| 精品视频在线免费| 亚洲免费高清视频在线| 99精品久久久久久| 国产麻豆精品久久一二三| 欧美一区二区三区免费视频| 亚洲欧美另类小说| 在线精品观看国产| 亚洲视频网在线直播| 91精品国产综合久久精品| 久久狠狠亚洲综合| 精品少妇一区二区| 国产精品久久综合| 国产成人在线影院| 日本一区二区在线不卡| 欧美精品一卡二卡| 成人激情图片网| 日韩精品成人一区二区在线| 国产日产欧美一区| 欧美一区二区在线视频| 国产91精品一区二区| 日韩专区欧美专区| 国产精品久久久久精k8| 欧美一区二区三区视频在线 | 国产日韩av一区二区| 欧美日韩高清一区二区不卡| 成人三级伦理片| 久久精品国产精品亚洲综合| 亚洲精品乱码久久久久久久久| 久久精品水蜜桃av综合天堂| 91精品欧美福利在线观看| 91免费国产视频网站|