@@ -28,11 +28,16 @@ | |||
#include "CarlaEngineUtils.hpp" | |||
#include "CarlaLadspaUtils.hpp" | |||
#include "CarlaDssiUtils.hpp" | |||
// used in dssi utils | |||
#include "juce_core.h" | |||
#include <QtCore/QDir> | |||
#include <QtCore/QFileInfo> | |||
#include <QtCore/QStringList> | |||
// #include "CarlaBridgeUtils.hpp" | |||
// #include "CarlaDssiUtils.hpp" | |||
// #include "CarlaJuceUtils.hpp" | |||
// #include "CarlaLadspaUtils.hpp" | |||
// #include "CarlaLibUtils.hpp" | |||
// #include "CarlaLv2Utils.hpp" | |||
// #include "CarlaOscUtils.hpp" | |||
@@ -488,6 +493,58 @@ static void test_CarlaEngineUtils() noexcept | |||
carla_stdout(EngineControlEventType2Str(kEngineControlEventTypeNull)); | |||
} | |||
// ----------------------------------------------------------------------- | |||
static void test_CarlaLadspaUtils() noexcept | |||
{ | |||
LADSPA_Descriptor desc; | |||
carla_zeroStruct(desc); | |||
LADSPA_RDF_Descriptor rdfDesc; | |||
delete ladspa_rdf_dup(&rdfDesc); | |||
is_ladspa_port_good(0x0, 0x0); | |||
is_ladspa_rdf_descriptor_valid(&rdfDesc, &desc); | |||
get_default_ladspa_port_value(0x0, -1.0f, 1.0f); | |||
} | |||
// ----------------------------------------------------------------------- | |||
namespace dssi_juce { | |||
const char* find_dssi_ui(const char* const filename, const char* const label) noexcept; | |||
#define HAVE_JUCE | |||
#include "CarlaDssiUtils.cpp" | |||
} | |||
namespace dssi_qt { | |||
const char* find_dssi_ui(const char* const filename, const char* const label) noexcept; | |||
#undef HAVE_JUCE | |||
#include "CarlaDssiUtils.cpp" | |||
} | |||
static void test_CarlaDssiUtils() noexcept | |||
{ | |||
const char* const ui_juce = dssi_juce::find_dssi_ui("/usr/lib/dssi/trivial_sampler.so", "aa"); | |||
const char* const ui_qt = dssi_qt::find_dssi_ui("/usr/lib/dssi/trivial_sampler.so", "aa"); | |||
CARLA_SAFE_ASSERT(ui_juce != nullptr); | |||
CARLA_SAFE_ASSERT(ui_qt != nullptr); | |||
if (ui_juce != nullptr) | |||
{ | |||
carla_stdout("%s", ui_juce); | |||
assert(std::strcmp(ui_juce, "/usr/lib/dssi/trivial_sampler/trivial_sampler_qt") == 0); | |||
delete[] ui_juce; | |||
} | |||
if (ui_qt != nullptr) | |||
{ | |||
carla_stdout("%s", ui_qt); | |||
assert(std::strcmp(ui_qt, "/usr/lib/dssi/trivial_sampler/trivial_sampler_qt") == 0); | |||
delete[] ui_qt; | |||
} | |||
} | |||
// ----------------------------------------------------------------------- | |||
// main | |||
@@ -499,6 +556,9 @@ int main() | |||
test_CarlaBackendUtils(); | |||
test_CarlaEngineUtils(); | |||
test_CarlaLadspaUtils(); | |||
test_CarlaDssiUtils(); | |||
return 0; | |||
} | |||
@@ -68,7 +68,9 @@ CarlaString: CarlaString.cpp ../utils/CarlaString.hpp | |||
valgrind --leak-check=full ./$@ | |||
CarlaUtils: CarlaUtils.cpp ../utils/*.hpp | |||
$(CXX) $< $(PEDANTIC_CXX_FLAGS) -o $@ | |||
$(CXX) $< $(PEDANTIC_CXX_FLAGS) -o $@ \ | |||
../modules/juce_core.a -ldl -lpthread -lrt \ | |||
$(shell pkg-config --cflags --libs QtCore) -isystem /usr/include/qt4 | |||
valgrind --leak-check=full ./$@ | |||
RDF: RDF.cpp ../modules/ladspa_rdf.hpp ../modules/lv2_rdf.hpp | |||
@@ -17,9 +17,13 @@ | |||
#include "CarlaDssiUtils.hpp" | |||
#include <QtCore/QDir> | |||
#include <QtCore/QFileInfo> | |||
#include <QtCore/QStringList> | |||
#ifdef HAVE_JUCE | |||
# include "juce_core.h" | |||
#else | |||
# include <QtCore/QDir> | |||
# include <QtCore/QFileInfo> | |||
# include <QtCore/QStringList> | |||
#endif | |||
// ----------------------------------------------------------------------- | |||
@@ -30,6 +34,37 @@ const char* find_dssi_ui(const char* const filename, const char* const label) no | |||
carla_debug("find_dssi_ui(\"%s\", \"%s\")", filename, label); | |||
try { | |||
#ifdef HAVE_JUCE | |||
using namespace juce; | |||
String guiFilename; | |||
String pluginDir(String(filename).upToLastOccurrenceOf(".", false, false)); | |||
String checkLabel(label); | |||
String checkSName(File(pluginDir).getFileName()); | |||
if (! checkLabel.endsWith("_")) checkLabel += "_"; | |||
if (! checkSName.endsWith("_")) checkSName += "_"; | |||
Array<File> results; | |||
for (int i=0, count=File(pluginDir).findChildFiles(results, File::findFiles|File::ignoreHiddenFiles, false); i < count; ++i) | |||
{ | |||
const File& gui(results[i]); | |||
const String& guiShortName(gui.getFileName()); | |||
if (guiShortName.startsWith(checkLabel) || guiShortName.startsWith(checkSName)) | |||
{ | |||
guiFilename = gui.getFullPathName(); | |||
break; | |||
} | |||
} | |||
if (guiFilename.isEmpty()) | |||
return nullptr; | |||
return carla_strdup(guiFilename.toRawUTF8()); | |||
#else | |||
QString guiFilename; | |||
QString pluginDir(filename); | |||
pluginDir.resize(pluginDir.lastIndexOf(".")); | |||
@@ -56,7 +91,7 @@ const char* find_dssi_ui(const char* const filename, const char* const label) no | |||
return nullptr; | |||
return carla_strdup(guiFilename.toUtf8().constData()); | |||
#endif | |||
} CARLA_SAFE_EXCEPTION_RETURN("find_dssi_ui", nullptr); | |||
} | |||
@@ -196,8 +196,8 @@ LADSPA_Data get_default_ladspa_port_value(const LADSPA_PortRangeHintDescriptor h | |||
// no default value | |||
if (min < 0.0f && max > 0.0f) | |||
return 0.0f; | |||
else | |||
return min; | |||
return min; | |||
} | |||
// ----------------------------------------------------------------------- | |||
@@ -121,13 +121,13 @@ uint32_t carla_nextPowerOf2(uint32_t size) noexcept | |||
* Add float array values to another float array. | |||
*/ | |||
static inline | |||
void carla_addFloat(float* dataDst, const float* dataSrc, const size_t numSamples) noexcept | |||
void carla_addFloat(float* dataDst, const float* dataSrc, const std::size_t numSamples) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(dataDst != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(dataSrc != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(numSamples > 0,); | |||
for (size_t i=0; i < numSamples; ++i) | |||
for (std::size_t i=0; i < numSamples; ++i) | |||
*dataDst++ += *dataSrc++; | |||
} | |||
@@ -135,7 +135,7 @@ void carla_addFloat(float* dataDst, const float* dataSrc, const size_t numSample | |||
* Copy float array values to another float array. | |||
*/ | |||
static inline | |||
void carla_copyFloat(float* const dataDst, const float* const dataSrc, const size_t numSamples) noexcept | |||
void carla_copyFloat(float* const dataDst, const float* const dataSrc, const std::size_t numSamples) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(dataDst != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(dataSrc != nullptr,); | |||
@@ -148,7 +148,7 @@ void carla_copyFloat(float* const dataDst, const float* const dataSrc, const siz | |||
* Clear a float array. | |||
*/ | |||
static inline | |||
void carla_zeroFloat(float* const data, const size_t numSamples) noexcept | |||
void carla_zeroFloat(float* const data, const std::size_t numSamples) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(data != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(numSamples > 0,); | |||
@@ -259,8 +259,8 @@ const char* carla_strdup(const char* const strBuf) | |||
{ | |||
CARLA_SAFE_ASSERT(strBuf != nullptr); | |||
const size_t bufferLen = (strBuf != nullptr) ? std::strlen(strBuf) : 0; | |||
char* const buffer = new char[bufferLen+1]; | |||
const std::size_t bufferLen = (strBuf != nullptr) ? std::strlen(strBuf) : 0; | |||
char* const buffer = new char[bufferLen+1]; | |||
if (strBuf != nullptr && bufferLen > 0) | |||
std::strncpy(buffer, strBuf, bufferLen); | |||
@@ -292,13 +292,13 @@ const char* carla_strdup_free(char* const strBuf) | |||
*/ | |||
template<typename T> | |||
static inline | |||
void carla_add(T* dataDst, const T* dataSrc, const size_t size) noexcept | |||
void carla_add(T* dataDst, const T* dataSrc, const std::size_t size) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(dataDst != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(dataSrc != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(size > 0,); | |||
for (size_t i=0; i < size; ++i) | |||
for (std::size_t i=0; i < size; ++i) | |||
*dataDst++ += *dataSrc++; | |||
} | |||
@@ -307,7 +307,7 @@ void carla_add(T* dataDst, const T* dataSrc, const size_t size) noexcept | |||
*/ | |||
template<typename T> | |||
static inline | |||
void carla_copy(T* const dataDst, const T* const dataSrc, const size_t size) noexcept | |||
void carla_copy(T* const dataDst, const T* const dataSrc, const std::size_t size) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(dataDst != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(dataSrc != nullptr,); | |||
@@ -321,7 +321,7 @@ void carla_copy(T* const dataDst, const T* const dataSrc, const size_t size) noe | |||
*/ | |||
template<typename T> | |||
static inline | |||
void carla_fill(T* data, const T v, const size_t size) noexcept | |||
void carla_fill(T* data, const T v, const std::size_t size) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(data != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(size > 0,); | |||
@@ -332,7 +332,7 @@ void carla_fill(T* data, const T v, const size_t size) noexcept | |||
} | |||
else | |||
{ | |||
for (size_t i=0; i < size; ++i) | |||
for (std::size_t i=0; i < size; ++i) | |||
*data++ = v; | |||
} | |||
} | |||
@@ -341,7 +341,7 @@ void carla_fill(T* data, const T v, const size_t size) noexcept | |||
* Clear a byte array. | |||
*/ | |||
static inline | |||
void carla_zeroBytes(void* const memory, const size_t numBytes) noexcept | |||
void carla_zeroBytes(void* const memory, const std::size_t numBytes) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(memory != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(numBytes > 0,); | |||
@@ -353,7 +353,7 @@ void carla_zeroBytes(void* const memory, const size_t numBytes) noexcept | |||
* Clear a char array. | |||
*/ | |||
static inline | |||
void carla_zeroChar(char* const data, const size_t numChars) noexcept | |||
void carla_zeroChar(char* const data, const std::size_t numChars) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(data != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(numChars > 0,); | |||
@@ -376,7 +376,7 @@ void carla_zeroStruct(T& structure) noexcept | |||
*/ | |||
template <typename T> | |||
static inline | |||
void carla_zeroStruct(T* const structure, const size_t count) noexcept | |||
void carla_zeroStruct(T* const structure, const std::size_t count) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(structure != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(count > 0,); | |||
@@ -399,7 +399,7 @@ void carla_copyStruct(T& struct1, const T& struct2) noexcept | |||
*/ | |||
template <typename T> | |||
static inline | |||
void carla_copyStruct(T* const struct1, const T* const struct2, const size_t count) noexcept | |||
void carla_copyStruct(T* const struct1, const T* const struct2, const std::size_t count) noexcept | |||
{ | |||
CARLA_SAFE_ASSERT_RETURN(struct1 != nullptr,); | |||
CARLA_SAFE_ASSERT_RETURN(struct2 != nullptr,); | |||