#ifndef __CSV_LOADER_HPP__ #define __CSV_LOADER_HPP__ #include #include "DataTable.hpp" namespace jdi { /** * @brief 读取并解析一个 CSV 文本文件。 * * 文件以分块流式方式读取(不把整个文件一次性读入内存), * 因此内存占用只与解析结果相关,不会因文件体积成倍放大,也没有体积上限。 * * **多时间轴**:CSV 允许出现多个时间列(列名形如 `time`)。每个时间列都会开启一个新的 * 时间轴块,它**之后**直到下一个时间列之前的所有列都属于该块。 * 各块之间的行数可以不一致(较短的时间轴在数据区提前结束,其余位置留空)。 * 只出现一个时间列时结果与旧的单时间轴行为完全一致。 * * @param [IN] filePath 数据文件完整路径(宽字符,支持中文路径)。 * @param [OUT] source 解析结果(按时间列切分为若干时间轴块)。 * @param [OUT] error 失败原因描述(成功时清空)。 * @param [IN] progress 解析进度回调,可为空。 * @return 解析成功返回 true,否则返回 false。 */ bool LoadCsvSource(const std::wstring& filePath, LoadedSource& source, std::wstring& error, const LoadProgress& progress = LoadProgress()); } // namespace jdi #endif // __CSV_LOADER_HPP__