Remove C++11'ism
[ardour.git] / libs / ardour / ardour / vst_types.h
index 5e97427d9b745145dd3622a2cc3ee795e931ce2b..7bce34f05a22c0129d7461165215050314065cc0 100644 (file)
 #ifndef __ardour_vst_types_h__
 #define __ardour_vst_types_h__
 
-struct _VSTKey
+#include <pthread.h>
+#include "ardour/libardour_visibility.h"
+#include "ardour/vestige/vestige.h"
+
+struct LIBARDOUR_API _VSTKey
 {
        /** virtual-key code, or 0 if this _VSTFXKey is a `character' key */
        int special;
@@ -30,4 +34,113 @@ struct _VSTKey
 
 typedef struct _VSTKey VSTKey;
 
+struct LIBARDOUR_API _VSTInfo
+{
+       char  *name;
+       char  *creator;
+       int    UniqueID;
+       char  *Category;
+
+       int    numInputs;
+       int    numOutputs;
+       int    numParams;
+
+       int    wantMidi;
+       int    wantEvents;
+       int    hasEditor;
+       int    isInstrument; // still unused
+       int    canProcessReplacing;
+
+       char** ParamNames;
+       char** ParamLabels;
+};
+
+typedef struct _VSTInfo VSTInfo;
+
+typedef AEffect * (* main_entry_t) (audioMasterCallback);
+
+struct LIBARDOUR_API _VSTHandle
+{
+       void*        dll;
+       char*        name;
+       char*        path;
+
+       main_entry_t main_entry;
+
+       int          plugincnt;
+#ifdef MACVST_SUPPORT
+       int32_t      res_file_id;
+#endif
+};
+
+typedef struct _VSTHandle VSTHandle;
+
+struct LIBARDOUR_API _VSTState
+{
+       AEffect*    plugin;
+       VSTHandle*  handle;
+       audioMasterCallback amc;
+
+       void*       gtk_window_parent;
+       int         xid;                     ///< X11 XWindow (wine + lxvst)
+
+       /* LXVST/X11 */
+       int         linux_window;            ///< The plugin's parent X11 XWindow
+       int         linux_plugin_ui_window;  ///< The ID of the plugin UI window created by the plugin
+       void  (* eventProc) (void * event);  ///< X11 UI _XEventProc
+
+       /* Windows */
+       void*       windows_window;
+
+
+       int width;
+       int height;
+       int wantIdle;
+
+       int voffset;
+       int hoffset;
+       int gui_shown;
+       int destroy;
+       int vst_version;
+       int has_editor;
+
+       int     program_set_without_editor;
+       int     want_program;
+       int     want_chunk;
+       int     n_pending_keys;
+       unsigned char* wanted_chunk;
+       int     wanted_chunk_size;
+       float*  want_params;
+       float*  set_params;
+
+       VSTKey  pending_keys[16];
+
+       int     dispatcher_wantcall;
+       int     dispatcher_opcode;
+       int     dispatcher_index;
+       int     dispatcher_val;
+       void*   dispatcher_ptr;
+       float   dispatcher_opt;
+       int     dispatcher_retval;
+
+       struct _VSTState* next;
+       pthread_mutex_t   lock;
+       pthread_mutex_t   state_lock;
+       pthread_cond_t    window_status_change;
+       pthread_cond_t    plugin_dispatcher_called;
+       pthread_cond_t    window_created;
+       int               been_activated;
+};
+
+typedef struct _VSTState VSTState;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+LIBARDOUR_API extern void vststate_init (VSTState* state);
+LIBARDOUR_API extern void vststate_maybe_set_program (VSTState* state);
+#ifdef __cplusplus
+}
+#endif
+
 #endif