#ifndef __DATA_LOADER_HPP__ #define __DATA_LOADER_HPP__ #include #include "DataTable.hpp" namespace jdi { /** * @brief 判断路径是否为应用当前支持的测量文件(按扩展名判断,不访问文件内容)。 * @param [IN] filePath 文件路径。 * @return 支持返回 true。 */ bool IsSupportedSignalFile(const std::wstring& filePath); /** * @brief 供「打开文件」对话框使用的过滤器文本(`GetOpenFileNameW` 的 `lpstrFilter` 格式)。 * @return 双 NUL 结尾的过滤器文本。 */ const wchar_t* SignalFileDialogFilter(); /** * @brief 按扩展名选择加载器并读入一个测量文件(**唯一的文件加载入口**)。 * * 上层(数据模型与界面)只依赖本函数返回的 `LoadedSource`,因此新增格式时 * **只需新增一个加载器并在这里登记**,其余代码完全不用改。 * * 当前支持的格式: * * CSV 文本(`.csv` / `.txt`):支持多个 `time` 列(多时间轴)与各时间轴不等长; * * ASAM MDF v4(`.mf4` / `.mdf`):每个通道组(CG)是一个时间轴。 * * @param [IN] filePath 文件完整路径。 * @param [OUT] source 解析结果(若干时间轴块)。 * @param [OUT] error 失败原因描述(成功时清空)。 * @param [IN] progress 进度回调,可为空。 * @return 加载成功返回 true。 */ bool LoadSignalSource(const std::wstring& filePath, LoadedSource& source, std::wstring& error, const LoadProgress& progress = LoadProgress()); } // namespace jdi #endif // __DATA_LOADER_HPP__