Add explicit virtual default destructors

We need to silence the warning about this because Steinberg doesn't
declare their base class destructors as virtual (because of Windows ABI
compatibility issues). But we can still do it inside of yabridge to have
at least a bit more safety.
This commit is contained in:
Robbert van der Helm
2022-05-18 18:44:15 +02:00
parent 3e73d60b78
commit 8c10edf861
53 changed files with 93 additions and 23 deletions
-2
View File
@@ -16,8 +16,6 @@
#include "vst2.h" #include "vst2.h"
DefaultDataConverter::~DefaultDataConverter() noexcept {}
Vst2Event::Payload DefaultDataConverter::read_data(const int /*opcode*/, Vst2Event::Payload DefaultDataConverter::read_data(const int /*opcode*/,
const int /*index*/, const int /*index*/,
const intptr_t /*value*/, const intptr_t /*value*/,
+1 -1
View File
@@ -31,7 +31,7 @@
*/ */
class DefaultDataConverter { class DefaultDataConverter {
public: public:
virtual ~DefaultDataConverter() noexcept; virtual ~DefaultDataConverter() noexcept = default;
/** /**
* Read data from the `data` void pointer into a an `Vst2Event::Payload` * Read data from the `data` void pointer into a an `Vst2Event::Payload`
@@ -38,7 +38,7 @@ class YaAttributeList : public Steinberg::Vst::IAttributeList {
*/ */
YaAttributeList() noexcept; YaAttributeList() noexcept;
~YaAttributeList() noexcept; virtual ~YaAttributeList() noexcept;
DECLARE_FUNKNOWN_METHODS DECLARE_FUNKNOWN_METHODS
@@ -59,6 +59,8 @@ class YaComponentHandler2 : public Steinberg::Vst::IComponentHandler2 {
*/ */
YaComponentHandler2(ConstructArgs&& args) noexcept; YaComponentHandler2(ConstructArgs&& args) noexcept;
virtual ~YaComponentHandler2() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -61,6 +61,8 @@ class YaComponentHandler3 : public Steinberg::Vst::IComponentHandler3 {
*/ */
YaComponentHandler3(ConstructArgs&& args) noexcept; YaComponentHandler3(ConstructArgs&& args) noexcept;
virtual ~YaComponentHandler3() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -62,6 +62,8 @@ class YaComponentHandlerBusActivation
*/ */
YaComponentHandlerBusActivation(ConstructArgs&& args) noexcept; YaComponentHandlerBusActivation(ConstructArgs&& args) noexcept;
virtual ~YaComponentHandlerBusActivation() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -59,6 +59,8 @@ class YaComponentHandler : public Steinberg::Vst::IComponentHandler {
*/ */
YaComponentHandler(ConstructArgs&& args) noexcept; YaComponentHandler(ConstructArgs&& args) noexcept;
virtual ~YaComponentHandler() noexcept = default;
inline bool supported() const noexcept { return arguments.supported; } inline bool supported() const noexcept { return arguments.supported; }
/** /**
@@ -60,6 +60,8 @@ class YaProgress : public Steinberg::Vst::IProgress {
*/ */
YaProgress(ConstructArgs&& args) noexcept; YaProgress(ConstructArgs&& args) noexcept;
virtual ~YaProgress() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -59,6 +59,8 @@ class YaUnitHandler2 : public Steinberg::Vst::IUnitHandler2 {
*/ */
YaUnitHandler2(ConstructArgs&& args) noexcept; YaUnitHandler2(ConstructArgs&& args) noexcept;
virtual ~YaUnitHandler2() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -59,6 +59,8 @@ class YaUnitHandler : public Steinberg::Vst::IUnitHandler {
*/ */
YaUnitHandler(ConstructArgs&& args) noexcept; YaUnitHandler(ConstructArgs&& args) noexcept;
virtual ~YaUnitHandler() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -67,7 +67,7 @@ class YaContextMenuTarget : public Steinberg::Vst::IContextMenuTarget {
*/ */
YaContextMenuTarget(ConstructArgs&& args) noexcept; YaContextMenuTarget(ConstructArgs&& args) noexcept;
~YaContextMenuTarget() noexcept; virtual ~YaContextMenuTarget() noexcept;
DECLARE_FUNKNOWN_METHODS DECLARE_FUNKNOWN_METHODS
@@ -73,6 +73,8 @@ class YaContextMenu : public Steinberg::Vst::IContextMenu {
*/ */
YaContextMenu(ConstructArgs&& args) noexcept; YaContextMenu(ConstructArgs&& args) noexcept;
virtual ~YaContextMenu() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
// Since we pass along a list of initial items, we don't need to proxy this // Since we pass along a list of initial items, we don't need to proxy this
+1 -1
View File
@@ -239,7 +239,7 @@ class YaEventList : public Steinberg::Vst::IEventList {
*/ */
void repopulate(Steinberg::Vst::IEventList& event_list); void repopulate(Steinberg::Vst::IEventList& event_list);
~YaEventList() noexcept; virtual ~YaEventList() noexcept;
DECLARE_FUNKNOWN_METHODS DECLARE_FUNKNOWN_METHODS
@@ -63,6 +63,8 @@ class YaHostApplication : public Steinberg::Vst::IHostApplication {
*/ */
YaHostApplication(ConstructArgs&& args) noexcept; YaHostApplication(ConstructArgs&& args) noexcept;
virtual ~YaHostApplication() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -60,6 +60,8 @@ class YaPlugInterfaceSupport : public Steinberg::Vst::IPlugInterfaceSupport {
*/ */
YaPlugInterfaceSupport(ConstructArgs&& args) noexcept; YaPlugInterfaceSupport(ConstructArgs&& args) noexcept;
virtual ~YaPlugInterfaceSupport() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
+2 -2
View File
@@ -54,7 +54,7 @@ class YaMessagePtr : public Steinberg::Vst::IMessage {
*/ */
explicit YaMessagePtr(IMessage& message); explicit YaMessagePtr(IMessage& message);
~YaMessagePtr() noexcept; virtual ~YaMessagePtr() noexcept;
DECLARE_FUNKNOWN_METHODS DECLARE_FUNKNOWN_METHODS
@@ -124,7 +124,7 @@ class YaMessage : public Steinberg::Vst::IMessage {
*/ */
YaMessage() noexcept; YaMessage() noexcept;
~YaMessage() noexcept; virtual ~YaMessage() noexcept;
DECLARE_FUNKNOWN_METHODS DECLARE_FUNKNOWN_METHODS
@@ -66,10 +66,11 @@ int32 PLUGIN_API YaParamValueQueue::getPointCount() {
return static_cast<int32>(queue_.size()); return static_cast<int32>(queue_.size());
} }
tresult PLUGIN_API tresult PLUGIN_API YaParamValueQueue::getPoint(
YaParamValueQueue::getPoint(int32 index, int32 index,
int32& sampleOffset /*out*/, // NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
Steinberg::Vst::ParamValue& value /*out*/) { int32& sampleOffset /*out*/,
Steinberg::Vst::ParamValue& value /*out*/) {
if (index < static_cast<int32>(queue_.size())) { if (index < static_cast<int32>(queue_.size())) {
sampleOffset = queue_[index].first; sampleOffset = queue_[index].first;
value = queue_[index].second; value = queue_[index].second;
@@ -39,6 +39,8 @@ class alignas(16) YaParamValueQueue : public Steinberg::Vst::IParamValueQueue {
*/ */
YaParamValueQueue() noexcept; YaParamValueQueue() noexcept;
virtual ~YaParamValueQueue() noexcept;
/** /**
* Clear this queue in place so that it can be used to write parameter data * Clear this queue in place so that it can be used to write parameter data
* to. Used in `YaParameterChanges::addParameterData`. * to. Used in `YaParameterChanges::addParameterData`.
@@ -50,8 +52,6 @@ class alignas(16) YaParamValueQueue : public Steinberg::Vst::IParamValueQueue {
*/ */
void repopulate(Steinberg::Vst::IParamValueQueue& original_queue); void repopulate(Steinberg::Vst::IParamValueQueue& original_queue);
~YaParamValueQueue() noexcept;
DECLARE_FUNKNOWN_METHODS DECLARE_FUNKNOWN_METHODS
/** /**
@@ -39,7 +39,7 @@ class YaParameterChanges : public Steinberg::Vst::IParameterChanges {
*/ */
YaParameterChanges() noexcept; YaParameterChanges() noexcept;
~YaParameterChanges() noexcept; virtual ~YaParameterChanges() noexcept;
/** /**
* Remove all parameter changes. Used when a null pointer gets passed to the * Remove all parameter changes. Used when a null pointer gets passed to the
@@ -59,6 +59,8 @@ class YaPlugFrame : public Steinberg::IPlugFrame {
*/ */
YaPlugFrame(ConstructArgs&& args) noexcept; YaPlugFrame(ConstructArgs&& args) noexcept;
virtual ~YaPlugFrame() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -59,6 +59,8 @@ class YaParameterFinder : public Steinberg::Vst::IParameterFinder {
*/ */
YaParameterFinder(ConstructArgs&& args) noexcept; YaParameterFinder(ConstructArgs&& args) noexcept;
virtual ~YaParameterFinder() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -60,6 +60,8 @@ class YaPlugViewContentScaleSupport
*/ */
YaPlugViewContentScaleSupport(ConstructArgs&& args) noexcept; YaPlugViewContentScaleSupport(ConstructArgs&& args) noexcept;
virtual ~YaPlugViewContentScaleSupport() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -61,6 +61,8 @@ class YaPlugView : public Steinberg::IPlugView {
*/ */
YaPlugView(ConstructArgs&& args) noexcept; YaPlugView(ConstructArgs&& args) noexcept;
virtual ~YaPlugView() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -124,6 +124,8 @@ class YaPluginFactory3 : public Steinberg::IPluginFactory3 {
*/ */
YaPluginFactory3(ConstructArgs&& args) noexcept; YaPluginFactory3(ConstructArgs&& args) noexcept;
virtual ~YaPluginFactory3() noexcept = default;
inline bool supports_plugin_factory() const noexcept { inline bool supports_plugin_factory() const noexcept {
return arguments_.supports_plugin_factory; return arguments_.supports_plugin_factory;
} }
@@ -60,6 +60,8 @@ class YaAudioPresentationLatency
*/ */
YaAudioPresentationLatency(ConstructArgs&& args) noexcept; YaAudioPresentationLatency(ConstructArgs&& args) noexcept;
virtual ~YaAudioPresentationLatency() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -62,6 +62,8 @@ class YaAudioProcessor : public Steinberg::Vst::IAudioProcessor {
*/ */
YaAudioProcessor(ConstructArgs&& args) noexcept; YaAudioProcessor(ConstructArgs&& args) noexcept;
virtual ~YaAudioProcessor() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -62,6 +62,8 @@ class YaAutomationState : public Steinberg::Vst::IAutomationState {
*/ */
YaAutomationState(ConstructArgs&& args) noexcept; YaAutomationState(ConstructArgs&& args) noexcept;
virtual ~YaAutomationState() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -63,6 +63,8 @@ class YaComponent : public Steinberg::Vst::IComponent {
*/ */
YaComponent(ConstructArgs&& args) noexcept; YaComponent(ConstructArgs&& args) noexcept;
virtual ~YaComponent() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -107,6 +107,8 @@ class YaConnectionPoint : public Steinberg::Vst::IConnectionPoint {
*/ */
YaConnectionPoint(ConstructArgs&& args) noexcept; YaConnectionPoint(ConstructArgs&& args) noexcept;
virtual ~YaConnectionPoint() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -59,6 +59,8 @@ class YaEditController2 : public Steinberg::Vst::IEditController2 {
*/ */
YaEditController2(ConstructArgs&& args) noexcept; YaEditController2(ConstructArgs&& args) noexcept;
virtual ~YaEditController2() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -60,6 +60,8 @@ class YaEditControllerHostEditing
*/ */
YaEditControllerHostEditing(ConstructArgs&& args) noexcept; YaEditControllerHostEditing(ConstructArgs&& args) noexcept;
virtual ~YaEditControllerHostEditing() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -63,6 +63,8 @@ class YaEditController : public Steinberg::Vst::IEditController {
*/ */
YaEditController(ConstructArgs&& args) noexcept; YaEditController(ConstructArgs&& args) noexcept;
virtual ~YaEditController() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -60,6 +60,8 @@ class YaInfoListener : public Steinberg::Vst::ChannelContext::IInfoListener {
*/ */
YaInfoListener(ConstructArgs&& args) noexcept; YaInfoListener(ConstructArgs&& args) noexcept;
virtual ~YaInfoListener() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -59,6 +59,8 @@ class YaKeyswitchController : public Steinberg::Vst::IKeyswitchController {
*/ */
YaKeyswitchController(ConstructArgs&& args) noexcept; YaKeyswitchController(ConstructArgs&& args) noexcept;
virtual ~YaKeyswitchController() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -59,6 +59,8 @@ class YaMidiLearn : public Steinberg::Vst::IMidiLearn {
*/ */
YaMidiLearn(ConstructArgs&& args) noexcept; YaMidiLearn(ConstructArgs&& args) noexcept;
virtual ~YaMidiLearn() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -59,6 +59,8 @@ class YaMidiMapping : public Steinberg::Vst::IMidiMapping {
*/ */
YaMidiMapping(ConstructArgs&& args) noexcept; YaMidiMapping(ConstructArgs&& args) noexcept;
virtual ~YaMidiMapping() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -63,6 +63,8 @@ class YaNoteExpressionController
*/ */
YaNoteExpressionController(ConstructArgs&& args) noexcept; YaNoteExpressionController(ConstructArgs&& args) noexcept;
virtual ~YaNoteExpressionController() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -62,6 +62,8 @@ class YaNoteExpressionPhysicalUIMapping
*/ */
YaNoteExpressionPhysicalUIMapping(ConstructArgs&& args) noexcept; YaNoteExpressionPhysicalUIMapping(ConstructArgs&& args) noexcept;
virtual ~YaNoteExpressionPhysicalUIMapping() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -61,6 +61,8 @@ class YaParameterFunctionName : public Steinberg::Vst::IParameterFunctionName {
*/ */
YaParameterFunctionName(ConstructArgs&& args) noexcept; YaParameterFunctionName(ConstructArgs&& args) noexcept;
virtual ~YaParameterFunctionName() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -61,6 +61,8 @@ class YaPluginBase : public Steinberg::IPluginBase {
*/ */
YaPluginBase(ConstructArgs&& args) noexcept; YaPluginBase(ConstructArgs&& args) noexcept;
virtual ~YaPluginBase() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
// The request and response for `IPluginBase::initialize()` is defined // The request and response for `IPluginBase::initialize()` is defined
@@ -60,6 +60,8 @@ class YaPrefetchableSupport : public Steinberg::Vst::IPrefetchableSupport {
*/ */
YaPrefetchableSupport(ConstructArgs&& args) noexcept; YaPrefetchableSupport(ConstructArgs&& args) noexcept;
virtual ~YaPrefetchableSupport() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -62,6 +62,8 @@ class YaProcessContextRequirements
*/ */
YaProcessContextRequirements(ConstructArgs&& args) noexcept; YaProcessContextRequirements(ConstructArgs&& args) noexcept;
virtual ~YaProcessContextRequirements() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -60,6 +60,8 @@ class YaProgramListData : public Steinberg::Vst::IProgramListData {
*/ */
YaProgramListData(ConstructArgs&& args) noexcept; YaProgramListData(ConstructArgs&& args) noexcept;
virtual ~YaProgramListData() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -60,6 +60,8 @@ class YaUnitData : public Steinberg::Vst::IUnitData {
*/ */
YaUnitData(ConstructArgs&& args) noexcept; YaUnitData(ConstructArgs&& args) noexcept;
virtual ~YaUnitData() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -60,6 +60,8 @@ class YaUnitInfo : public Steinberg::Vst::IUnitInfo {
*/ */
YaUnitInfo(ConstructArgs&& args) noexcept; YaUnitInfo(ConstructArgs&& args) noexcept;
virtual ~YaUnitInfo() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
@@ -67,6 +67,8 @@ class YaXmlRepresentationController
*/ */
YaXmlRepresentationController(ConstructArgs&& args) noexcept; YaXmlRepresentationController(ConstructArgs&& args) noexcept;
virtual ~YaXmlRepresentationController() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; } inline bool supported() const noexcept { return arguments_.supported; }
/** /**
+1 -1
View File
@@ -129,7 +129,7 @@ class PluginBridge {
io_context_.run(); io_context_.run();
}) {} }) {}
virtual ~PluginBridge() noexcept {}; virtual ~PluginBridge() noexcept = default;
protected: protected:
/** /**
@@ -49,7 +49,7 @@ class RunLoopTasks : public Steinberg::Linux::IEventHandler {
/** /**
* Unregister the event handler and close the file descriptor on cleanup. * Unregister the event handler and close the file descriptor on cleanup.
*/ */
~RunLoopTasks(); virtual ~RunLoopTasks();
DECLARE_FUNKNOWN_METHODS DECLARE_FUNKNOWN_METHODS
@@ -390,6 +390,7 @@ Vst3PluginProxyImpl::getBusInfo(Steinberg::Vst::MediaType type,
} }
tresult PLUGIN_API Vst3PluginProxyImpl::getRoutingInfo( tresult PLUGIN_API Vst3PluginProxyImpl::getRoutingInfo(
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
Steinberg::Vst::RoutingInfo& inInfo, Steinberg::Vst::RoutingInfo& inInfo,
Steinberg::Vst::RoutingInfo& outInfo /*out*/) { Steinberg::Vst::RoutingInfo& outInfo /*out*/) {
const GetRoutingInfoResponse response = const GetRoutingInfoResponse response =
-2
View File
@@ -25,8 +25,6 @@ namespace fs = ghc::filesystem;
HostProcess::HostProcess(asio::io_context& io_context, Sockets& sockets) HostProcess::HostProcess(asio::io_context& io_context, Sockets& sockets)
: sockets_(sockets), stdout_pipe_(io_context), stderr_pipe_(io_context) {} : sockets_(sockets), stdout_pipe_(io_context), stderr_pipe_(io_context) {}
HostProcess::~HostProcess() noexcept {}
Process::Handle HostProcess::launch_host( Process::Handle HostProcess::launch_host(
const ghc::filesystem::path& host_path, const ghc::filesystem::path& host_path,
std::initializer_list<std::string> args, std::initializer_list<std::string> args,
+1 -1
View File
@@ -37,7 +37,7 @@
*/ */
class HostProcess { class HostProcess {
public: public:
virtual ~HostProcess() noexcept; virtual ~HostProcess() noexcept = default;
/** /**
* Return the full path to the host application in use. The host application * Return the full path to the host application in use. The host application
-2
View File
@@ -57,8 +57,6 @@ HostBridge::HostBridge(MainContext& main_context,
parent_pid_(parent_pid), parent_pid_(parent_pid),
watchdog_guard_(main_context.register_watchdog(*this)) {} watchdog_guard_(main_context.register_watchdog(*this)) {}
HostBridge::~HostBridge() noexcept {}
void HostBridge::handle_events() noexcept { void HostBridge::handle_events() noexcept {
MSG msg; MSG msg;
+1 -1
View File
@@ -37,7 +37,7 @@ class HostBridge {
pid_t parent_pid); pid_t parent_pid);
public: public:
virtual ~HostBridge() noexcept; virtual ~HostBridge() noexcept = default;
/** /**
* If a plugin instance returns `true` here, then the event loop should not * If a plugin instance returns `true` here, then the event loop should not