1 /**
2 * Entry points.
3 *
4 * Copyright: Guillaume Piolat 2015-2016.
5 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
6 */
7 module dplug.client.dllmain;
8
9 /// The one entry point mixin you need
10 /// Just paste `mixin(pluginEntryPoints!MyPluginClient);` into your main file for a plug-in.
11 string pluginEntryPoints(ClientClass)()
12 {
13 return
14 `
15 mixin(DLLEntryPoint!());
16
17 version(VST2)
18 {
19 import dplug.vst2;
20 mixin(VST2EntryPoint!` ~ ClientClass.stringof ~ `);
21 }
22
23 version(AU)
24 {
25 import dplug.au;
26 mixin(AUEntryPoint!` ~ ClientClass.stringof ~ `);
27 }
28
29 version(VST3)
30 {
31 import dplug.vst3;
32 mixin(VST3EntryPoint!` ~ ClientClass.stringof ~ `);
33 }
34
35 version(AAX)
36 {
37 import dplug.aax;
38 mixin(AAXEntryPoint!` ~ ClientClass.stringof ~ `);
39 }
40
41 version(LV2)
42 {
43 import dplug.lv2;
44 mixin(LV2EntryPoint!` ~ ClientClass.stringof ~ `);
45 }
46
47 version(FLP)
48 {
49 import dplug.flp;
50 mixin(FLPEntryPoint!` ~ ClientClass.stringof ~ `);
51 }`;
52 }
53
54 // Dynamic libraries entry point.
55 // Basically only needed on Windows, on POSIX the other entry points are sufficient.
56
57 version(Windows)
58 {
59 template DLLEntryPoint()
60 {
61 const char[] DLLEntryPoint = q{
62 import core.sys.windows.windef;
63 import core.sys.windows.dll;
64 extern (Windows) BOOL DllMain(HINSTANCE hInstance, ULONG ulReason, LPVOID pvReserved)
65 {
66 return true;
67 }
68 };
69 }
70 }
71 else
72 {
73 template DLLEntryPoint()
74 {
75 const char[] DLLEntryPoint = ``;
76 }
77 }
78