3#include <ossia/dataflow/dataflow_fwd.hpp>
4#include <ossia/dataflow/value_port.hpp>
5#include <ossia/detail/hash_map.hpp>
7#include <ossia/network/common/path.hpp>
9#include <ossia-qt/js_utilities.hpp>
30using qml_device_cache = ossia::small_vector<ossia::net::device_base*, 4>;
31using qml_device_push_function
34class OSSIA_EXPORT qml_engine_functions :
public QObject
36 W_OBJECT(qml_engine_functions)
39 const qml_device_cache& state, qml_device_push_function push, QQmlEngine& engine, QObject* parent)
41 , on_push{std::move(push)}
47 ~qml_engine_functions()
override;
49 QVariant read(
const QString& address);
51 void write(
const QString& address,
const QVariant& value);
53 void exec(
const QString& code) E_SIGNAL(OSSIA_EXPORT, exec, code);
54 void compute(
const QString& code,
const QString& cb)
55 E_SIGNAL(OSSIA_EXPORT, compute, code, cb);
56 void system(
const QString& code) E_SIGNAL(OSSIA_EXPORT, system, code);
59 QVariant asArray(QVariant)
const noexcept;
61 QVariant asColor(QVariant)
const noexcept;
63 QVariant asVec2(QVariant)
const noexcept;
65 QVariant asVec3(QVariant)
const noexcept;
67 QVariant asVec4(QVariant)
const noexcept;
70 QJSValue toValue(QJSValue)
const noexcept;
74 find_node(qml_device_cache& devices, std::string_view name);
94 void setDevices(qml_device_cache devices);
104 using device_span = std::span<ossia::net::device_base* const>;
108 struct resolved_address
110 const ossia::destination_t& destination;
117 resolved_address find_address(
const QString&);
119 qml_device_push_function on_push;
120 QQmlEngine& m_engine;
122 ossia::hash_map<QString, ossia::destination_t> m_address_cache;
123 ossia::value_port m_port_cache;
128 std::recursive_mutex m_mutex;
129 qml_device_cache m_devices;
131 bool m_enabled{
true};
134class OSSIA_EXPORT qml_device_engine_functions :
public qml_engine_functions
136 W_OBJECT(qml_device_engine_functions)
139 using qml_engine_functions::qml_engine_functions;
140 ~qml_device_engine_functions();
144 void addNode(QString address, QString type);
147 void removeNode(QString address, QString type);
Root of a device tree.
Definition ossia/network/base/device.hpp:58
The node_base class.
Definition node.hpp:48
The parameter_base class.
Definition ossia/network/base/parameter.hpp:48
Definition qml_device.cpp:43