Suil  0.4.4
suil.h
00001 /*
00002   Copyright 2011 David Robillard <http://drobilla.net>
00003 
00004   Permission to use, copy, modify, and/or distribute this software for any
00005   purpose with or without fee is hereby granted, provided that the above
00006   copyright notice and this permission notice appear in all copies.
00007 
00008   THIS SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
00009   WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
00010   MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
00011   ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
00012   WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00013   ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
00014   OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
00015 */
00016 
00021 #ifndef SUIL_SUIL_H
00022 #define SUIL_SUIL_H
00023 
00024 #include <stdbool.h>
00025 #include <stdint.h>
00026 
00027 #include "lv2/lv2plug.in/ns/lv2core/lv2.h"
00028 
00029 #ifdef SUIL_SHARED
00030 #    ifdef __WIN32__
00031 #        define SUIL_LIB_IMPORT __declspec(dllimport)
00032 #        define SUIL_LIB_EXPORT __declspec(dllexport)
00033 #    else
00034 #        define SUIL_LIB_IMPORT __attribute__((visibility("default")))
00035 #        define SUIL_LIB_EXPORT __attribute__((visibility("default")))
00036 #    endif
00037 #    ifdef SUIL_INTERNAL
00038 #        define SUIL_API SUIL_LIB_EXPORT
00039 #    else
00040 #        define SUIL_API SUIL_LIB_IMPORT
00041 #    endif
00042 #else
00043 #    define SUIL_API
00044 #endif
00045 
00046 #ifdef __cplusplus
00047 extern "C" {
00048 #endif
00049 
00063 typedef struct SuilHostImpl SuilHost;
00064 
00066 typedef struct SuilInstanceImpl SuilInstance;
00067 
00069 typedef void* SuilWidget;
00070 
00079 typedef void* SuilController;
00080 
00082 typedef void (*SuilPortWriteFunc)(SuilController controller,
00083                                   uint32_t       port_index,
00084                                   uint32_t       buffer_size,
00085                                   uint32_t       protocol,
00086                                   void const*    buffer);
00087 
00089 typedef uint32_t (*SuilPortIndexFunc)(SuilController controller,
00090                                       const char*    port_symbol);
00091 
00093 typedef uint32_t (*SuilPortSubscribeFunc)(SuilController            controller,
00094                                           uint32_t                  port_index,
00095                                           uint32_t                  protocol,
00096                                           const LV2_Feature* const* features);
00097 
00098 
00100 typedef uint32_t (*SuilPortUnsubscribeFunc)(SuilController            controller,
00101                                             uint32_t                  port_index,
00102                                             uint32_t                  protocol,
00103                                             const LV2_Feature* const* features);
00104 
00112 SUIL_API
00113 SuilHost*
00114 suil_host_new(SuilPortWriteFunc       write_func,
00115               SuilPortIndexFunc       index_func,
00116               SuilPortSubscribeFunc   subscribe_func,
00117               SuilPortUnsubscribeFunc unsubscribe_func);
00118 
00122 SUIL_API
00123 void
00124 suil_host_free(SuilHost* host);
00125 
00135 SUIL_API
00136 unsigned
00137 suil_ui_supported(const char* host_type_uri,
00138                   const char* ui_type_uri);
00139 
00153 SUIL_API
00154 SuilInstance*
00155 suil_instance_new(SuilHost*                 host,
00156                   SuilController            controller,
00157                   const char*               container_type_uri,
00158                   const char*               plugin_uri,
00159                   const char*               ui_uri,
00160                   const char*               ui_type_uri,
00161                   const char*               ui_bundle_path,
00162                   const char*               ui_binary_path,
00163                   const LV2_Feature* const* features);
00164 
00171 SUIL_API
00172 void
00173 suil_instance_free(SuilInstance* instance);
00174 
00183 SUIL_API
00184 SuilWidget
00185 suil_instance_get_widget(SuilInstance* instance);
00186 
00190 SUIL_API
00191 void
00192 suil_instance_port_event(SuilInstance* instance,
00193                          uint32_t      port_index,
00194                          uint32_t      buffer_size,
00195                          uint32_t      format,
00196                          const void*   buffer);
00197 
00201 SUIL_API
00202 const void*
00203 suil_instance_extension_data(SuilInstance* instance,
00204                              const char*   uri);
00205 
00210 #ifdef __cplusplus
00211 } /* extern "C" */
00212 #endif
00213 
00214 #endif /* SUIL_SUIL_H */