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

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

?? filters.cpp

?? 常用字符串hash算法
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
// filters.cpp - written and placed in the public domain by Wei Dai#include "pch.h"#include "filters.h"#include "mqueue.h"#include "fltrimpl.h"#include "argnames.h"#include <memory>#include <functional>NAMESPACE_BEGIN(CryptoPP)Filter::Filter(BufferedTransformation *attachment)	: m_attachment(attachment), m_continueAt(0){}BufferedTransformation * Filter::NewDefaultAttachment() const{	return new MessageQueue;}BufferedTransformation * Filter::AttachedTransformation(){	if (m_attachment.get() == NULL)		m_attachment.reset(NewDefaultAttachment());	return m_attachment.get();}const BufferedTransformation *Filter::AttachedTransformation() const{	if (m_attachment.get() == NULL)		const_cast<Filter *>(this)->m_attachment.reset(NewDefaultAttachment());	return m_attachment.get();}void Filter::Detach(BufferedTransformation *newOut){	m_attachment.reset(newOut);	NotifyAttachmentChange();}void Filter::Insert(Filter *filter){	filter->m_attachment.reset(m_attachment.release());	m_attachment.reset(filter);	NotifyAttachmentChange();}unsigned int Filter::CopyRangeTo2(BufferedTransformation &target, unsigned long &begin, unsigned long end, const std::string &channel, bool blocking) const{	return AttachedTransformation()->CopyRangeTo2(target, begin, end, channel, blocking);}unsigned int Filter::TransferTo2(BufferedTransformation &target, unsigned long &transferBytes, const std::string &channel, bool blocking){	return AttachedTransformation()->TransferTo2(target, transferBytes, channel, blocking);}void Filter::Initialize(const NameValuePairs &parameters, int propagation){	m_continueAt = 0;	IsolatedInitialize(parameters);	PropagateInitialize(parameters, propagation);}bool Filter::Flush(bool hardFlush, int propagation, bool blocking){	switch (m_continueAt)	{	case 0:		if (IsolatedFlush(hardFlush, blocking))			return true;	case 1:		if (OutputFlush(1, hardFlush, propagation, blocking))			return true;	}	return false;}bool Filter::MessageSeriesEnd(int propagation, bool blocking){	switch (m_continueAt)	{	case 0:		if (IsolatedMessageSeriesEnd(blocking))			return true;	case 1:		if (ShouldPropagateMessageSeriesEnd() && OutputMessageSeriesEnd(1, propagation, blocking))			return true;	}	return false;}void Filter::PropagateInitialize(const NameValuePairs &parameters, int propagation, const std::string &channel){	if (propagation)		AttachedTransformation()->ChannelInitialize(channel, parameters, propagation-1);}unsigned int Filter::Output(int outputSite, const byte *inString, unsigned int length, int messageEnd, bool blocking, const std::string &channel){	if (messageEnd)		messageEnd--;	unsigned int result = AttachedTransformation()->Put2(inString, length, messageEnd, blocking);	m_continueAt = result ? outputSite : 0;	return result;}bool Filter::OutputFlush(int outputSite, bool hardFlush, int propagation, bool blocking, const std::string &channel){	if (propagation && AttachedTransformation()->ChannelFlush(channel, hardFlush, propagation-1, blocking))	{		m_continueAt = outputSite;		return true;	}	m_continueAt = 0;	return false;}bool Filter::OutputMessageSeriesEnd(int outputSite, int propagation, bool blocking, const std::string &channel){	if (propagation && AttachedTransformation()->ChannelMessageSeriesEnd(channel, propagation-1, blocking))	{		m_continueAt = outputSite;		return true;	}	m_continueAt = 0;	return false;}// *************************************************************unsigned int MeterFilter::Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking){	if (m_transparent)	{		FILTER_BEGIN;		m_currentMessageBytes += length;		m_totalBytes += length;		if (messageEnd)		{			m_currentMessageBytes = 0;			m_currentSeriesMessages++;			m_totalMessages++;		}				FILTER_OUTPUT(1, begin, length, messageEnd);		FILTER_END_NO_MESSAGE_END;	}	return 0;}bool MeterFilter::IsolatedMessageSeriesEnd(bool blocking){	m_currentMessageBytes = 0;	m_currentSeriesMessages = 0;	m_totalMessageSeries++;	return false;}// *************************************************************void FilterWithBufferedInput::BlockQueue::ResetQueue(unsigned int blockSize, unsigned int maxBlocks){	m_buffer.New(blockSize * maxBlocks);	m_blockSize = blockSize;	m_maxBlocks = maxBlocks;	m_size = 0;	m_begin = m_buffer;}byte *FilterWithBufferedInput::BlockQueue::GetBlock(){	if (m_size >= m_blockSize)	{		byte *ptr = m_begin;		if ((m_begin+=m_blockSize) == m_buffer.end())			m_begin = m_buffer;		m_size -= m_blockSize;		return ptr;	}	else		return NULL;}byte *FilterWithBufferedInput::BlockQueue::GetContigousBlocks(unsigned int &numberOfBytes){	numberOfBytes = STDMIN(numberOfBytes, STDMIN((unsigned int)(m_buffer.end()-m_begin), m_size));	byte *ptr = m_begin;	m_begin += numberOfBytes;	m_size -= numberOfBytes;	if (m_size == 0 || m_begin == m_buffer.end())		m_begin = m_buffer;	return ptr;}unsigned int FilterWithBufferedInput::BlockQueue::GetAll(byte *outString){	unsigned int size = m_size;	unsigned int numberOfBytes = m_maxBlocks*m_blockSize;	const byte *ptr = GetContigousBlocks(numberOfBytes);	memcpy(outString, ptr, numberOfBytes);	memcpy(outString+numberOfBytes, m_begin, m_size);	m_size = 0;	return size;}void FilterWithBufferedInput::BlockQueue::Put(const byte *inString, unsigned int length){	assert(m_size + length <= m_buffer.size());	byte *end = (m_size < (unsigned int)(m_buffer.end()-m_begin)) ? m_begin + m_size : m_begin + m_size - m_buffer.size();	unsigned int len = STDMIN(length, (unsigned int)(m_buffer.end()-end));	memcpy(end, inString, len);	if (len < length)		memcpy(m_buffer, inString+len, length-len);	m_size += length;}FilterWithBufferedInput::FilterWithBufferedInput(BufferedTransformation *attachment)	: Filter(attachment){}FilterWithBufferedInput::FilterWithBufferedInput(unsigned int firstSize, unsigned int blockSize, unsigned int lastSize, BufferedTransformation *attachment)	: Filter(attachment), m_firstSize(firstSize), m_blockSize(blockSize), m_lastSize(lastSize)	, m_firstInputDone(false){	if (m_firstSize < 0 || m_blockSize < 1 || m_lastSize < 0)		throw InvalidArgument("FilterWithBufferedInput: invalid buffer size");	m_queue.ResetQueue(1, m_firstSize);}void FilterWithBufferedInput::IsolatedInitialize(const NameValuePairs &parameters){	InitializeDerivedAndReturnNewSizes(parameters, m_firstSize, m_blockSize, m_lastSize);	if (m_firstSize < 0 || m_blockSize < 1 || m_lastSize < 0)		throw InvalidArgument("FilterWithBufferedInput: invalid buffer size");	m_queue.ResetQueue(1, m_firstSize);	m_firstInputDone = false;}bool FilterWithBufferedInput::IsolatedFlush(bool hardFlush, bool blocking){	if (!blocking)		throw BlockingInputOnly("FilterWithBufferedInput");		if (hardFlush)		ForceNextPut();	FlushDerived();		return false;}unsigned int FilterWithBufferedInput::PutMaybeModifiable(byte *inString, unsigned int length, int messageEnd, bool blocking, bool modifiable){	if (!blocking)		throw BlockingInputOnly("FilterWithBufferedInput");	if (length != 0)	{		unsigned int newLength = m_queue.CurrentSize() + length;		if (!m_firstInputDone && newLength >= m_firstSize)		{			unsigned int len = m_firstSize - m_queue.CurrentSize();			m_queue.Put(inString, len);			FirstPut(m_queue.GetContigousBlocks(m_firstSize));			assert(m_queue.CurrentSize() == 0);			m_queue.ResetQueue(m_blockSize, (2*m_blockSize+m_lastSize-2)/m_blockSize);			inString += len;			newLength -= m_firstSize;			m_firstInputDone = true;		}		if (m_firstInputDone)		{			if (m_blockSize == 1)			{				while (newLength > m_lastSize && m_queue.CurrentSize() > 0)				{					unsigned int len = newLength - m_lastSize;					byte *ptr = m_queue.GetContigousBlocks(len);					NextPutModifiable(ptr, len);					newLength -= len;				}				if (newLength > m_lastSize)				{					unsigned int len = newLength - m_lastSize;					NextPutMaybeModifiable(inString, len, modifiable);					inString += len;					newLength -= len;				}			}			else			{				while (newLength >= m_blockSize + m_lastSize && m_queue.CurrentSize() >= m_blockSize)				{					NextPutModifiable(m_queue.GetBlock(), m_blockSize);					newLength -= m_blockSize;				}				if (newLength >= m_blockSize + m_lastSize && m_queue.CurrentSize() > 0)				{					assert(m_queue.CurrentSize() < m_blockSize);					unsigned int len = m_blockSize - m_queue.CurrentSize();					m_queue.Put(inString, len);					inString += len;					NextPutModifiable(m_queue.GetBlock(), m_blockSize);					newLength -= m_blockSize;				}				if (newLength >= m_blockSize + m_lastSize)				{					unsigned int len = RoundDownToMultipleOf(newLength - m_lastSize, m_blockSize);					NextPutMaybeModifiable(inString, len, modifiable);					inString += len;					newLength -= len;				}			}		}		m_queue.Put(inString, newLength - m_queue.CurrentSize());	}	if (messageEnd)	{		if (!m_firstInputDone && m_firstSize==0)			FirstPut(NULL);		SecByteBlock temp(m_queue.CurrentSize());		m_queue.GetAll(temp);		LastPut(temp, temp.size());		m_firstInputDone = false;		m_queue.ResetQueue(1, m_firstSize);		Output(1, NULL, 0, messageEnd, blocking);	}	return 0;}void FilterWithBufferedInput::ForceNextPut(){	if (!m_firstInputDone)		return;		if (m_blockSize > 1)	{		while (m_queue.CurrentSize() >= m_blockSize)			NextPutModifiable(m_queue.GetBlock(), m_blockSize);	}	else	{		unsigned int len;		while ((len = m_queue.CurrentSize()) > 0)			NextPutModifiable(m_queue.GetContigousBlocks(len), len);	}}void FilterWithBufferedInput::NextPutMultiple(const byte *inString, unsigned int length){	assert(m_blockSize > 1);	// m_blockSize = 1 should always override this function	while (length > 0)	{		assert(length >= m_blockSize);		NextPutSingle(inString);		inString += m_blockSize;		length -= m_blockSize;	}}// *************************************************************void Redirector::ChannelInitialize(const std::string &channel, const NameValuePairs &parameters, int propagation){	if (channel.empty())	{		m_target = parameters.GetValueWithDefault("RedirectionTargetPointer", (BufferedTransformation*)NULL);		m_passSignal = parameters.GetValueWithDefault("PassSignal", true);	}	if (m_target && m_passSignal)		m_target->ChannelInitialize(channel, parameters, propagation);}// *************************************************************ProxyFilter::ProxyFilter(BufferedTransformation *filter, unsigned int firstSize, unsigned int lastSize, BufferedTransformation *attachment)	: FilterWithBufferedInput(firstSize, 1, lastSize, attachment), m_filter(filter){	if (m_filter.get())		m_filter->Attach(new OutputProxy(*this, false));}bool ProxyFilter::IsolatedFlush(bool hardFlush, bool blocking){	return m_filter.get() ? m_filter->Flush(hardFlush, -1, blocking) : false;}void ProxyFilter::SetFilter(Filter *filter){	m_filter.reset(filter);	if (filter)	{		OutputProxy *proxy;		std::auto_ptr<OutputProxy> temp(proxy = new OutputProxy(*this, false));		m_filter->TransferAllTo(*proxy);		m_filter->Attach(temp.release());	}}void ProxyFilter::NextPutMultiple(const byte *s, unsigned int len) {	if (m_filter.get())		m_filter->Put(s, len);}// *************************************************************unsigned int ArraySink::Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking){	memcpy(m_buf+m_total, begin, STDMIN(length, SaturatingSubtract(m_size, m_total)));	m_total += length;	return 0;}byte * ArraySink::CreatePutSpace(unsigned int &size){	size = m_size - m_total;	return m_buf + m_total;}void ArraySink::IsolatedInitialize(const NameValuePairs &parameters){	ByteArrayParameter array;	if (!parameters.GetValue(Name::OutputBuffer(), array))		throw InvalidArgument("ArraySink: missing OutputBuffer argument");	m_buf = array.begin();	m_size = array.size();	m_total = 0;}unsigned int ArrayXorSink::Put2(const byte *begin, unsigned int length, int messageEnd, bool blocking){

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久综合九色综合欧美98| 国产亚洲一本大道中文在线| 欧美在线制服丝袜| 91麻豆精品久久久久蜜臀| 日韩欧美中文字幕一区| 日韩一级精品视频在线观看| 欧美极品aⅴ影院| 亚洲激情自拍视频| 亚洲自拍偷拍网站| 蜜桃久久av一区| 懂色av中文字幕一区二区三区| jiyouzz国产精品久久| 欧美日韩成人综合在线一区二区| 精品福利一区二区三区免费视频| 国产精品二区一区二区aⅴ污介绍| 丝袜亚洲另类欧美| 波多野结衣在线aⅴ中文字幕不卡| 欧美男女性生活在线直播观看| 欧美精品一区二区久久婷婷 | 久久精品亚洲麻豆av一区二区| 国产精品免费aⅴ片在线观看| 午夜精品久久久| 国产成人综合视频| 欧美久久久久久蜜桃| 国产精品美日韩| 麻豆精品一区二区综合av| 99久久精品久久久久久清纯| 精品美女被调教视频大全网站| 亚洲欧洲成人av每日更新| 国产一区二区三区国产| 欧美理论在线播放| 国产精品亲子伦对白| 午夜精品一区二区三区免费视频 | 极品美女销魂一区二区三区 | 国产欧美日韩视频在线观看| 亚洲成va人在线观看| 国产91精品精华液一区二区三区| 91麻豆精品91久久久久同性| 专区另类欧美日韩| 国产在线日韩欧美| 91精品国产综合久久蜜臀 | 青青草伊人久久| 一本色道亚洲精品aⅴ| 欧美一区二区女人| 天堂va蜜桃一区二区三区漫画版 | 久久午夜羞羞影院免费观看| 日韩专区在线视频| 欧美日韩一区 二区 三区 久久精品 | 亚洲成人动漫在线观看| 99久久亚洲一区二区三区青草| 久久青草欧美一区二区三区| 免费精品99久久国产综合精品| 欧美日韩视频一区二区| 亚洲国产日韩精品| 日本精品视频一区二区| 亚洲欧美日韩一区二区三区在线观看 | 蜜桃久久久久久久| 精品日韩av一区二区| 日本不卡123| 日韩视频在线一区二区| 久久99精品久久久| 久久久亚洲国产美女国产盗摄| 国产一区二区中文字幕| 精品福利av导航| 国产剧情一区在线| 中文字幕第一区第二区| 91丨国产丨九色丨pron| 欧美国产日本视频| 91天堂素人约啪| 亚洲综合激情网| 91精品国产一区二区三区蜜臀 | 精品国产3级a| 日韩av不卡在线观看| 2024国产精品| 成人午夜免费视频| 亚洲一区视频在线| 91精品国产一区二区人妖| 日av在线不卡| 中文字幕欧美国产| 欧美三级三级三级| 国产真实乱对白精彩久久| 亚洲图片另类小说| 91社区在线播放| 奇米色777欧美一区二区| 久久这里只有精品首页| 97精品久久久久中文字幕| 亚洲一二三区在线观看| 久久无码av三级| 色狠狠一区二区| 国内精品久久久久影院一蜜桃| 国产精品高潮呻吟| 3d动漫精品啪啪1区2区免费| 国产福利一区二区三区视频在线 | 久久九九99视频| 91年精品国产| 中文字幕一区免费在线观看| 欧美日韩高清一区二区不卡| 91精品国产综合久久久久久久久久 | 亚洲码国产岛国毛片在线| 久久久99精品免费观看| 日韩区在线观看| 777色狠狠一区二区三区| 色久优优欧美色久优优| 91在线精品一区二区| 成人自拍视频在线观看| 国产一区二区三区视频在线播放| 日本美女一区二区| 日韩精品视频网站| 婷婷久久综合九色综合绿巨人| 亚洲欧美视频在线观看视频| 亚洲欧洲美洲综合色网| 国产精品理论片| 中文字幕在线播放不卡一区| 国产欧美一区二区精品久导航| 久久精品亚洲麻豆av一区二区| 精品久久久久久久久久久久久久久久久 | 欧美精品视频www在线观看| 欧美中文字幕一区| 欧美日本在线观看| 欧美一区二区三区电影| 91麻豆精品91久久久久同性| 日韩一区二区在线观看视频| 日韩精品一区二区三区四区视频| 日韩你懂的在线观看| 久久久影院官网| 亚洲国产高清不卡| 亚洲欧洲综合另类| 亚洲自拍偷拍麻豆| 午夜成人免费电影| 麻豆一区二区三| 国产成人一区在线| 99这里只有久久精品视频| 色综合久久中文综合久久97| 欧美性生活久久| 欧美mv日韩mv亚洲| 中文一区在线播放| 一区二区三区在线播放| 日韩福利视频导航| 国产一区二区三区免费播放| 成人av电影免费观看| 欧美视频你懂的| www精品美女久久久tv| ●精品国产综合乱码久久久久 | 中文字幕一区免费在线观看| 亚洲自拍偷拍网站| 久久99精品久久只有精品| 成人av免费在线播放| 欧美亚洲国产怡红院影院| 欧美不卡视频一区| 亚洲女同ⅹxx女同tv| 蜜臀99久久精品久久久久久软件 | 精品亚洲国产成人av制服丝袜| 成人ar影院免费观看视频| 欧美日韩激情一区二区三区| 国产丝袜欧美中文另类| 午夜久久久久久| 成人夜色视频网站在线观看| 欧美人伦禁忌dvd放荡欲情| 国产亚洲一区字幕| 三级影片在线观看欧美日韩一区二区| 国产在线麻豆精品观看| 精品视频123区在线观看| 欧美国产日韩精品免费观看| 日本一不卡视频| 色婷婷亚洲一区二区三区| 久久只精品国产| 午夜精品福利视频网站| caoporn国产一区二区| 日韩欧美不卡在线观看视频| 亚洲激情男女视频| 成av人片一区二区| 亚洲精品在线免费播放| 亚洲a一区二区| 91看片淫黄大片一级在线观看| 精品国产91乱码一区二区三区| 亚洲.国产.中文慕字在线| 成人app软件下载大全免费| 久久亚洲二区三区| 美女一区二区三区在线观看| 在线国产亚洲欧美| 国产精品久久久久久久久久久免费看 | 亚洲精品v日韩精品| 丁香婷婷深情五月亚洲| 欧美大胆人体bbbb| 肉色丝袜一区二区| 欧美人与z0zoxxxx视频| 亚洲小说欧美激情另类| 色久综合一二码| 亚洲日本青草视频在线怡红院| 国产二区国产一区在线观看| 久久一区二区三区国产精品| 麻豆精品一区二区| 91麻豆精品91久久久久久清纯| 亚洲第四色夜色| 欧美日韩日日骚| 丝袜国产日韩另类美女| 91麻豆精品国产自产在线| 天天爽夜夜爽夜夜爽精品视频| 欧美日韩成人综合天天影院| 三级在线观看一区二区|