20class PluginFactory :
public QObject
27 PluginFactory () =
delete;
29 PluginRegistry ®istry,
30 PortRegistry &port_registry,
32 QObject * parent =
nullptr)
33 : QObject (parent), plugin_registry_ (registry),
34 port_registry_ (port_registry), settings_manager_ (settings_mgr)
38 static PluginFactory * get_instance ();
40 template <
typename PluginT>
class Builder
42 friend class PluginFactory;
45 explicit Builder (PluginRegistry ®istry, PortRegistry &port_registry)
46 : registry_ (registry), port_registry_ (port_registry)
52 settings_manager_ = settings_manager;
56 Builder &with_setting (
const PluginConfiguration &setting)
65 auto obj_ref = [&] () {
66 return registry_.create_object<PluginT> (port_registry_, *setting_);
75 PluginRegistry ®istry_;
76 PortRegistry &port_registry_;
81 template <
typename PluginT>
auto get_builder ()
const
85 .with_settings_manager (settings_manager_);
91 create_plugin_from_setting (
const PluginConfiguration &setting)
const
94 get_builder<CarlaNativePlugin> ().with_setting (setting).build ();
98 template <
typename PluginT>
99 auto clone_new_object_identity (
const PluginT &other)
const
101 return plugin_registry_.clone_object (other, plugin_registry_);
104 template <
typename PluginT>
105 auto clone_object_snapshot (
const PluginT &other, QObject &owner)
const
109 new_obj = utils::clone_qobject (
110 other, &owner, utils::ObjectCloneType::Snapshot, plugin_registry_);
115 PluginRegistry &plugin_registry_;
116 PortRegistry &port_registry_;
117 gui::SettingsManager &settings_manager_;