diff options
Diffstat (limited to 'src/crepe/ValueBroker.h')
-rw-r--r-- | src/crepe/ValueBroker.h | 25 |
1 files changed, 20 insertions, 5 deletions
diff --git a/src/crepe/ValueBroker.h b/src/crepe/ValueBroker.h index c3359a1..673b660 100644 --- a/src/crepe/ValueBroker.h +++ b/src/crepe/ValueBroker.h @@ -4,23 +4,38 @@ 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; + typedef std::function<const T &()> getter_t; + private: setter_t setter; getter_t getter; + public: - ValueBroker(const setter_t &, const getter_t &); - ValueBroker(T &); + /** + * \param setter Function that sets the variable + * \param getter Function that retrieves the variable + */ + ValueBroker(const setter_t & setter, const getter_t & getter); }; -} +} // namespace crepe #include "ValueBroker.hpp" - |