|
- #pragma once
-
- #include "domain/project_model.h"
-
- #include <string>
- #include <vector>
-
- class ProjectService;
-
- // 工程级寄存器注释操作的失败分类
- enum class RegisterCommentError
- {
- None, // 操作成功
- InvalidComment, // 地址或注释文本不符合领域规则
- NotFound // 删除时没有找到指定地址的注释
- };
-
- // 注释编辑结果
- struct RegisterCommentResult
- {
- bool succeeded = false; // 注释编辑是否成功
- RegisterCommentError error = RegisterCommentError::None; // 失败分类
- std::string message; // 面向用户的结果说明或失败原因
- };
-
- // 维护工程里的 M/D 注释,不读取也不修改寄存器实时值
- class RegisterCommentService
- {
- public:
- /** 创建寄存器注释服务并绑定工程服务 */
- explicit RegisterCommentService(ProjectService &project_service);
-
- /** 返回当前工程中的全部寄存器注释 */
- const std::vector<RegisterComment> &comments() const;
- // 按地址查找注释
- const RegisterComment *findComment(const RegisterAddress &address) const;
- // 新建或更新注释;空文本通常表示删除该注释
- RegisterCommentResult setComment(
- const RegisterAddress &address, const std::string &text);
- // 删除指定地址注释
- RegisterCommentResult removeComment(const RegisterAddress &address);
-
- private:
- /** 提供当前工程读写能力,不由本服务拥有 */
- ProjectService &project_service_;
- };
|