2 #include <Process/Dataflow/Cable.hpp>
3 #include <Process/Dataflow/PortForward.hpp>
4 #include <Process/ExecutionContext.hpp>
6 #include <score/tools/std/HashMap.hpp>
8 #include <ossia/detail/flat_map.hpp>
9 #include <ossia/detail/small_vector.hpp>
11 #include <QMetaObject>
13 #include <nano_observer.hpp>
29 struct AddressAccessor;
37 ,
public Nano::Observer
48 const std::shared_ptr<ossia::graph_node>& node);
51 const std::shared_ptr<ossia::graph_node>& node);
52 void unregister_node_soft(
54 const std::shared_ptr<ossia::graph_node>& node,
Transaction& vec);
61 const std::shared_ptr<ossia::graph_node>& node);
64 const std::shared_ptr<ossia::graph_node>& node);
66 void unregister_inlet(
67 const Process::Inlet& inlet,
const std::shared_ptr<ossia::graph_node>& node);
68 void unregister_outlet(
69 const Process::Outlet& outlet,
const std::shared_ptr<ossia::graph_node>& node);
74 const std::shared_ptr<ossia::graph_node>& node,
Transaction& vec);
77 const std::shared_ptr<ossia::graph_node>& node,
Transaction& vec);
87 const std::shared_ptr<ossia::graph_node>& node,
Transaction& vec);
90 const std::shared_ptr<ossia::graph_node>& node,
Transaction& vec);
92 void unregister_inlet(
93 const Process::Inlet& inlet,
const std::shared_ptr<ossia::graph_node>& node,
95 void unregister_outlet(
96 const Process::Outlet& outlet,
const std::shared_ptr<ossia::graph_node>& node,
100 const std::shared_ptr<ossia::time_process>& process,
101 const std::shared_ptr<ossia::graph_node>& node,
Transaction& commands);
107 score::hash_map<Process::Outlet*, std::pair<ossia::node_ptr, ossia::outlet_ptr>>
109 score::hash_map<Process::Inlet*, std::pair<ossia::node_ptr, ossia::inlet_ptr>> inlets;
110 score::hash_map<Id<Process::Cable>, std::shared_ptr<ossia::graph_edge>> m_cables;
114 ossia::flat_map<Id<Process::Port>, QMetaObject::Connection> inlets;
115 ossia::flat_map<Id<Process::Port>, QMetaObject::Connection> outlets;
116 void clear()
const noexcept
118 for(
auto& con : inlets)
119 QObject::disconnect(con.second);
120 for(
auto& con : outlets)
121 QObject::disconnect(con.second);
127 score::hash_map<const ossia::graph_node*, const Process::ProcessModel*> proc_map;
130 template <
typename Impl>
131 void register_node_impl(
133 const std::shared_ptr<ossia::graph_node>& node, Impl&&);
135 template <
typename Impl>
136 void register_inlet_impl(
138 const std::shared_ptr<ossia::graph_node>& node, Impl&&);
140 template <
typename Impl>
141 void register_outlet_impl(
143 const std::shared_ptr<ossia::graph_node>& node, Impl&&);
The Process class.
Definition: score-lib-process/Process/Process.hpp:61
Components used for the execution of a score.
Definition: ProcessComponent.cpp:12
Base classes and tools to implement processes and layers.
Definition: JSONVisitor.hpp:1324
Utilities for OSSIA data structures.
Definition: DeviceInterface.hpp:33
Definition: ExecutionContext.hpp:76
Definition: ExecutionSetup.hpp:113
Definition: ExecutionSetup.hpp:38
Definition: ExecutionTransaction.hpp:18
Definition: PortForward.hpp:23
Definition: PortForward.hpp:27
Definition: Address.hpp:108