HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
observable_cast.hpp
1// Copyright 2020 Pokitec
2// All rights reserved.
3
4#pragma once
5
6#include "observable_unary.hpp"
7
8namespace tt::detail {
9
10template<typename T,typename OT>
11class observable_cast final : public observable_unary<T,OT> {
12public:
13 observable_cast(std::shared_ptr<observable_base<OT>> const &operand) noexcept :
14 observable_unary<T,OT>(operand) {}
15
16 virtual T load() const noexcept override {
17 ttlet lock = std::scoped_lock(observable_unary<T,OT>::mutex);
18 return static_cast<T>(this->operand_cache);
19 }
20
21 virtual bool store(T const &new_value) noexcept override {
22 return this->operand->store(static_cast<OT>(new_value));
23 }
24};
25
26}
Observable abstract base class.
Definition observable_base.hpp:29
Definition observable_cast.hpp:11
virtual T load() const noexcept override
Get the current value.
Definition observable_cast.hpp:16
virtual bool store(T const &new_value) noexcept override
Set the value.
Definition observable_cast.hpp:21
Definition observable_unary.hpp:11