diff --git a/src/common/logging/clap.cpp b/src/common/logging/clap.cpp index 8fe13e40..227542ae 100644 --- a/src/common/logging/clap.cpp +++ b/src/common/logging/clap.cpp @@ -80,14 +80,8 @@ bool ClapLogger::log_request(bool is_host_plugin, << ": clap_plugin::init(), supported host extensions: "; bool first = true; - const auto& supported_extensions = request.supported_host_extensions; for (const auto& [supported, extension_name] : - {std::pair(supported_extensions.supports_audio_ports, - CLAP_EXT_AUDIO_PORTS), - std::pair(supported_extensions.supports_note_ports, - CLAP_EXT_NOTE_PORTS), - std::pair(supported_extensions.supports_params, - CLAP_EXT_PARAMS)}) { + request.supported_host_extensions.list()) { if (!supported) { continue; } @@ -393,14 +387,8 @@ void ClapLogger::log_response(bool is_host_plugin, << ", supported plugin extensions: "; bool first = true; - const auto& supported_extensions = response.supported_plugin_extensions; for (const auto& [supported, extension_name] : - {std::pair(supported_extensions.supports_audio_ports, - CLAP_EXT_AUDIO_PORTS), - std::pair(supported_extensions.supports_note_ports, - CLAP_EXT_NOTE_PORTS), - std::pair(supported_extensions.supports_params, - CLAP_EXT_PARAMS)}) { + response.supported_plugin_extensions.list()) { if (!supported) { continue; } diff --git a/src/common/serialization/clap/host.cpp b/src/common/serialization/clap/host.cpp index bbc39dc2..cfdc4e35 100644 --- a/src/common/serialization/clap/host.cpp +++ b/src/common/serialization/clap/host.cpp @@ -17,6 +17,8 @@ #include "host.h" #include +#include +#include namespace clap { namespace host { @@ -28,5 +30,12 @@ Host::Host(const clap_host_t& original) url(original.url ? std::optional(original.url) : std::nullopt), version((assert(original.version), original.version)) {} +std::array, 3> SupportedHostExtensions::list() + const noexcept { + return {std::pair(supports_audio_ports, CLAP_EXT_AUDIO_PORTS), + std::pair(supports_note_ports, CLAP_EXT_NOTE_PORTS), + std::pair(supports_params, CLAP_EXT_PARAMS)}; +} + } // namespace host } // namespace clap diff --git a/src/common/serialization/clap/host.h b/src/common/serialization/clap/host.h index fa769c1a..bd151113 100644 --- a/src/common/serialization/clap/host.h +++ b/src/common/serialization/clap/host.h @@ -80,12 +80,17 @@ struct Host { * available to the bridged CLAP plugins using proxies. */ struct SupportedHostExtensions { - // Don't forget to add new extensions to the logger and to the serialize - // method + // Don't forget to add new extensions to below method bool supports_audio_ports = false; bool supports_note_ports = false; bool supports_params = false; + /** + * Get a list of `` tuples for the supported + * extensions. Used during logging. + */ + std::array, 3> list() const noexcept; + template void serialize(S& s) { s.value1b(supports_audio_ports); diff --git a/src/common/serialization/clap/plugin.cpp b/src/common/serialization/clap/plugin.cpp index 3e84f459..3c82e4a5 100644 --- a/src/common/serialization/clap/plugin.cpp +++ b/src/common/serialization/clap/plugin.cpp @@ -17,6 +17,8 @@ #include "plugin.h" #include +#include +#include #include "version.h" @@ -76,5 +78,12 @@ const clap_plugin_descriptor_t* Descriptor::get() const { return &clap_descriptor; } +std::array, 3> SupportedPluginExtensions::list() + const noexcept { + return {std::pair(supports_audio_ports, CLAP_EXT_AUDIO_PORTS), + std::pair(supports_note_ports, CLAP_EXT_NOTE_PORTS), + std::pair(supports_params, CLAP_EXT_PARAMS)}; +} + } // namespace plugin } // namespace clap diff --git a/src/common/serialization/clap/plugin.h b/src/common/serialization/clap/plugin.h index 4f29bd6e..e4e4dc6e 100644 --- a/src/common/serialization/clap/plugin.h +++ b/src/common/serialization/clap/plugin.h @@ -113,12 +113,17 @@ struct Descriptor { * created by `ClapPluginExtensions::supported()`. */ struct SupportedPluginExtensions { - // Don't forget to add new extensions to the logger and to the serialize - // method + // Don't forget to add new extensions to below method bool supports_audio_ports = false; bool supports_note_ports = false; bool supports_params = false; + /** + * Get a list of `` tuples for the supported + * extensions. Used during logging. + */ + std::array, 3> list() const noexcept; + template void serialize(S& s) { s.value1b(supports_audio_ports); diff --git a/src/wine-host/meson.build b/src/wine-host/meson.build index d901fa65..0a4beedd 100644 --- a/src/wine-host/meson.build +++ b/src/wine-host/meson.build @@ -83,6 +83,7 @@ if with_clap '../common/serialization/clap/ext/audio-ports.cpp', '../common/serialization/clap/ext/note-ports.cpp', '../common/serialization/clap/ext/params.cpp', + '../common/serialization/clap/host.cpp', '../common/serialization/clap/plugin.cpp', 'bridges/clap-impls/host-proxy.cpp', 'bridges/clap.cpp',