Signed-off-by: falkTX <falktx@falktx.com>pull/375/head
@@ -2962,7 +2962,7 @@ struct dpf_edit_controller : v3_edit_controller_cpp { | |||||
// ---------------------------------------------------------------------------------------------------------------- | // ---------------------------------------------------------------------------------------------------------------- | ||||
// v3_plugin_base | // v3_plugin_base | ||||
static v3_result V3_API initialize(void* const self, v3_plugin_base::v3_funknown** const context) | |||||
static v3_result V3_API initialize(void* const self, v3_funknown** const context) | |||||
{ | { | ||||
dpf_edit_controller* const controller = *static_cast<dpf_edit_controller**>(self); | dpf_edit_controller* const controller = *static_cast<dpf_edit_controller**>(self); | ||||
@@ -3671,7 +3671,7 @@ struct dpf_component : v3_component_cpp { | |||||
// ---------------------------------------------------------------------------------------------------------------- | // ---------------------------------------------------------------------------------------------------------------- | ||||
// v3_plugin_base | // v3_plugin_base | ||||
static v3_result V3_API initialize(void* const self, v3_plugin_base::v3_funknown** const context) | |||||
static v3_result V3_API initialize(void* const self, v3_funknown** const context) | |||||
{ | { | ||||
dpf_component* const component = *static_cast<dpf_component**>(self); | dpf_component* const component = *static_cast<dpf_component**>(self); | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -90,8 +90,9 @@ struct v3_process_setup { | |||||
*/ | */ | ||||
struct v3_param_value_queue { | struct v3_param_value_queue { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_param_id (V3_API* get_param_id)(void* self); | v3_param_id (V3_API* get_param_id)(void* self); | ||||
int32_t (V3_API* get_point_count)(void* self); | int32_t (V3_API* get_point_count)(void* self); | ||||
v3_result (V3_API* get_point)(void* self, int32_t idx, int32_t* sample_offset, double* value); | v3_result (V3_API* get_point)(void* self, int32_t idx, int32_t* sample_offset, double* value); | ||||
@@ -102,8 +103,9 @@ static constexpr const v3_tuid v3_param_value_queue_iid = | |||||
V3_ID(0x01263A18, 0xED074F6F, 0x98C9D356, 0x4686F9BA); | V3_ID(0x01263A18, 0xED074F6F, 0x98C9D356, 0x4686F9BA); | ||||
struct v3_param_changes { | struct v3_param_changes { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
int32_t (V3_API* get_param_count)(void* self); | int32_t (V3_API* get_param_count)(void* self); | ||||
struct v3_param_value_queue** (V3_API* get_param_data)(void* self, int32_t idx); | struct v3_param_value_queue** (V3_API* get_param_data)(void* self, int32_t idx); | ||||
struct v3_param_value_queue** (V3_API* add_param_data)(void* self, v3_param_id* id, int32_t* index); | struct v3_param_value_queue** (V3_API* add_param_data)(void* self, v3_param_id* id, int32_t* index); | ||||
@@ -181,8 +183,9 @@ enum { | |||||
}; | }; | ||||
struct v3_process_context_requirements { | struct v3_process_context_requirements { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
uint32_t (V3_API* get_process_context_requirements)(void* self); | uint32_t (V3_API* get_process_context_requirements)(void* self); | ||||
}; | }; | ||||
@@ -222,8 +225,9 @@ struct v3_process_data { | |||||
*/ | */ | ||||
struct v3_audio_processor { | struct v3_audio_processor { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* set_bus_arrangements)(void* self, v3_speaker_arrangement* inputs, int32_t num_inputs, | v3_result (V3_API* set_bus_arrangements)(void* self, v3_speaker_arrangement* inputs, int32_t num_inputs, | ||||
v3_speaker_arrangement* outputs, int32_t num_outputs); | v3_speaker_arrangement* outputs, int32_t num_outputs); | ||||
v3_result (V3_API* get_bus_arrangement)(void* self, int32_t bus_direction, int32_t idx, v3_speaker_arrangement*); | v3_result (V3_API* get_bus_arrangement)(void* self, int32_t bus_direction, int32_t idx, v3_speaker_arrangement*); | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -24,34 +24,8 @@ | |||||
* deal with C vs C++ differences | * deal with C vs C++ differences | ||||
*/ | */ | ||||
#ifdef __cplusplus | |||||
/** | |||||
* cast object into its proper C++ type. | |||||
* this is needed because `struct v3_funknown;` on a C++ class does not inherit `v3_funknown`'s fields. | |||||
* | |||||
* we can use this as a little helper for keeping both C and C++ compatiblity. | |||||
* specialized templated calls are defined where required | |||||
* (that is, object inherits from something other than `v3_funknown`) | |||||
* | |||||
* example usage: `v3_cpp_obj(obj)->method(obj, args...);` | |||||
*/ | |||||
template<class T> static inline | |||||
constexpr T* v3_cpp_obj(T** obj) | |||||
{ | |||||
/** | |||||
* this ugly piece of code is required due to C++ assuming `reinterpret_cast` by default, | |||||
* but we need everything to be `static_cast` for it to be `constexpr` compatible. | |||||
*/ | |||||
return static_cast<T*>(static_cast<void*>(static_cast<uint8_t*>(static_cast<void*>(*obj)) + sizeof(void*)*3)); | |||||
} | |||||
#else | |||||
# ifndef constexpr | |||||
# define constexpr | |||||
# endif | |||||
#if !defined(__cplusplus) && !defined(constexpr) | |||||
# define constexpr | |||||
#endif | #endif | ||||
/** | /** | ||||
@@ -178,8 +152,9 @@ static constexpr const v3_tuid v3_funknown_iid = | |||||
*/ | */ | ||||
struct v3_plugin_base { | struct v3_plugin_base { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* initialize)(void* self, struct v3_funknown** context); | v3_result (V3_API* initialize)(void* self, struct v3_funknown** context); | ||||
v3_result (V3_API* terminate)(void* self); | v3_result (V3_API* terminate)(void* self); | ||||
}; | }; | ||||
@@ -189,6 +164,27 @@ static constexpr const v3_tuid v3_plugin_base_iid = | |||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
/** | |||||
* cast object into its proper C++ type. | |||||
* this is needed because `struct v3_funknown;` on a C++ class does not inherit `v3_funknown`'s fields. | |||||
* | |||||
* we can use this as a little helper for keeping both C and C++ compatiblity. | |||||
* specialized templated calls are defined where required | |||||
* (that is, object inherits from something other than `v3_funknown`) | |||||
* | |||||
* example usage: `v3_cpp_obj(obj)->method(obj, args...);` | |||||
*/ | |||||
template<class T> static inline | |||||
constexpr T* v3_cpp_obj(T** obj) | |||||
{ | |||||
/** | |||||
* this ugly piece of code is required due to C++ assuming `reinterpret_cast` by default, | |||||
* but we need everything to be `static_cast` for it to be `constexpr` compatible. | |||||
*/ | |||||
return static_cast<T*>(static_cast<void*>(static_cast<uint8_t*>(static_cast<void*>(*obj)) + sizeof(void*)*3)); | |||||
} | |||||
/** | /** | ||||
* helper C++ functions to manually call v3_funknown methods on an object. | * helper C++ functions to manually call v3_funknown methods on an object. | ||||
*/ | */ | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -25,8 +25,9 @@ enum v3_seek_mode { | |||||
}; | }; | ||||
struct v3_bstream { | struct v3_bstream { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API *read)(void* self, void* buffer, int32_t num_bytes, int32_t* bytes_read); | v3_result (V3_API *read)(void* self, void* buffer, int32_t num_bytes, int32_t* bytes_read); | ||||
v3_result (V3_API *write)(void* self, void* buffer, int32_t num_bytes, int32_t* bytes_written); | v3_result (V3_API *write)(void* self, void* buffer, int32_t num_bytes, int32_t* bytes_written); | ||||
v3_result (V3_API *seek)(void* self, int64_t pos, int32_t seek_mode, int64_t* result); | v3_result (V3_API *seek)(void* self, int64_t pos, int32_t seek_mode, int64_t* result); | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -89,8 +89,9 @@ struct v3_bus_info { | |||||
struct v3_routing_info; | struct v3_routing_info; | ||||
struct v3_component { | struct v3_component { | ||||
#ifndef __cplusplus | |||||
struct v3_plugin_base; | struct v3_plugin_base; | ||||
#endif | |||||
v3_result (V3_API *get_controller_class_id)(void* self, v3_tuid class_id); | v3_result (V3_API *get_controller_class_id)(void* self, v3_tuid class_id); | ||||
v3_result (V3_API *set_io_mode)(void* self, int32_t io_mode); | v3_result (V3_API *set_io_mode)(void* self, int32_t io_mode); | ||||
int32_t (V3_API *get_bus_count)(void* self, int32_t media_type, int32_t bus_direction); | int32_t (V3_API *get_bus_count)(void* self, int32_t media_type, int32_t bus_direction); | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -40,8 +40,9 @@ enum { | |||||
}; | }; | ||||
struct v3_component_handler { | struct v3_component_handler { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* begin_edit)(void* self, v3_param_id); | v3_result (V3_API* begin_edit)(void* self, v3_param_id); | ||||
v3_result (V3_API* perform_edit)(void* self, v3_param_id, double value_normalised); | v3_result (V3_API* perform_edit)(void* self, v3_param_id, double value_normalised); | ||||
v3_result (V3_API* end_edit)(void* self, v3_param_id); | v3_result (V3_API* end_edit)(void* self, v3_param_id); | ||||
@@ -77,8 +78,9 @@ struct v3_param_info { | |||||
}; | }; | ||||
struct v3_edit_controller { | struct v3_edit_controller { | ||||
#ifndef __cplusplus | |||||
struct v3_plugin_base; | struct v3_plugin_base; | ||||
#endif | |||||
v3_result (V3_API* set_component_state)(void* self, struct v3_bstream**); | v3_result (V3_API* set_component_state)(void* self, struct v3_bstream**); | ||||
v3_result (V3_API* set_state)(void* self, struct v3_bstream**); | v3_result (V3_API* set_state)(void* self, struct v3_bstream**); | ||||
v3_result (V3_API* get_state)(void* self, struct v3_bstream**); | v3_result (V3_API* get_state)(void* self, struct v3_bstream**); | ||||
@@ -102,8 +104,9 @@ static constexpr const v3_tuid v3_edit_controller_iid = | |||||
*/ | */ | ||||
struct v3_midi_mapping { | struct v3_midi_mapping { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* get_midi_controller_assignment)(void* self, int32_t bus, int16_t channel, int16_t cc, v3_param_id* id); | v3_result (V3_API* get_midi_controller_assignment)(void* self, int32_t bus, int16_t channel, int16_t cc, v3_param_id* id); | ||||
}; | }; | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -132,8 +132,9 @@ struct v3_event { | |||||
*/ | */ | ||||
struct v3_event_list { | struct v3_event_list { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
uint32_t (V3_API* get_event_count)(void* self); | uint32_t (V3_API* get_event_count)(void* self); | ||||
v3_result (V3_API* get_event)(void* self, int32_t idx, struct v3_event* event); | v3_result (V3_API* get_event)(void* self, int32_t idx, struct v3_event* event); | ||||
v3_result (V3_API* add_event)(void* self, struct v3_event* event); | v3_result (V3_API* add_event)(void* self, struct v3_event* event); | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -37,8 +37,9 @@ struct v3_class_info { | |||||
}; | }; | ||||
struct v3_plugin_factory { | struct v3_plugin_factory { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API *get_factory_info)(void* self, struct v3_factory_info*); | v3_result (V3_API *get_factory_info)(void* self, struct v3_factory_info*); | ||||
int32_t (V3_API *num_classes)(void* self); | int32_t (V3_API *num_classes)(void* self); | ||||
v3_result (V3_API *get_class_info)(void* self, int32_t idx, struct v3_class_info*); | v3_result (V3_API *get_class_info)(void* self, int32_t idx, struct v3_class_info*); | ||||
@@ -70,8 +71,9 @@ struct v3_class_info_2 { | |||||
}; | }; | ||||
struct v3_plugin_factory_2 { | struct v3_plugin_factory_2 { | ||||
#ifndef __cplusplus | |||||
struct v3_plugin_factory; | struct v3_plugin_factory; | ||||
#endif | |||||
v3_result (V3_API *get_class_info_2)(void* self, int32_t idx, struct v3_class_info_2*); | v3_result (V3_API *get_class_info_2)(void* self, int32_t idx, struct v3_class_info_2*); | ||||
}; | }; | ||||
@@ -98,8 +100,9 @@ struct v3_class_info_3 { | |||||
}; | }; | ||||
struct v3_plugin_factory_3 { | struct v3_plugin_factory_3 { | ||||
#ifndef __cplusplus | |||||
struct v3_plugin_factory_2; | struct v3_plugin_factory_2; | ||||
#endif | |||||
v3_result (V3_API *get_class_info_utf16)(void* self, int32_t idx, struct v3_class_info_3*); | v3_result (V3_API *get_class_info_utf16)(void* self, int32_t idx, struct v3_class_info_3*); | ||||
v3_result (V3_API *set_host_context)(void* self, struct v3_funknown** host); | v3_result (V3_API *set_host_context)(void* self, struct v3_funknown** host); | ||||
}; | }; | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -21,12 +21,13 @@ | |||||
#include "align_push.h" | #include "align_push.h" | ||||
/** | /** | ||||
* connection point | |||||
* host application | |||||
*/ | */ | ||||
struct v3_host_application { | struct v3_host_application { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* get_name)(void* self, v3_str_128 name); // wtf? | v3_result (V3_API* get_name)(void* self, v3_str_128 name); // wtf? | ||||
v3_result (V3_API* create_instance)(void* self, v3_tuid cid, v3_tuid iid, void** obj); | v3_result (V3_API* create_instance)(void* self, v3_tuid cid, v3_tuid iid, void** obj); | ||||
}; | }; | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -25,8 +25,9 @@ | |||||
*/ | */ | ||||
struct v3_attribute_list { | struct v3_attribute_list { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* set_int)(void* self, const char* id, int64_t value); | v3_result (V3_API* set_int)(void* self, const char* id, int64_t value); | ||||
v3_result (V3_API* get_int)(void* self, const char* id, int64_t* value); | v3_result (V3_API* get_int)(void* self, const char* id, int64_t* value); | ||||
v3_result (V3_API* set_float)(void* self, const char* id, double value); | v3_result (V3_API* set_float)(void* self, const char* id, double value); | ||||
@@ -45,8 +46,9 @@ static constexpr const v3_tuid v3_attribute_list_iid = | |||||
*/ | */ | ||||
struct v3_message { | struct v3_message { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
const char* (V3_API* get_message_id)(void* self); | const char* (V3_API* get_message_id)(void* self); | ||||
void (V3_API* set_message_id)(void* self, const char* id); | void (V3_API* set_message_id)(void* self, const char* id); | ||||
v3_attribute_list** (V3_API* get_attributes)(void* self); | v3_attribute_list** (V3_API* get_attributes)(void* self); | ||||
@@ -60,8 +62,9 @@ static constexpr const v3_tuid v3_message_iid = | |||||
*/ | */ | ||||
struct v3_connection_point { | struct v3_connection_point { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* connect)(void* self, struct v3_connection_point** other); | v3_result (V3_API* connect)(void* self, struct v3_connection_point** other); | ||||
v3_result (V3_API* disconnect)(void* self, struct v3_connection_point** other); | v3_result (V3_API* disconnect)(void* self, struct v3_connection_point** other); | ||||
v3_result (V3_API* notify)(void* self, struct v3_message** message); | v3_result (V3_API* notify)(void* self, struct v3_message** message); | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
* travesty, pure C VST3-compatible interface | * travesty, pure C VST3-compatible interface | ||||
* Copyright (C) 2021 Filipe Coelho <falktx@falktx.com> | |||||
* Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com> | |||||
* | * | ||||
* Permission to use, copy, modify, and/or distribute this software for any purpose with | * Permission to use, copy, modify, and/or distribute this software for any purpose with | ||||
* or without fee is hereby granted, provided that the above copyright notice and this | * or without fee is hereby granted, provided that the above copyright notice and this | ||||
@@ -48,8 +48,9 @@ struct v3_view_rect { | |||||
struct v3_plugin_frame; | struct v3_plugin_frame; | ||||
struct v3_plugin_view { | struct v3_plugin_view { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* is_platform_type_supported)(void* self, const char* platform_type); | v3_result (V3_API* is_platform_type_supported)(void* self, const char* platform_type); | ||||
v3_result (V3_API* attached)(void* self, void* parent, const char* platform_type); | v3_result (V3_API* attached)(void* self, void* parent, const char* platform_type); | ||||
v3_result (V3_API* removed)(void* self); | v3_result (V3_API* removed)(void* self); | ||||
@@ -72,8 +73,9 @@ static constexpr const v3_tuid v3_plugin_view_iid = | |||||
*/ | */ | ||||
struct v3_plugin_frame { | struct v3_plugin_frame { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* resize_view)(void* self, struct v3_plugin_view**, struct v3_view_rect*); | v3_result (V3_API* resize_view)(void* self, struct v3_plugin_view**, struct v3_view_rect*); | ||||
}; | }; | ||||
@@ -86,8 +88,9 @@ static constexpr const v3_tuid v3_plugin_frame_iid = | |||||
*/ | */ | ||||
struct v3_plugin_view_content_scale { | struct v3_plugin_view_content_scale { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* set_content_scale_factor)(void* self, float factor); | v3_result (V3_API* set_content_scale_factor)(void* self, float factor); | ||||
}; | }; | ||||
@@ -99,8 +102,9 @@ static constexpr const v3_tuid v3_plugin_view_content_scale_iid = | |||||
*/ | */ | ||||
struct v3_plugin_view_parameter_finder { | struct v3_plugin_view_parameter_finder { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* find_parameter)(void* self, int32_t x, int32_t y, v3_param_id *); | v3_result (V3_API* find_parameter)(void* self, int32_t x, int32_t y, v3_param_id *); | ||||
}; | }; | ||||
@@ -112,8 +116,9 @@ static constexpr const v3_tuid v3_plugin_view_parameter_finder_iid = | |||||
*/ | */ | ||||
struct v3_event_handler { | struct v3_event_handler { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
void (V3_API* on_fd_is_set)(void* self, int fd); | void (V3_API* on_fd_is_set)(void* self, int fd); | ||||
}; | }; | ||||
@@ -125,8 +130,9 @@ static constexpr const v3_tuid v3_event_handler_iid = | |||||
*/ | */ | ||||
struct v3_timer_handler { | struct v3_timer_handler { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
void (V3_API* on_timer)(void* self); | void (V3_API* on_timer)(void* self); | ||||
}; | }; | ||||
@@ -138,8 +144,9 @@ static constexpr const v3_tuid v3_timer_handler_iid = | |||||
*/ | */ | ||||
struct v3_run_loop { | struct v3_run_loop { | ||||
#ifndef __cplusplus | |||||
struct v3_funknown; | struct v3_funknown; | ||||
#endif | |||||
v3_result (V3_API* register_event_handler)(void* self, v3_event_handler** handler, int fd); | v3_result (V3_API* register_event_handler)(void* self, v3_event_handler** handler, int fd); | ||||
v3_result (V3_API* unregister_event_handler)(void* self, v3_event_handler** handler); | v3_result (V3_API* unregister_event_handler)(void* self, v3_event_handler** handler); | ||||
v3_result (V3_API* register_timer)(void* self, v3_timer_handler** handler, uint64_t ms); | v3_result (V3_API* register_timer)(void* self, v3_timer_handler** handler, uint64_t ms); | ||||