improve data readers

This commit is contained in:
lixianjing 2020-12-23 15:55:57 +08:00
parent f8bbe318c9
commit 134d3a966d
16 changed files with 659 additions and 128 deletions

View File

@ -259,7 +259,6 @@ EXPORTS
clip_board_destroy
clip_board_set_text
clip_board_get_text
data_reader_asset_create
dialog_highlighter_factory
dialog_highlighter_factory_set
dialog_highlighter_factory_create
@ -1014,7 +1013,6 @@ EXPORTS
data_reader_factory_register
data_reader_factory_create_reader
data_reader_factory_destroy
data_reader_file_create
data_reader_read
data_reader_get_size
data_reader_destroy
@ -1025,7 +1023,6 @@ EXPORTS
data_writer_factory_register
data_writer_factory_create_writer
data_writer_factory_destroy
data_writer_file_create
data_writer_write
data_writer_destroy
date_time_create
@ -1341,6 +1338,7 @@ EXPORTS
tk_strtol
tk_strcpy
tk_strncpy
tk_strncpy_s
tk_strdup
tk_wstrdup
tk_strndup
@ -1484,6 +1482,8 @@ EXPORTS
assets_manager_deinit
assets_manager_destroy
assets_manager_load_file
data_reader_asset_create
data_reader_asset_build_url
wheel_event_cast
wheel_event_init
orientation_event_cast
@ -1834,6 +1834,12 @@ EXPORTS
lcd_mem_rgba8888_create_three_fb
lcd_mem_special_create
lcd_mono_create
data_reader_file_create
data_reader_mem_create
data_reader_mem_build_url
data_writer_file_create
data_writer_wbuffer_create
data_writer_wbuffer_build_url
event_source_manager_default_create
prop_change_event_cast
prop_change_event_init

View File

@ -229,7 +229,6 @@ EXPORTS
data_reader_factory_register
data_reader_factory_create_reader
data_reader_factory_destroy
data_reader_file_create
data_reader_read
data_reader_get_size
data_reader_destroy
@ -240,7 +239,6 @@ EXPORTS
data_writer_factory_register
data_writer_factory_create_writer
data_writer_factory_destroy
data_writer_file_create
data_writer_write
data_writer_destroy
date_time_create
@ -556,6 +554,7 @@ EXPORTS
tk_strtol
tk_strcpy
tk_strncpy
tk_strncpy_s
tk_strdup
tk_wstrdup
tk_strndup
@ -731,6 +730,12 @@ EXPORTS
conf_node_set_first_child
conf_doc_load_ubjson
conf_doc_save_ubjson
data_reader_file_create
data_reader_mem_create
data_reader_mem_build_url
data_writer_file_create
data_writer_wbuffer_create
data_writer_wbuffer_build_url
event_source_manager_default_create
prop_change_event_cast
prop_change_event_init

View File

@ -1,12 +1,17 @@
# 最新动态
2020/12/23
* 完善文档。
* 增加 data\_reade\r_mem。
* 增加 data\_writer\_wbuffer。
2020/12/22
* 增加FLOW资源类型。
* 增加函数tk\_strncpy\_s。
* data\_reader\_asset支持除data之外的其它资源类型。
* 增加 FLOW 资源类型。
* 增加函数 tk\_strncpy\_s。
* data\_reader\_asset 支持除 data 之外的其它资源类型。
* 修复圆角矩形 agge 填充下边的角的时候没有复位的问题(感谢智明提供补丁)
* 修复加载 UI 比字库资源要早导致 UI 显示不正常的问题(感谢智明提供补丁)
* 修复text_selector 控件在高度无法整除显示个数后导致偏移不正常的问题(感谢智明提供补丁)
* 修复 text_selector 控件在高度无法整除显示个数后导致偏移不正常的问题(感谢智明提供补丁)
2020/12/21
* 增加 slide\_view\_set\_active\_ex 以控制是否启用动画。

View File

@ -74,7 +74,7 @@ static data_reader_vtable_t s_data_reader_asset_vtable = {
data_reader_t* data_reader_asset_create(const char* assetname) {
const char* p = NULL;
char type[TK_NAME_LEN+1];
char type[TK_NAME_LEN + 1];
data_reader_asset_t* asset = NULL;
const key_type_value_t* kv = NULL;
assets_manager_t* am = assets_manager();
@ -83,7 +83,7 @@ data_reader_t* data_reader_asset_create(const char* assetname) {
return_value_if_fail(asset != NULL && am != NULL, NULL);
p = strchr(assetname, '/');
if(p != NULL) {
if (p != NULL) {
tk_strncpy_s(type, sizeof(type), assetname, p - assetname);
assetname = p + 1;
} else {
@ -102,3 +102,13 @@ data_reader_t* data_reader_asset_create(const char* assetname) {
return (data_reader_t*)asset;
}
const char* data_reader_asset_build_url(const char* name, asset_type_t type,
char url[MAX_PATH + 1]) {
const key_type_value_t* kv = asset_type_find_by_value(type);
return_value_if_fail(kv != NULL && name != NULL, NULL);
tk_snprintf(url, MAX_PATH, "asset://%s/%s", kv->name, name);
return url;
}

View File

@ -22,19 +22,46 @@
#ifndef TK_DATA_READER_ASSET_H
#define TK_DATA_READER_ASSET_H
#include "tkc/asset_info.h"
#include "tkc/data_reader.h"
BEGIN_C_DECLS
/**
* @class data_reader_asset_t
* @parent data_reader_t
* @annotation ["fake"]
* data_reader data_reader_factory reader URL的格式如下(data_reader_asset_build_url生成)
*
* ```
* asset://type/name
* ```
*/
/**
* @method data_reader_asset_create
* asset的data reader
*
* > data\_reader\_factory后data\_reader\_factory调用
* @annotation ["constructor"]
* @param {const char*} assetname
*
* @return {data_reader_t*} data reader对象
*/
data_reader_t* data_reader_asset_create(const char* assetname);
/**
* @method data_reader_asset_build_url
* URL
* @annotation ["static"]
*
* @param {const char*} name
* @param {asset_type_t} type
* @param {char*} url URL
*
* @return {const char*} URL
*/
const char* data_reader_asset_build_url(const char* name, asset_type_t type, char url[MAX_PATH + 1]);
#define DATA_READER_ASSET(reader) ((data_reader_t*)(reader))
END_C_DECLS

View File

@ -26,17 +26,29 @@
BEGIN_C_DECLS
/**
* @class data_reader_file_t
* @parent data_reader_t
* @annotation ["fake"]
* data_reader data_reader_factory reader URL的格式如下(data_reader_file_build_url生成)
*
* ```
* file://filename
* ```
*/
/**
* @method data_reader_file_create
* data reader
* > data\_reader\_factory后data\_reader\_factory调用
* @annotation ["constructor"]
*
* @param {const char*} filename
*
* @return {data_reader_t*} data reader对象
*/
data_reader_t* data_reader_file_create(const char* filename);
#define DATA_READER_FILE(reader) ((data_reader_t*)(reader))
END_C_DECLS
#endif /*TK_DATA_READER_FILE_H*/

View File

@ -86,9 +86,9 @@ data_reader_t* data_reader_mem_create(const char* memname) {
}
const char* data_reader_mem_build_url(const void* buffer, uint32_t size,
char url[TK_NAME_LEN + 1]) {
char url[MAX_PATH + 1]) {
return_value_if_fail(buffer != NULL, NULL);
tk_snprintf(url, TK_NAME_LEN, "mem://%p:%u", buffer, size);
tk_snprintf(url, MAX_PATH, "mem://%p:%u", buffer, size);
return url;
}

View File

@ -26,11 +26,24 @@
#include "tkc/data_reader.h"
BEGIN_C_DECLS
/**
* @class data_reader_mem_t
* @parent data_reader_t
* @annotation ["fake"]
* data_reader data_reader_factory reader URL的格式如下(data_reader_mem_build_url生成)
*
* ```
* mem://addr:size
* ```
*/
/**
* @method data_reader_mem_create
* data reader
* @param {const char*} memname
* data reader
*
* > data\_reader\_factory后data\_reader\_factory调用
* @annotation ["constructor"]
* @param {const char*} memname
*
* @return {data_reader_t*} data reader对象
*/
@ -38,14 +51,16 @@ data_reader_t* data_reader_mem_create(const char* memname);
/**
* @method data_reader_mem_build_url
*
* @param {mem_t*} mem pointer to mem
* @param {uint32_t} size memory size
* @param {char*} url url.
* URL
* @annotation ["static"]
*
* @param {mem_t*} mem
* @param {uint32_t} size
* @param {char*} url URL
*
* @return {const char*} URL
*/
const char* data_reader_mem_build_url(const void* buffer, uint32_t size, char url[TK_NAME_LEN + 1]);
const char* data_reader_mem_build_url(const void* buffer, uint32_t size, char url[MAX_PATH + 1]);
#define DATA_READER_MEM(reader) ((data_reader_t*)(reader))

View File

@ -26,17 +26,30 @@
BEGIN_C_DECLS
/**
* @class data_writer_file_t
* @parent data_writer_t
* @annotation ["fake"]
* data_writer data_writer_factory writer URL的格式如下
*
* ```
* file://filename
* ```
*/
/**
* @method data_writer_file_create
* data writer
*
* > data\_writer\_factory后data\_writer\_factory调用
* @annotation ["constructor"]
*
* @param {const char*} filename
*
* @return {data_writer_t*} data writer对象
*/
data_writer_t* data_writer_file_create(const char* filename);
#define DATA_WRITER_FILE(writer) ((data_writer_t*)(writer))
END_C_DECLS
#endif /*TK_DATA_WRITER_FILE_H*/

View File

@ -29,12 +29,12 @@ typedef struct _data_writer_wbuffer_t {
} data_writer_wbuffer_t;
static int32_t data_writer_wbuffer_write(data_writer_t* writer, uint64_t offset, const void* data,
uint32_t size) {
uint32_t size) {
data_writer_wbuffer_t* wbuffer = (data_writer_wbuffer_t*)writer;
return_value_if_fail(wbuffer_extend_capacity(wbuffer->wbuffer, offset + size) == RET_OK, 0);
wbuffer->wbuffer->cursor = offset;
return wbuffer_write_binary(wbuffer->wbuffer, data, size) == RET_OK ? size : 0;
}
@ -66,9 +66,9 @@ data_writer_t* data_writer_wbuffer_create(const char* wbuffername) {
return (data_writer_t*)wbuffer;
}
const char* data_writer_wbuffer_build_url(wbuffer_t* buffer, char url[TK_NAME_LEN+1]) {
const char* data_writer_wbuffer_build_url(wbuffer_t* buffer, char url[MAX_PATH + 1]) {
return_value_if_fail(buffer != NULL, NULL);
tk_snprintf(url, TK_NAME_LEN, "wbuffer://%p", buffer);
tk_snprintf(url, MAX_PATH, "wbuffer://%p", buffer);
return url;
}

View File

@ -27,11 +27,24 @@
#include "tkc/data_writer.h"
BEGIN_C_DECLS
/**
* @class data_writer_wbuffer_t
* @parent data_writer_t
* @annotation ["fake"]
* data_writer data_writer_factory writer URL的格式如下(data_writer_wbuffer_build_url生成)
*
* ```
* wbuffer://addr
* ```
*/
/**
* @method data_writer_wbuffer_create
* wbuffer的data writer
* @param {const char*} wbuffer_name pointer to wbuffer
*
* > data\_writer\_factory后data\_writer\_factory调用
* @annotation ["constructor"]
* @param {const char*} wbuffer_name wbuffer地址的字符串格式表示
*
* @return {data_writer_t*} data writer对象
*/
@ -39,13 +52,15 @@ data_writer_t* data_writer_wbuffer_create(const char* wbuffer_name);
/**
* @method data_writer_wbuffer_build_url
*
* @param {wbuffer_t*} wbuffer pointer to wbuffer
* @param {char*} url url.
* wbuffer的URL
* @annotation ["static"]
*
* @param {wbuffer_t*} wbuffer wbuffer对象
* @param {char*} url URL
*
* @return {const char*} URL
*/
const char* data_writer_wbuffer_build_url(wbuffer_t* buffer, char url[TK_NAME_LEN+1]);
const char* data_writer_wbuffer_build_url(wbuffer_t* buffer, char url[MAX_PATH+1]);
#define DATA_WRITER_WBUFFER(writer) ((data_writer_t*)(writer))

View File

@ -25,12 +25,14 @@ TEST(DataReaderAsset, basic) {
TEST(DataReaderAsset, data) {
char data[256];
uint32_t size = 0;
char url[MAX_PATH+1];
data_reader_t* reader = NULL;
data_reader_factory_t* f = data_reader_factory_create();
ASSERT_EQ(data_reader_factory_register(f, "asset", data_reader_asset_create), RET_OK);
reader = data_reader_factory_create_reader(f, "asset://data/test.json");
data_reader_asset_build_url("test.json", ASSET_TYPE_DATA, url);
reader = data_reader_factory_create_reader(f, url);
ASSERT_EQ(reader != NULL, true);
memset(data, 0x00, sizeof(data));
@ -45,12 +47,14 @@ TEST(DataReaderAsset, data) {
TEST(DataReaderAsset, ui) {
char data[32];
uint32_t size = 0;
char url[MAX_PATH+1];
data_reader_t* reader = NULL;
data_reader_factory_t* f = data_reader_factory_create();
ASSERT_EQ(data_reader_factory_register(f, "asset", data_reader_asset_create), RET_OK);
reader = data_reader_factory_create_reader(f, "asset://ui/main");
data_reader_asset_build_url("main", ASSET_TYPE_UI, url);
reader = data_reader_factory_create_reader(f, url);
ASSERT_EQ(reader != NULL, true);
memset(data, 0x00, sizeof(data));
@ -65,12 +69,14 @@ TEST(DataReaderAsset, ui) {
TEST(DataReaderAsset, style) {
char data[32];
uint32_t size = 0;
char url[MAX_PATH+1];
data_reader_t* reader = NULL;
data_reader_factory_t* f = data_reader_factory_create();
ASSERT_EQ(data_reader_factory_register(f, "asset", data_reader_asset_create), RET_OK);
reader = data_reader_factory_create_reader(f, "asset://style/default");
data_reader_asset_build_url("default", ASSET_TYPE_STYLE, url);
reader = data_reader_factory_create_reader(f, url);
ASSERT_EQ(reader != NULL, true);
memset(data, 0x00, sizeof(data));

View File

@ -4,7 +4,7 @@
TEST(DataReaderMem, basic) {
char buffer[32];
char url[TK_NAME_LEN + 1];
char url[MAX_PATH + 1];
const char* data = "hello world";
data_reader_t* reader = NULL;
data_reader_factory_t* f = data_reader_factory_create();

View File

@ -4,7 +4,7 @@
TEST(DataWriterWbuffer, wbuffer) {
wbuffer_t wb;
char url[TK_NAME_LEN + 1];
char url[MAX_PATH + 1];
data_writer_t* writer = NULL;
data_writer_factory_t* f = data_writer_factory_create();

View File

@ -6873,22 +6873,6 @@
"type": "const char*",
"desc": "返回文本数据。"
}
},
{
"params": [
{
"type": "const char*",
"name": "assetname",
"desc": "资源的名称。"
}
],
"annotation": {},
"desc": "创建基于asset的data reader。",
"name": "data_reader_asset_create",
"return": {
"type": "data_reader_t*",
"desc": "返回data reader对象。"
}
}
],
"events": [],
@ -26933,6 +26917,10 @@
"desc": "JS等脚本资源。",
"name": "ASSET_TYPE_SCRIPT"
},
{
"desc": "流图资源。",
"name": "ASSET_TYPE_FLOW"
},
{
"desc": "其它数据资源。",
"name": "ASSET_TYPE_DATA"
@ -29172,22 +29160,6 @@
"type": "ret_t",
"desc": "返回RET_OK表示成功否则表示失败。"
}
},
{
"params": [
{
"type": "const char*",
"name": "filename",
"desc": "文件名。"
}
],
"annotation": {},
"desc": "创建基于文件的data reader。",
"name": "data_reader_file_create",
"return": {
"type": "data_reader_t*",
"desc": "返回data reader对象。"
}
}
],
"events": [],
@ -29399,22 +29371,6 @@
"type": "ret_t",
"desc": "返回RET_OK表示成功否则表示失败。"
}
},
{
"params": [
{
"type": "const char*",
"name": "filename",
"desc": "文件名。"
}
],
"annotation": {},
"desc": "创建基于文件的data writer。",
"name": "data_writer_file_create",
"return": {
"type": "data_writer_t*",
"desc": "返回data writer对象。"
}
}
],
"events": [],
@ -37678,7 +37634,7 @@
{
"type": "const char*",
"name": "src",
"desc": "字符串。"
"desc": "字符串。"
},
{
"type": "size_t",
@ -37694,6 +37650,37 @@
"desc": "返回目标字符串。"
}
},
{
"params": [
{
"type": "char*",
"name": "dst",
"desc": "目标字符串。"
},
{
"type": "size_t",
"name": "dst_len",
"desc": "目标字符串内存长度。"
},
{
"type": "const char*",
"name": "src",
"desc": "源字符串。"
},
{
"type": "size_t",
"name": "src_len",
"desc": "要复制的字符串个数。"
}
],
"annotation": {},
"desc": "将src所指向的字符串复制到dst最多复制min(dst_len-1, src_len)个字符串,并在[len]位置添加'\\0'。",
"name": "tk_strncpy_s",
"return": {
"type": "char*",
"desc": "返回目标字符串。"
}
},
{
"params": [
{
@ -41436,6 +41423,67 @@
},
"level": 2
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "assetname",
"desc": "资源的名称。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于asset的data reader。\n\n> 不要直接调用,而是注册到 data\\_reader\\_factory后通过data\\_reader\\_factory调用。",
"name": "data_reader_asset_create",
"return": {
"type": "data_reader_t*",
"desc": "返回data reader对象。"
}
},
{
"params": [
{
"type": "const char*",
"name": "name",
"desc": "资源的名称。"
},
{
"type": "asset_type_t",
"name": "type",
"desc": "资源的类型。"
},
{
"type": "char*",
"name": "url",
"desc": "生成的URL。"
}
],
"annotation": {
"static": true
},
"desc": "构造内存URL。",
"name": "data_reader_asset_build_url",
"return": {
"type": "const char*",
"desc": "返回URL。"
}
}
],
"events": [],
"properties": [],
"header": "base/data_reader_asset.h",
"desc": "基于资源实现的 data_reader。通过 data_reader_factory 创建 reader 时URL的格式如下(请用函数data_reader_asset_build_url生成)\n\n```\nasset://type/name\n```",
"name": "data_reader_asset_t",
"parent": "data_reader_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [
@ -51037,7 +51085,7 @@
"annotation": {
"scriptable": true
},
"desc": "设置当前页的序号。",
"desc": "设置当前页的序号(默认启用动画)。",
"name": "slide_view_set_active",
"return": {
"type": "ret_t",
@ -51059,7 +51107,7 @@
{
"type": "bool_t",
"name": "animate",
"desc": "enable animation."
"desc": "是否启用动画。"
}
],
"annotation": {
@ -51809,9 +51857,9 @@
}
},
{
"name": "localize_options",
"desc": "是否本地化(翻译)选项(缺省为FALSE)。",
"type": "bool_t",
"name": "yspeed_scale",
"desc": "y偏移速度比例。",
"type": "float_t",
"annotation": {
"set_prop": true,
"get_prop": true,
@ -51822,9 +51870,9 @@
}
},
{
"name": "yspeed_scale",
"desc": "y偏移速度比例。",
"type": "float_t",
"name": "localize_options",
"desc": "是否本地化(翻译)选项(缺省为FALSE)。",
"type": "bool_t",
"annotation": {
"set_prop": true,
"get_prop": true,
@ -53766,6 +53814,189 @@
"parent": "lcd_t",
"level": 2
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "filename",
"desc": "文件名。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于文件的data reader。\n> 不要直接调用,而是注册到 data\\_reader\\_factory后通过data\\_reader\\_factory调用。",
"name": "data_reader_file_create",
"return": {
"type": "data_reader_t*",
"desc": "返回data reader对象。"
}
}
],
"events": [],
"properties": [],
"header": "tkc/data_reader_file.h",
"desc": "基于文件实现的 data_reader。通过 data_reader_factory 创建 reader 时URL的格式如下(请用函数data_reader_file_build_url生成)\n\n```\nfile://filename\n```",
"name": "data_reader_file_t",
"parent": "data_reader_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "memname",
"desc": "内存地址和大小的字符串格式表示 。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于内存的 data reader。\n\n> 不要直接调用,而是注册到 data\\_reader\\_factory后通过data\\_reader\\_factory调用。",
"name": "data_reader_mem_create",
"return": {
"type": "data_reader_t*",
"desc": "返回data reader对象。"
}
},
{
"params": [
{
"type": "mem_t*",
"name": "mem",
"desc": "内存的地址。"
},
{
"type": "uint32_t",
"name": "size",
"desc": "内存的长度。"
},
{
"type": "char*",
"name": "url",
"desc": "生成的URL。"
}
],
"annotation": {
"static": true
},
"desc": "构造内存URL。",
"name": "data_reader_mem_build_url",
"return": {
"type": "const char*",
"desc": "返回URL。"
}
}
],
"events": [],
"properties": [],
"header": "tkc/data_reader_mem.h",
"desc": "基于内存实现的 data_reader。通过 data_reader_factory 创建 reader 时URL的格式如下(请用函数data_reader_mem_build_url生成)\n\n```\nmem://addr:size\n```",
"name": "data_reader_mem_t",
"parent": "data_reader_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "filename",
"desc": "文件名。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于文件的data writer。\n\n> 不要直接调用,而是注册到 data\\_writer\\_factory后通过data\\_writer\\_factory调用",
"name": "data_writer_file_create",
"return": {
"type": "data_writer_t*",
"desc": "返回data writer对象。"
}
}
],
"events": [],
"properties": [],
"header": "tkc/data_writer_file.h",
"desc": "基于文件实现的 data_writer。通过 data_writer_factory 创建 writer 时URL的格式如下\n\n```\nfile://filename\n```",
"name": "data_writer_file_t",
"parent": "data_writer_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "wbuffer_name",
"desc": "wbuffer地址的字符串格式表示 。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于wbuffer的data writer。\n\n> 不要直接调用,而是注册到 data\\_writer\\_factory后通过data\\_writer\\_factory调用",
"name": "data_writer_wbuffer_create",
"return": {
"type": "data_writer_t*",
"desc": "返回data writer对象。"
}
},
{
"params": [
{
"type": "wbuffer_t*",
"name": "wbuffer",
"desc": "wbuffer对象。"
},
{
"type": "char*",
"name": "url",
"desc": "生成的URL。"
}
],
"annotation": {
"static": true
},
"desc": "构造wbuffer的URL。",
"name": "data_writer_wbuffer_build_url",
"return": {
"type": "const char*",
"desc": "返回URL。"
}
}
],
"events": [],
"properties": [],
"header": "tkc/data_writer_wbuffer.h",
"desc": "基于内存实现的 data_writer。通过 data_writer_factory 创建 writer 时URL的格式如下(请用函数data_writer_wbuffer_build_url生成)\n\n```\nwbuffer://addr\n```",
"name": "data_writer_wbuffer_t",
"parent": "data_writer_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [

View File

@ -3666,6 +3666,10 @@
"desc": "JS等脚本资源。",
"name": "ASSET_TYPE_SCRIPT"
},
{
"desc": "流图资源。",
"name": "ASSET_TYPE_FLOW"
},
{
"desc": "其它数据资源。",
"name": "ASSET_TYPE_DATA"
@ -5905,22 +5909,6 @@
"type": "ret_t",
"desc": "返回RET_OK表示成功否则表示失败。"
}
},
{
"params": [
{
"type": "const char*",
"name": "filename",
"desc": "文件名。"
}
],
"annotation": {},
"desc": "创建基于文件的data reader。",
"name": "data_reader_file_create",
"return": {
"type": "data_reader_t*",
"desc": "返回data reader对象。"
}
}
],
"events": [],
@ -6132,22 +6120,6 @@
"type": "ret_t",
"desc": "返回RET_OK表示成功否则表示失败。"
}
},
{
"params": [
{
"type": "const char*",
"name": "filename",
"desc": "文件名。"
}
],
"annotation": {},
"desc": "创建基于文件的data writer。",
"name": "data_writer_file_create",
"return": {
"type": "data_writer_t*",
"desc": "返回data writer对象。"
}
}
],
"events": [],
@ -14476,7 +14448,7 @@
{
"type": "const char*",
"name": "src",
"desc": "字符串。"
"desc": "字符串。"
},
{
"type": "size_t",
@ -14492,6 +14464,37 @@
"desc": "返回目标字符串。"
}
},
{
"params": [
{
"type": "char*",
"name": "dst",
"desc": "目标字符串。"
},
{
"type": "size_t",
"name": "dst_len",
"desc": "目标字符串内存长度。"
},
{
"type": "const char*",
"name": "src",
"desc": "源字符串。"
},
{
"type": "size_t",
"name": "src_len",
"desc": "要复制的字符串个数。"
}
],
"annotation": {},
"desc": "将src所指向的字符串复制到dst最多复制min(dst_len-1, src_len)个字符串,并在[len]位置添加'\\0'。",
"name": "tk_strncpy_s",
"return": {
"type": "char*",
"desc": "返回目标字符串。"
}
},
{
"params": [
{
@ -19018,6 +19021,189 @@
"header": "conf_io/conf_ubjson.h",
"level": 1
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "filename",
"desc": "文件名。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于文件的data reader。\n> 不要直接调用,而是注册到 data\\_reader\\_factory后通过data\\_reader\\_factory调用。",
"name": "data_reader_file_create",
"return": {
"type": "data_reader_t*",
"desc": "返回data reader对象。"
}
}
],
"events": [],
"properties": [],
"header": "tkc/data_reader_file.h",
"desc": "基于文件实现的 data_reader。通过 data_reader_factory 创建 reader 时URL的格式如下(请用函数data_reader_file_build_url生成)\n\n```\nfile://filename\n```",
"name": "data_reader_file_t",
"parent": "data_reader_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "memname",
"desc": "内存地址和大小的字符串格式表示 。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于内存的 data reader。\n\n> 不要直接调用,而是注册到 data\\_reader\\_factory后通过data\\_reader\\_factory调用。",
"name": "data_reader_mem_create",
"return": {
"type": "data_reader_t*",
"desc": "返回data reader对象。"
}
},
{
"params": [
{
"type": "mem_t*",
"name": "mem",
"desc": "内存的地址。"
},
{
"type": "uint32_t",
"name": "size",
"desc": "内存的长度。"
},
{
"type": "char*",
"name": "url",
"desc": "生成的URL。"
}
],
"annotation": {
"static": true
},
"desc": "构造内存URL。",
"name": "data_reader_mem_build_url",
"return": {
"type": "const char*",
"desc": "返回URL。"
}
}
],
"events": [],
"properties": [],
"header": "tkc/data_reader_mem.h",
"desc": "基于内存实现的 data_reader。通过 data_reader_factory 创建 reader 时URL的格式如下(请用函数data_reader_mem_build_url生成)\n\n```\nmem://addr:size\n```",
"name": "data_reader_mem_t",
"parent": "data_reader_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "filename",
"desc": "文件名。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于文件的data writer。\n\n> 不要直接调用,而是注册到 data\\_writer\\_factory后通过data\\_writer\\_factory调用",
"name": "data_writer_file_create",
"return": {
"type": "data_writer_t*",
"desc": "返回data writer对象。"
}
}
],
"events": [],
"properties": [],
"header": "tkc/data_writer_file.h",
"desc": "基于文件实现的 data_writer。通过 data_writer_factory 创建 writer 时URL的格式如下\n\n```\nfile://filename\n```",
"name": "data_writer_file_t",
"parent": "data_writer_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [
{
"params": [
{
"type": "const char*",
"name": "wbuffer_name",
"desc": "wbuffer地址的字符串格式表示 。"
}
],
"annotation": {
"constructor": true
},
"desc": "创建基于wbuffer的data writer。\n\n> 不要直接调用,而是注册到 data\\_writer\\_factory后通过data\\_writer\\_factory调用",
"name": "data_writer_wbuffer_create",
"return": {
"type": "data_writer_t*",
"desc": "返回data writer对象。"
}
},
{
"params": [
{
"type": "wbuffer_t*",
"name": "wbuffer",
"desc": "wbuffer对象。"
},
{
"type": "char*",
"name": "url",
"desc": "生成的URL。"
}
],
"annotation": {
"static": true
},
"desc": "构造wbuffer的URL。",
"name": "data_writer_wbuffer_build_url",
"return": {
"type": "const char*",
"desc": "返回URL。"
}
}
],
"events": [],
"properties": [],
"header": "tkc/data_writer_wbuffer.h",
"desc": "基于内存实现的 data_writer。通过 data_writer_factory 创建 writer 时URL的格式如下(请用函数data_writer_wbuffer_build_url生成)\n\n```\nwbuffer://addr\n```",
"name": "data_writer_wbuffer_t",
"parent": "data_writer_t",
"annotation": {
"fake": true
},
"level": 2
},
{
"type": "class",
"methods": [