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"
DefaultDataConverter::~DefaultDataConverter() noexcept {}
Vst2Event::Payload DefaultDataConverter::read_data(const int /*opcode*/,
const int /*index*/,
const intptr_t /*value*/,
+1 -1
View File
@@ -31,7 +31,7 @@
*/
class DefaultDataConverter {
public:
virtual ~DefaultDataConverter() noexcept;
virtual ~DefaultDataConverter() noexcept = default;
/**
* 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;
virtual ~YaAttributeList() noexcept;
DECLARE_FUNKNOWN_METHODS
@@ -59,6 +59,8 @@ class YaComponentHandler2 : public Steinberg::Vst::IComponentHandler2 {
*/
YaComponentHandler2(ConstructArgs&& args) noexcept;
virtual ~YaComponentHandler2() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -61,6 +61,8 @@ class YaComponentHandler3 : public Steinberg::Vst::IComponentHandler3 {
*/
YaComponentHandler3(ConstructArgs&& args) noexcept;
virtual ~YaComponentHandler3() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -62,6 +62,8 @@ class YaComponentHandlerBusActivation
*/
YaComponentHandlerBusActivation(ConstructArgs&& args) noexcept;
virtual ~YaComponentHandlerBusActivation() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -59,6 +59,8 @@ class YaComponentHandler : public Steinberg::Vst::IComponentHandler {
*/
YaComponentHandler(ConstructArgs&& args) noexcept;
virtual ~YaComponentHandler() noexcept = default;
inline bool supported() const noexcept { return arguments.supported; }
/**
@@ -60,6 +60,8 @@ class YaProgress : public Steinberg::Vst::IProgress {
*/
YaProgress(ConstructArgs&& args) noexcept;
virtual ~YaProgress() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -59,6 +59,8 @@ class YaUnitHandler2 : public Steinberg::Vst::IUnitHandler2 {
*/
YaUnitHandler2(ConstructArgs&& args) noexcept;
virtual ~YaUnitHandler2() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -59,6 +59,8 @@ class YaUnitHandler : public Steinberg::Vst::IUnitHandler {
*/
YaUnitHandler(ConstructArgs&& args) noexcept;
virtual ~YaUnitHandler() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -67,7 +67,7 @@ class YaContextMenuTarget : public Steinberg::Vst::IContextMenuTarget {
*/
YaContextMenuTarget(ConstructArgs&& args) noexcept;
~YaContextMenuTarget() noexcept;
virtual ~YaContextMenuTarget() noexcept;
DECLARE_FUNKNOWN_METHODS
@@ -73,6 +73,8 @@ class YaContextMenu : public Steinberg::Vst::IContextMenu {
*/
YaContextMenu(ConstructArgs&& args) noexcept;
virtual ~YaContextMenu() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
// 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);
~YaEventList() noexcept;
virtual ~YaEventList() noexcept;
DECLARE_FUNKNOWN_METHODS
@@ -63,6 +63,8 @@ class YaHostApplication : public Steinberg::Vst::IHostApplication {
*/
YaHostApplication(ConstructArgs&& args) noexcept;
virtual ~YaHostApplication() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -60,6 +60,8 @@ class YaPlugInterfaceSupport : public Steinberg::Vst::IPlugInterfaceSupport {
*/
YaPlugInterfaceSupport(ConstructArgs&& args) noexcept;
virtual ~YaPlugInterfaceSupport() noexcept = default;
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);
~YaMessagePtr() noexcept;
virtual ~YaMessagePtr() noexcept;
DECLARE_FUNKNOWN_METHODS
@@ -124,7 +124,7 @@ class YaMessage : public Steinberg::Vst::IMessage {
*/
YaMessage() noexcept;
~YaMessage() noexcept;
virtual ~YaMessage() noexcept;
DECLARE_FUNKNOWN_METHODS
@@ -66,10 +66,11 @@ int32 PLUGIN_API YaParamValueQueue::getPointCount() {
return static_cast<int32>(queue_.size());
}
tresult PLUGIN_API
YaParamValueQueue::getPoint(int32 index,
int32& sampleOffset /*out*/,
Steinberg::Vst::ParamValue& value /*out*/) {
tresult PLUGIN_API YaParamValueQueue::getPoint(
int32 index,
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
int32& sampleOffset /*out*/,
Steinberg::Vst::ParamValue& value /*out*/) {
if (index < static_cast<int32>(queue_.size())) {
sampleOffset = queue_[index].first;
value = queue_[index].second;
@@ -39,6 +39,8 @@ class alignas(16) YaParamValueQueue : public Steinberg::Vst::IParamValueQueue {
*/
YaParamValueQueue() noexcept;
virtual ~YaParamValueQueue() noexcept;
/**
* Clear this queue in place so that it can be used to write parameter data
* to. Used in `YaParameterChanges::addParameterData`.
@@ -50,8 +52,6 @@ class alignas(16) YaParamValueQueue : public Steinberg::Vst::IParamValueQueue {
*/
void repopulate(Steinberg::Vst::IParamValueQueue& original_queue);
~YaParamValueQueue() noexcept;
DECLARE_FUNKNOWN_METHODS
/**
@@ -39,7 +39,7 @@ class YaParameterChanges : public Steinberg::Vst::IParameterChanges {
*/
YaParameterChanges() noexcept;
~YaParameterChanges() noexcept;
virtual ~YaParameterChanges() noexcept;
/**
* 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;
virtual ~YaPlugFrame() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -59,6 +59,8 @@ class YaParameterFinder : public Steinberg::Vst::IParameterFinder {
*/
YaParameterFinder(ConstructArgs&& args) noexcept;
virtual ~YaParameterFinder() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -60,6 +60,8 @@ class YaPlugViewContentScaleSupport
*/
YaPlugViewContentScaleSupport(ConstructArgs&& args) noexcept;
virtual ~YaPlugViewContentScaleSupport() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -61,6 +61,8 @@ class YaPlugView : public Steinberg::IPlugView {
*/
YaPlugView(ConstructArgs&& args) noexcept;
virtual ~YaPlugView() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -124,6 +124,8 @@ class YaPluginFactory3 : public Steinberg::IPluginFactory3 {
*/
YaPluginFactory3(ConstructArgs&& args) noexcept;
virtual ~YaPluginFactory3() noexcept = default;
inline bool supports_plugin_factory() const noexcept {
return arguments_.supports_plugin_factory;
}
@@ -60,6 +60,8 @@ class YaAudioPresentationLatency
*/
YaAudioPresentationLatency(ConstructArgs&& args) noexcept;
virtual ~YaAudioPresentationLatency() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -62,6 +62,8 @@ class YaAudioProcessor : public Steinberg::Vst::IAudioProcessor {
*/
YaAudioProcessor(ConstructArgs&& args) noexcept;
virtual ~YaAudioProcessor() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -62,6 +62,8 @@ class YaAutomationState : public Steinberg::Vst::IAutomationState {
*/
YaAutomationState(ConstructArgs&& args) noexcept;
virtual ~YaAutomationState() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -63,6 +63,8 @@ class YaComponent : public Steinberg::Vst::IComponent {
*/
YaComponent(ConstructArgs&& args) noexcept;
virtual ~YaComponent() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -107,6 +107,8 @@ class YaConnectionPoint : public Steinberg::Vst::IConnectionPoint {
*/
YaConnectionPoint(ConstructArgs&& args) noexcept;
virtual ~YaConnectionPoint() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -59,6 +59,8 @@ class YaEditController2 : public Steinberg::Vst::IEditController2 {
*/
YaEditController2(ConstructArgs&& args) noexcept;
virtual ~YaEditController2() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -60,6 +60,8 @@ class YaEditControllerHostEditing
*/
YaEditControllerHostEditing(ConstructArgs&& args) noexcept;
virtual ~YaEditControllerHostEditing() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -63,6 +63,8 @@ class YaEditController : public Steinberg::Vst::IEditController {
*/
YaEditController(ConstructArgs&& args) noexcept;
virtual ~YaEditController() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -60,6 +60,8 @@ class YaInfoListener : public Steinberg::Vst::ChannelContext::IInfoListener {
*/
YaInfoListener(ConstructArgs&& args) noexcept;
virtual ~YaInfoListener() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -59,6 +59,8 @@ class YaKeyswitchController : public Steinberg::Vst::IKeyswitchController {
*/
YaKeyswitchController(ConstructArgs&& args) noexcept;
virtual ~YaKeyswitchController() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -59,6 +59,8 @@ class YaMidiLearn : public Steinberg::Vst::IMidiLearn {
*/
YaMidiLearn(ConstructArgs&& args) noexcept;
virtual ~YaMidiLearn() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -59,6 +59,8 @@ class YaMidiMapping : public Steinberg::Vst::IMidiMapping {
*/
YaMidiMapping(ConstructArgs&& args) noexcept;
virtual ~YaMidiMapping() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -63,6 +63,8 @@ class YaNoteExpressionController
*/
YaNoteExpressionController(ConstructArgs&& args) noexcept;
virtual ~YaNoteExpressionController() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -62,6 +62,8 @@ class YaNoteExpressionPhysicalUIMapping
*/
YaNoteExpressionPhysicalUIMapping(ConstructArgs&& args) noexcept;
virtual ~YaNoteExpressionPhysicalUIMapping() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -61,6 +61,8 @@ class YaParameterFunctionName : public Steinberg::Vst::IParameterFunctionName {
*/
YaParameterFunctionName(ConstructArgs&& args) noexcept;
virtual ~YaParameterFunctionName() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -61,6 +61,8 @@ class YaPluginBase : public Steinberg::IPluginBase {
*/
YaPluginBase(ConstructArgs&& args) noexcept;
virtual ~YaPluginBase() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
// The request and response for `IPluginBase::initialize()` is defined
@@ -60,6 +60,8 @@ class YaPrefetchableSupport : public Steinberg::Vst::IPrefetchableSupport {
*/
YaPrefetchableSupport(ConstructArgs&& args) noexcept;
virtual ~YaPrefetchableSupport() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -62,6 +62,8 @@ class YaProcessContextRequirements
*/
YaProcessContextRequirements(ConstructArgs&& args) noexcept;
virtual ~YaProcessContextRequirements() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -60,6 +60,8 @@ class YaProgramListData : public Steinberg::Vst::IProgramListData {
*/
YaProgramListData(ConstructArgs&& args) noexcept;
virtual ~YaProgramListData() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -60,6 +60,8 @@ class YaUnitData : public Steinberg::Vst::IUnitData {
*/
YaUnitData(ConstructArgs&& args) noexcept;
virtual ~YaUnitData() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -60,6 +60,8 @@ class YaUnitInfo : public Steinberg::Vst::IUnitInfo {
*/
YaUnitInfo(ConstructArgs&& args) noexcept;
virtual ~YaUnitInfo() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
@@ -67,6 +67,8 @@ class YaXmlRepresentationController
*/
YaXmlRepresentationController(ConstructArgs&& args) noexcept;
virtual ~YaXmlRepresentationController() noexcept = default;
inline bool supported() const noexcept { return arguments_.supported; }
/**
+1 -1
View File
@@ -129,7 +129,7 @@ class PluginBridge {
io_context_.run();
}) {}
virtual ~PluginBridge() noexcept {};
virtual ~PluginBridge() noexcept = default;
protected:
/**
@@ -49,7 +49,7 @@ class RunLoopTasks : public Steinberg::Linux::IEventHandler {
/**
* Unregister the event handler and close the file descriptor on cleanup.
*/
~RunLoopTasks();
virtual ~RunLoopTasks();
DECLARE_FUNKNOWN_METHODS
@@ -390,6 +390,7 @@ Vst3PluginProxyImpl::getBusInfo(Steinberg::Vst::MediaType type,
}
tresult PLUGIN_API Vst3PluginProxyImpl::getRoutingInfo(
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)
Steinberg::Vst::RoutingInfo& inInfo,
Steinberg::Vst::RoutingInfo& outInfo /*out*/) {
const GetRoutingInfoResponse response =
-2
View File
@@ -25,8 +25,6 @@ namespace fs = ghc::filesystem;
HostProcess::HostProcess(asio::io_context& io_context, Sockets& sockets)
: sockets_(sockets), stdout_pipe_(io_context), stderr_pipe_(io_context) {}
HostProcess::~HostProcess() noexcept {}
Process::Handle HostProcess::launch_host(
const ghc::filesystem::path& host_path,
std::initializer_list<std::string> args,
+1 -1
View File
@@ -37,7 +37,7 @@
*/
class HostProcess {
public:
virtual ~HostProcess() noexcept;
virtual ~HostProcess() noexcept = default;
/**
* 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),
watchdog_guard_(main_context.register_watchdog(*this)) {}
HostBridge::~HostBridge() noexcept {}
void HostBridge::handle_events() noexcept {
MSG msg;
+1 -1
View File
@@ -37,7 +37,7 @@ class HostBridge {
pid_t parent_pid);
public:
virtual ~HostBridge() noexcept;
virtual ~HostBridge() noexcept = default;
/**
* If a plugin instance returns `true` here, then the event loop should not