综合平台编程器项目的远程存储
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.
 
 
 
 

47 řádky
1.4 KiB

  1. #pragma once
  2. #include "domain/project_model.h"
  3. #include <string>
  4. #include <vector>
  5. class ProjectService;
  6. // 工程级寄存器注释操作的失败分类
  7. enum class RegisterCommentError
  8. {
  9. None, // 操作成功
  10. InvalidComment, // 地址或注释文本不符合领域规则
  11. NotFound // 删除时没有找到指定地址的注释
  12. };
  13. // 注释编辑结果
  14. struct RegisterCommentResult
  15. {
  16. bool succeeded = false; // 注释编辑是否成功
  17. RegisterCommentError error = RegisterCommentError::None; // 失败分类
  18. std::string message; // 面向用户的结果说明或失败原因
  19. };
  20. // 维护工程里的 M/D 注释,不读取也不修改寄存器实时值
  21. class RegisterCommentService
  22. {
  23. public:
  24. /** 创建寄存器注释服务并绑定工程服务 */
  25. explicit RegisterCommentService(ProjectService &project_service);
  26. /** 返回当前工程中的全部寄存器注释 */
  27. const std::vector<RegisterComment> &comments() const;
  28. // 按地址查找注释
  29. const RegisterComment *findComment(const RegisterAddress &address) const;
  30. // 新建或更新注释;空文本通常表示删除该注释
  31. RegisterCommentResult setComment(
  32. const RegisterAddress &address, const std::string &text);
  33. // 删除指定地址注释
  34. RegisterCommentResult removeComment(const RegisterAddress &address);
  35. private:
  36. /** 提供当前工程读写能力,不由本服务拥有 */
  37. ProjectService &project_service_;
  38. };