Browse Source

Forgot to add files

tags/1.9.4
falkTX 11 years ago
parent
commit
c6158ac752
4 changed files with 2336 additions and 0 deletions
  1. +1327
    -0
      source/backend/CarlaBackend.h
  2. +752
    -0
      source/backend/CarlaHost.h
  3. +230
    -0
      source/includes/CarlaDefines.h
  4. +27
    -0
      source/tests/ansi-pedantic-test.c

+ 1327
- 0
source/backend/CarlaBackend.h
File diff suppressed because it is too large
View File


+ 752
- 0
source/backend/CarlaHost.h View File

@@ -0,0 +1,752 @@
/*
* Carla Host API
* Copyright (C) 2011-2013 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
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#ifndef CARLA_HOST_HPP_INCLUDED
#define CARLA_HOST_HPP_INCLUDED

#include "CarlaBackend.hpp"

/*!
* @defgroup CarlaHostAPI Carla Host API
*
* The Carla Host API.
*
* This API makes it possible to use the Carla Backend in a Host application.\n
* All functions are C-compatible, making it possible to use this API in non-C++ hosts.
*
* None of the returned values in this API calls need to be deleted or free'd.\n
* When a function fails (returns false or NULL), use carla_get_last_error() to find out what went wrong.
*
* @{
*/

/*!
* @defgroup HelperTypedefs Helper typedefs
*
* Basic typedefs to help make code cleaner.
* @{
*/
typedef CarlaBackend::BinaryType CarlaBinaryType;
typedef CarlaBackend::PluginType CarlaPluginType;
typedef CarlaBackend::PluginCategory CarlaPluginCategory;
typedef CarlaBackend::EngineCallbackFunc CarlaEngineCallbackFunc;
typedef CarlaBackend::EngineCallbackOpcode CarlaEngineCallbackOpcode;
typedef CarlaBackend::EngineOption CarlaEngineOption;
typedef CarlaBackend::FileCallbackFunc CarlaFileCallbackFunc;
typedef CarlaBackend::FileCallbackOpcode CarlaFileCallbackOpcode;
typedef CarlaBackend::ParameterData CarlaParameterData;
typedef CarlaBackend::ParameterRanges CarlaParameterRanges;
typedef CarlaBackend::MidiProgramData CarlaMidiProgramData;
typedef CarlaBackend::CustomData CarlaCustomData;
typedef CarlaBackend::EngineDriverDeviceInfo CarlaEngineDriverDeviceInfo;
/**@}*/

/*!
* Plugin information.
* \see carla_get_plugin_info()
*/
struct CarlaPluginInfo {
CarlaPluginType type;
CarlaPluginCategory category;
unsigned int hints;
unsigned int optionsAvailable;
unsigned int optionsEnabled;
const char* binary;
const char* name;
const char* label;
const char* maker;
const char* copyright;
const char* iconName;
int patchbayClientId;
long uniqueId;

#ifndef DOXYGEN
CarlaPluginInfo()
: type(CarlaBackend::PLUGIN_NONE),
category(CarlaBackend::PLUGIN_CATEGORY_NONE),
hints(0x0),
optionsAvailable(0x0),
optionsEnabled(0x0),
binary(nullptr),
name(nullptr),
label(nullptr),
maker(nullptr),
copyright(nullptr),
iconName(nullptr),
patchbayClientId(0),
uniqueId(0) {}

~CarlaPluginInfo()
{
if (label != nullptr)
{
delete[] label;
label = nullptr;
}
if (maker != nullptr)
{
delete[] maker;
maker = nullptr;
}
if (copyright != nullptr)
{
delete[] copyright;
copyright = nullptr;
}
}
#endif
};

/*!
* Native plugin information.
* \see carla_get_internal_plugin_info()
*/
struct CarlaNativePluginInfo {
CarlaPluginCategory category;
unsigned int hints;
uint32_t audioIns;
uint32_t audioOuts;
uint32_t midiIns;
uint32_t midiOuts;
uint32_t parameterIns;
uint32_t parameterOuts;
const char* name;
const char* label;
const char* maker;
const char* copyright;

#ifndef DOXYGEN
CarlaNativePluginInfo()
: category(CarlaBackend::PLUGIN_CATEGORY_NONE),
hints(0x0),
audioIns(0),
audioOuts(0),
midiIns(0),
midiOuts(0),
parameterIns(0),
parameterOuts(0),
name(nullptr),
label(nullptr),
maker(nullptr),
copyright(nullptr) {}
#endif
};

/*!
* Port count information, used for Audio and MIDI ports and parameters.
* \see carla_get_audio_port_count_info()
* \see carla_get_midi_port_count_info()
* \see carla_get_parameter_count_info()
*/
struct CarlaPortCountInfo {
uint32_t ins;
uint32_t outs;
uint32_t total;

#ifndef DOXYGEN
CarlaPortCountInfo()
: ins(0),
outs(0),
total(0) {}
#endif
};

/*!
* Parameter information.
* \see carla_get_parameter_info()
*/
struct CarlaParameterInfo {
const char* name;
const char* symbol;
const char* unit;
uint32_t scalePointCount;

#ifndef DOXYGEN
CarlaParameterInfo()
: name(nullptr),
symbol(nullptr),
unit(nullptr),
scalePointCount(0) {}

~CarlaParameterInfo()
{
if (name != nullptr)
{
delete[] name;
name = nullptr;
}
if (symbol != nullptr)
{
delete[] symbol;
symbol = nullptr;
}
if (unit != nullptr)
{
delete[] unit;
unit = nullptr;
}
}
#endif
};

/*!
* Parameter scale point information.
* \see carla_get_parameter_scalepoint_info()
*/
struct CarlaScalePointInfo {
float value;
const char* label;

#ifndef DOXYGEN
CarlaScalePointInfo()
: value(0.0f),
label(nullptr) {}

~CarlaScalePointInfo()
{
if (label != nullptr)
{
delete[] label;
label = nullptr;
}
}
#endif
};

/*!
* Transport information.
* \see carla_get_transport_info()
*/
struct CarlaTransportInfo {
bool playing;
uint64_t frame;
int32_t bar;
int32_t beat;
int32_t tick;
double bpm;

#ifndef DOXYGEN
CarlaTransportInfo()
: playing(false),
frame(0),
bar(0),
beat(0),
tick(0),
bpm(0.0) {}
#endif
};

/*!
* Get the complete license text of used third-party code and features.\n
* Returned string is in basic html format.
*/
CARLA_EXPORT const char* carla_get_extended_license_text();

/*!
* Get the supported file types in carla_load_filename().\n
* Returned string uses this syntax:
* \code
* "*.ext1;*.ext2;*.ext3"
* \endcode
*/
CARLA_EXPORT const char* carla_get_supported_file_types();

/*!
* Get how many engine drivers are available to use.
*/
CARLA_EXPORT unsigned int carla_get_engine_driver_count();

/*!
* Get the engine driver info for \a index.
*/
CARLA_EXPORT const char* carla_get_engine_driver_name(unsigned int index);

/*!
* Get the device names of the engine driver at \a index.
*/
CARLA_EXPORT const char* const* carla_get_engine_driver_device_names(unsigned int index);

/*!
* Get a device driver info.
*/
CARLA_EXPORT const CarlaEngineDriverDeviceInfo* carla_get_engine_driver_device_info(unsigned int index, const char* driverName);

/*!
* Get how many internal plugins are available to use.
*/
CARLA_EXPORT unsigned int carla_get_internal_plugin_count();

/*!
* Get information about the internal plugin \a internalPluginId.
*/
CARLA_EXPORT const CarlaNativePluginInfo* carla_get_internal_plugin_info(unsigned int internalPluginId);

/*!
* Initialize the engine with driver \a driverName, using \a clientName for its internal name.\n
* Make sure to call carla_engine_idle() at regular intervals afterwards.
*/
CARLA_EXPORT bool carla_engine_init(const char* driverName, const char* clientName);

#ifdef BUILD_BRIDGE
/*!
* Initialize the engine in bridged mode.
*/
CARLA_EXPORT bool carla_engine_init_bridge(const char* audioBaseName, const char* controlBaseName, const char* clientName);
#endif

/*!
* Close the running engine.\n
* This function always closes the engine even if it returns false.\n
* When false is returned, something went wrong when closing the engine, but it was still closed nonetheless.
*/
CARLA_EXPORT bool carla_engine_close();

/*!
* Idle the running engine.\n
* \note This should never be called if the engine is not running.
*/
CARLA_EXPORT void carla_engine_idle();

/*!
* Check if the engine is running.
*/
CARLA_EXPORT bool carla_is_engine_running();

/*!
* Tell the engine it's about to close.\n
* This is used to prevent the engine thread(s) from reactivating.
*/
CARLA_EXPORT void carla_set_engine_about_to_close();

/*!
* Set the engine callback function to \a func.
* Use \a ptr to pass a custom pointer to the callback.
*/
CARLA_EXPORT void carla_set_engine_callback(CarlaEngineCallbackFunc func, void* ptr);

/*!
* Set the engine option \a option.\n
* With the exception of OPTION_PROCESS_NAME, OPTION_TRANSPORT_MODE and OPTION_PATH_*,
* this function should not be called when the engine is running.
*/
CARLA_EXPORT void carla_set_engine_option(CarlaEngineOption option, int value, const char* valueStr);

/*!
* Set the file callback function to \a func.
* Use \a ptr to pass a custom pointer to the callback.
*/
CARLA_EXPORT void carla_set_file_callback(CarlaFileCallbackFunc func, void* ptr);

/*!
* Load \a filename of any type.\n
* This will try to load a generic file as a plugin,
* either by direct handling (GIG, SF2 and SFZ) or by using an internal plugin (like Audio and MIDI).
* \see carla_get_supported_file_types()
*/
CARLA_EXPORT bool carla_load_filename(const char* filename);

/*!
* Load \a filename project file.\n
* (project files have *.carxp extension)
* \note Already loaded plugins are not removed; call carla_remove_all_plugins() first if needed.
*/
CARLA_EXPORT bool carla_load_project(const char* filename);

/*!
* Save current project to \a filename.\n
* (project files have *.carxp extension)
*/
CARLA_EXPORT bool carla_save_project(const char* filename);

/*!
* Connect patchbay ports \a portA and \a portB.
*/
CARLA_EXPORT bool carla_patchbay_connect(int portA, int portB);

/*!
* Disconnect patchbay connection \a connectionId.
*/
CARLA_EXPORT bool carla_patchbay_disconnect(int connectionId);

/*!
* Force the engine to resend all patchbay clients, ports and connections again.
*/
CARLA_EXPORT bool carla_patchbay_refresh();

/*!
* Start playback of the engine transport.
*/
CARLA_EXPORT void carla_transport_play();

/*!
* Pause the engine transport.
*/
CARLA_EXPORT void carla_transport_pause();

/*!
* Relocate the engine transport to \a frames.
*/
CARLA_EXPORT void carla_transport_relocate(uint32_t frames);

/*!
* Get the current transport frame.
*/
CARLA_EXPORT uint64_t carla_get_current_transport_frame();

/*!
* Get the engine transport information.
*/
CARLA_EXPORT const CarlaTransportInfo* carla_get_transport_info();

/*!
* Add new plugin.\n
* If you don't know the binary type, use BINARY_NATIVE.
*/
CARLA_EXPORT bool carla_add_plugin(CarlaBinaryType btype, CarlaPluginType ptype, const char* filename, const char* name, const char* label, const void* extraPtr);

/*!
* Remove plugin with id \a pluginId.
*/
CARLA_EXPORT bool carla_remove_plugin(unsigned int pluginId);

/*!
* Remove all plugins.
*/
CARLA_EXPORT bool carla_remove_all_plugins();

/*!
* Rename plugin with id \a pluginId to \a newName. \n
* Returns the new name, or NULL if the operation failed.
*/
CARLA_EXPORT const char* carla_rename_plugin(unsigned int pluginId, const char* newName);

/*!
* Clone plugin with id \a pluginId.
*/
CARLA_EXPORT bool carla_clone_plugin(unsigned int pluginId);

/*!
* Prepare replace of plugin with id \a pluginId. \n
* The next call to carla_add_plugin() will use this id, replacing the current plugin.
* \note This function requires carla_add_plugin() to be called afterwards as soon as possible.
*/
CARLA_EXPORT bool carla_replace_plugin(unsigned int pluginId);

/*!
* Switch plugins with id \a pluginIdA and \a pluginIdB.
*/
CARLA_EXPORT bool carla_switch_plugins(unsigned int pluginIdA, unsigned int pluginIdB);

/*!
* Load the plugin state at \a filename.\n
* (Plugin states have *.carxs extension).
* \see carla_save_plugin_state()
*/
CARLA_EXPORT bool carla_load_plugin_state(unsigned int pluginId, const char* filename);

/*!
* Load the plugin state at \a filename.\n
* (Plugin states have *.carxs extension).
* \see carla_load_plugin_state()
*/
CARLA_EXPORT bool carla_save_plugin_state(unsigned int pluginId, const char* filename);

/*!
* Get a plugin's information.
*/
CARLA_EXPORT const CarlaPluginInfo* carla_get_plugin_info(unsigned int pluginId);

/*!
* Get a plugin's audio port count information.
*/
CARLA_EXPORT const CarlaPortCountInfo* carla_get_audio_port_count_info(unsigned int pluginId);

/*!
* Get a plugin's midi port count information.
*/
CARLA_EXPORT const CarlaPortCountInfo* carla_get_midi_port_count_info(unsigned int pluginId);

/*!
* Get a plugin's parameter count information.
*/
CARLA_EXPORT const CarlaPortCountInfo* carla_get_parameter_count_info(unsigned int pluginId);

/*!
* * Get a plugin's parameter information.
*/
CARLA_EXPORT const CarlaParameterInfo* carla_get_parameter_info(unsigned int pluginId, uint32_t parameterId);

/*!
* Get a plugin's parameter scale point information.
*/
CARLA_EXPORT const CarlaScalePointInfo* carla_get_parameter_scalepoint_info(unsigned int pluginId, uint32_t parameterId, uint32_t scalePointId);

/*!
* Get a plugin's parameter data.
*/
CARLA_EXPORT const CarlaParameterData* carla_get_parameter_data(unsigned int pluginId, uint32_t parameterId);

/*!
* Get a plugin's parameter ranges.
*/
CARLA_EXPORT const CarlaParameterRanges* carla_get_parameter_ranges(unsigned int pluginId, uint32_t parameterId);

/*!
* Get a plugin's midi program data.
*/
CARLA_EXPORT const CarlaMidiProgramData* carla_get_midi_program_data(unsigned int pluginId, uint32_t midiProgramId);

/*!
* Get a plugin's custom data.
*/
CARLA_EXPORT const CarlaCustomData* carla_get_custom_data(unsigned int pluginId, uint32_t customDataId);

/*!
* Get a plugin's chunk data.
*/
CARLA_EXPORT const char* carla_get_chunk_data(unsigned int pluginId);

/*!
* Get how many parameters a plugin has.
*/
CARLA_EXPORT uint32_t carla_get_parameter_count(unsigned int pluginId);

/*!
* Get how many programs a plugin has.
*/
CARLA_EXPORT uint32_t carla_get_program_count(unsigned int pluginId);

/*!
* Get how many midi programs a plugin has.
*/
CARLA_EXPORT uint32_t carla_get_midi_program_count(unsigned int pluginId);

/*!
* Get how many custom data sets a plugin has.
* \see carla_prepare_for_save()
*/
CARLA_EXPORT uint32_t carla_get_custom_data_count(unsigned int pluginId);

/*!
* Get a plugin's custom parameter text display.
* \see PARAMETER_USES_CUSTOM_TEXT
*/
CARLA_EXPORT const char* carla_get_parameter_text(unsigned int pluginId, uint32_t parameterId);

/*!
* Get a plugin's program name.
*/
CARLA_EXPORT const char* carla_get_program_name(unsigned int pluginId, uint32_t programId);

/*!
* Get a plugin's midi program name.
*/
CARLA_EXPORT const char* carla_get_midi_program_name(unsigned int pluginId, uint32_t midiProgramId);

/*!
* Get the plugin's real name.\n
* This is the name the plugin uses to identify itself; may not be unique.
*/
CARLA_EXPORT const char* carla_get_real_plugin_name(unsigned int pluginId);

/*!
* Get the current plugin's program index.
*/
CARLA_EXPORT int32_t carla_get_current_program_index(unsigned int pluginId);

/*!
* Get the current plugin's midi program index.
*/
CARLA_EXPORT int32_t carla_get_current_midi_program_index(unsigned int pluginId);

/*!
* Get a plugin's default parameter value.
*/
CARLA_EXPORT float carla_get_default_parameter_value(unsigned int pluginId, uint32_t parameterId);

/*!
* Get a plugin's current parameter value.
*/
CARLA_EXPORT float carla_get_current_parameter_value(unsigned int pluginId, uint32_t parameterId);

/*!
* Get a plugin's input peak value.\n
* \a portId must only be either 1 or 2
*/
CARLA_EXPORT float carla_get_input_peak_value(unsigned int pluginId, unsigned short portId);

/*!
* Get a plugin's output peak value.\n
* \a portId must only be either 1 or 2
*/
CARLA_EXPORT float carla_get_output_peak_value(unsigned int pluginId, unsigned short portId);

/*!
* Enable a plugin's option.
* \see PluginOptions
*/
CARLA_EXPORT void carla_set_option(unsigned int pluginId, unsigned int option, bool yesNo);

/*!
* Enable or disable a plugin according to \a onOff.
*/
CARLA_EXPORT void carla_set_active(unsigned int pluginId, bool onOff);

#ifndef BUILD_BRIDGE
/*!
* Change a plugin's internal drywet value to \a value.
*/
CARLA_EXPORT void carla_set_drywet(unsigned int pluginId, float value);

/*!
* Change a plugin's internal volume value to \a value.
*/
CARLA_EXPORT void carla_set_volume(unsigned int pluginId, float value);

/*!
* Change a plugin's internal balance-left value to \a value.
*/
CARLA_EXPORT void carla_set_balance_left(unsigned int pluginId, float value);

/*!
* Change a plugin's internal balance-right value to \a value.
*/
CARLA_EXPORT void carla_set_balance_right(unsigned int pluginId, float value);

/*!
* Change a plugin's internal panning value to \a value.
*/
CARLA_EXPORT void carla_set_panning(unsigned int pluginId, float value);
#endif

/*!
* Change a plugin's internal control channel to \a channel.
*/
CARLA_EXPORT void carla_set_ctrl_channel(unsigned int pluginId, int8_t channel);

/*!
* Set the plugin's parameter \a parameterId to \a value.
*/
CARLA_EXPORT void carla_set_parameter_value(unsigned int pluginId, uint32_t parameterId, float value);

#ifndef BUILD_BRIDGE
/*!
* Set the plugin's parameter \a parameterId midi channel to \a channel.
*/
CARLA_EXPORT void carla_set_parameter_midi_channel(unsigned int pluginId, uint32_t parameterId, uint8_t channel);

/*!
* Set the plugin's parameter \a parameterId midi cc to \a cc.
*/
CARLA_EXPORT void carla_set_parameter_midi_cc(unsigned int pluginId, uint32_t parameterId, int16_t cc);
#endif

/*!
* Change a plugin's program to \a programId.
*/
CARLA_EXPORT void carla_set_program(unsigned int pluginId, uint32_t programId);

/*!
* Change a plugin's midi program to \a midiProgramId.
*/
CARLA_EXPORT void carla_set_midi_program(unsigned int pluginId, uint32_t midiProgramId);

/*!
* Set a plugin's custom data set.
*/
CARLA_EXPORT void carla_set_custom_data(unsigned int pluginId, const char* type, const char* key, const char* value);

/*!
* Set a plugin's chunk data.
*/
CARLA_EXPORT void carla_set_chunk_data(unsigned int pluginId, const char* chunkData);

/*!
* Tell a plugin to prepare for save.\n
* This should be called before carla_get_custom_data_count().
*/
CARLA_EXPORT void carla_prepare_for_save(unsigned int pluginId);

#ifndef BUILD_BRIDGE
/*!
* Send a single note of a plugin.\n
* If \a note if 0, note-off is sent; note-on otherwise.
*/
CARLA_EXPORT void carla_send_midi_note(unsigned int pluginId, uint8_t channel, uint8_t note, uint8_t velocity);
#endif

/*!
* Tell a plugin to show its own custom UI.
* \see PLUGIN_HAS_CUSTOM_UI
*/
CARLA_EXPORT void carla_show_custom_ui(unsigned int pluginId, bool yesNo);

/*!
* Get the current engine buffer size.
*/
CARLA_EXPORT uint32_t carla_get_buffer_size();

/*!
* Get the current engine sample rate.
*/
CARLA_EXPORT double carla_get_sample_rate();

/*!
* Get the last error.
*/
CARLA_EXPORT const char* carla_get_last_error();

/*!
* Get the current engine OSC URL (TCP).
*/
CARLA_EXPORT const char* carla_get_host_osc_url_tcp();

/*!
* Get the current engine OSC URL (UDP).
*/
CARLA_EXPORT const char* carla_get_host_osc_url_udp();

/*!
* Send NSM announce message.
*/
CARLA_EXPORT void carla_nsm_announce(const char* url, const char* appName, int pid);

/*!
* Ready for handling NSM messages.
*/
CARLA_EXPORT void carla_nsm_ready();

/*!
* Reply to NSM open message.
* \see CALLBACK_NSM_OPEN
*/
CARLA_EXPORT void carla_nsm_reply_open();

/*!
* Reply to NSM save message.
* \see CALLBACK_NSM_SAVE
*/
CARLA_EXPORT void carla_nsm_reply_save();

#ifdef BUILD_BRIDGE
using CarlaBackend::CarlaEngine;
CARLA_EXPORT CarlaEngine* carla_get_standalone_engine();
#endif

/**@}*/

#endif // CARLA_HOST_HPP_INCLUDED

+ 230
- 0
source/includes/CarlaDefines.h View File

@@ -0,0 +1,230 @@
/*
* Carla common defines
* Copyright (C) 2011-2013 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
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#ifndef CARLA_DEFINES_HPP_INCLUDED
#define CARLA_DEFINES_HPP_INCLUDED

/* IDE Helper */
#ifndef REAL_BUILD
# include "config.h"
#endif

/* Set Version */
#define CARLA_VERSION_HEX 0x01091
#define CARLA_VERSION_STRING "1.9.1"

/* Check OS */
#if defined(WIN64) || defined(_WIN64) || defined(__WIN64__)
# define CARLA_OS_WIN64
#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
# define CARLA_OS_WIN32
#elif defined(__APPLE__)
# define CARLA_OS_MAC
#elif defined(__HAIKU__)
# define CARLA_OS_HAIKU
#elif defined(__linux__) || defined(__linux)
# define CARLA_OS_LINUX
#else
# warning Unsupported platform!
#endif

#if defined(CARLA_OS_WIN32) || defined(CARLA_OS_WIN64)
# define CARLA_OS_WIN
#elif ! defined(CARLA_OS_HAIKU)
# define CARLA_OS_UNIX
#endif

/* Check for C++11 support */
#if defined(HAVE_CPP11_SUPPORT)
# define CARLA_PROPER_CPP11_SUPPORT
#elif defined(__GNUC__) && defined(__cplusplus)
# if (__cplusplus >= 201103L || defined(__GXX_EXPERIMENTAL_CXX0X__)) && (__GNUC__ * 100 + __GNUC_MINOR__) >= 405
# define CARLA_PROPER_CPP11_SUPPORT
# if (__GNUC__ * 100 + __GNUC_MINOR__) < 407
# define override // gcc4.7+ only
# define final // gcc4.7+ only
# endif
# endif
#endif

#if defined(__cplusplus) && !defined(CARLA_PROPER_CPP11_SUPPORT)
# define override
# define final
# define noexcept throw()
# define nullptr (0)
#endif

/* Common includes */
#ifdef CARLA_OS_WIN
# include <winsock2.h>
# include <windows.h>
#else
# include <unistd.h>
# ifndef __cdecl
# define __cdecl
# endif
#endif

#ifndef __cplusplus
# include <stdbool.h>
#endif

/* Define various string format types */
#if defined(CARLA_OS_WIN64)
# define P_INT64 "%I64i"
# define P_INTPTR "%I64i"
# define P_UINTPTR "%I64x"
# define P_SIZE "%I64u"
#elif defined(CARLA_OS_WIN32)
# define P_INT64 "%I64i"
# define P_INTPTR "%i"
# define P_UINTPTR "%x"
# define P_SIZE "%u"
#elif __WORDSIZE == 64
# define P_INT64 "%li"
# define P_INTPTR "%li"
# define P_UINTPTR "%lx"
# define P_SIZE "%lu"
#else
# define P_INT64 "%lli"
# define P_INTPTR "%i"
# define P_UINTPTR "%x"
# define P_SIZE "%u"
#endif

/* Define BINARY_NATIVE */
#if defined(CARLA_OS_HAIKU) || defined(CARLA_OS_UNIX)
# if defined (__LP64__) || defined (_LP64)
# define BINARY_NATIVE BINARY_POSIX64
# else
# define BINARY_NATIVE BINARY_POSIX32
# endif
#elif defined(CARLA_OS_WIN)
# ifdef CARLA_OS_WIN64
# define BINARY_NATIVE BINARY_WIN64
# else
# define BINARY_NATIVE BINARY_WIN32
# endif
#else
# warning Unknown binary native
# define BINARY_NATIVE BINARY_OTHER
#endif

/* Define CARLA_ASSERT* */
#if defined(CARLA_NO_ASSERTS)
# define CARLA_ASSERT(cond)
# define CARLA_ASSERT_INT(cond, value)
# define CARLA_ASSERT_INT2(cond, v1, v2)
#elif defined(NDEBUG)
# define CARLA_ASSERT CARLA_SAFE_ASSERT
# define CARLA_ASSERT_INT CARLA_SAFE_ASSERT_INT
# define CARLA_ASSERT_INT2 CARLA_SAFE_ASSERT_INT2
#else
# define CARLA_ASSERT(cond) assert(cond)
# define CARLA_ASSERT_INT(cond, value) assert(cond)
# define CARLA_ASSERT_INT2(cond, v1, v2) assert(cond)
#endif

/* Define CARLA_SAFE_ASSERT* */
#define CARLA_SAFE_ASSERT(cond) if (cond) pass(); else carla_safe_assert (#cond, __FILE__, __LINE__);
#define CARLA_SAFE_ASSERT_INT(cond, value) if (cond) pass(); else carla_safe_assert_int (#cond, __FILE__, __LINE__, value);
#define CARLA_SAFE_ASSERT_INT2(cond, v1, v2) if (cond) pass(); else carla_safe_assert_int2(#cond, __FILE__, __LINE__, v1, v2);

#define CARLA_SAFE_ASSERT_BREAK(cond) if (cond) pass(); else { carla_safe_assert(#cond, __FILE__, __LINE__); break; }
#define CARLA_SAFE_ASSERT_CONTINUE(cond) if (cond) pass(); else { carla_safe_assert(#cond, __FILE__, __LINE__); continue; }
#define CARLA_SAFE_ASSERT_RETURN(cond, ret) if (cond) pass(); else { carla_safe_assert(#cond, __FILE__, __LINE__); return ret; }

/* Define CARLA_DECLARE_NON_COPY_CLASS */
#ifdef CARLA_PROPER_CPP11_SUPPORT
# define CARLA_DECLARE_NON_COPY_CLASS(ClassName) \
private: \
ClassName(ClassName&) = delete; \
ClassName(const ClassName&) = delete; \
ClassName& operator=(ClassName&) = delete; \
ClassName& operator=(const ClassName&) = delete;
#else
# define CARLA_DECLARE_NON_COPY_CLASS(ClassName) \
private: \
ClassName(ClassName&); \
ClassName(const ClassName&); \
ClassName& operator=(ClassName&); \
ClassName& operator=(const ClassName&);
#endif

/* Define CARLA_DECLARE_NON_COPY_STRUCT */
#ifdef CARLA_PROPER_CPP11_SUPPORT
# define CARLA_DECLARE_NON_COPY_STRUCT(StructName) \
StructName(StructName&) = delete; \
StructName(const StructName&) = delete; \
StructName& operator=(StructName&) = delete; \
StructName& operator=(const StructName&) = delete;
#else
# define CARLA_DECLARE_NON_COPY_STRUCT(StructName)
#endif

/* Define CARLA_PREVENT_HEAP_ALLOCATION */
#ifdef CARLA_PROPER_CPP11_SUPPORT
# define CARLA_PREVENT_HEAP_ALLOCATION \
private: \
static void* operator new(size_t) = delete; \
static void operator delete(void*) = delete;
#else
# define CARLA_PREVENT_HEAP_ALLOCATION \
private: \
static void* operator new(size_t); \
static void operator delete(void*);
#endif

/* Define CARLA_EXPORT */
#ifdef BUILD_BRIDGE
# define CARLA_EXPORT extern "C"
#else
# if defined(CARLA_OS_WIN) && ! defined(__WINE__)
# define CARLA_EXPORT extern "C" __declspec (dllexport)
# else
# define CARLA_EXPORT extern "C" __attribute__ ((visibility("default")))
# endif
#endif

/* Define PRE/POST_PACKED_STRUCTURE */
#if defined(__GNUC__)
# define PRE_PACKED_STRUCTURE
# define POST_PACKED_STRUCTURE __attribute__((__packed__))
#elif defined(_MSC_VER)
# define PRE_PACKED_STRUCTURE1 __pragma(pack(push,1))
# define PRE_PACKED_STRUCTURE PRE_PACKED_STRUCTURE1
# define POST_PACKED_STRUCTURE ;__pragma(pack(pop))
#else
# define PRE_PACKED_STRUCTURE
# define POST_PACKED_STRUCTURE
#endif

/* Define OS_SEP */
#ifdef CARLA_OS_WIN
# define OS_SEP '\\'
# define OS_SEP_STR "\\"
#else
# define OS_SEP '/'
# define OS_SEP_STR "/"
#endif

/* Useful typedefs */
typedef unsigned long int ulong;
typedef unsigned short int ushort;
typedef unsigned int uint;

#endif /* CARLA_DEFINES_HPP_INCLUDED */

+ 27
- 0
source/tests/ansi-pedantic-test.c View File

@@ -0,0 +1,27 @@
/*
* ANSI pedantic test for the Carla Backend API
* Copyright (C) 2013 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
* published by the Free Software Foundation; either version 2 of
* the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/

#include "CarlaBackend.h"

int main(int argc, char* argv[])
{
return 0;

/* unused */
(void)argc;
(void)argv;
}

Loading…
Cancel
Save