3d画谜总汇,总裁的葬心哑妻,玻璃奶瓶怎么消毒
(一)存储选择:微型对象数据库
这里是随笔,不会详述内容,下面都是用实验样例来解释说明。不明白的可以闪人了。
1。微型对象数据库
例:
{
"食指":{
"对象名":"食指"
"左右手":"左手"
"属性":[
{"重量":"0.1公斤"},
{"肤色":"黄"},
{"皮肤面积":"0.05平米"},
{"血":"0.001公斤"},
{"骨":"0.002公斤"},
{"皮":"0.001公斤"},
{"肉":"0.005公斤"},
{"指甲":{...}},
。。。
]
"行为":[
{"掌":""},
{"拳":""},
{"1":"手势"},
{"指示方向":"手势"},
{"勾勾手":"手势,来我这儿"},
。。。
]
}
}
1.1 nosql库实现
1.1.1 对象类型
enum ob_endobj_type_t {
ob_endobj_unknown = -1,
ob_endobj_null = 1,
ob_endobj_bool = 2,
ob_endobj_integer = 3,
ob_endobj_double = 4,
ob_endobj_string = 5,
ob_endobj_array = 6,
ob_endobj_object = 7
};
1.1.2 结构定义
typedef struct _ob_result_t {
bool result;
unsigned char* msg;
unsigned int code;
}ob_result_t, *pob_result_t;
typedef struct _ob_endobj_t {
enum obj_type type;
size_t len;
unsigned char * name;
unsigned char * value;
}ob_endobj_t, *pob_endobj_t;
typedef struct _ob_tree_node_t {
pob_endobj_t obj;
struct _ob_tree_node_t* before;
struct _ob_tree_node_t* next;
struct _ob_tree_node_t* parent;
struct _ob_tree_node_t* child;
}ob_tree_node_t, *pob_tree_node_t;
typedef struct _ob_tree_head_t {
unsigned char ob_name[256];
unsigned char ob_hash[1024];
unsigned char ob_version[10][256];
pob_tree_node_t root;
}ob_tree_head_t, *pob_tree_head_t;
1.1.3 数据操作方法
1.1.3.1 方法定义
// 创建对象 操作方法定义
ob_api bool __stdcall ob_new_obj_null(pob_endobj_t* ppobj, pob_result_t* ppresult, unsigned char* name, size_t len);
ob_api bool __stdcall ob_new_obj_bool(pob_endobj_t* ppobj, pob_result_t* ppresult, unsigned char* name, size_t len);
ob_api bool __stdcall ob_new_obj_integer(pob_endobj_t* ppobj, pob_result_t* ppresult, unsigned char* name, size_t len);
ob_api bool __stdcall ob_new_obj_double(pob_endobj_t* ppobj, pob_result_t* ppresult, unsigned char* name, size_t len);
ob_api bool __stdcall ob_new_obj_string(pob_endobj_t* ppobj, pob_result_t* ppresult, unsigned char* name, size_t len, size_t stringlen);
ob_api bool __stdcall ob_new_obj_array(pob_endobj_t* ppobj, pob_result_t* ppresult, unsigned char* name, size_t len, enum obj_type type, size_t count);
// 创建对象节点 操作方法定义
ob_api bool __stdcall ob_new_node_null(pob_tree_node_t* ppnode, pob_result_t* ppresult, unsigned char* name, size_t len);
ob_api bool __stdcall ob_new_node_bool(pob_tree_node_t* ppnode, pob_result_t* ppresult, unsigned char* name, size_t len);
ob_api bool __stdcall ob_new_node_integer(pob_tree_node_t* ppnode, pob_result_t* ppresult, unsigned char* name, size_t len);
ob_api bool __stdcall ob_new_node_double(pob_tree_node_t* ppnode, pob_result_t* ppresult, unsigned char* name, size_t len);
ob_api bool __stdcall ob_new_node_string(pob_tree_node_t* ppnode, pob_result_t* ppresult, unsigned char* name, size_t len, size_t stringlen);
ob_api bool __stdcall ob_new_node_array(pob_tree_node_t* ppnode, pob_result_t* ppresult, unsigned char* name, size_t len, size_t stringlen, enum ob_endobj_type type, size_t count);
// 遍历
pob_tree_node_t _stdcall root(pob_tree_head_t head);
pob_tree_node_t __stdcall next(pob_tree_node_t pnode);
pob_tree_node_t __stdcall before(pob_tree_node_t pnode);
pob_tree_node_t __stdcall child(pob_tree_node_t pnode);
pob_tree_node_t __stdcall parent(pob_tree_node_t pnode);
// 创建对象存储
ob_api pob_tree_head_t __stdcall new_ob(unsigned char* ob_name, size_t name_len, unsigned char* ob_version, size_t ver_len);
ob_api bool __stdcall delete_ob(pob_tree_head_t head);
// 对象节点 增删改操作方法定义
ob_api bool __stdcall new_root(pob_tree_head_t head, pob_tree_node_t* ppnode, pob_result_t* ppresult);
ob_api bool __stdcall insert_node(pob_tree_node_t pcurrentnode, pob_tree_node_t* ppnode, pob_result_t* ppresult);
ob_api bool __stdcall delete_node(pob_tree_node_t* ppnode, pob_result_t* ppresult);
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
如何在没有core文件的情况下用dmesg+addr2line定位段错误
用QT制作3D点云显示器——QtDataVisualization
网友评论