mirror of
https://gitee.com/zlgopen/awtk.git
synced 2024-11-30 02:58:26 +08:00
add some csv functions
This commit is contained in:
parent
d77e905ea4
commit
385fcf20b6
@ -1,4 +1,7 @@
|
||||
# 最新动态
|
||||
2023/09/25
|
||||
* 增加函数csv\_file\_object\_load/csv\_file\_object\_load\_from\_buff
|
||||
* 增加函数csv\_file\_object\_save\_to\_buff/csv\_file\_object\_save\_as
|
||||
|
||||
2023/09/25
|
||||
* 增加函数path\_prepend\_temp\_path
|
||||
|
@ -3,7 +3,7 @@
|
||||
* Author: AWTK Develop Team
|
||||
* Brief: csv file
|
||||
*
|
||||
* Copyright (c) 2020 - 2023 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||||
* Copyright (c) 2020 - 2022 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
@ -21,6 +21,8 @@
|
||||
|
||||
#include "tkc/mem.h"
|
||||
#include "tkc/utils.h"
|
||||
#include "tkc/data_writer.h"
|
||||
#include "tkc/data_writer_factory.h"
|
||||
|
||||
#include "csv_file.h"
|
||||
#include "streams/mem/istream_mem.h"
|
||||
@ -624,6 +626,24 @@ ret_t csv_file_remove_row(csv_file_t* csv, uint32_t row) {
|
||||
return csv_rows_remove(&(csv->rows), row);
|
||||
}
|
||||
|
||||
ret_t csv_file_save_to_buff(csv_file_t* csv, wbuffer_t* buff) {
|
||||
str_t str;
|
||||
uint32_t i = 0;
|
||||
csv_row_t* r = NULL;
|
||||
return_value_if_fail(csv != NULL, RET_BAD_PARAMS);
|
||||
return_value_if_fail(buff != NULL, RET_BAD_PARAMS);
|
||||
return_value_if_fail(str_init(&str, 512) != NULL, RET_OOM);
|
||||
|
||||
for (i = 0; i < csv->rows.size; i++) {
|
||||
r = csv->rows.rows + i;
|
||||
csv_row_to_str(r, &str, csv->sep);
|
||||
ENSURE(wbuffer_write_binary(buff, str.str, str.size) == RET_OK);
|
||||
}
|
||||
str_reset(&str);
|
||||
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
ret_t csv_file_save(csv_file_t* csv, const char* filename) {
|
||||
str_t str;
|
||||
uint32_t i = 0;
|
||||
@ -651,8 +671,7 @@ ret_t csv_file_save(csv_file_t* csv, const char* filename) {
|
||||
}
|
||||
}
|
||||
str_reset(&str);
|
||||
|
||||
return RET_NOT_IMPL;
|
||||
return RET_OK;
|
||||
}
|
||||
|
||||
const char* csv_file_get_title(csv_file_t* csv) {
|
||||
|
@ -3,7 +3,7 @@
|
||||
* Author: AWTK Develop Team
|
||||
* Brief: csv file
|
||||
*
|
||||
* Copyright (c) 2020 - 2023 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||||
* Copyright (c) 2020 - 2022 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
@ -23,6 +23,7 @@
|
||||
#define TK_CSV_FILE_H
|
||||
|
||||
#include "tkc/istream.h"
|
||||
#include "tkc/buffer.h"
|
||||
|
||||
BEGIN_C_DECLS
|
||||
|
||||
@ -313,6 +314,18 @@ ret_t csv_file_insert_row(csv_file_t* csv, uint32_t row, const char* data);
|
||||
*/
|
||||
ret_t csv_file_save(csv_file_t* csv, const char* filename);
|
||||
|
||||
/**
|
||||
* @method csv_file_save_to_buff
|
||||
*
|
||||
* 保存。
|
||||
*
|
||||
* @param {csv_file_t*} csv csv对象。
|
||||
* @param {wbuffer_t*} buff 保存结果数据。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||
*/
|
||||
ret_t csv_file_save_to_buff(csv_file_t* csv, wbuffer_t* buff);
|
||||
|
||||
/**
|
||||
* @method csv_file_clear
|
||||
*
|
||||
|
@ -3,7 +3,7 @@
|
||||
* Author: AWTK Develop Team
|
||||
* Brief: csv file object
|
||||
*
|
||||
* Copyright (c) 2020 - 2023 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||||
* Copyright (c) 2020 - 2022 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
@ -23,7 +23,10 @@
|
||||
#include "tkc/mem.h"
|
||||
#include "tkc/utils.h"
|
||||
#include "tkc/object.h"
|
||||
#include "tkc/data_reader.h"
|
||||
|
||||
#include "csv_file.h"
|
||||
#include "csv_file_object.h"
|
||||
|
||||
typedef struct _csv_file_object_t {
|
||||
tk_object_t object;
|
||||
@ -249,3 +252,35 @@ csv_file_t* csv_file_object_get_csv(tk_object_t* obj) {
|
||||
|
||||
return o->csv;
|
||||
}
|
||||
|
||||
tk_object_t* csv_file_object_load(const char* filename, char sep) {
|
||||
csv_file_t* csv = csv_file_create(filename, sep);
|
||||
return_value_if_fail(csv != NULL, NULL);
|
||||
|
||||
return csv_file_object_create(csv);
|
||||
}
|
||||
|
||||
tk_object_t* csv_file_object_load_from_buff(const void* buff, uint32_t size, char sep) {
|
||||
csv_file_t* csv = NULL;
|
||||
if (buff != NULL) {
|
||||
csv = csv_file_create_with_buff(buff, size, sep);
|
||||
} else {
|
||||
csv = csv_file_create_empty(sep, NULL, NULL);
|
||||
}
|
||||
return_value_if_fail(csv != NULL, NULL);
|
||||
|
||||
return csv_file_object_create(csv);
|
||||
}
|
||||
|
||||
ret_t csv_file_object_save_to_buff(tk_object_t* obj, wbuffer_t* wb) {
|
||||
csv_file_object_t* o = CSV_FILE_OBJECT(obj);
|
||||
return_value_if_fail(o != NULL, RET_BAD_PARAMS);
|
||||
|
||||
return csv_file_save_to_buff(o->csv, wb);
|
||||
}
|
||||
|
||||
ret_t csv_file_object_save_as(tk_object_t* obj, const char* filename) {
|
||||
csv_file_object_t* o = CSV_FILE_OBJECT(obj);
|
||||
return_value_if_fail(o != NULL, RET_BAD_PARAMS);
|
||||
return csv_file_save(o->csv, filename);
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
* Author: AWTK Develop Team
|
||||
* Brief: csv file object
|
||||
*
|
||||
* Copyright (c) 2020 - 2023 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||||
* Copyright (c) 2020 - 2022 Guangzhou ZHIYUAN Electronics Co.,Ltd.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
@ -56,6 +56,55 @@ tk_object_t* csv_file_object_create(csv_file_t* csv);
|
||||
*/
|
||||
csv_file_t* csv_file_object_get_csv(tk_object_t* obj);
|
||||
|
||||
/**
|
||||
* @method csv_file_object_load
|
||||
* 从指定文件加载CSV对象。
|
||||
*
|
||||
* @annotation ["constructor"]
|
||||
*
|
||||
* @param {const char*} filename 文件名。
|
||||
* @param {char} sep 分隔符。
|
||||
*
|
||||
* @return {tk_object_t*} 返回配置对象。
|
||||
*/
|
||||
tk_object_t* csv_file_object_load(const char* filename, char sep);
|
||||
|
||||
/**
|
||||
* @method csv_file_object_load_from_buff
|
||||
* 从内存加载CSV对象。
|
||||
* @annotation ["constructor"]
|
||||
*
|
||||
* @param {const void*} buff 数据。
|
||||
* @param {uint32_t} size 数据长度。
|
||||
* @param {char} sep 分隔符。
|
||||
*
|
||||
* @return {tk_object_t*} 返回配置对象。
|
||||
*/
|
||||
tk_object_t* csv_file_object_load_from_buff(const void* buff, uint32_t size, char sep);
|
||||
|
||||
/**
|
||||
* @method csv_file_object_save_to_buff
|
||||
* 将obj保存为CSV格式到内存。
|
||||
*
|
||||
* @param {tk_object_t*} obj doc对象。
|
||||
* @param {wbuffer_t*} wb 返回结果(不要初始化,使用完成后要调用wbuffer_deinit)。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败
|
||||
*/
|
||||
ret_t csv_file_object_save_to_buff(tk_object_t* obj, wbuffer_t* wb);
|
||||
|
||||
/**
|
||||
* @method csv_file_object_save_as
|
||||
* 将doc对象保存到指定文件。
|
||||
* @annotation ["static"]
|
||||
*
|
||||
* @param {tk_object_t*} obj doc对象。
|
||||
* @param {const char*} filename 文件名。
|
||||
*
|
||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败
|
||||
*/
|
||||
ret_t csv_file_object_save_as(tk_object_t* obj, const char* filename);
|
||||
|
||||
END_C_DECLS
|
||||
|
||||
#endif /*TK_CSV_FILE_OBJECT_H*/
|
||||
|
Loading…
Reference in New Issue
Block a user