//bodata数据结构 使用说明:
//----------------------------------------------------
//定义基本数据类
BO_DECLARE_BEGIN(CTest1)
UINT32 id;
UINT16 type;
UINT8 state[8];
FLOAT value;
BO_DECLARE_END()
//实现基本数据类
BO_IMPLEMENT_BEGIN(CTest1)
MEMBER_CVT_KEY(UINT32, id)
MEMBER_CVT_INIT(UINT16, type, 0XFFFE)
MEMBER_NOCVT_ARRY(UINT8[8], state)
MEMBER_CVT(FLOAT, value)
BO_IMPLEMENT_END();
//------------------------------------------------------
//定义嵌套数据类
BO_DECLARE_BEGIN(CTest2)
UINT32 id;
UINT16 type;
CTest1 test1;
BO_DECLARE_END()
//实现嵌套数据类
BO_IMPLEMENT_BEGIN(CTest2)
MEMBER_CVT(UINT32, id)
MEMBER_CVT(UINT16, type)
MEMBER_BO(CTest1, test1)
BO_IMPLEMENT_END();
//-------------------------------------------------------
//定义循环型数据类
BO_DECLARE_LOOP_BEGIN(CTestLoop, CTest1)
BO_DECLARE_END()
//实现循环型数据类
BO_IMPLEMENT_LOOP_BEGIN(CTestLoop)
BO_IMPLEMENT_END();
//-------------------------------------------------------
//数据类之间可以任意组合
BO_DECLARE_BEGIN(CTest3)
UINT32 id;
UINT16 type;
UINT8 state;
FLOAT value[10];
CTestLoop testLoop;
BO_DECLARE_END()
BO_IMPLEMENT_BEGIN(CTest3)
MEMBER_CVT_KEY(UINT32, id)
MEMBER_CVT_KEY(UINT16, type)
MEMBER_NOCVT(UINT8, state, 1)
MEMBER_CVT_ARRY(FLOAT[10], value)
MEMBER_BO(CTestLoop, testLoop)
BO_IMPLEMENT_END();
//--------------------------------------------------------
//--------------------------------------------------------
//简单数据存取
CTest3 test;
test.id = 1;
memcpy(value, src, 10);
UINT32 uiID = test.id;
//循环型参数存取
CTest1 test1;
CTestLoop testLoop;
testLoop.AddSubBO(test1);
CTest3 test;
test.testLoop = testLoop;
CBOBase *pBOBase = testLoop.GetSubBOFirst();
CTest1 *pTest1 = dynamic_cast<CTest1 *>(pBOBase);
//数据转换成码流,存放在aucBuf中
CHAR aucBuf[100];
test.Encode(aucBuf);
//将aucBuf中的码流转换成结构
CTest3 test;
test.Decode(aucBuf);
//初始化数据
pTest3A->Validate()
//打印数据成员详细参数
pTest3A->Print();
//---------------------------------------------------------------
//数据库应用
CTest1 *pTestB = new CTest1;
pTestB->id = 2;
pTestB->type = 2211;
pTestB->state = 3;
pTestB->value = 11.11;
//添加到数据库 BO_DB_ID_DRUG为表类型
BODB::Add(BO_DB_ID_DRUG, *pTestB);
//从数据库中取数据
CBOBase *pBO = BODB::Get(BO_DB_ID_DRUG, testC);
CTest1 *pTest = dynamic_cast<CTest1 *>(pBO);
//从数据库删除数据
BODB::Del(BO_DB_ID_DRUG, *pTestB);
static void Add(UINT32 wTableID, CBOBase &bo);
static void Del(UINT32 wTableID, CBOBase &bo);
static void Del(UINT32 wTableID, UINT32 uiKey);
static void Del(UINT32 wTableID, UINT16 usKey);
static void Del(UINT32 wTableID, UINT8 ucKey);
static CBOBase *Get(UINT32 wTableID, CBOBase &bo);
static CBOBase *Get(UINT32 wTableID, UINT32 uiKey);
static CBOBase *Get(UINT32 wTableID, UINT16 usKey);
static CBOBase *Get(UINT32 wTableID, UINT8 ucKey);
static bool IsExist(UINT32 wTableID, CBOBase &bo);
static bool IsExist(UINT32 wTableID, UINT32 uiKey);
static bool IsExist(UINT32 wTableID, UINT16 usKey);
static bool IsExist(UINT32 wTableID, UINT8 ucKey);
static VOID Clear();
static VOID Clear(UINT32 wTableID);
static UINT32 Size();
static UINT32 Size(UINT32 wTableID);
//使用的限制和未支持功能
.从数据库Get出来的数据可以直接修改,需要考虑并发问题
.存数据库中的对象需要new出来
.存库的对象需要定义key,浮点数不建议作为key使用
.类定义需要添加pack(1)
.数组成员暂不支持字节序转换,以后看实际需要再增加功能
.类数组暂不支持
.浮点数初始化的话,小数部分会丢失
c++封装数据结构,使数据结构具有元信息,方便实现数据流的解码与编码.rar
版权申诉
189 浏览量
2022-11-22
09:51:49
上传
评论
收藏 12KB RAR 举报
GJZGRB
- 粉丝: 2130
- 资源: 7406
最新资源
- 基于python的rpa管理系统 (4).zip
- 基于python的rpa管理系统 (3).zip
- scrollCue.js 一款效果很nice的JavaScript插件,页面滚动时多种动画效果显示页面内容
- 基于python的rpa管理系统 (2).zip
- 基于python的rpa管理系统 .zip
- 全球国家及首都经纬度.xlsx
- 前端js模拟微信截图涂鸦
- prettyZoo-win-v2.1.1.msi (0积分下载,Zookeeper 可视化工具)
- Java健身房会员管理系统案例介绍:管理会员信息、健身课程预约、健身成绩统计等功能
- Java音乐播放器案例介绍:支持音乐文件的播放、管理歌单和收藏等
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈