#pragma once #include "register_repository.h" // 根据当前运行模式把寄存器访问转发给虚拟仓库或 PLC 缓存仓库 class ActiveRegisterRepository final : public RegisterRepository { public: explicit ActiveRegisterRepository(RegisterRepository &initial_repository); // 切换活动仓库;运行模式服务负责保证切换时机和生命周期 void use(RegisterRepository &repository); BitReadResult readBit(const RegisterAddress &address) const override; RegisterWriteResult writeBit(const RegisterAddress &address, bool value) override; WordReadResult readWord(const RegisterAddress &address) const override; RegisterWriteResult writeWord( const RegisterAddress &address, std::int16_t value) override; WordPairReadResult readWordPair(const RegisterAddress &address) const override; RegisterWriteResult writeWordPair( const RegisterAddress &address, const std::array &values) override; private: RegisterRepository *repository_ = nullptr; };