DLT_Splitter/Inc/CSV_Utilities.hpp

130 lines
4.5 KiB
C++

#ifndef __CSV_EXPORTER__
#define __CSV_EXPORTER__
extern "C"
{
#include "stdint.h"
}
namespace CSV_Type
{
// 错误类型
typedef enum
{
CSV_ERROR_NONE, // None Error
CSV_ERROR_MEM_ALLOCATE_FAILED, // 内存分配失败
CSV_ERROR_COLUMN_NOT_FOUND, // 未查找到指定列
CSV_ERROR_ILLEGAL_COLUMN_POSITION, // 非法列位置
CSV_ERROR_ILLEGAL_CELL_POSITION, // 非法单元格位置
} CSV_Err;
}
class CSV_Table
{
protected:
size_t mem_use; // 存储占用
size_t column_count; // 列计数
struct Column_List_Node_Struct
{
char *column_title_str; // 列标题
size_t element_count; // 下属内容长度
struct Cell_List_Node // 单元格节点
{
char *content_str; // 内容字符串
Cell_List_Node *p_next_cell; // 列表索引
} *Cell_List_Head, *Cell_List_End; // 表头、表尾
Column_List_Node_Struct *p_next_column; // 下一列
} *Column_List_Head, *Column_List_End; // 列表横向表头、表尾
public:
// 构造函数
CSV_Table();
// 析构函数
~CSV_Table();
/**
* @brief 清理缓存数据并回到空白状态
* @param null
* @return null
*/
void reset();
/**
* @brief 在末尾新增列
* @param title_name_str 列标题
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err append_column(const char *title_name_str);
/**
* @brief 在指定标题的列表后新增列
* @param target_column_title_str 目标列标题
* @param title_name_str 插入的列标题
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err insert_column_after(const char *target_column_title_str, const char *title_name_str);
/**
* @brief 在指定标题的列表后新增列
* @param target_column_position 目标列位置
* @param title_name_str 插入的列标题
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err insert_column_after(size_t target_column_position, const char *title_name_str);
/**
* @brief 在指定标题的列表前新增列
* @param target_column_title_str 目标列标题
* @param title_name_str 插入的列标题
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err insert_column_before(const char *target_column_title_str, const char *title_name_str);
/**
* @brief 在指定标题的列表前新增列
* @param target_column_position 目标列位置
* @param title_name_str 插入的列标题
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err insert_column_before(size_t target_column_position, const char *title_name_str);
/**
* @brief 指定列末尾新增单元格
* @param target_column_title_str 列标题
* @param cell_content_str 单元格内容串
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err append_cell(const char *target_column_title_str, const char *cell_content_str);
/**
* @brief 指定列末尾新增单元格
* @param target_column_position 列位置计数
* @param cell_content_str 单元格内容串
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err append_cell(size_t target_column_position, const char *cell_content_str);
/**
* @brief 在指定标题的列中指定单元格后插入
* @param target_column_title_str 目标列标题
* @param target_cell_position 目标列位置
* @param title_name_str 插入的列标题
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err insert_cell_after(const char *target_column_title_str, size_t target_cell_position, const char *cell_content_str);
/**
* @brief 在指定标题的列中指定单元格后插入
* @param target_column_title_str 目标列标题
* @param target_cell_position 目标列位置
* @param title_name_str 插入的列标题
* @return CSV_Err 错误类型
*/
CSV_Type::CSV_Err insert_cell_after(size_t target_column_position, size_t target_cell_position, const char *cell_content_str);
};
#endif