2#include <ossia/detail/config.hpp>
6#include <ossia/detail/optional.hpp>
7#include <ossia/detail/std_fwd.hpp>
8#include <ossia/network/base/value_callback.hpp>
9#include <ossia/network/common/parameter_properties.hpp>
10#include <ossia/network/dataspace/dataspace_fwd.hpp>
11#include <ossia/network/domain/domain_fwd.hpp>
14#include <nano_signal_slot.hpp>
20OSSIA_STD_BEGIN_NAMESPACE
23OSSIA_STD_END_NAMESPACE
47class OSSIA_EXPORT parameter_base :
public callback_container<value_callback>
54 explicit parameter_base(
const parameter_base&) =
delete;
55 explicit parameter_base(parameter_base&&) =
delete;
56 parameter_base& operator=(
const parameter_base&) =
delete;
57 parameter_base& operator=(parameter_base&&) =
delete;
59 using callback_index = callback_container<value_callback>::iterator;
60 virtual ~parameter_base();
116 set_value_quiet(std::move(v));
128 std::vector<ossia::value>
value(
const std::vector<ossia::destination_index>&)
const;
137 return set_value(std::move(v));
140 std::optional<ossia::value> get_default_value() const noexcept;
141 void set_default_value(const
ossia::
value& v);
143 virtual
val_type get_value_type() const noexcept = 0;
144 virtual parameter_base& set_value_type(
val_type) = 0;
146 virtual
access_mode get_access() const noexcept = 0;
147 virtual parameter_base& set_access(
access_mode) = 0;
149 virtual const
domain& get_domain() const noexcept = 0;
150 virtual parameter_base& set_domain(const
domain&) = 0;
157 virtual
bool filter_value(const
ossia::
value& val) const noexcept
159 return m_disabled || m_muted;
166 bool get_disabled() const noexcept;
170 bool get_muted() const noexcept;
173 bool get_critical() const noexcept;
188struct OSSIA_EXPORT parameter_alphabetical_sort
191 const ossia::net::parameter_base* lhs,
192 const ossia::net::parameter_base* rhs)
const noexcept;
The node_base class.
Definition node.hpp:48
The parameter_base class.
Definition ossia/network/base/parameter.hpp:48
ossia::value fetch_value()
Pulls and clone the value.
Definition ossia/network/base/parameter.cpp:61
virtual ossia::value value() const =0
Clone the current value without any network request.
virtual ossia::value set_value_quiet(const ossia::value &v)
Reimplement to provide a way that does not call the observers.
Definition ossia/network/base/parameter.hpp:134
virtual void request_value()
request_value
Definition ossia/network/base/parameter.cpp:29
virtual parameter_base & push_value()=0
const ossia::unit_t & get_unit() const noexcept
by default there is no filter
Definition ossia/network/base/parameter.hpp:162
virtual std::future< void > pull_value_async()
pull_value_async
Definition ossia/network/base/parameter.cpp:19
virtual parameter_base & push_value(const ossia::value &)=0
Sets the value locally, and sends it to the network.
virtual void pull_value()=0
Value getters ///.
The protocol_base class.
Definition protocol.hpp:40
The value class.
Definition value.hpp:173
val_type
Enum to represent the types that a value can take.
Definition parameter_properties.hpp:16
repetition_filter
If enabled, sending twice the same value will only send it once by network.
Definition parameter_properties.hpp:70
bounding_mode
Address behaviors at crossing domain boundaries.
Definition parameter_properties.hpp:56
access_mode
Address behaviors at crossing domain boundaries time.
Definition parameter_properties.hpp:46
ossia::small_vector< int32_t, 2 > destination_index
Definition destination_index.hpp:40
parameter_type
Possible types of parameters / ports.
Definition parameter_properties.hpp:34
OSSIA_EXPORT void push_value(const ossia::destination &addr, const ossia::value_with_unit &)
Send a value to a given destination.
Definition ossia/network/base/parameter.cpp:151
domain A domain of values
Definition domain_base.hpp:23
Full information about a parameter.
Definition parameter_data.hpp:61
Units give a semantic meaning to the value of a parameter.
Definition dataspace.hpp:24