26#include <pluginterfaces/base/funknown.h>
27#include <pluginterfaces/base/ipluginbase.h>
28#include <pluginterfaces/vst/ivstaudioprocessor.h>
29#include <pluginterfaces/vst/ivstcomponent.h>
30#include <public.sdk/source/main/pluginfactory.h>
33#define EXPORT_FACTORY SMTG_EXPORT_SYMBOL
83 template<
typename RTProcessorClass,
typename GUIControllerClass>
85 const std::string& iURL,
86 const std::string& iEmail,
87 const std::string& iPluginName,
88 const std::string& iPluginVersion,
89 const std::string& iSubCategories,
90 void *iContext =
nullptr)
99 static_cast<Steinberg::int32
>(Steinberg::Vst::kDistributable));
110 template<
typename RTProcessorClass,
typename GUIControllerClass>
112 const std::string& iURL,
113 const std::string& iEmail,
114 const std::string& iPluginName,
115 const std::string& iPluginVersion,
116 const std::string& iSubCategories,
117 void *iContext =
nullptr)
132 template<
typename RTProcessorClass,
typename GUIControllerClass>
133 static Steinberg::IPluginFactory*
createFactory(
const std::string& iVendor,
134 const std::string& iURL,
135 const std::string& iEmail,
136 const std::string& iPluginName,
137 const std::string& iPluginVersion,
138 const std::string& iSubCategories,
140 int32 iProcessorFlags);
146template<
typename RTClass,
typename GUIClass>
148 std::string
const &iURL,
149 std::string
const &iEmail,
150 std::string
const &iPluginName,
151 std::string
const &iPluginVersion,
152 std::string
const &iSubCategories,
154 int32 iProcessorFlags)
159 Steinberg::PFactoryInfo factoryInfo(iVendor.c_str(),
162 Steinberg::Vst::kDefaultFactoryFlags);
165 auto factory = std::make_unique<Steinberg::CPluginFactory>(factoryInfo);
169 Steinberg::TUID lcid = INLINE_UID_FROM_FUID(RTClass::UUID());
170 Steinberg::PClassInfo2 component{lcid,
171 Steinberg::PClassInfo::kManyInstances,
172 kVstAudioEffectClass,
175 iSubCategories.c_str(),
177 iPluginVersion.c_str(),
180 factory->registerClass(&component, RTClass::createInstance, iContext);
185 Steinberg::TUID lcid = INLINE_UID_FROM_FUID(GUIClass::UUID());
186 Steinberg::PClassInfo2 component{lcid,
187 Steinberg::PClassInfo::kManyInstances,
188 kVstComponentControllerClass,
189 (iPluginName +
"Controller").c_str(),
193 iPluginVersion.c_str(),
196 factory->registerClass(&component, GUIClass::createInstance, iContext);
201 return factory.release();
The purpose of this class is to make it easier and safer to create the plugin factory.
Definition PluginFactory.h:71
static Steinberg::IPluginFactory * GetNonDistributableVST3PluginFactory(const std::string &iVendor, const std::string &iURL, const std::string &iEmail, const std::string &iPluginName, const std::string &iPluginVersion, const std::string &iSubCategories, void *iContext=nullptr)
This flavor of this API lets you create a plugin that is not declared distributable.
Definition PluginFactory.h:111
static Steinberg::IPluginFactory * GetVST3PluginFactory(const std::string &iVendor, const std::string &iURL, const std::string &iEmail, const std::string &iPluginName, const std::string &iPluginVersion, const std::string &iSubCategories, void *iContext=nullptr)
Main method to create the factory for the plugin.
Definition PluginFactory.h:84
static Steinberg::IPluginFactory * createFactory(const std::string &iVendor, const std::string &iURL, const std::string &iEmail, const std::string &iPluginName, const std::string &iPluginVersion, const std::string &iSubCategories, void *iContext, int32 iProcessorFlags)
Definition PluginFactory.h:147