diff options
Diffstat (limited to 'src/crepe/ValueBroker.h')
-rw-r--r-- | src/crepe/ValueBroker.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/crepe/ValueBroker.h b/src/crepe/ValueBroker.h new file mode 100644 index 0000000..88988b4 --- /dev/null +++ b/src/crepe/ValueBroker.h @@ -0,0 +1,41 @@ +#pragma once + +#include <functional> + +namespace crepe { + +/** + * \brief Give reference to value through custom set/get functions + * + * This class can be used to abstract direct access to any arbitrary value + * through a custom get and set function passed to its constructor. Consumers + * of this type may want to wrap it in a \c Proxy so it behaves like a regular + * variable. + * + * \tparam T Type of the underlying variable + */ +template <typename T> +class ValueBroker { +public: + //! Set the value + virtual void set(const T &); + //! Retrieve the value + virtual const T & get(); + + typedef std::function<void(const T & target)> setter_t; + typedef std::function<const T & ()> getter_t; +private: + setter_t setter; + getter_t getter; +public: + /** + * \param setter Function that sets the variable + * \param getter Function that retrieves the variable + */ + ValueBroker(const setter_t & setter, const getter_t & getter); +}; + +} + +#include "ValueBroker.hpp" + |