OSSIA
Open Scenario System for Interactive Application
Loading...
Searching...
No Matches
local_state_execution_policy.hpp
1#pragma once
2#include <ossia/dataflow/execution/execution_policy.hpp>
3#include <ossia/dataflow/typed_value.hpp>
4#include <ossia/dataflow/value_vector.hpp>
5#include <ossia/detail/audio_spin_mutex.hpp>
6#include <ossia/detail/hash_map.hpp>
7
8#include <libremidi/ump.hpp>
9
10#if defined(OSSIA_NO_FAST_CONTAINERS)
11#include <ossia/dataflow/audio_port.hpp>
12#endif
13
14namespace ossia
15{
16
17struct OSSIA_TEST_EXPORT local_state_execution_policy : execution_state_policy
18{
19 local_state_execution_policy();
20 virtual ~local_state_execution_policy();
21
22 bool find_and_copy(net::parameter_base& addr, inlet& in) override;
23 void clear_local_state() override;
24
25 void commit_common();
26
27 bool in_local_scope(net::parameter_base& other) const override;
28
29 void insert(ossia::net::parameter_base& dest, const ossia::value_port& v) override;
30 void insert(ossia::audio_parameter& dest, const audio_port& v) override;
31 void insert(ossia::net::midi::midi_parameter& dest, const midi_port& v) override;
32
33 mutable ossia::audio_spin_mutex mutex;
34 // private:// disabled due to tests, but for some reason can't make friend
35 // work
36 // using value_state_impl = ossia::flat_multimap<int64_t,
37 // std::pair<ossia::value, int>>;
38
39 TS_GUARDED_BY(mutex)
40 ossia::hash_map<ossia::net::parameter_base*, value_vector<std::pair<typed_value, int>>>
41 m_valueState;
42
43 TS_GUARDED_BY(mutex)
44 ossia::hash_map<ossia::audio_parameter*, audio_port> m_audioState;
45
46 TS_GUARDED_BY(mutex)
47 ossia::hash_map<ossia::net::parameter_base*, value_vector<libremidi::ump>> m_midiState;
48
49 TS_GUARDED_BY(mutex)
50 int m_msgIndex{};
51};
52}
The parameter_base class.
Definition ossia/network/base/parameter.hpp:48
Definition git_info.h:7