JUCE-7.0.12-0-g4f43011b96 JUCE-7.0.12-0-g4f43011b96
JUCE — C++ application framework with suport for VST, VST3, LV2 audio plug-ins

« « « Anklang Documentation
Loading...
Searching...
No Matches
juce_VST3Headers.h
Go to the documentation of this file.
1 /*
2 ==============================================================================
3
4 This file is part of the JUCE library.
5 Copyright (c) 2022 - Raw Material Software Limited
6
7 JUCE is an open source library subject to commercial or open-source
8 licensing.
9
10 By using JUCE, you agree to the terms of both the JUCE 7 End-User License
11 Agreement and JUCE Privacy Policy.
12
13 End User License Agreement: www.juce.com/juce-7-licence
14 Privacy Policy: www.juce.com/juce-privacy-policy
15
16 Or: You may also use this code under the terms of the GPL v3 (see
17 www.gnu.org/licenses).
18
19 JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
20 EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
21 DISCLAIMED.
22
23 ==============================================================================
24*/
25
26#pragma once
27
28#if JUCE_BSD && ! JUCE_CUSTOM_VST3_SDK
29 #error To build JUCE VST3 plug-ins on BSD you must use an external BSD-compatible VST3 SDK with JUCE_CUSTOM_VST3_SDK=1
30#endif
31
32// Wow, those Steinberg guys really don't worry too much about compiler warnings.
33JUCE_BEGIN_IGNORE_WARNINGS_LEVEL_MSVC (0, 4505 4702 6011 6031 6221 6386 6387 6330 6001 28199)
34
35JUCE_BEGIN_IGNORE_WARNINGS_GCC_LIKE ("-W#warnings",
36 "-Wcast-align",
37 "-Wclass-memaccess",
38 "-Wcomma",
39 "-Wconversion",
40 "-Wcpp",
41 "-Wdelete-non-virtual-dtor",
42 "-Wdeprecated",
43 "-Wdeprecated-copy-dtor",
44 "-Wdeprecated-declarations",
45 "-Wdeprecated-register",
46 "-Wextra",
47 "-Wextra-semi",
48 "-Wfloat-equal",
49 "-Wformat",
50 "-Wformat-truncation=",
51 "-Wformat=",
52 "-Wignored-qualifiers",
53 "-Winconsistent-missing-destructor-override",
54 "-Wint-to-pointer-cast",
55 "-Wlogical-op-parentheses",
56 "-Wmaybe-uninitialized",
57 "-Wmissing-braces",
58 "-Wmissing-field-initializers",
59 "-Wmissing-prototypes",
60 "-Wnon-virtual-dtor",
61 "-Woverloaded-virtual",
62 "-Wparentheses",
63 "-Wpedantic",
64 "-Wpragma-pack",
65 "-Wredundant-decls",
66 "-Wreorder",
67 "-Wshadow",
68 "-Wshadow-field",
69 "-Wsign-compare",
70 "-Wsign-conversion",
71 "-Wswitch-default",
72 "-Wtype-limits",
73 "-Wunsequenced",
74 "-Wunused-but-set-variable",
75 "-Wunused-function",
76 "-Wunused-parameter",
77 "-Wzero-as-null-pointer-constant")
78
79#undef DEVELOPMENT
80#define DEVELOPMENT 0 // This avoids a Clang warning in Steinberg code about unused values
81
82/* These files come with the Steinberg VST3 SDK - to get them, you'll need to
83 visit the Steinberg website and agree to whatever is currently required to
84 get them.
85
86 Then, you'll need to make sure your include path contains your "VST3 SDK"
87 directory (or whatever you've named it on your machine). The Projucer has
88 a special box for setting this path.
89*/
90#if JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY
91 #include <base/source/fstring.h>
92 #include <pluginterfaces/base/conststringtable.h>
93 #include <pluginterfaces/base/funknown.h>
94 #include <pluginterfaces/base/ipluginbase.h>
95 #include <pluginterfaces/base/iplugincompatibility.h>
96 #include <pluginterfaces/base/ustring.h>
97 #include <pluginterfaces/gui/iplugview.h>
98 #include <pluginterfaces/gui/iplugviewcontentscalesupport.h>
99 #include <pluginterfaces/vst/ivstattributes.h>
100 #include <pluginterfaces/vst/ivstaudioprocessor.h>
101 #include <pluginterfaces/vst/ivstcomponent.h>
102 #include <pluginterfaces/vst/ivstcontextmenu.h>
103 #include <pluginterfaces/vst/ivsteditcontroller.h>
104 #include <pluginterfaces/vst/ivstevents.h>
105 #include <pluginterfaces/vst/ivsthostapplication.h>
106 #include <pluginterfaces/vst/ivstmessage.h>
107 #include <pluginterfaces/vst/ivstmidicontrollers.h>
108 #include <pluginterfaces/vst/ivstparameterchanges.h>
109 #include <pluginterfaces/vst/ivstplugview.h>
110 #include <pluginterfaces/vst/ivstprocesscontext.h>
111 #include <pluginterfaces/vst/vsttypes.h>
112 #include <pluginterfaces/vst/ivstunits.h>
113 #include <pluginterfaces/vst/ivstmidicontrollers.h>
114 #include <pluginterfaces/vst/ivstchannelcontextinfo.h>
115 #include <public.sdk/source/common/memorystream.h>
116 #include <public.sdk/source/vst/utility/uid.h>
117 #include <public.sdk/source/vst/vsteditcontroller.h>
118 #include <public.sdk/source/vst/vstpresetfile.h>
119
120 #include "pslextensions/ipslviewembedding.h"
121#else
122 // needed for VST_VERSION
123 #include <pluginterfaces/vst/vsttypes.h>
124
125 #ifndef NOMINMAX
126 #define NOMINMAX // Some of the steinberg sources don't set this before including windows.h
127 #endif
128
129 #include <base/source/baseiids.cpp>
130 #include <base/source/fbuffer.cpp>
131 #include <base/source/fdebug.cpp>
132 #include <base/source/fobject.cpp>
133 #include <base/source/fstreamer.cpp>
134 #include <base/source/fstring.cpp>
135
136 // The following shouldn't leak from fstring.cpp
137 #undef stricmp
138 #undef strnicmp
139 #undef snprintf
140 #undef vsnprintf
141 #undef snwprintf
142 #undef vsnwprintf
143
144 #if VST_VERSION >= 0x030608
145 #include <base/thread/source/flock.cpp>
146 #include <pluginterfaces/base/coreiids.cpp>
147 #else
148 #include <base/source/flock.cpp>
149 #endif
150
151#pragma push_macro ("True")
152#undef True
153#pragma push_macro ("False")
154#undef False
155
156 #include <base/source/updatehandler.cpp>
157 #include <pluginterfaces/base/conststringtable.cpp>
158 #include <pluginterfaces/base/funknown.cpp>
159 #include <pluginterfaces/base/ipluginbase.h>
160 #include <pluginterfaces/base/ustring.cpp>
161 #include <pluginterfaces/gui/iplugview.h>
162 #include <pluginterfaces/gui/iplugviewcontentscalesupport.h>
163 #include <pluginterfaces/vst/ivstchannelcontextinfo.h>
164 #include <pluginterfaces/vst/ivstmidicontrollers.h>
165 #include <public.sdk/source/common/memorystream.cpp>
166 #include <public.sdk/source/common/pluginview.cpp>
167 #include <public.sdk/source/vst/hosting/hostclasses.cpp>
168 #include <public.sdk/source/vst/moduleinfo/moduleinfoparser.cpp>
169 #include <public.sdk/source/vst/utility/stringconvert.cpp>
170 #include <public.sdk/source/vst/utility/uid.h>
171 #include <public.sdk/source/vst/vstbus.cpp>
172 #include <public.sdk/source/vst/vstcomponent.cpp>
173 #include <public.sdk/source/vst/vstcomponentbase.cpp>
174 #include <public.sdk/source/vst/vsteditcontroller.cpp>
175 #include <public.sdk/source/vst/vstinitiids.cpp>
176 #include <public.sdk/source/vst/vstparameters.cpp>
177 #include <public.sdk/source/vst/vstpresetfile.cpp>
178
179#pragma pop_macro ("True")
180#pragma pop_macro ("False")
181
182 #if VST_VERSION >= 0x03060c // 3.6.12
183 #include <public.sdk/source/vst/hosting/pluginterfacesupport.cpp>
184 #endif
185
186 #include "pslextensions/ipslviewembedding.h"
187
188//==============================================================================
189namespace Steinberg
190{
192 #if VST_VERSION < 0x03060d // 3.6.13
193 DEF_CLASS_IID (IPluginBase)
194 DEF_CLASS_IID (IPluginFactory)
195 DEF_CLASS_IID (IPluginFactory2)
196 DEF_CLASS_IID (IPluginFactory3)
197 #if VST_VERSION < 0x030608
198 DEF_CLASS_IID (IBStream)
199 #endif
200 #endif
201 DEF_CLASS_IID (IPlugView)
202 DEF_CLASS_IID (IPlugFrame)
203 DEF_CLASS_IID (IPlugViewContentScaleSupport)
204
205 #if JUCE_LINUX || JUCE_BSD
206 DEF_CLASS_IID (Linux::IRunLoop)
207 DEF_CLASS_IID (Linux::IEventHandler)
208 #endif
209}
210
211namespace Presonus
212{
213 DEF_CLASS_IID (IPlugInViewEmbedding)
214}
215
216#endif // JUCE_VST3HEADERS_INCLUDE_HEADERS_ONLY
217
218JUCE_END_IGNORE_WARNINGS_MSVC
219JUCE_END_IGNORE_WARNINGS_GCC_LIKE
220
221#if JUCE_WINDOWS
222 #include <windows.h>
223#endif
224
225//==============================================================================
226#undef ASSERT
227#undef WARNING
228#undef PRINTSYSERROR
229#undef DEBUGSTR
230#undef DBPRT0
231#undef DBPRT1
232#undef DBPRT2
233#undef DBPRT3
234#undef DBPRT4
235#undef DBPRT5
236#undef min
237#undef max
238#undef MIN
239#undef MAX
240#undef calloc
241#undef free
242#undef malloc
243#undef realloc
244#undef NEW
245#undef NEWVEC
246#undef VERIFY
247#undef VERIFY_IS
248#undef VERIFY_NOT
249#undef META_CREATE_FUNC
250#undef CLASS_CREATE_FUNC
251#undef SINGLE_CREATE_FUNC
252#undef _META_CLASS
253#undef _META_CLASS_IFACE
254#undef _META_CLASS_SINGLE
255#undef META_CLASS
256#undef META_CLASS_IFACE
257#undef META_CLASS_SINGLE
258#undef SINGLETON
259#undef OBJ_METHODS
260#undef QUERY_INTERFACE
261#undef LICENCE_UID
262#undef BEGIN_FACTORY
263#undef DEF_CLASS
264#undef DEF_CLASS1
265#undef DEF_CLASS2
266#undef DEF_CLASS_W
267#undef END_FACTORY
268
269#ifdef atomic_thread_fence
270 #undef atomic_thread_fence
271#endif