diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2016-03-31 09:17:02 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2016-03-31 09:17:02 +0100 |
| commit | 8badcdc0d569718b93761dfa4a271909d42f82f1 (patch) | |
| tree | ed7bcb26c681d54916bba9de664de38a2e32facf /src/register_manager.hh | |
| parent | 9b4bd611ef6990b2b4a83c6b593b7791b2bd4e1a (diff) | |
Make DynamicRegister statically dispatch to its function
Diffstat (limited to 'src/register_manager.hh')
| -rw-r--r-- | src/register_manager.hh | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/src/register_manager.hh b/src/register_manager.hh index 355bec1f..84bf0a60 100644 --- a/src/register_manager.hh +++ b/src/register_manager.hh @@ -8,8 +8,6 @@ #include "string.hh" #include "vector.hh" -#include <functional> - namespace Kakoune { @@ -46,14 +44,13 @@ protected: Vector<String, MemoryDomain::Registers> m_content; }; -using RegisterRetriever = std::function<Vector<String, MemoryDomain::Registers> (const Context&)>; - // Dynamic value register, use it's RegisterRetriever // to get it's value when needed. +template<typename Func> class DynamicRegister : public StaticRegister { public: - DynamicRegister(RegisterRetriever function) + DynamicRegister(Func function) : m_function(std::move(function)) {} Register& operator=(ConstArrayView<String> values) override @@ -68,9 +65,15 @@ public: } private: - RegisterRetriever m_function; + Func m_function; }; +template<typename Func> +std::unique_ptr<Register> make_dyn_reg(Func func) +{ + return make_unique<DynamicRegister<Func>>(std::move(func)); +} + class NullRegister : public Register { public: |
