@@ -1,6 +1,6 @@ | |||
/* | |||
* Custom types to store LADSPA-RDF information | |||
* Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
@@ -126,7 +126,7 @@ struct LADSPA_RDF_ScalePoint { | |||
: Value(0.0f), | |||
Label(nullptr) {} | |||
~LADSPA_RDF_ScalePoint() | |||
~LADSPA_RDF_ScalePoint() noexcept | |||
{ | |||
if (Label != nullptr) | |||
{ | |||
@@ -158,7 +158,7 @@ struct LADSPA_RDF_Port { | |||
ScalePointCount(0), | |||
ScalePoints(nullptr) {} | |||
~LADSPA_RDF_Port() | |||
~LADSPA_RDF_Port() noexcept | |||
{ | |||
if (Label != nullptr) | |||
{ | |||
@@ -193,7 +193,7 @@ struct LADSPA_RDF_Descriptor { | |||
PortCount(0), | |||
Ports(nullptr) {} | |||
~LADSPA_RDF_Descriptor() | |||
~LADSPA_RDF_Descriptor() noexcept | |||
{ | |||
if (Title != nullptr) | |||
{ | |||
@@ -1,6 +1,6 @@ | |||
/* | |||
* Custom types to store LV2 information | |||
* Copyright (C) 2011-2013 Filipe Coelho <falktx@falktx.com> | |||
* Copyright (C) 2011-2014 Filipe Coelho <falktx@falktx.com> | |||
* | |||
* This program is free software; you can redistribute it and/or | |||
* modify it under the terms of the GNU General Public License as | |||
@@ -333,7 +333,7 @@ struct LV2_RDF_PortUnit { | |||
Symbol(nullptr), | |||
Unit(0) {} | |||
~LV2_RDF_PortUnit() | |||
~LV2_RDF_PortUnit() noexcept | |||
{ | |||
if (Name != nullptr) | |||
{ | |||
@@ -364,7 +364,7 @@ struct LV2_RDF_PortScalePoint { | |||
: Label(nullptr), | |||
Value(0.0f) {} | |||
~LV2_RDF_PortScalePoint() | |||
~LV2_RDF_PortScalePoint() noexcept | |||
{ | |||
if (Label != nullptr) | |||
{ | |||
@@ -403,7 +403,7 @@ struct LV2_RDF_Port { | |||
ScalePointCount(0), | |||
ScalePoints(nullptr) {} | |||
~LV2_RDF_Port() | |||
~LV2_RDF_Port() noexcept | |||
{ | |||
if (Name != nullptr) | |||
{ | |||
@@ -434,7 +434,7 @@ struct LV2_RDF_Preset { | |||
: URI(nullptr), | |||
Label(nullptr) {} | |||
~LV2_RDF_Preset() | |||
~LV2_RDF_Preset() noexcept | |||
{ | |||
if (URI != nullptr) | |||
{ | |||
@@ -460,7 +460,7 @@ struct LV2_RDF_Feature { | |||
: Type(0), | |||
URI(nullptr) {} | |||
~LV2_RDF_Feature() | |||
~LV2_RDF_Feature() noexcept | |||
{ | |||
if (URI != nullptr) | |||
{ | |||
@@ -495,7 +495,7 @@ struct LV2_RDF_UI { | |||
ExtensionCount(0), | |||
Extensions(nullptr) {} | |||
~LV2_RDF_UI() | |||
~LV2_RDF_UI() noexcept | |||
{ | |||
if (URI != nullptr) | |||
{ | |||
@@ -575,7 +575,7 @@ struct LV2_RDF_Descriptor { | |||
Type[0] = Type[1] = 0x0; | |||
} | |||
~LV2_RDF_Descriptor() | |||
~LV2_RDF_Descriptor() noexcept | |||
{ | |||
if (URI != nullptr) | |||
{ | |||
@@ -49,7 +49,7 @@ public: | |||
return uiState; | |||
} | |||
void setData(const char* const filename, const double sampleRate, const char* const uiTitle) | |||
void setData(const char* const filename, const double sampleRate, const char* const uiTitle) noexcept | |||
{ | |||
fFilename = filename; | |||
fSampleRate = CarlaString(sampleRate); | |||
@@ -140,7 +140,7 @@ bool is_ladspa_rdf_descriptor_valid(const LADSPA_RDF_Descriptor* const rdfDescri | |||
// Get default control port value | |||
static inline | |||
LADSPA_Data get_default_ladspa_port_value(const LADSPA_PortRangeHintDescriptor hintDescriptor, const LADSPA_Data min, const LADSPA_Data max) | |||
LADSPA_Data get_default_ladspa_port_value(const LADSPA_PortRangeHintDescriptor hintDescriptor, const LADSPA_Data min, const LADSPA_Data max) noexcept | |||
{ | |||
if (LADSPA_IS_HINT_HAS_DEFAULT(hintDescriptor)) | |||
{ | |||
@@ -166,21 +166,30 @@ LADSPA_Data get_default_ladspa_port_value(const LADSPA_PortRangeHintDescriptor h | |||
case LADSPA_HINT_DEFAULT_LOW: | |||
if (LADSPA_IS_HINT_LOGARITHMIC(hintDescriptor)) | |||
return std::exp((std::log(min)*0.75f) + (std::log(max)*0.25f)); | |||
else | |||
return (min*0.75f) + (max*0.25f); | |||
{ | |||
try { | |||
return std::exp((std::log(min)*0.75f) + (std::log(max)*0.25f)); | |||
} catch(...) {} | |||
} | |||
return (min*0.75f) + (max*0.25f); | |||
case LADSPA_HINT_DEFAULT_MIDDLE: | |||
if (LADSPA_IS_HINT_LOGARITHMIC(hintDescriptor)) | |||
return std::sqrt(min*max); | |||
else | |||
return (min+max)/2; | |||
{ | |||
try { | |||
return std::sqrt(min*max); | |||
} catch(...) {} | |||
} | |||
return (min+max)/2; | |||
case LADSPA_HINT_DEFAULT_HIGH: | |||
if (LADSPA_IS_HINT_LOGARITHMIC(hintDescriptor)) | |||
return std::exp((std::log(min)*0.25f) + (std::log(max)*0.75f)); | |||
else | |||
return (min*0.25f) + (max*0.75f); | |||
{ | |||
try { | |||
return std::exp((std::log(min)*0.25f) + (std::log(max)*0.75f)); | |||
} catch(...) {} | |||
} | |||
return (min*0.25f) + (max*0.75f); | |||
} | |||
} | |||
@@ -1272,7 +1272,7 @@ const LV2_RDF_Descriptor* lv2_rdf_new(const LV2_URI uri, const bool fillPresets) | |||
// Check if we support a plugin port | |||
static inline | |||
bool is_lv2_port_supported(const LV2_Property types) | |||
bool is_lv2_port_supported(const LV2_Property types) noexcept | |||
{ | |||
if (LV2_IS_PORT_CONTROL(types)) | |||
return true; | |||
@@ -1293,7 +1293,7 @@ bool is_lv2_port_supported(const LV2_Property types) | |||
// Check if we support a plugin feature | |||
static inline | |||
bool is_lv2_feature_supported(const LV2_URI uri) | |||
bool is_lv2_feature_supported(const LV2_URI uri) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(uri != nullptr && uri[0] != '\0', false); | |||
@@ -1344,7 +1344,7 @@ bool is_lv2_feature_supported(const LV2_URI uri) | |||
// Check if we support a plugin or UI feature | |||
static inline | |||
bool is_lv2_ui_feature_supported(const LV2_URI uri) | |||
bool is_lv2_ui_feature_supported(const LV2_URI uri) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(uri != nullptr && uri[0] != '\0', false); | |||
@@ -39,12 +39,12 @@ struct CarlaOscData { | |||
source(nullptr), | |||
target(nullptr) {} | |||
~CarlaOscData() | |||
~CarlaOscData() noexcept | |||
{ | |||
free(); | |||
} | |||
void free() | |||
void free() noexcept | |||
{ | |||
if (path != nullptr) | |||
{ | |||
@@ -54,17 +54,22 @@ struct CarlaOscData { | |||
if (source != nullptr) | |||
{ | |||
lo_address_free(source); | |||
try { | |||
lo_address_free(source); | |||
} catch(...) {} | |||
source = nullptr; | |||
} | |||
if (target != nullptr) | |||
{ | |||
lo_address_free(target); | |||
try { | |||
lo_address_free(target); | |||
} catch(...) {} | |||
target = nullptr; | |||
} | |||
} | |||
CARLA_PREVENT_HEAP_ALLOCATION | |||
CARLA_DECLARE_NON_COPY_STRUCT(CarlaOscData) | |||
}; | |||
@@ -29,7 +29,7 @@ struct HeapRingBuffer { | |||
bool invalidateCommit; | |||
char* buf; | |||
HeapRingBuffer& operator=(const HeapRingBuffer& rb) | |||
HeapRingBuffer& operator=(const HeapRingBuffer& rb) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(size == rb.size, *this); | |||
@@ -38,7 +38,7 @@ static shm_t gNullCarlaShm = -1; | |||
// shared memory calls | |||
static inline | |||
bool carla_is_shm_valid(const shm_t& shm) | |||
bool carla_is_shm_valid(const shm_t& shm) noexcept | |||
{ | |||
#ifdef CARLA_OS_WIN | |||
return (shm.shm != nullptr && shm.shm != INVALID_HANDLE_VALUE); | |||
@@ -48,7 +48,7 @@ bool carla_is_shm_valid(const shm_t& shm) | |||
} | |||
static inline | |||
void carla_shm_init(shm_t& shm) | |||
void carla_shm_init(shm_t& shm) noexcept | |||
{ | |||
#ifdef CARLA_OS_WIN | |||
shm.shm = nullptr; | |||
@@ -38,7 +38,7 @@ StateParameter::StateParameter() noexcept | |||
midiChannel(0), | |||
midiCC(-1) {} | |||
StateParameter::~StateParameter() | |||
StateParameter::~StateParameter() noexcept | |||
{ | |||
if (name != nullptr) | |||
{ | |||
@@ -60,7 +60,7 @@ StateCustomData::StateCustomData() noexcept | |||
key(nullptr), | |||
value(nullptr) {} | |||
StateCustomData::~StateCustomData() | |||
StateCustomData::~StateCustomData() noexcept | |||
{ | |||
if (type != nullptr) | |||
{ | |||
@@ -101,12 +101,12 @@ SaveState::SaveState() noexcept | |||
currentMidiProgram(-1), | |||
chunk(nullptr) {} | |||
SaveState::~SaveState() | |||
SaveState::~SaveState() noexcept | |||
{ | |||
reset(); | |||
} | |||
void SaveState::reset() | |||
void SaveState::reset() noexcept | |||
{ | |||
if (type != nullptr) | |||
{ | |||
@@ -44,7 +44,7 @@ struct StateParameter { | |||
int16_t midiCC; | |||
StateParameter() noexcept; | |||
~StateParameter(); | |||
~StateParameter() noexcept; | |||
CARLA_DECLARE_NON_COPY_STRUCT(StateParameter) | |||
}; | |||
@@ -55,7 +55,7 @@ struct StateCustomData { | |||
const char* value; | |||
StateCustomData() noexcept; | |||
~StateCustomData(); | |||
~StateCustomData() noexcept; | |||
CARLA_DECLARE_NON_COPY_STRUCT(StateCustomData) | |||
}; | |||
@@ -91,8 +91,8 @@ struct SaveState { | |||
StateCustomDataList customData; | |||
SaveState() noexcept; | |||
~SaveState(); | |||
void reset(); | |||
~SaveState() noexcept; | |||
void reset() noexcept; | |||
CARLA_DECLARE_NON_COPY_STRUCT(SaveState) | |||
}; | |||
@@ -141,16 +141,22 @@ typedef AEffect* (*VST_Function)(audioMasterCallback); | |||
// Check if feature is supported by the plugin | |||
static inline | |||
bool vstPluginCanDo(AEffect* const effect, const char* const feature) | |||
bool vstPluginCanDo(AEffect* const effect, const char* const feature) noexcept | |||
{ | |||
return (effect->dispatcher(effect, effCanDo, 0, 0, const_cast<char*>(feature), 0.0f) == 1); | |||
bool ret = false; | |||
try { | |||
ret = (effect->dispatcher(effect, effCanDo, 0, 0, const_cast<char*>(feature), 0.0f) == 1); | |||
} catch(...) {} | |||
return ret; | |||
} | |||
// ----------------------------------------------------------------------- | |||
// Convert Effect opcode to string | |||
static inline | |||
const char* vstEffectOpcode2str(const int32_t opcode) | |||
const char* vstEffectOpcode2str(const int32_t opcode) noexcept | |||
{ | |||
switch (opcode) | |||
{ | |||
@@ -343,7 +349,7 @@ const char* vstEffectOpcode2str(const int32_t opcode) | |||
// Convert Host/Master opcode to string | |||
static inline | |||
const char* vstMasterOpcode2str(const int32_t opcode) | |||
const char* vstMasterOpcode2str(const int32_t opcode) noexcept | |||
{ | |||
switch (opcode) | |||
{ | |||
@@ -401,7 +401,7 @@ protected: | |||
k_list_head fQueue; | |||
virtual Data* _allocate() noexcept = 0; | |||
virtual void _deallocate(Data*& dataPtr) noexcept = 0; | |||
virtual void _deallocate(Data* const dataPtr) noexcept = 0; | |||
private: | |||
mutable T fRetValue; | |||
@@ -456,12 +456,11 @@ private: | |||
return (typename AbstractLinkedList<T>::Data*)std::malloc(this->fDataSize); | |||
} | |||
void _deallocate(typename AbstractLinkedList<T>::Data*& dataPtr) noexcept override | |||
void _deallocate(typename AbstractLinkedList<T>::Data* const dataPtr) noexcept override | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(dataPtr != nullptr,); | |||
std::free(dataPtr); | |||
dataPtr = nullptr; | |||
} | |||
LINKED_LIST_DECLARATIONS(LinkedList) | |||
@@ -179,12 +179,11 @@ private: | |||
return (typename AbstractLinkedList<T>::Data*)fMemPool.allocate_sleepy(); | |||
} | |||
void _deallocate(typename AbstractLinkedList<T>::Data*& dataPtr) noexcept override | |||
void _deallocate(typename AbstractLinkedList<T>::Data* const dataPtr) noexcept override | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(dataPtr != nullptr,); | |||
fMemPool.deallocate(dataPtr); | |||
dataPtr = nullptr; | |||
} | |||
LINKED_LIST_DECLARATIONS(RtLinkedList) | |||