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

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

?? serializer.cpp

?? turecrypt6.0版本的源碼
?? CPP
字號:
/*
 Copyright (c) 2008 TrueCrypt Foundation. All rights reserved.

 Governed by the TrueCrypt License 2.5 the full text of which is contained
 in the file License.txt included in TrueCrypt binary and source code
 distribution packages.
*/

#include "Exception.h"
#include "ForEach.h"
#include "Memory.h"
#include "Serializer.h"

namespace TrueCrypt
{
	template <typename T>
	T Serializer::Deserialize ()
	{
		uint64 size;
		DataStream->ReadCompleteBuffer (BufferPtr ((byte *) &size, sizeof (size)));
		
		if (Endian::Big (size) != sizeof (T))
			throw ParameterIncorrect (SRC_POS);

		T data;
		DataStream->ReadCompleteBuffer (BufferPtr ((byte *) &data, sizeof (data)));

		return Endian::Big (data);
	}

	void Serializer::Deserialize (const string &name, bool &data)
	{
		ValidateName (name);
		data = Deserialize <byte> () == 1;
	}

	void Serializer::Deserialize (const string &name, byte &data)
	{
		ValidateName (name);
		data = Deserialize <byte> ();
	}

	void Serializer::Deserialize (const string &name, int32 &data)
	{
		ValidateName (name);
		data = (int32) Deserialize <uint32> ();
	}
	
	void Serializer::Deserialize (const string &name, int64 &data)
	{
		ValidateName (name);
		data = (int64) Deserialize <uint64> ();
	}

	void Serializer::Deserialize (const string &name, uint32 &data)
	{
		ValidateName (name);
		data = Deserialize <uint32> ();
	}

	void Serializer::Deserialize (const string &name, uint64 &data)
	{
		ValidateName (name);
		data = Deserialize <uint64> ();
	}

	void Serializer::Deserialize (const string &name, string &data)
	{
		ValidateName (name);
		data = DeserializeString ();
	}

	void Serializer::Deserialize (const string &name, wstring &data)
	{
		ValidateName (name);
		data = DeserializeWString ();
	}

	void Serializer::Deserialize (const string &name, const BufferPtr &data)
	{
		ValidateName (name);

		uint64 size = Deserialize <uint64> ();
		if (data.Size() != size)
			throw ParameterIncorrect (SRC_POS);

		DataStream->ReadCompleteBuffer (data);
	}

	bool Serializer::DeserializeBool (const string &name)
	{
		bool data;
		Deserialize (name, data);
		return data;
	}

	int32 Serializer::DeserializeInt32 (const string &name)
	{
		ValidateName (name);
		return Deserialize <uint32> ();
	}

	int64 Serializer::DeserializeInt64 (const string &name)
	{
		ValidateName (name);
		return Deserialize <uint64> ();
	}

	uint32 Serializer::DeserializeUInt32 (const string &name)
	{
		ValidateName (name);
		return Deserialize <uint32> ();
	}

	uint64 Serializer::DeserializeUInt64 (const string &name)
	{
		ValidateName (name);
		return Deserialize <uint64> ();
	}

	string Serializer::DeserializeString ()
	{
		uint64 size = Deserialize <uint64> ();

		vector <char> data ((size_t) size);
		DataStream->ReadCompleteBuffer (BufferPtr ((byte *) &data[0], (size_t) size));

		return string (&data[0]);
	}

	string Serializer::DeserializeString (const string &name)
	{
		ValidateName (name);
		return DeserializeString ();
	}

	list <string> Serializer::DeserializeStringList (const string &name)
	{
		ValidateName (name);
		list <string> deserializedList;
		uint64 listSize = Deserialize <uint64> ();

		for (int i = 0; i < listSize; i++)
			deserializedList.push_back (DeserializeString ());

		return deserializedList;
	}

	wstring Serializer::DeserializeWString ()
	{
		uint64 size = Deserialize <uint64> ();

		vector <wchar_t> data ((size_t) size / sizeof (wchar_t));
		DataStream->ReadCompleteBuffer (BufferPtr ((byte *) &data[0], (size_t) size));

		return wstring (&data[0]);
	}

	list <wstring> Serializer::DeserializeWStringList (const string &name)
	{
		ValidateName (name);
		list <wstring> deserializedList;
		uint64 listSize = Deserialize <uint64> ();

		for (int i = 0; i < listSize; i++)
			deserializedList.push_back (DeserializeWString ());

		return deserializedList;
	}

	wstring Serializer::DeserializeWString (const string &name)
	{
		ValidateName (name);
		return DeserializeWString ();
	}

	template <typename T>
	void Serializer::Serialize (T data)
	{
		uint64 size = Endian::Big (uint64 (sizeof (data)));
		DataStream->Write (ConstBufferPtr ((byte *) &size, sizeof (size)));

		data = Endian::Big (data);
		DataStream->Write (ConstBufferPtr ((byte *) &data, sizeof (data)));
	}

	void Serializer::Serialize (const string &name, bool data)
	{
		SerializeString (name);
		byte d = data ? 1 : 0;
		Serialize (d);
	}

	void Serializer::Serialize (const string &name, byte data)
	{
		SerializeString (name);
		Serialize (data);
	}
	
	void Serializer::Serialize (const string &name, const char *data)
	{
		Serialize (name, string (data));
	}
	
	void Serializer::Serialize (const string &name, int32 data)
	{
		SerializeString (name);
		Serialize ((uint32) data);
	}
		
	void Serializer::Serialize (const string &name, int64 data)
	{
		SerializeString (name);
		Serialize ((uint64) data);
	}

	void Serializer::Serialize (const string &name, uint32 data)
	{
		SerializeString (name);
		Serialize (data);
	}

	void Serializer::Serialize (const string &name, uint64 data)
	{
		SerializeString (name);
		Serialize (data);
	}

	void Serializer::Serialize (const string &name, const string &data)
	{
		SerializeString (name);
		SerializeString (data);
	}

	void Serializer::Serialize (const string &name, const wchar_t *data)
	{
		Serialize (name, wstring (data));
	}

	void Serializer::Serialize (const string &name, const wstring &data)
	{
		SerializeString (name);
		SerializeWString (data);
	}
	
	void Serializer::Serialize (const string &name, const list <string> &stringList)
	{
		SerializeString (name);
		
		uint64 listSize = stringList.size();
		Serialize (listSize);

		foreach (const string &item, stringList)
			SerializeString (item);
	}

	void Serializer::Serialize (const string &name, const list <wstring> &stringList)
	{
		SerializeString (name);
		
		uint64 listSize = stringList.size();
		Serialize (listSize);

		foreach (const wstring &item, stringList)
			SerializeWString (item);
	}

	void Serializer::Serialize (const string &name, const ConstBufferPtr &data)
	{
		SerializeString (name);

		uint64 size = data.Size();
		Serialize (size);

		DataStream->Write (data);
	}

	void Serializer::SerializeString (const string &data)
	{
		Serialize ((uint64) data.size() + 1);
		DataStream->Write (ConstBufferPtr ((byte *) (data.data() ? data.data() : data.c_str()), data.size() + 1));
	}

	void Serializer::SerializeWString (const wstring &data)
	{
		uint64 size = (data.size() + 1) * sizeof (wchar_t);
		Serialize (size);
		DataStream->Write (ConstBufferPtr ((byte *) (data.data() ? data.data() : data.c_str()), (size_t) size));
	}

	void Serializer::ValidateName (const string &name)
	{
		string dName = DeserializeString();
		if (dName != name)
		{
			throw ParameterIncorrect (SRC_POS);
		}
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情成人综合网| 图片区小说区区亚洲影院| 成人天堂资源www在线| 亚洲成人在线观看视频| 亚洲精品欧美二区三区中文字幕| 久久久久国产精品人| 欧美人牲a欧美精品| 91免费视频网址| 成人福利视频在线| 岛国一区二区三区| 欧美区一区二区三区| 国产人成一区二区三区影院| 久久久精品免费免费| 舔着乳尖日韩一区| 91蜜桃在线免费视频| 久久无码av三级| 中文字幕精品一区二区精品绿巨人| 久久综合色婷婷| 日韩av一二三| 麻豆一区二区三区| 国内一区二区视频| 91麻豆精品国产91久久久资源速度 | 99久久综合国产精品| a亚洲天堂av| 久久久综合九色合综国产精品| 香蕉乱码成人久久天堂爱免费| 在线观看亚洲成人| 91麻豆精品国产无毒不卡在线观看| 亚洲人成网站影音先锋播放| 亚洲国产乱码最新视频 | 中文字幕一区免费在线观看| 国产精品电影一区二区| 亚洲一区二三区| 美女视频一区在线观看| 91精品国产综合久久精品| 国产亚洲精品bt天堂精选| 亚洲欧美国产三级| 日本精品免费观看高清观看| 日韩欧美色电影| 久久精品一区八戒影视| 国产乱码精品一区二区三| 99久久综合99久久综合网站| 色哟哟国产精品| 精品久久久久av影院| 亚洲伦理在线精品| 91久久精品一区二区三| 亚洲一区免费观看| 制服丝袜国产精品| 捆绑变态av一区二区三区| 99久久精品国产导航| 亚洲三级在线免费| 国产精品1024久久| 91精品国产综合久久精品| 久久99精品久久久久久 | 国产电影精品久久禁18| 国产精品久久免费看| 色婷婷狠狠综合| 日韩av中文字幕一区二区| 久久精品一二三| 色综合色综合色综合色综合色综合| 日韩一区在线看| 欧美日韩国产不卡| 精品一区二区在线观看| 国产精品久久久久影视| 欧洲另类一二三四区| 久久99蜜桃精品| 国产精品乱人伦| 国产成人综合亚洲91猫咪| 亚洲九九爱视频| 91精品国产高清一区二区三区蜜臀 | 天天综合色天天综合色h| 欧美sm极限捆绑bd| 91亚洲国产成人精品一区二区三| 亚洲高清免费一级二级三级| 精品国产伦一区二区三区免费| 亚洲国产精品麻豆| 精品成人私密视频| 欧美日韩成人在线| 成人av资源在线观看| 日韩不卡一区二区三区| 亚洲三级在线观看| 久久色在线观看| 欧美日本视频在线| 成人av影院在线| 看国产成人h片视频| 一区二区三区在线观看网站| 色哟哟一区二区三区| 国产精品一区二区在线观看网站| 亚洲成人激情综合网| 国产精品网站在线观看| 日韩欧美亚洲国产另类| 欧美视频在线观看一区二区| 成人免费在线视频| 精品国产伦一区二区三区观看体验 | 在线看一区二区| 97久久精品人人做人人爽50路| 麻豆成人久久精品二区三区小说| 一区二区三区中文免费| 国产精品免费视频观看| 精品国产伦一区二区三区免费| 制服丝袜日韩国产| 欧美日韩国产天堂| 欧美在线看片a免费观看| 成人aaaa免费全部观看| 东方欧美亚洲色图在线| 日韩理论在线观看| 中文字幕二三区不卡| 精品人在线二区三区| 欧美日本高清视频在线观看| 在线区一区二视频| 暴力调教一区二区三区| 成人少妇影院yyyy| 成人精品在线视频观看| 高清shemale亚洲人妖| 国产传媒一区在线| 国产成人免费在线视频| 国产精品影视天天线| 国产中文字幕精品| 国产精品88888| 国产一区二区在线观看免费| 中文字幕欧美三区| 中文字幕中文字幕中文字幕亚洲无线| 久久九九99视频| 中文字幕不卡在线观看| 国产精品国产三级国产普通话蜜臀 | 色综合久久久久网| 色久优优欧美色久优优| 欧美偷拍一区二区| 日韩欧美一级在线播放| 久久久一区二区三区| 欧美高清一级片在线观看| 亚洲欧洲精品一区二区三区| 亚洲人成网站精品片在线观看| 亚洲图片欧美色图| 麻豆精品一二三| 国产盗摄一区二区三区| 91麻豆成人久久精品二区三区| 欧美视频日韩视频在线观看| 欧美一区二区三区四区视频| 久久久久久麻豆| 亚洲乱码国产乱码精品精的特点| 午夜影视日本亚洲欧洲精品| 日本三级亚洲精品| 国产成人精品一区二区三区网站观看| jlzzjlzz亚洲女人18| 欧美美女直播网站| 99久久精品国产毛片| 欧美色综合影院| 精品日韩av一区二区| 亚洲精品老司机| 久草热8精品视频在线观看| 成人性生交大合| 欧美日韩一区在线| 欧美日韩在线播放三区四区| 久久亚洲影视婷婷| 亚洲你懂的在线视频| 蜜臀国产一区二区三区在线播放 | 午夜精品123| 国产揄拍国内精品对白| 91麻豆国产精品久久| 精品伦理精品一区| 亚洲欧洲日韩一区二区三区| 奇米亚洲午夜久久精品| 亚洲超碰精品一区二区| 粉嫩一区二区三区性色av| 欧美丰满嫩嫩电影| 亚洲欧美另类在线| 国产成人精品免费| 日韩一区二区麻豆国产| 欧美岛国在线观看| 亚洲精品第1页| 国产盗摄精品一区二区三区在线| 欧美日韩在线电影| 国产精品不卡在线| 国产一区二区伦理| 在线不卡中文字幕| 一区二区成人在线视频| 国产黄色91视频| 欧美哺乳videos| 奇米影视在线99精品| 欧洲av一区二区嗯嗯嗯啊| 中文字幕一区二区视频| 韩国精品在线观看| 51精品国自产在线| 亚洲国产精品人人做人人爽| k8久久久一区二区三区| 国产日韩一级二级三级| 蜜臀av在线播放一区二区三区 | 欧美一区二区三区视频在线| 一区二区三区四区乱视频| 99久久国产综合精品女不卡| 久久精品一区四区| 国产精品综合一区二区| 久久久国际精品| 国产麻豆成人精品| 国产视频一区二区三区在线观看| 国内久久精品视频| 亚洲精品一区二区三区影院| 久草这里只有精品视频| 精品女同一区二区|