#pragma once #include "domain/project_model.h" #include #include 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 &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_; };