LMMS
Loading...
Searching...
No Matches
factory.h
Go to the documentation of this file.
1/*
2 * travesty, pure C VST3-compatible interface
3 * Copyright (C) 2021-2022 Filipe Coelho <falktx@falktx.com>
4 *
5 * Permission to use, copy, modify, and/or distribute this software for any purpose with
6 * or without fee is hereby granted, provided that the above copyright notice and this
7 * permission notice appear in all copies.
8 *
9 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD
10 * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN
11 * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
12 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
13 * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17#pragma once
18
19#include "base.h"
20
24
26 char vendor[64];
27 char url[256];
28 char email[128];
29 int32_t flags; // set to 0x10 (unicode)
30};
31
34 int32_t cardinality; // set to 0x7FFFFFFF (many instances)
35 char category[32];
36 char name[64];
37};
38
40#ifndef __cplusplus
41 struct v3_funknown;
42#endif
43 v3_result (V3_API *get_factory_info)(void* self, struct v3_factory_info*);
44 int32_t (V3_API *num_classes)(void* self);
45 v3_result (V3_API *get_class_info)(void* self, int32_t idx, struct v3_class_info*);
46 v3_result (V3_API *create_instance)(void* self, const v3_tuid class_id, const v3_tuid iid, void** instance);
47};
48
49static constexpr const v3_tuid v3_plugin_factory_iid =
50 V3_ID(0x7A4D811C, 0x52114A1F, 0xAED9D2EE, 0x0B43BF9F);
51
55
56enum {
59};
60
63 int32_t cardinality; // set to 0x7FFFFFFF
64 char category[32];
65 char name[64];
67 char sub_categories[128];
68 char vendor[64];
69 char version[64];
70 char sdk_version[64];
71};
72
74#ifndef __cplusplus
75 struct v3_plugin_factory;
76#endif
77 v3_result (V3_API *get_class_info_2)(void* self, int32_t idx, struct v3_class_info_2*);
78};
79
80static constexpr const v3_tuid v3_plugin_factory_2_iid =
81 V3_ID(0x0007B650, 0xF24B4C0B, 0xA464EDB9, 0xF00B2ABB);
82
89
101
103#ifndef __cplusplus
104 struct v3_plugin_factory_2;
105#endif
106 v3_result (V3_API *get_class_info_utf16)(void* self, int32_t idx, struct v3_class_info_3*);
107 v3_result (V3_API *set_host_context)(void* self, struct v3_funknown** host);
108};
109
110static constexpr const v3_tuid v3_plugin_factory_3_iid =
111 V3_ID(0x4555A2AB, 0xC1234E57, 0x9B122910, 0x36878931);
112
113#ifdef __cplusplus
114
118
119struct v3_plugin_factory_cpp : v3_funknown {
123};
124
125template<> inline
126constexpr v3_plugin_factory_2* v3_cpp_obj(v3_plugin_factory_2** obj)
127{
132 return static_cast<v3_plugin_factory_2*>(
133 static_cast<void*>(static_cast<uint8_t*>(static_cast<void*>(*obj)) + sizeof(void*)*7));
134}
135
136template<> inline
137constexpr v3_plugin_factory_3* v3_cpp_obj(v3_plugin_factory_3** obj)
138{
143 return static_cast<v3_plugin_factory_3*>(
144 static_cast<void*>(static_cast<uint8_t*>(static_cast<void*>(*obj)) + sizeof(void*)*8));
145}
146
147#endif
#define V3_ID(a, b, c, d)
Definition base.h:111
#define V3_API
Definition base.h:59
int32_t v3_result
Definition base.h:35
uint8_t v3_tuid[16]
Definition base.h:46
@ V3_SIMPLE_MODE
Definition factory.h:58
@ V3_DISTRIBUTABLE
Definition factory.h:57
static constexpr const v3_tuid v3_plugin_factory_2_iid
Definition factory.h:80
static constexpr const v3_tuid v3_plugin_factory_3_iid
Definition factory.h:110
static constexpr const v3_tuid v3_plugin_factory_iid
Definition factory.h:49
static void v2(register WDL_FFT_REAL *a)
Definition fft.c:1099
int int32_t
Definition mid.cpp:97
unsigned int uint32_t
Definition mid.cpp:100
short int16_t
Definition mid.cpp:96
unsigned char uint8_t
Definition mid.cpp:98
Definition factory.h:61
char sdk_version[64]
Definition factory.h:70
uint32_t class_flags
Definition factory.h:66
char version[64]
Definition factory.h:69
v3_tuid class_id
Definition factory.h:62
char name[64]
Definition factory.h:65
char category[32]
Definition factory.h:64
int32_t cardinality
Definition factory.h:63
char vendor[64]
Definition factory.h:68
char sub_categories[128]
Definition factory.h:67
Definition factory.h:90
char category[32]
Definition factory.h:93
int16_t version[64]
Definition factory.h:98
int16_t vendor[64]
Definition factory.h:97
int32_t cardinality
Definition factory.h:92
char sub_categories[128]
Definition factory.h:96
int16_t name[64]
Definition factory.h:94
uint32_t class_flags
Definition factory.h:95
int16_t sdk_version[64]
Definition factory.h:99
v3_tuid class_id
Definition factory.h:91
Definition factory.h:32
char category[32]
Definition factory.h:35
v3_tuid class_id
Definition factory.h:33
char name[64]
Definition factory.h:36
int32_t cardinality
Definition factory.h:34
Definition factory.h:25
char vendor[64]
Definition factory.h:26
int32_t flags
Definition factory.h:29
char url[256]
Definition factory.h:27
char email[128]
Definition factory.h:28
Definition base.h:142
Definition factory.h:73
int32_t idx
Definition factory.h:77
Definition factory.h:102
int32_t struct v3_class_info_3 struct v3_funknown ** host
Definition factory.h:107
int32_t idx
Definition factory.h:106
Definition factory.h:39
int32_t struct v3_class_info const v3_tuid const v3_tuid void ** instance
Definition factory.h:46
struct v3_factory_info * int32_t(V3_API *num_classes)(void *self)
int32_t struct v3_class_info const v3_tuid const v3_tuid iid
Definition factory.h:46
int32_t struct v3_class_info const v3_tuid class_id
Definition factory.h:46
int32_t idx
Definition factory.h:45
v3_result(V3_API *get_factory_info)(void *self