#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_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_title_str 目标列标题 * @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 column_title_str 列标题 * @param cell_content_str 单元格内容串 * @return CSV_Err 错误类型 */ CSV_Type::CSV_Err append_cell(const char *column_title_str, const char *cell_content_str); /** * @brief 指定列末尾新增单元格 * @param column_position 列位置计数 * @param cell_content_str 单元格内容串 * @return CSV_Err 错误类型 */ CSV_Type::CSV_Err append_cell(size_t column_position, const char *cell_content_str); }; #endif