#ifndef register_manager_hh_INCLUDED #define register_manager_hh_INCLUDED #include "array_view.hh" #include "utils.hh" #include "unordered_map.hh" #include "string.hh" #include "vector.hh" #include namespace Kakoune { class Context; class Register { public: virtual ~Register() {} virtual Register& operator=(ConstArrayView values) = 0; virtual ConstArrayView values(const Context& context) = 0; }; using RegisterRetriever = std::function (const Context&)>; class RegisterManager : public Singleton { public: Register& operator[](StringView reg); Register& operator[](Codepoint c); void register_dynamic_register(char reg, RegisterRetriever function); protected: UnorderedMap, MemoryDomain::Registers> m_registers; }; } #endif // register_manager_hh_INCLUDED