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

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

?? secblock.h

?? hashish-1.1b加密算法庫c++
?? H
字號:
// secblock.h - written and placed in the public domain by Wei Dai#ifndef CRYPTOPP_SECBLOCK_H#define CRYPTOPP_SECBLOCK_H#include "config.h"#include "misc.h"#include <string.h>		// CodeWarrior doesn't have memory.h#include <assert.h>NAMESPACE_BEGIN(CryptoPP)// ************** secure memory allocation ***************template<class T>class AllocatorBase{public:	typedef T value_type;	typedef size_t size_type;#if (defined(_MSC_VER) && _MSC_VER < 1300)	typedef ptrdiff_t difference_type;#else	typedef std::ptrdiff_t difference_type;#endif	typedef T * pointer;	typedef const T * const_pointer;	typedef T & reference;	typedef const T & const_reference;	pointer address(reference r) const {return (&r);}	const_pointer address(const_reference r) const {return (&r); }	void construct(pointer p, const T& val) {new (p) T(val);}	void destroy(pointer p) {p->~T();}	size_type max_size() const {return size_type(-1)/sizeof(T);}};#define CRYPTOPP_INHERIT_ALLOCATOR_TYPES	\typedef typename AllocatorBase<T>::value_type value_type;\typedef typename AllocatorBase<T>::size_type size_type;\typedef typename AllocatorBase<T>::difference_type difference_type;\typedef typename AllocatorBase<T>::pointer pointer;\typedef typename AllocatorBase<T>::const_pointer const_pointer;\typedef typename AllocatorBase<T>::reference reference;\typedef typename AllocatorBase<T>::const_reference const_reference;template <class T, class A>typename A::pointer StandardReallocate(A& a, T *p, typename A::size_type oldSize, typename A::size_type newSize, bool preserve){	if (oldSize == newSize)		return p;	if (preserve)	{		typename A::pointer newPointer = a.allocate(newSize, NULL);		memcpy(newPointer, p, sizeof(T)*STDMIN(oldSize, newSize));		a.deallocate(p, oldSize);		return newPointer;	}	else	{		a.deallocate(p, oldSize);		return a.allocate(newSize, NULL);	}}template <class T>class AllocatorWithCleanup : public AllocatorBase<T>{public:	CRYPTOPP_INHERIT_ALLOCATOR_TYPES	pointer allocate(size_type n, const void * = NULL)	{		if (n > 0)			return new T[n];		else			return NULL;	}	void deallocate(void *p, size_type n)	{		memset(p, 0, n*sizeof(T));		delete [] (T *)p;	}	pointer reallocate(T *p, size_type oldSize, size_type newSize, bool preserve)	{		return StandardReallocate(*this, p, oldSize, newSize, preserve);	}	// VS.NET STL enforces the policy of "All STL-compliant allocators have to provide a	// template class member called rebind".    template <class U> struct rebind { typedef AllocatorWithCleanup<U> other; };};template <class T>class NullAllocator : public AllocatorBase<T>{public:	CRYPTOPP_INHERIT_ALLOCATOR_TYPES	pointer allocate(size_type n, const void * = NULL)	{		assert(false);		return NULL;	}	void deallocate(void *p, size_type n)	{		assert(false);	}};// this allocator can't be used with standard collectionstemplate <class T, unsigned int S, class A = NullAllocator<T> >class FixedSizeAllocatorWithCleanup : public AllocatorBase<T>{public:	CRYPTOPP_INHERIT_ALLOCATOR_TYPES	pointer allocate(size_type n)	{		if (n <= S)		{			assert(!m_allocated);#ifndef NDEBUG			m_allocated = true;#endif			return m_array;		}		else			return m_fallbackAllocator.allocate(n);	}	pointer allocate(size_type n, const void *hint)	{		if (n <= S)		{			assert(!m_allocated);#ifndef NDEBUG			m_allocated = true;#endif			return m_array;		}		else			return m_fallbackAllocator.allocate(n, hint);	}	void deallocate(void *p, size_type n)	{		if (n <= S)		{			assert(m_allocated);			assert(p == m_array);#ifndef NDEBUG			m_allocated = false;#endif			memset(p, 0, n*sizeof(T));		}		else			m_fallbackAllocator.deallocate(p, n);	}	pointer reallocate(pointer p, size_type oldSize, size_type newSize, bool preserve)	{		if (oldSize <= S && newSize <= S)			return p;		return StandardReallocate(*this, p, oldSize, newSize, preserve);	}	size_type max_size() const {return m_fallbackAllocator.max_size();}private:	A m_fallbackAllocator;	T m_array[S];#ifndef NDEBUGpublic:	FixedSizeAllocatorWithCleanup() : m_allocated(false) {}	bool m_allocated;#endif};//! a block of memory allocated using Atemplate <class T, class A = AllocatorWithCleanup<T> >class SecBlock{public:	explicit SecBlock(unsigned int size=0)		: m_size(size) {m_ptr = m_alloc.allocate(size, NULL);}	SecBlock(const SecBlock<T, A> &t)		: m_size(t.m_size) {m_ptr = m_alloc.allocate(m_size, NULL); memcpy(m_ptr, t.m_ptr, m_size*sizeof(T));}	SecBlock(const T *t, unsigned int len)		: m_size(len)	{		m_ptr = m_alloc.allocate(len, NULL);		if (t == NULL)			memset(m_ptr, 0, len*sizeof(T));		else			memcpy(m_ptr, t, len*sizeof(T));	}	~SecBlock()		{m_alloc.deallocate(m_ptr, m_size);}#if defined(__GNUC__) || defined(__BCPLUSPLUS__)	operator const void *() const		{return m_ptr;}	operator void *()		{return m_ptr;}#endif#if defined(__GNUC__)	// reduce warnings	operator const void *()		{return m_ptr;}#endif	operator const T *() const		{return m_ptr;}	operator T *()		{return m_ptr;}#if defined(__GNUC__)	// reduce warnings	operator const T *()		{return m_ptr;}#endif	template <typename I>	T *operator +(I offset)		{return m_ptr+offset;}	template <typename I>	const T *operator +(I offset) const		{return m_ptr+offset;}	template <typename I>	T& operator[](I index)		{assert(index >= 0 && (unsigned int)index < m_size); return m_ptr[index];}	template <typename I>	const T& operator[](I index) const		{assert(index >= 0 && (unsigned int)index < m_size); return m_ptr[index];}	typedef typename A::pointer iterator;	typedef typename A::const_pointer const_iterator;	typedef typename A::size_type size_type;	iterator begin()		{return m_ptr;}	const_iterator begin() const		{return m_ptr;}	iterator end()		{return m_ptr+m_size;}	const_iterator end() const		{return m_ptr+m_size;}	typename A::pointer data() {return m_ptr;}	typename A::const_pointer data() const {return m_ptr;}	size_type size() const {return m_size;}	bool empty() const {return m_size == 0;}	void Assign(const T *t, unsigned int len)	{		New(len);		memcpy(m_ptr, t, len*sizeof(T));	}	void Assign(const SecBlock<T, A> &t)	{		New(t.m_size);		memcpy(m_ptr, t.m_ptr, m_size*sizeof(T));	}	SecBlock& operator=(const SecBlock<T, A> &t)	{		Assign(t);		return *this;	}	bool operator==(const SecBlock<T, A> &t) const	{		return m_size == t.m_size && memcmp(m_ptr, t.m_ptr, m_size*sizeof(T)) == 0;	}	bool operator!=(const SecBlock<T, A> &t) const	{		return !operator==(t);	}	void New(unsigned int newSize)	{		m_ptr = m_alloc.reallocate(m_ptr, m_size, newSize, false);		m_size = newSize;	}	void CleanNew(unsigned int newSize)	{		New(newSize);		memset(m_ptr, 0, m_size*sizeof(T));	}	void Grow(unsigned int newSize)	{		if (newSize > m_size)		{			m_ptr = m_alloc.reallocate(m_ptr, m_size, newSize, true);			m_size = newSize;		}	}	void CleanGrow(unsigned int newSize)	{		if (newSize > m_size)		{			m_ptr = m_alloc.reallocate(m_ptr, m_size, newSize, true);			memset(m_ptr+m_size, 0, (newSize-m_size)*sizeof(T));			m_size = newSize;		}	}	void resize(unsigned int newSize)	{		m_ptr = m_alloc.reallocate(m_ptr, m_size, newSize, true);		m_size = newSize;	}	void swap(SecBlock<T, A> &b);//private:	A m_alloc;	unsigned int m_size;	T *m_ptr;};template <class T, class A> void SecBlock<T, A>::swap(SecBlock<T, A> &b){	std::swap(m_alloc, b.m_alloc);	std::swap(m_size, b.m_size);	std::swap(m_ptr, b.m_ptr);}typedef SecBlock<byte> SecByteBlock;typedef SecBlock<word> SecWordBlock;template <class T, unsigned int S, class A = FixedSizeAllocatorWithCleanup<T, S> >class FixedSizeSecBlock : public SecBlock<T, A>{public:	explicit FixedSizeSecBlock() : SecBlock<T, A>(S) {}};template <class T, unsigned int S, class A = FixedSizeAllocatorWithCleanup<T, S, AllocatorWithCleanup<T> > >class SecBlockWithHint : public SecBlock<T, A>{public:	explicit SecBlockWithHint(unsigned int size) : SecBlock<T, A>(size) {}};template<class T, class U>inline bool operator==(const CryptoPP::AllocatorWithCleanup<T>&, const CryptoPP::AllocatorWithCleanup<U>&) {return (true);}template<class T, class U>inline bool operator!=(const CryptoPP::AllocatorWithCleanup<T>&, const CryptoPP::AllocatorWithCleanup<U>&) {return (false);}NAMESPACE_ENDNAMESPACE_BEGIN(std)template <class T, class A>inline void swap(CryptoPP::SecBlock<T, A> &a, CryptoPP::SecBlock<T, A> &b){	a.swap(b);}#if defined(_STLPORT_VERSION) && !defined(_STLP_MEMBER_TEMPLATE_CLASSES)template <class _Tp1, class _Tp2>inline CryptoPP::AllocatorWithCleanup<_Tp2>&__stl_alloc_rebind(CryptoPP::AllocatorWithCleanup<_Tp1>& __a, const _Tp2*){	return (CryptoPP::AllocatorWithCleanup<_Tp2>&)(__a);}#endifNAMESPACE_END#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲同性gay激情无套| 午夜天堂影视香蕉久久| 国产精品美女久久久久aⅴ| 亚洲欧美中日韩| 天堂久久一区二区三区| 精彩视频一区二区| av电影天堂一区二区在线观看| 色婷婷精品大在线视频 | 五月激情综合婷婷| 久久国产福利国产秒拍| 不卡在线视频中文字幕| 欧美丰满美乳xxx高潮www| 欧美激情资源网| 天天色天天操综合| voyeur盗摄精品| 欧美一区二区日韩| 亚洲精品久久7777| 国产精品亚洲一区二区三区在线| 日本精品一区二区三区高清 | 欧美日韩一级视频| 亚洲精品一区在线观看| 一级做a爱片久久| 国产精品一区免费视频| 91.xcao| 亚洲欧洲一区二区三区| 午夜婷婷国产麻豆精品| 国产精品亚洲一区二区三区妖精 | 国产成人精品影院| 欧美一级欧美三级| 亚洲午夜激情av| 99国产精品久| 国产欧美一区二区三区网站 | 中文字幕乱码久久午夜不卡| 三级久久三级久久久| 91免费国产在线| 欧美国产激情二区三区| 精品一区中文字幕| 日韩精品专区在线| 日日嗨av一区二区三区四区| 欧美亚洲日本一区| 亚洲精品视频在线观看网站| 成人午夜在线视频| 日韩精品一区二区三区在线观看 | 欧美激情综合网| 九色综合狠狠综合久久| 制服丝袜亚洲色图| 图片区小说区国产精品视频| 欧洲精品在线观看| 一区二区三区欧美亚洲| 色婷婷av一区二区三区软件| 中文字幕五月欧美| 99久久国产综合精品色伊 | 激情欧美日韩一区二区| 欧美一区二区三区视频免费播放| 国产精品萝li| 国产一区二区网址| 国产三级三级三级精品8ⅰ区| 极品少妇xxxx精品少妇偷拍| 日韩精品一区二区三区在线观看| 蜜桃av一区二区在线观看| 日韩一区二区视频在线观看| 蜜臀av一区二区在线观看| 91精品国产高清一区二区三区蜜臀 | 成人综合在线网站| 久久午夜电影网| 国产成人自拍网| 中文字幕一区二区三区在线不卡| 91免费看视频| 亚洲高清在线视频| 日韩免费高清av| 国产在线播放一区三区四| 久久精品水蜜桃av综合天堂| 成人av高清在线| 亚洲品质自拍视频| 91丨porny丨国产| 亚洲视频在线观看三级| 一本色道久久综合狠狠躁的推荐| 亚洲午夜精品网| 日韩精品一区二区三区中文精品 | 一区二区在线免费| 在线不卡的av| 成人午夜视频免费看| 亚洲男同性视频| 日韩欧美的一区| 成人爱爱电影网址| 樱桃国产成人精品视频| 欧美不卡激情三级在线观看| 成人黄色免费短视频| 亚洲中国最大av网站| 精品动漫一区二区三区在线观看| 国产精品一二三四区| 一区二区三区中文字幕电影| 91精品国产日韩91久久久久久| 国v精品久久久网| 亚洲电影你懂得| 国产午夜精品一区二区三区视频 | 国产精品久久久久久久久动漫| 91久久人澡人人添人人爽欧美| 蜜臀91精品一区二区三区| 久久午夜电影网| 在线电影一区二区三区| 99综合影院在线| 精品在线免费视频| 亚洲精选视频在线| 久久久欧美精品sm网站| 9色porny自拍视频一区二区| 男女性色大片免费观看一区二区| 亚洲色图在线播放| 久久久精品一品道一区| 91天堂素人约啪| 国产成人在线视频网址| 美日韩一区二区| 亚洲免费视频中文字幕| 久久亚洲综合色一区二区三区| 欧美日本国产一区| 91网站最新地址| 久久www免费人成看片高清| 一区二区在线观看av| 久久精品视频一区二区三区| 欧美高清性hdvideosex| 在线观看av一区| 91小宝寻花一区二区三区| 成人永久aaa| 国产69精品久久久久毛片| 久久精品国产网站| 日本亚洲免费观看| 婷婷国产在线综合| 首页国产欧美日韩丝袜| 综合久久综合久久| 国产精品天干天干在观线| 精品污污网站免费看| 91论坛在线播放| 99久久伊人精品| 99国产精品一区| 91网上在线视频| 91麻豆国产精品久久| 一本一道综合狠狠老| 色婷婷久久久久swag精品| 99re这里只有精品6| 国产在线一区二区| 久久电影网电视剧免费观看| 精品在线免费观看| 国产成人亚洲综合a∨猫咪| 国产一区不卡视频| 国产精品一卡二| 国产成a人亚洲精| 99久久99久久精品免费观看| 91视频你懂的| 日本伦理一区二区| 国产高清久久久久| 国产自产2019最新不卡| 国产一区二区三区av电影 | 亚洲一区二区三区四区不卡| 樱花草国产18久久久久| 日韩va亚洲va欧美va久久| 国内久久精品视频| 99天天综合性| 在线一区二区三区四区| 欧美日韩国产区一| 久久久久久99久久久精品网站| 中文子幕无线码一区tr| 亚洲国产视频在线| 成人网在线免费视频| 91精品国产综合久久久久久久久久| 国产亚洲美州欧州综合国| 无吗不卡中文字幕| 成人性生交大片免费看中文| 56国语精品自产拍在线观看| 亚洲天堂成人在线观看| 黄色资源网久久资源365| 在线免费一区三区| 日本一区二区视频在线| 蜜臀av一区二区| 欧美日韩亚洲综合在线 | 91免费精品国自产拍在线不卡| 欧美一区三区二区| 亚洲在线视频免费观看| 成人丝袜高跟foot| 久久久一区二区三区| 日本视频一区二区三区| 欧美色大人视频| 国产精品国产a| 欧美日韩精品一区二区三区蜜桃| 2024国产精品视频| 久久 天天综合| 欧美一区二区不卡视频| 亚洲福利一区二区| 色综合久久久久久久久| 国产精品美日韩| 粉嫩在线一区二区三区视频| 精品少妇一区二区三区免费观看 | 色婷婷综合久久| 国产精品免费久久| 不卡的av网站| 成人欧美一区二区三区在线播放| 狠狠色狠狠色合久久伊人| 日韩视频在线永久播放| 日本不卡高清视频| 欧美一区在线视频| 精品中文字幕一区二区|