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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? streambuf.h

?? 用到內(nèi)存的序列化和反序列化
?? H
字號(hào):
// StreamBuf.h: interface for the CStreamBuf class.
// luoxin 04-05-19
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_STREAMBUF_H__331CDA77_E7B6_41CE_A080_3B2C4B088DE8__INCLUDED_)
#define AFX_STREAMBUF_H__331CDA77_E7B6_41CE_A080_3B2C4B088DE8__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "Exlibrarydef.h"
#include "afxtempl.h"

/************************************************************************/
//							CStreamBufException
/************************************************************************/

class ExLIBRARYEXT CStreamBufException : public CException
{
	DECLARE_DYNAMIC(CStreamBufException)
public:
	enum { none, endOfBuf, errFormat};
	CStreamBufException(int cause = CStreamBufException::none):m_cause(cause){}

	int m_cause;
};

inline void ThrowStreamBufException(int cause)
	{THROW(new CStreamBufException(cause));}

#define ThrowSBException_ErrFormat()	ThrowStreamBufException(CStreamBufException::errFormat)
#define ThrowSBException_EndOfBuf()		ThrowStreamBufException(CStreamBufException::endOfBuf)

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

/************************************************************************/
//							CStreamBuf
/************************************************************************/
class ExLIBRARYEXT CStreamBuf  
{
public:
	enum SBIO{SBIOIn, SBIOOut};	//向CStreamBuf寫(xiě)入,從CStreamBuf讀取

	//當(dāng)pBuf為NULL時(shí),就是用來(lái)計(jì)算需要的BUFFER長(zhǎng)度,最后可以用GetDataSize()得到需要的長(zhǎng)度
	CStreamBuf(PVOID pBuf, DWORD dwBufSize, SBIO io);
	virtual ~CStreamBuf(){}

	SBIO GetIOState()const;
	BOOL IsLoading()const;
	BOOL IsStoring()const;

	UINT Read(void* lpBuf, UINT nMax);
	UINT Write(const void* lpBuf, UINT nMax);
	void SkipReadTo(const void* lpFind, UINT nSize);	//從當(dāng)前位置開(kāi)始找到第一個(gè)與lpFind指向的內(nèi)容一致的地方的結(jié)尾,將當(dāng)前讀取指針移動(dòng)到這個(gè)地方后面一個(gè)位置

	DWORD GetLeftBufSize()const;
	DWORD GetDataSize()const;

	UINT WriteLineANSI(LPCTSTR lpszString);				//轉(zhuǎn)換成為ANSI字符集寫(xiě)入
	UINT ReadLineANSI(LPTSTR lpszString, UINT nMax);	//以ANSI字符集方式讀入,并轉(zhuǎn)換成為相應(yīng)字符集
	
public:
	// insertion operations
	CStreamBuf& operator<<(BYTE by);
	CStreamBuf& operator<<(WORD w);
	CStreamBuf& operator<<(LONG l);
	CStreamBuf& operator<<(DWORD dw);
	CStreamBuf& operator<<(float f);
	CStreamBuf& operator<<(double d);
	CStreamBuf& operator<<(ULONGLONG qw);
	CStreamBuf& operator<<(LONGLONG qws);
	CStreamBuf& operator<<(REFGUID guid);
	CStreamBuf& operator<<(const CString& string);

	CStreamBuf& operator<<(int i);
	CStreamBuf& operator<<(short w);
	CStreamBuf& operator<<(char ch);
	CStreamBuf& operator<<(unsigned u);
	CStreamBuf& operator<<(bool b);
	CStreamBuf& operator<<(const RECT& rc);
#ifdef _NATIVE_WCHAR_T_DEFINED
	CStreamBuf& operator<<(wchar_t ch);
#endif

	// extraction operations
	CStreamBuf& operator>>(BYTE& by);
	CStreamBuf& operator>>(WORD& w);
	CStreamBuf& operator>>(DWORD& dw);
	CStreamBuf& operator>>(LONG& l);
	CStreamBuf& operator>>(float& f);
	CStreamBuf& operator>>(double& d);
	CStreamBuf& operator>>(ULONGLONG& qw);
	CStreamBuf& operator>>(LONGLONG& qws);
	CStreamBuf& operator>>(GUID& guid);
	CStreamBuf& operator>>(CString& string);
	
	CStreamBuf& operator>>(int& i);
	CStreamBuf& operator>>(short& w);
	CStreamBuf& operator>>(char& ch);
	CStreamBuf& operator>>(unsigned& u);
	CStreamBuf& operator>>(bool& b);
	CStreamBuf& operator>>(RECT& rc);
#ifdef _NATIVE_WCHAR_T_DEFINED
	CStreamBuf& operator>>(wchar_t& ch);
#endif
	
protected:
	PBYTE const m_pBufEnd;
	PBYTE	m_pBufCur;
	SBIO	m_IO;
	
	DWORD m_dwDataSize;
};

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

#define CheckStreamBufSize(DataTYPE)	if(m_pBufCur&&GetLeftBufSize()<sizeof(DataTYPE))ThrowSBException_EndOfBuf();

inline CStreamBuf::CStreamBuf(PVOID pBuf, DWORD dwBufSize, SBIO io):
m_pBufCur((PBYTE)pBuf),m_pBufEnd((PBYTE)pBuf+dwBufSize),m_IO(io),m_dwDataSize(NULL)
{
}

inline CStreamBuf::SBIO CStreamBuf::GetIOState()const
	{return m_IO;}
inline BOOL CStreamBuf::IsLoading() const
	{return m_IO==SBIOOut;}
inline BOOL CStreamBuf::IsStoring() const
	{return m_IO==SBIOIn;}
inline DWORD CStreamBuf::GetLeftBufSize()const
	{ASSERT(m_pBufCur);ASSERT(m_pBufEnd>=m_pBufCur);
	return (m_pBufEnd-m_pBufCur);}
inline DWORD CStreamBuf::GetDataSize()const
	{return m_dwDataSize;}

//////////////////////////////////////////////////////////////////////////

inline CStreamBuf& CStreamBuf::operator<<(int i)
	{ return CStreamBuf::operator<<((LONG)i); }
inline CStreamBuf& CStreamBuf::operator<<(unsigned u)
	{ return CStreamBuf::operator<<((LONG)u); }
inline CStreamBuf& CStreamBuf::operator<<(short w)
	{ return CStreamBuf::operator<<((WORD)w); }
inline CStreamBuf& CStreamBuf::operator<<(char ch)
	{ return CStreamBuf::operator<<((BYTE)ch); }
inline CStreamBuf& CStreamBuf::operator<<(bool b)
	{ return CStreamBuf::operator <<((BYTE)(b ? 1 : 0)); }
inline CStreamBuf& CStreamBuf::operator<<(LONGLONG qws)
	{ return CStreamBuf::operator<<((ULONGLONG)qws); }
inline CStreamBuf& CStreamBuf::operator<<(const RECT& rc)
	{*this<<rc.left<<rc.right<<rc.top<<rc.bottom;return *this;}
#ifdef _NATIVE_WCHAR_T_DEFINED
inline CStreamBuf& CStreamBuf::operator<<(wchar_t ch)
	{ return CStreamBuf::operator<<((WORD)ch); }
#endif

#define SBWriteToBuf(DataType, DataName)\
{	ASSERT(IsStoring());\
	if(m_pBufCur){\
		*(UNALIGNED DataType*)m_pBufCur = DataName;\
		m_pBufCur += sizeof(DataType);\
	}\
	m_dwDataSize += sizeof(DataType);\
	return *this; \
}
 
#define SBCheckAndWriteToBuf(DataType, DataName) {CheckStreamBufSize(DataType);SBWriteToBuf(DataType, DataName)}

inline CStreamBuf& CStreamBuf::operator<<(BYTE by)
	{ SBCheckAndWriteToBuf(BYTE, by);}
inline CStreamBuf& CStreamBuf::operator<<(ULONGLONG qw)
	{ SBCheckAndWriteToBuf(ULONGLONG, qw);}
inline CStreamBuf& CStreamBuf::operator<<(WORD w)
	{ SBCheckAndWriteToBuf(WORD, w);}
inline CStreamBuf& CStreamBuf::operator<<(LONG l)
	{ SBCheckAndWriteToBuf(LONG, l);}
inline CStreamBuf& CStreamBuf::operator<<(DWORD dw)
	{ SBCheckAndWriteToBuf(DWORD, dw);}
inline CStreamBuf& CStreamBuf::operator<<(float f)
	{ CheckStreamBufSize(float);
	if(m_pBufCur){*(UNALIGNED _EXL_BYTE_FLOAT*)m_pBufCur = *(_EXL_BYTE_FLOAT*)&f; m_pBufCur += sizeof(float);}
	m_dwDataSize += sizeof(float); return *this;}
inline CStreamBuf& CStreamBuf::operator<<(double d)
	{ CheckStreamBufSize(double);
	if(m_pBufCur){*(UNALIGNED _EXL_BYTE_DOUBLE*)m_pBufCur = *(_EXL_BYTE_DOUBLE*)&d; m_pBufCur += sizeof(double); }
	m_dwDataSize += sizeof(double);return *this; }
inline CStreamBuf& CStreamBuf::operator<<(REFGUID guid)
	{SBCheckAndWriteToBuf(GUID, guid);}

//////////////////////////////////////////////////////////////////////////

inline CStreamBuf& CStreamBuf::operator>>(int& i)
	{ return CStreamBuf::operator>>((LONG&)i); }
inline CStreamBuf& CStreamBuf::operator>>(unsigned& u)
	{ return CStreamBuf::operator>>((LONG&)u); }
inline CStreamBuf& CStreamBuf::operator>>(short& w)
	{ return CStreamBuf::operator>>((WORD&)w); }
inline CStreamBuf& CStreamBuf::operator>>(char& ch)
	{ return CStreamBuf::operator>>((BYTE&)ch); }
inline CStreamBuf& CStreamBuf::operator>>(LONGLONG& qws)
	{ return CStreamBuf::operator>>((ULONGLONG&)qws); }
inline CStreamBuf& CStreamBuf::operator>>(bool& b)
	{ BYTE by; CStreamBuf& ar = CStreamBuf::operator>>(by); b = (by ? true : false); return ar; }
inline CStreamBuf& CStreamBuf::operator>>(RECT& rc)
	{*this>>rc.left>>rc.right>>rc.top>>rc.bottom;return *this;}
#ifdef _NATIVE_WCHAR_T_DEFINED
inline CStreamBuf& CStreamBuf::operator>>(wchar_t& ch)
	{ return CStreamBuf::operator>>((WORD&)ch); }
#endif

#define SBReadFromBuf(DataType, DataName)\
{	ASSERT(IsLoading());\
	if(m_pBufCur){\
		DataName = *(UNALIGNED DataType*)m_pBufCur; m_pBufCur += sizeof(DataType);}\
	m_dwDataSize += sizeof(DataType);\
	return *this;\
}
 
#define SBCheckAndReadFromBuf(DataType, DataName) {CheckStreamBufSize(DataType);SBReadFromBuf(DataType, DataName)}

inline CStreamBuf& CStreamBuf::operator>>(BYTE& by)
	{ SBCheckAndReadFromBuf(BYTE, by);}
inline CStreamBuf& CStreamBuf::operator>>(ULONGLONG& qw)
	{ SBCheckAndReadFromBuf(ULONGLONG, qw);}
inline CStreamBuf& CStreamBuf::operator>>(WORD& w)
	{ SBCheckAndReadFromBuf(WORD, w);}
inline CStreamBuf& CStreamBuf::operator>>(LONG& l)
	{ SBCheckAndReadFromBuf(LONG, l);}
inline CStreamBuf& CStreamBuf::operator>>(DWORD& dw)
	{ SBCheckAndReadFromBuf(DWORD, dw);}
inline CStreamBuf& CStreamBuf::operator>>(float& f)
	{ CheckStreamBufSize(float);
	if(m_pBufCur){*(_EXL_BYTE_FLOAT*)&f = *(UNALIGNED _EXL_BYTE_FLOAT*)m_pBufCur; m_pBufCur += sizeof(float);}
	m_dwDataSize += sizeof(float);return *this; }
inline CStreamBuf& CStreamBuf::operator>>(double& d)
	{ CheckStreamBufSize(double); 
	if(m_pBufCur){*(_EXL_BYTE_DOUBLE*)&d = *(UNALIGNED _EXL_BYTE_DOUBLE*)m_pBufCur; m_pBufCur += sizeof(double);}
	m_dwDataSize += sizeof(double);return *this; }
inline CStreamBuf& CStreamBuf::operator>>(GUID& guid)
	{SBCheckAndReadFromBuf(GUID, guid);}

//////////////////////////////////////////////////////////////////////////
// helper 
//////////////////////////////////////////////////////////////////////////

#define SBReadToArray(ar, array)\
{\
	int nCount; ar>>nCount; array.SetSize(nCount);\
	for(int i=0; i<nCount; i++)ar>>(array[i]);\
}

#define SBWriteFromArray(ar, array)\
{\
	ar<<array.GetSize();for(int i=0; i<array.GetSize(); i++)ar<<(array[i]);\
}


#endif // !defined(AFX_STREAMBUF_H__331CDA77_E7B6_41CE_A080_3B2C4B088DE8__INCLUDED_)

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线免费观看成人短视频| 国产欧美精品一区二区色综合| 91小视频免费观看| www.av精品| 91免费观看视频在线| 91在线porny国产在线看| 99国产精品视频免费观看| 99久久伊人精品| 国产精品久久午夜| 国产欧美精品一区二区色综合 | 欧美成人精品1314www| 欧美电视剧在线观看完整版| 日韩欧美激情在线| 精品人伦一区二区色婷婷| 久久久蜜桃精品| 欧美国产欧美综合| 亚洲欧洲日韩综合一区二区| 亚洲日本一区二区| 亚洲与欧洲av电影| 蜜臀av性久久久久蜜臀aⅴ| 久久97超碰色| 国产精品538一区二区在线| 粉嫩蜜臀av国产精品网站| av电影在线观看一区| 91久久免费观看| 欧美日韩国产经典色站一区二区三区| 欧美理论在线播放| 欧美精品一区男女天堂| 欧美高清在线精品一区| 亚洲乱码国产乱码精品精小说 | 欧美伦理视频网站| 欧美一区二区视频在线观看2020 | 亚洲欧美另类久久久精品2019| 亚洲图片欧美色图| 久久99九九99精品| 成人动漫一区二区在线| 欧美又粗又大又爽| 精品国产一区二区三区不卡| 国产精品久久久久久久裸模| aaa欧美大片| 欧美人妇做爰xxxⅹ性高电影 | 自拍偷在线精品自拍偷无码专区| 一个色在线综合| 精彩视频一区二区三区| 91免费看片在线观看| 777精品伊人久久久久大香线蕉| 国产亚洲精品aa| 亚洲黄色尤物视频| 久久国产尿小便嘘嘘尿| 成人黄色大片在线观看| 欧美精品日日鲁夜夜添| 国产网红主播福利一区二区| 一区2区3区在线看| 国产在线日韩欧美| 欧美吻胸吃奶大尺度电影 | 中文字幕在线不卡一区二区三区| 亚洲国产一区二区在线播放| 国产主播一区二区| 欧美视频一区在线观看| 欧美激情中文不卡| 日本vs亚洲vs韩国一区三区二区| 99视频精品在线| 日韩欧美激情一区| 亚洲欧洲综合另类在线| 国产精品系列在线观看| 欧美久久久一区| 亚洲欧洲av在线| 精品在线视频一区| 欧美美女网站色| 亚洲欧美偷拍另类a∨色屁股| 看国产成人h片视频| 欧美三级在线播放| 亚洲私人影院在线观看| 国产精品 日产精品 欧美精品| 欧美日韩国产精品成人| 亚洲美女淫视频| www.av精品| 欧美国产97人人爽人人喊| 久久精品国产亚洲a| 欧美男生操女生| 樱桃视频在线观看一区| 99天天综合性| 国产日韩欧美精品综合| 狠狠色丁香久久婷婷综合_中| 欧美年轻男男videosbes| 亚洲精品视频在线观看免费| 成人亚洲精品久久久久软件| 久久综合视频网| 裸体健美xxxx欧美裸体表演| 欧美日韩精品高清| 亚洲地区一二三色| 在线视频国内一区二区| 亚洲视频电影在线| 91污片在线观看| 国产精品欧美极品| 成人动漫在线一区| 国产精品久线在线观看| 国产iv一区二区三区| 国产欧美一区二区在线| 国产精品自拍av| 久久亚洲精华国产精华液| 九九在线精品视频| 久久综合国产精品| 国产精品综合视频| 欧美国产一区在线| 成人av在线网站| 国产精品福利av| 97国产精品videossex| 亚洲欧美怡红院| 色综合久久综合中文综合网| 国产精品乱人伦| aaa亚洲精品| 亚洲精品国产高清久久伦理二区| 91小宝寻花一区二区三区| 成人欧美一区二区三区黑人麻豆| caoporn国产精品| 亚洲图片你懂的| 日本高清不卡视频| 午夜成人在线视频| 欧美一级生活片| 国内精品伊人久久久久av一坑 | 免费观看91视频大全| 欧美videos大乳护士334| 黄色精品一二区| 国产精品久久夜| 欧美视频三区在线播放| 美女被吸乳得到大胸91| 久久伊人蜜桃av一区二区| 成人综合日日夜夜| 一区二区三区电影在线播| 欧美日韩你懂得| 精品在线一区二区| 中文字幕亚洲精品在线观看| 色综合久久九月婷婷色综合| 性做久久久久久| 精品久久久久久综合日本欧美| 国产成人免费视| 亚洲一区中文日韩| 日韩精品一区二区三区在线播放| 国产91丝袜在线播放0| 亚洲午夜电影在线| 久久综合资源网| 欧美中文字幕不卡| 国产在线视频精品一区| 亚洲精品免费播放| 日韩欧美在线网站| 波波电影院一区二区三区| 午夜精品福利一区二区三区av| 精品免费国产二区三区| 一本一本大道香蕉久在线精品| 蜜臀91精品一区二区三区| 国产精品第13页| 91精选在线观看| 波多野结衣精品在线| 美国十次综合导航| 最近中文字幕一区二区三区| 欧美一区二区成人| 成人sese在线| 精品一区二区三区久久| 一区二区三区日韩欧美精品| 精品国产精品网麻豆系列 | 久久精品一区二区三区不卡 | 91国偷自产一区二区使用方法| 男男视频亚洲欧美| 国产精品乱人伦| 欧美成人精精品一区二区频| 91九色02白丝porn| 丁香激情综合五月| 精品中文字幕一区二区| 亚洲国产日日夜夜| 国产精品高潮呻吟| ww亚洲ww在线观看国产| 欧美老人xxxx18| 91传媒视频在线播放| 国产成人亚洲综合a∨婷婷图片| 午夜国产精品一区| 亚洲精品日日夜夜| 国产拍欧美日韩视频二区| 日韩一卡二卡三卡国产欧美| 在线观看91视频| 不卡一区中文字幕| 国产一区二区精品久久99| 日本特黄久久久高潮| 亚洲午夜在线视频| 亚洲激情图片一区| 亚洲三级在线观看| 中文字幕一区二区三中文字幕| 精品成人佐山爱一区二区| 日韩一区二区在线免费观看| 欧美日韩国产免费| 欧美日韩免费观看一区三区| 91色在线porny| 成人国产精品免费网站| 国产精品亚洲第一区在线暖暖韩国| 日韩高清在线电影| 日本欧美大码aⅴ在线播放| 水蜜桃久久夜色精品一区的特点| 亚洲自拍与偷拍| 一区二区三区蜜桃网| 一区二区日韩av|