From efeb647436269f47a07209f0b34282932beacecd Mon Sep 17 00:00:00 2001 From: falkTX Date: Tue, 6 Sep 2022 11:38:16 +0100 Subject: [PATCH] Move a few VST utility functions to common code --- distrho/src/DistrhoPluginInternal.hpp | 57 ++++++++++++++++++++++++++- distrho/src/DistrhoPluginVST.hpp | 47 +++------------------- 2 files changed, 62 insertions(+), 42 deletions(-) diff --git a/distrho/src/DistrhoPluginInternal.hpp b/distrho/src/DistrhoPluginInternal.hpp index ca93afd5..30b31355 100644 --- a/distrho/src/DistrhoPluginInternal.hpp +++ b/distrho/src/DistrhoPluginInternal.hpp @@ -68,7 +68,8 @@ struct PortGroupWithId : PortGroup { groupId(kPortGroupNone) {} }; -static void fillInPredefinedPortGroupData(const uint32_t groupId, PortGroup& portGroup) +static inline +void fillInPredefinedPortGroupData(const uint32_t groupId, PortGroup& portGroup) { switch (groupId) { @@ -87,6 +88,55 @@ static void fillInPredefinedPortGroupData(const uint32_t groupId, PortGroup& por } } +static inline +void strncpy(char* const dst, const char* const src, const size_t length) +{ + DISTRHO_SAFE_ASSERT_RETURN(length > 0,); + + if (const size_t len = std::min(std::strlen(src), length-1U)) + { + std::memcpy(dst, src, len); + dst[len] = '\0'; + } + else + { + dst[0] = '\0'; + } +} + +template +static inline +void snprintf_t(char* const dst, const T value, const char* const format, const size_t size) +{ + DISTRHO_SAFE_ASSERT_RETURN(size > 0,); + std::snprintf(dst, size-1, format, value); + dst[size-1] = '\0'; +} + +static inline +void snprintf_f32(char* const dst, const float value, const size_t size) +{ + return snprintf_t(dst, value, "%f", size); +} + +static inline +void snprintf_f32(char* const dst, const double value, const size_t size) +{ + return snprintf_t(dst, value, "%f", size); +} + +static inline +void snprintf_i32(char* const dst, const int32_t value, const size_t size) +{ + return snprintf_t(dst, value, "%d", size); +} + +static inline +void snprintf_u32(char* const dst, const uint32_t value, const size_t size) +{ + return snprintf_t(dst, value, "%u", size); +} + // ----------------------------------------------------------------------- // Plugin private data @@ -597,6 +647,11 @@ public: return (getParameterHints(index) & kParameterIsOutput) != 0x0; } + bool isParameterInteger(const uint32_t index) const noexcept + { + return (getParameterHints(index) & kParameterIsInteger) != 0x0; + } + bool isParameterTrigger(const uint32_t index) const noexcept { return (getParameterHints(index) & kParameterIsTrigger) == kParameterIsTrigger; diff --git a/distrho/src/DistrhoPluginVST.hpp b/distrho/src/DistrhoPluginVST.hpp index cfdcf111..dd83d5ee 100644 --- a/distrho/src/DistrhoPluginVST.hpp +++ b/distrho/src/DistrhoPluginVST.hpp @@ -136,22 +136,6 @@ size_t strlen_utf16(const int16_t* const str) // -------------------------------------------------------------------------------------------------------------------- -static inline -void strncpy(char* const dst, const char* const src, const size_t length) -{ - DISTRHO_SAFE_ASSERT_RETURN(length > 0,); - - if (const size_t len = std::min(std::strlen(src), length-1U)) - { - std::memcpy(dst, src, len); - dst[len] = '\0'; - } - else - { - dst[0] = '\0'; - } -} - static inline void strncpy_utf8(char* const dst, const int16_t* const src, const size_t length) { @@ -201,15 +185,8 @@ void strncpy_utf16(int16_t* const dst, const char* const src, const size_t lengt // -------------------------------------------------------------------------------------------------------------------- template -static void snprintf_t(char* const dst, const T value, const char* const format, const size_t size) -{ - DISTRHO_SAFE_ASSERT_RETURN(size > 0,); - std::snprintf(dst, size-1, format, value); - dst[size-1] = '\0'; -} - -template -static void snprintf_utf16_t(int16_t* const dst, const T value, const char* const format, const size_t size) +static inline +void snprintf_utf16_t(int16_t* const dst, const T value, const char* const format, const size_t size) { DISTRHO_SAFE_ASSERT_RETURN(size > 0,); @@ -224,27 +201,15 @@ static void snprintf_utf16_t(int16_t* const dst, const T value, const char* cons } static inline -void snprintf_f32(char* const dst, const float value, const size_t size) -{ - return snprintf_t(dst, value, "%f", size); -} - -static inline -void snprintf_i32(char* const dst, const int32_t value, const size_t size) -{ - return snprintf_t(dst, value, "%d", size); -} - -static inline -void snprintf_u32(char* const dst, const uint32_t value, const size_t size) +void snprintf_f32_utf16(int16_t* const dst, const float value, const size_t size) { - return snprintf_t(dst, value, "%u", size); + return snprintf_utf16_t(dst, value, "%f", size); } static inline -void snprintf_f32_utf16(int16_t* const dst, const float value, const size_t size) +void snprintf_f32_utf16(int16_t* const dst, const double value, const size_t size) { - return snprintf_utf16_t(dst, value, "%f", size); + return snprintf_utf16_t(dst, value, "%f", size); } static inline