关于程序里的一些基本的“断言”和“序列化”的预处理定义
2014-04-21 17:20
302 查看
**macro.h
#pragma once
#ifdef MHBQ
#define MITC_HBQ_EXT __declspec(dllexport)
#else
#define MITC_HBQ_EXT __declspec(dllimport)
#endif
#define _MITC_HBQ_BEGIN namespace MHbq {
#define _MITC_HBQ_END }
#define _ASSERTE_RT(expr) \
_ASSERTE(expr); \
if(!(expr)) return; \
#define _ASSERTE_RT_BL(expr) \
_ASSERTE(expr); \
if(!(expr)) return FALSE; \
#define _ASSERTE_RT_UI(expr) \
_ASSERTE(expr); \
if(!(expr)) return 0; \
#define _ASSERTE_RT_DBL(expr) \
_ASSERTE(expr); \
if(!(expr)) return 0.; \
#define GETSTR(X) #X
const long lEndVersion = 999; //结束版本号
//预处理保存
#define _PRESAVE(beginMark) \
CFile* pFile = ar.GetFile(); \
{ \
CString strbeginMark(beginMark); \
ar << strbeginMark; \
} \
//开始保存一个版本的数据
#define _BEGINESAVE(version) \
{\
ar << version; \
ar.Flush(); \
ULONGLONG posBegine = pFile->GetPosition();\
LONGLONG dLen = 3; \
ar << dLen; \
{ \
//结束保存一个版本的数据
#define _ENDSAVE\
} \
ar.Flush(); \
ULONGLONG posEnd = pFile->GetPosition();\
LONG posOffset = LONG(posBegine - posEnd);\
/*ULONGLONG lngFile = */pFile->Seek(posOffset, CFile::current); \
posOffset = - posOffset; \
pFile->Write(&posOffset, sizeof(LONGLONG)); \
pFile->SeekToEnd(); \
}
//保存后处理
#define _POSTSAVE \
ar << lEndVersion; \
ar.Flush();\
pFile->SeekToEnd(); \
//预处理打开
#define _PREOPEN(beginMarkCheck) \
int iVersion = -1; \
LONGLONG dLen = 0; \
TCHAR *char1 = NULL; \
CString strMark(_T("")); \
ar >> strMark; \
_ASSERT(strMark==beginMarkCheck); \
OutputDebugString(strMark);\
while (ar >>iVersion,iVersion < lEndVersion) \
{ \
ar >> dLen; \
switch(iVersion) \
{ \
//打开后处理
#define _POSTOPEN \
default: \
{ \
char1 = new TCHAR[(size_t)dLen]; \
LONGLONG lngReadLen = dLen - sizeof(LONGLONG); \
if (lngReadLen > 0) \
{ \
ar.Read(&char1,(UINT)lngReadLen); \
delete []char1; char1 = NULL;\
}\
} \
break; \
} \
} \
if ( iVersion == lEndVersion) \
{ \
int i = 0; \
i = iVersion; \
\
} \
#pragma once
#ifdef MHBQ
#define MITC_HBQ_EXT __declspec(dllexport)
#else
#define MITC_HBQ_EXT __declspec(dllimport)
#endif
#define _MITC_HBQ_BEGIN namespace MHbq {
#define _MITC_HBQ_END }
#define _ASSERTE_RT(expr) \
_ASSERTE(expr); \
if(!(expr)) return; \
#define _ASSERTE_RT_BL(expr) \
_ASSERTE(expr); \
if(!(expr)) return FALSE; \
#define _ASSERTE_RT_UI(expr) \
_ASSERTE(expr); \
if(!(expr)) return 0; \
#define _ASSERTE_RT_DBL(expr) \
_ASSERTE(expr); \
if(!(expr)) return 0.; \
#define GETSTR(X) #X
const long lEndVersion = 999; //结束版本号
//预处理保存
#define _PRESAVE(beginMark) \
CFile* pFile = ar.GetFile(); \
{ \
CString strbeginMark(beginMark); \
ar << strbeginMark; \
} \
//开始保存一个版本的数据
#define _BEGINESAVE(version) \
{\
ar << version; \
ar.Flush(); \
ULONGLONG posBegine = pFile->GetPosition();\
LONGLONG dLen = 3; \
ar << dLen; \
{ \
//结束保存一个版本的数据
#define _ENDSAVE\
} \
ar.Flush(); \
ULONGLONG posEnd = pFile->GetPosition();\
LONG posOffset = LONG(posBegine - posEnd);\
/*ULONGLONG lngFile = */pFile->Seek(posOffset, CFile::current); \
posOffset = - posOffset; \
pFile->Write(&posOffset, sizeof(LONGLONG)); \
pFile->SeekToEnd(); \
}
//保存后处理
#define _POSTSAVE \
ar << lEndVersion; \
ar.Flush();\
pFile->SeekToEnd(); \
//预处理打开
#define _PREOPEN(beginMarkCheck) \
int iVersion = -1; \
LONGLONG dLen = 0; \
TCHAR *char1 = NULL; \
CString strMark(_T("")); \
ar >> strMark; \
_ASSERT(strMark==beginMarkCheck); \
OutputDebugString(strMark);\
while (ar >>iVersion,iVersion < lEndVersion) \
{ \
ar >> dLen; \
switch(iVersion) \
{ \
//打开后处理
#define _POSTOPEN \
default: \
{ \
char1 = new TCHAR[(size_t)dLen]; \
LONGLONG lngReadLen = dLen - sizeof(LONGLONG); \
if (lngReadLen > 0) \
{ \
ar.Read(&char1,(UINT)lngReadLen); \
delete []char1; char1 = NULL;\
}\
} \
break; \
} \
} \
if ( iVersion == lEndVersion) \
{ \
int i = 0; \
i = iVersion; \
\
} \
相关文章推荐
- OC中关于属性的一些基本定义
- 关于程序存储的一些基本知识
- 关于网络流的一些基本名词及其定义。
- 【转】关于个人知识管理(PKM)的一些基本概念
- 关于HTML的一些基本文本标记
- 关于使用PDO连接数据库的一些基本操作
- struts里关于拦截器的一些基本配置
- 关于对include包含类声明或定义的文件的一些总结
- 关于在Spring4 jdbctemplate 遇到的一些基本问题总结
- 一些关于流媒体的基本概念
- 关于测试的一些基本概念
- 关于程序自校验的一些分析
- 关于3G,一些基本面的认识
- 代码编写中关于通用定义的一些个性规约
- 关于git的一些基本使用命令
- 关于XAMPP环境下PHP执行外部程序的一些说明
- 对复数类的一些基本定义
- 程序小白---关于封装、继承、抽象类和接口的一些理解。
- 我个人整理的一些关于文件的一些基本操作
- 关于NSDate和NSCalendar的一些基本使用