JSAPIWrapper.hpp
1 #pragma once
2 #include <score/tools/std/StringHash.hpp>
3 
4 #include <ossia/dataflow/dataflow_fwd.hpp>
5 #include <ossia/dataflow/value_port.hpp>
6 #include <ossia/detail/hash_map.hpp>
7 #include <ossia/network/common/path.hpp>
8 
9 #include <QObject>
10 
11 #include <verdigris>
12 namespace ossia
13 {
14 struct execution_state;
15 }
16 namespace JS
17 {
18 class ExecStateWrapper : public QObject
19 {
20  W_OBJECT(ExecStateWrapper)
21 public:
22  ExecStateWrapper(ossia::execution_state& state, QObject* parent)
23  : QObject{parent}
24  , devices{state}
25  {
26  }
27  ~ExecStateWrapper() override;
28 
29  QVariant read(const QString& address);
30  W_SLOT(read);
31  void write(const QString& address, const QVariant& value);
32  W_SLOT(write);
33  void exec(const QString& code) W_SIGNAL(exec, code);
34  void compute(const QString& code, const QString& cb) W_SIGNAL(compute, code, cb);
35 
36  void system(const QString& code) W_SIGNAL(system, code);
37 
38 private:
39  ossia::execution_state& devices;
40 
41  const ossia::destination_t& find_address(const QString&);
42  ossia::hash_map<QString, ossia::destination_t> m_address_cache;
43  ossia::value_port m_port_cache;
44  // TODO share cash across
45 };
46 }
Definition: JSAPIWrapper.hpp:19