Loading...
Searching...
No Matches
ScriptableNames.hpp
1#pragma once
2#include <LocalTree/ScriptableProcessComponent.hpp>
3
4#include <QJSValue>
5#include <QObject>
6
7#include <score_plugin_js_export.h>
8
9#include <optional>
10#include <verdigris>
11
12namespace JS
13{
16class SCORE_PLUGIN_JS_EXPORT ScriptableNames : public QObject
17{
18 W_OBJECT(ScriptableNames)
19public:
21 explicit ScriptableNames(
22 const std::shared_ptr<const LocalTree::ScriptableSnapshot>* names,
23 QObject* parent = nullptr);
25
27 QString kind(const QString& ns, const QString& path);
28 W_SLOT(kind)
29 QStringList names(const QString& ns, const QString& path);
30 W_SLOT(names)
31 QString address(const QString& ns, const QString& path);
32 W_SLOT(address)
33
34
35 static QJSValue
36 makeNamespaces(QJSEngine& engine, const QJSValue& device, const QJSValue& names);
37
39 static constexpr auto current = "__scoreScriptable";
41 static QJSValue makeSingleton(QJSEngine& engine, const QString& ns);
42
43private:
44 std::optional<LocalTree::ScriptableSnapshot::Entry>
45 lookup(const QString& ns, const QString& path) const;
46
47 const std::shared_ptr<const LocalTree::ScriptableSnapshot>* m_names{};
48};
49}
Definition ScriptableNames.hpp:17