44struct HostApp final :
public Steinberg::Vst::IHostApplication
46 Steinberg::Vst::PlugInterfaceSupport m_support;
49 Steinberg::tresult PLUGIN_API getName(Steinberg::Vst::String128 name)
override
51 Steinberg::String str(
"ossia score");
52 str.copyTo16(name, 0, 127);
53 return Steinberg::kResultTrue;
57 PLUGIN_API createInstance(Steinberg::TUID cid, Steinberg::TUID _iid,
void** obj)
override
59 using namespace Steinberg;
60 using namespace Steinberg::Vst;
61 FUID classID(FUID::fromTUID(cid));
62 FUID interfaceID(FUID::fromTUID(_iid));
63 if(classID == Vst::IMessage::iid && interfaceID == Vst::IMessage::iid)
65 *obj =
new HostMessage;
69 classID == Vst::IAttributeList::iid && interfaceID == Vst::IAttributeList::iid)
71 *obj = Vst::HostAttributeList::make();
78 Steinberg::tresult PLUGIN_API queryInterface(
const char* _iid,
void** obj)
override
80 using namespace Steinberg;
81 using namespace Steinberg::Vst;
82 QUERY_INTERFACE(_iid, obj, FUnknown::iid, IHostApplication)
83 QUERY_INTERFACE(_iid, obj, IHostApplication::iid, IHostApplication)
85 if(m_support.isPlugInterfaceSupported(_iid) == kResultTrue)
92 Steinberg::uint32 PLUGIN_API addRef()
override {
return 1; }
94 Steinberg::uint32 PLUGIN_API release()
override {
return 1; }
106 void initialize()
override;
108 VST3::Hosting::Module::Ptr getModule(
const std::string& path);
111 void rescan(
const QStringList& paths);
112 void vstChanged() E_SIGNAL(SCORE_PLUGIN_VST3_EXPORT, vstChanged);
114 std::pair<const AvailablePlugin*, const VST3::Hosting::ClassInfo*>
115 classInfo(
const VST3::UID& uid)
const noexcept;
116 QString pathForClass(
const VST3::UID& uid)
const noexcept;
117 std::optional<VST3::UID>
118 uidForPathAndClassName(
const QString& path,
const QString& cls)
const noexcept;
121 ossia::string_map<VST3::Hosting::Module::Ptr> modules;
122 std::vector<AvailablePlugin> vst_infos;
125 void onScanned(
const QString& path,
const QJsonObject& obj);
126 void onScanFailed(
const QString& path,
const QString& reason);
127 void removeEntriesForPath(
const QString& path);
129 void schedulePersist();
131#if QT_CONFIG(process)
132 std::unique_ptr<Media::PluginScanner> m_scanner;
134 QTimer* m_persistTimer{};
Used to access all the application-wide state and structures.
Definition ApplicationContext.hpp:25