Browse Source

Move a few VST utility functions to common code

pull/321/merge
falkTX 2 years ago
parent
commit
efeb647436
2 changed files with 62 additions and 42 deletions
  1. +56
    -1
      distrho/src/DistrhoPluginInternal.hpp
  2. +6
    -41
      distrho/src/DistrhoPluginVST.hpp

+ 56
- 1
distrho/src/DistrhoPluginInternal.hpp View File

@@ -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<typename T>
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<float>(dst, value, "%f", size);
}

static inline
void snprintf_f32(char* const dst, const double value, const size_t size)
{
return snprintf_t<double>(dst, value, "%f", size);
}

static inline
void snprintf_i32(char* const dst, const int32_t value, const size_t size)
{
return snprintf_t<int32_t>(dst, value, "%d", size);
}

static inline
void snprintf_u32(char* const dst, const uint32_t value, const size_t size)
{
return snprintf_t<uint32_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;


+ 6
- 41
distrho/src/DistrhoPluginVST.hpp View File

@@ -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<typename T>
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<typename T>
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<float>(dst, value, "%f", size);
}

static inline
void snprintf_i32(char* const dst, const int32_t value, const size_t size)
{
return snprintf_t<int32_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<uint32_t>(dst, value, "%u", size);
return snprintf_utf16_t<float>(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<float>(dst, value, "%f", size);
return snprintf_utf16_t<double>(dst, value, "%f", size);
}

static inline


Loading…
Cancel
Save