annotate dwt/dwthelper/Loader.d @ 238:380bad9f6852

reverted char[] to String
author Frank Benoit <benoit@tionex.de>
date Mon, 05 May 2008 00:42:55 +0200
parents 384b3a0c9cd7
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
1 /*****************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
2
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
3 license:
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
4
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
5 version:
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
6
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
7 Dynamic loader for gtk symbol names
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
8
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
9 History: 2004-12-11 initial version by John Reimer
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
10 2005-02-21 class and symbol names change; versioning modification
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
11 2005-05-05 linux fixes
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
12 2007-12-23 source cleanup
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
13 2007-12-30 merge Paths.d into Loader.d
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
14 2008-01-05 Tango only version using tango.sys.SharedLib
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
15
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
16 Note: Design inspired by Kris Bell's ICU.d, the dynamic loader from
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
17 an early version of mango
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
18
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
19 ******************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
20
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
21 module dwt.dwthelper.Loader;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
22
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
23 import dwt.dwthelper.utils;
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
24
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
25 private import tango.io.Stdout,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
26 tango.sys.SharedLib;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
27
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
28 /*****************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
29
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
30 *****************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
31
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
32 enum LIBRARY
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
33 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
34 ATK,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
35 CAIRO,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
36 GDK,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
37 GDKPIXBUF,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
38 GLIB,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
39 GMODULE,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
40 GOBJECT,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
41 GTHREAD,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
42 GTK,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
43 PANGO,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
44 GLGDK,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
45 GLGTK,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
46 GL,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
47 GLU,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
48 GLEXT,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
49 GDA,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
50 GLADE,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
51 GSV,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
52 GSTREAMER,
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
53 GSTINTERFACES
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
54 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
55
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
56 /*****************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
57
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
58 *****************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
59
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
60 version (Windows)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
61 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
62 const String[LIBRARY.max+1] importLibs = [
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
63 LIBRARY.ATK: "libatk-1.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
64 LIBRARY.CAIRO: "libcairo-2.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
65 LIBRARY.GDK: "libgdk-win32-2.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
66 LIBRARY.GDKPIXBUF: "libgdk_pixbuf-2.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
67 LIBRARY.GLIB: "libglib-2.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
68 LIBRARY.GMODULE: "libgmodule-2.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
69 LIBRARY.GOBJECT: "libgobject-2.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
70 LIBRARY.GTHREAD: "libgthread-2.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
71 LIBRARY.GTK: "libgtk-win32-2.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
72 LIBRARY.PANGO: "libpango-1.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
73 LIBRARY.GLGDK: "libgdkglext-win32-1.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
74 LIBRARY.GLGTK: "libgtkglext-win32-1.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
75 LIBRARY.GL: "opengl32.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
76 LIBRARY.GLU: "glu32.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
77 LIBRARY.GDA: "libgda-2.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
78 LIBRARY.GLADE: "libglade-2.0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
79 LIBRARY.GSV: "libgtksourceview-1.0-0.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
80 LIBRARY.GSTREAMER: "libgstreamer-0.10.dll",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
81 LIBRARY.GSTINTERFACES: "libgstinterfaces-0.10.dll"
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
82 ];
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
83 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
84
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
85 /*****************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
86
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
87 *****************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
88
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
89 version(linux)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
90 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
91 const String[LIBRARY.max+1] importLibs = [
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
92 LIBRARY.ATK: "libatk-1.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
93 LIBRARY.CAIRO: "libcairo.so.2",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
94 LIBRARY.GDK: "libgdk-x11-2.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
95 LIBRARY.GDKPIXBUF: "libgdk_pixbuf-2.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
96 LIBRARY.GLIB: "libglib-2.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
97 LIBRARY.GMODULE: "libgmodule-2.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
98 LIBRARY.GOBJECT: "libgobject-2.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
99 LIBRARY.GTHREAD: "libgthread-2.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
100 LIBRARY.GTK: "libgtk-x11-2.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
101 LIBRARY.PANGO: "libpango-1.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
102 LIBRARY.GLGDK: "libgdkglext-x11-1.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
103 LIBRARY.GLGTK: "libgtkglext-x11-1.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
104 LIBRARY.GL: "libGL.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
105 LIBRARY.GLU: "libGLU.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
106 LIBRARY.GLEXT: "libGL.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
107 LIBRARY.GDA: "libgda-2.so.3",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
108 LIBRARY.GLADE: "libglade-2.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
109 LIBRARY.GSV: "libgtksourceview-1.0.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
110 LIBRARY.GSTREAMER: "libgstreamer-0.10.so",
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
111 LIBRARY.GSTINTERFACES: "libgstinterfaces-0.10.so"
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
112 ];
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
113 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
114
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
115 /*****************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
116
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
117 getLibraryPath -- place holder for future expansion
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
118
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
119 ******************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
120
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
121
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
122 version(Windows)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
123 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
124 String getLibraryPath()
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
125 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
126 return "\\Program Files\\GTK2-Runtime\\lib\\";
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
127 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
128 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
129
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
130 /*****************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
131
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
132 getLibraryPath is empty for linux because default path is known by ld
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
133
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
134 ******************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
135
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
136 version(linux)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
137 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
138 String getLibraryPath() { return ""; }
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
139 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
140
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
141 /*****************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
142
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
143 ProcLink is used to record the library, function, and function name
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
144 that will be loaded by the dynamic loader.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
145
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
146 ******************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
147
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
148 public struct Symbol
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
149 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
150 String name;
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
151 void** pointer;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
152 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
153
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
154 /*****************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
155
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
156 The Linker class: handles loading of the library and exported functions
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
157
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
158 ******************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
159
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
160 public class Linker
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
161 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
162 static String[][String] loadFailures;
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
163
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
164 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
165
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
166 Gets all the failed loads for a specific library. This is filled in
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
167 only if the default onFailure method is used during load.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
168
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
169 returns: an array of the names that failed to load for a specific
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
170 library or null if none was found.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
171
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
172 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
173
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
174 public static String[] getLoadFailures(String libName)
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
175 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
176 if ( libName in loadFailures )
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
177 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
178 return loadFailures[libName];
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
179 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
180 else
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
181 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
182 return null;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
183 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
184 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
185
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
186 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
187
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
188 Loads all libraries. This is filled in only if the default onFailure
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
189 method is used during load.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
190
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
191 returns: an array of the library names.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
192
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
193 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
194
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
195 public static String[] getLoadLibraries()
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
196 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
197 return loadFailures.keys;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
198 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
199
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
200 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
201
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
202 isPerfectLoad -- Checks if any symbol failed to load.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
203 Returns: true if ALL symbols loaded.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
204
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
205 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
206
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
207 public static bool isPerfectLoad()
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
208 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
209 return loadFailures.keys.length == 0;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
210 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
211
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
212 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
213
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
214 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
215
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
216 public static void dumpFailedLoads()
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
217 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
218 foreach ( String lib ; Linker.getLoadLibraries() )
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
219 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
220 foreach ( String symbol ; Linker.getLoadFailures(lib) )
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
221 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
222 version(Tango)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
223 Stdout.formatln("failed ({}) {}", lib, symbol).newline;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
224 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
225 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
226 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
227
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
228 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
229
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
230 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
231
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
232 private SharedLib primaryLib;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
233 private SharedLib alternateLib;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
234
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
235 private String libraryName;
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
236 private String alternateLibraryName;
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
237
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
238 alias void function( String libraryName, String symbolName, String message=null) FailureCallback;
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
239
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
240 private FailureCallback onLoadFailure;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
241
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
242 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
243
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
244 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
245
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
246 this( String libraryName, String alternateLibraryName=null )
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
247 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
248 this(libraryName, alternateLibraryName, &(Linker.defaultFail));
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
249 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
250
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
251 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
252
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
253 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
254
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
255 this (String libraryName, String alternateLibraryName, FailureCallback fn )
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
256 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
257 this.libraryName = libraryName;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
258 this.alternateLibraryName = alternateLibraryName;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
259 onLoadFailure = fn;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
260
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
261 SharedLib.throwExceptions = false;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
262
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
263 primaryLib = SharedLib.load( this.libraryName );
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
264
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
265 version(linux)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
266 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
267 if (this.primaryLib is null)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
268 primaryLib = SharedLib.load( this.libraryName ~ ".0\0" );
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
269 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
270
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
271 if ( alternateLibraryName !is null )
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
272 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
273 alternateLib = SharedLib.load( this.alternateLibraryName );
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
274 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
275
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
276 if (primaryLib is null)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
277 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
278 throw new Exception("Library load failed: " ~ libraryName);
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
279 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
280 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
281
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
282 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
283
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
284 Default load failure callback. Logs the symbols that failed to load.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
285
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
286 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
287
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
288 static void defaultFail( String libraryName, String symbolName, String message=null )
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
289 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
290 if ( !(libraryName in loadFailures) )
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
291 {
238
380bad9f6852 reverted char[] to String
Frank Benoit <benoit@tionex.de>
parents: 174
diff changeset
292 String[] cc;
174
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
293 loadFailures[libraryName] = cc;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
294 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
295
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
296 loadFailures[libraryName] ~= symbolName.dup;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
297 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
298
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
299 /*************************************************************************
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
300
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
301 Loads all the symbols for this library.
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
302
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
303 **************************************************************************/
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
304
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
305 void link( inout Symbol[] symbols )
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
306 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
307 foreach( Symbol link; symbols )
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
308 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
309 *link.pointer = primaryLib.getSymbol ( (link.name~"\0").ptr);
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
310
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
311 if (*link.pointer is null)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
312 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
313 if ( alternateLib !is null )
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
314 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
315 *link.pointer = alternateLib.getSymbol( (link.name~"\0").ptr);
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
316 Stdout("Loader.Linker.link trying alternate lib: ", link.name).newline;
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
317 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
318 if (*link.pointer is null)
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
319 {
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
320 onLoadFailure( libraryName, link.name );
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
321 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
322 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
323 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
324 }
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
325
384b3a0c9cd7 Add OpenGL/Derelict support to Linux DWT
John Reimer<terminal.node@gmail.com>
parents:
diff changeset
326 }