29namespace X11SymbolHelpers
32template <
typename FuncPtr>
39template <
typename FuncPtr>
42 return { func, name };
45template <
typename FuncPtr>
46bool loadSymbols (DynamicLibrary& lib, SymbolBinding<FuncPtr> binding)
48 if (
auto* func = lib.getFunction (binding.name))
50 binding.func =
reinterpret_cast<FuncPtr
> (func);
57template <
typename FuncPtr,
typename... Args>
58bool loadSymbols (DynamicLibrary& lib1, DynamicLibrary& lib2, SymbolBinding<FuncPtr> binding)
60 return loadSymbols (lib1, binding) || loadSymbols (lib2, binding);
63template <
typename FuncPtr,
typename... Args>
64bool loadSymbols (DynamicLibrary& lib, SymbolBinding<FuncPtr> binding, Args... args)
66 return loadSymbols (lib, binding) && loadSymbols (lib, args...);
69template <
typename FuncPtr,
typename... Args>
70bool loadSymbols (DynamicLibrary& lib1, DynamicLibrary& lib2, SymbolBinding<FuncPtr> binding, Args... args)
72 return loadSymbols (lib1, lib2, binding) && loadSymbols (lib1, lib2, args...);
78bool X11Symbols::loadAllSymbols()
80 using namespace X11SymbolHelpers;
82 if (! loadSymbols (xLib, xextLib,
83 makeSymbolBinding (xAllocClassHint,
"XAllocClassHint"),
84 makeSymbolBinding (xAllocSizeHints,
"XAllocSizeHints"),
85 makeSymbolBinding (xAllocWMHints,
"XAllocWMHints"),
86 makeSymbolBinding (xBitmapBitOrder,
"XBitmapBitOrder"),
87 makeSymbolBinding (xBitmapUnit,
"XBitmapUnit"),
88 makeSymbolBinding (xChangeActivePointerGrab,
"XChangeActivePointerGrab"),
89 makeSymbolBinding (xChangeProperty,
"XChangeProperty"),
90 makeSymbolBinding (xCheckTypedWindowEvent,
"XCheckTypedWindowEvent"),
91 makeSymbolBinding (xCheckWindowEvent,
"XCheckWindowEvent"),
92 makeSymbolBinding (xClearArea,
"XClearArea"),
93 makeSymbolBinding (xCloseDisplay,
"XCloseDisplay"),
94 makeSymbolBinding (xConnectionNumber,
"XConnectionNumber"),
95 makeSymbolBinding (xConvertSelection,
"XConvertSelection"),
96 makeSymbolBinding (xCreateColormap,
"XCreateColormap"),
97 makeSymbolBinding (xCreateFontCursor,
"XCreateFontCursor"),
98 makeSymbolBinding (xCreateGC,
"XCreateGC"),
99 makeSymbolBinding (xCreateImage,
"XCreateImage"),
100 makeSymbolBinding (xCreatePixmap,
"XCreatePixmap"),
101 makeSymbolBinding (xCreatePixmapCursor,
"XCreatePixmapCursor"),
102 makeSymbolBinding (xCreatePixmapFromBitmapData,
"XCreatePixmapFromBitmapData"),
103 makeSymbolBinding (xCreateWindow,
"XCreateWindow"),
104 makeSymbolBinding (xDefaultRootWindow,
"XDefaultRootWindow"),
105 makeSymbolBinding (xDefaultScreen,
"XDefaultScreen"),
106 makeSymbolBinding (xDefaultScreenOfDisplay,
"XDefaultScreenOfDisplay"),
107 makeSymbolBinding (xDefaultVisual,
"XDefaultVisual"),
108 makeSymbolBinding (xDefineCursor,
"XDefineCursor"),
109 makeSymbolBinding (xDeleteContext,
"XDeleteContext"),
110 makeSymbolBinding (xDeleteProperty,
"XDeleteProperty"),
111 makeSymbolBinding (xDestroyImage,
"XDestroyImage"),
112 makeSymbolBinding (xDestroyWindow,
"XDestroyWindow"),
113 makeSymbolBinding (xDisplayHeight,
"XDisplayHeight"),
114 makeSymbolBinding (xDisplayHeightMM,
"XDisplayHeightMM"),
115 makeSymbolBinding (xDisplayWidth,
"XDisplayWidth"),
116 makeSymbolBinding (xDisplayWidthMM,
"XDisplayWidthMM"),
117 makeSymbolBinding (xEventsQueued,
"XEventsQueued"),
118 makeSymbolBinding (xFindContext,
"XFindContext"),
119 makeSymbolBinding (xFlush,
"XFlush"),
120 makeSymbolBinding (xFree,
"XFree"),
121 makeSymbolBinding (xFreeCursor,
"XFreeCursor"),
122 makeSymbolBinding (xFreeColormap,
"XFreeColormap"),
123 makeSymbolBinding (xFreeGC,
"XFreeGC"),
124 makeSymbolBinding (xFreeModifiermap,
"XFreeModifiermap"),
125 makeSymbolBinding (xFreePixmap,
"XFreePixmap"),
126 makeSymbolBinding (xGetAtomName,
"XGetAtomName"),
127 makeSymbolBinding (xGetErrorDatabaseText,
"XGetErrorDatabaseText"),
128 makeSymbolBinding (xGetErrorText,
"XGetErrorText"),
129 makeSymbolBinding (xGetGeometry,
"XGetGeometry"),
130 makeSymbolBinding (xGetImage,
"XGetImage"),
131 makeSymbolBinding (xGetInputFocus,
"XGetInputFocus"),
132 makeSymbolBinding (xGetModifierMapping,
"XGetModifierMapping"),
133 makeSymbolBinding (xGetPointerMapping,
"XGetPointerMapping"),
134 makeSymbolBinding (xGetSelectionOwner,
"XGetSelectionOwner"),
135 makeSymbolBinding (xGetVisualInfo,
"XGetVisualInfo"),
136 makeSymbolBinding (xGetWMHints,
"XGetWMHints"),
137 makeSymbolBinding (xGetWindowAttributes,
"XGetWindowAttributes"),
138 makeSymbolBinding (xGetWindowProperty,
"XGetWindowProperty"),
139 makeSymbolBinding (xGrabPointer,
"XGrabPointer"),
140 makeSymbolBinding (xGrabServer,
"XGrabServer"),
141 makeSymbolBinding (xImageByteOrder,
"XImageByteOrder"),
142 makeSymbolBinding (xInitImage,
"XInitImage"),
143 makeSymbolBinding (xInitThreads,
"XInitThreads"),
144 makeSymbolBinding (xInstallColormap,
"XInstallColormap"),
145 makeSymbolBinding (xInternAtom,
"XInternAtom"),
146 makeSymbolBinding (xkbKeycodeToKeysym,
"XkbKeycodeToKeysym"),
147 makeSymbolBinding (xKeysymToKeycode,
"XKeysymToKeycode"),
148 makeSymbolBinding (xListProperties,
"XListProperties"),
149 makeSymbolBinding (xLockDisplay,
"XLockDisplay"),
150 makeSymbolBinding (xLookupString,
"XLookupString"),
151 makeSymbolBinding (xMapRaised,
"XMapRaised"),
152 makeSymbolBinding (xMapWindow,
"XMapWindow"),
153 makeSymbolBinding (xMoveResizeWindow,
"XMoveResizeWindow"),
154 makeSymbolBinding (xNextEvent,
"XNextEvent"),
155 makeSymbolBinding (xOpenDisplay,
"XOpenDisplay"),
156 makeSymbolBinding (xPeekEvent,
"XPeekEvent"),
157 makeSymbolBinding (xPending,
"XPending"),
158 makeSymbolBinding (xPutImage,
"XPutImage"),
159 makeSymbolBinding (xPutPixel,
"XPutPixel"),
160 makeSymbolBinding (xQueryBestCursor,
"XQueryBestCursor"),
161 makeSymbolBinding (xQueryExtension,
"XQueryExtension"),
162 makeSymbolBinding (xQueryPointer,
"XQueryPointer"),
163 makeSymbolBinding (xQueryTree,
"XQueryTree"),
164 makeSymbolBinding (xRefreshKeyboardMapping,
"XRefreshKeyboardMapping"),
165 makeSymbolBinding (xReparentWindow,
"XReparentWindow"),
166 makeSymbolBinding (xResizeWindow,
"XResizeWindow"),
167 makeSymbolBinding (xRestackWindows,
"XRestackWindows"),
168 makeSymbolBinding (xRootWindow,
"XRootWindow"),
169 makeSymbolBinding (xSaveContext,
"XSaveContext"),
170 makeSymbolBinding (xScreenCount,
"XScreenCount"),
171 makeSymbolBinding (xScreenNumberOfScreen,
"XScreenNumberOfScreen"),
172 makeSymbolBinding (xSelectInput,
"XSelectInput"),
173 makeSymbolBinding (xSendEvent,
"XSendEvent"),
174 makeSymbolBinding (xSetClassHint,
"XSetClassHint"),
175 makeSymbolBinding (xSetErrorHandler,
"XSetErrorHandler"),
176 makeSymbolBinding (xSetIOErrorHandler,
"XSetIOErrorHandler"),
177 makeSymbolBinding (xSetInputFocus,
"XSetInputFocus"),
178 makeSymbolBinding (xSetSelectionOwner,
"XSetSelectionOwner"),
179 makeSymbolBinding (xSetWMHints,
"XSetWMHints"),
180 makeSymbolBinding (xSetWMIconName,
"XSetWMIconName"),
181 makeSymbolBinding (xSetWMName,
"XSetWMName"),
182 makeSymbolBinding (xSetWMNormalHints,
"XSetWMNormalHints"),
183 makeSymbolBinding (xStringListToTextProperty,
"XStringListToTextProperty"),
184 makeSymbolBinding (xSync,
"XSync"),
185 makeSymbolBinding (xSynchronize,
"XSynchronize"),
186 makeSymbolBinding (xTranslateCoordinates,
"XTranslateCoordinates"),
187 makeSymbolBinding (xrmUniqueQuark,
"XrmUniqueQuark"),
188 makeSymbolBinding (xUngrabPointer,
"XUngrabPointer"),
189 makeSymbolBinding (xUngrabServer,
"XUngrabServer"),
190 makeSymbolBinding (xUnlockDisplay,
"XUnlockDisplay"),
191 makeSymbolBinding (xUnmapWindow,
"XUnmapWindow"),
192 makeSymbolBinding (xutf8TextListToTextProperty,
"Xutf8TextListToTextProperty"),
193 makeSymbolBinding (xWarpPointer,
"XWarpPointer")))
197 loadSymbols (xcursorLib,
198 makeSymbolBinding (xcursorImageCreate,
"XcursorImageCreate"),
199 makeSymbolBinding (xcursorImageLoadCursor,
"XcursorImageLoadCursor"),
200 makeSymbolBinding (xcursorImageDestroy,
"XcursorImageDestroy"));
202 #if JUCE_USE_XINERAMA
203 loadSymbols (xineramaLib,
204 makeSymbolBinding (xineramaIsActive,
"XineramaIsActive"),
205 makeSymbolBinding (xineramaQueryScreens,
"XineramaQueryScreens"));
208 loadSymbols (xrenderLib,
209 makeSymbolBinding (xRenderQueryVersion,
"XRenderQueryVersion"),
210 makeSymbolBinding (xRenderFindStandardFormat,
"XRenderFindStandardFormat"),
211 makeSymbolBinding (xRenderFindFormat,
"XRenderFindFormat"),
212 makeSymbolBinding (xRenderFindVisualFormat,
"XRenderFindVisualFormat"));
215 loadSymbols (xrandrLib,
216 makeSymbolBinding (xRRGetScreenResources,
"XRRGetScreenResources"),
217 makeSymbolBinding (xRRFreeScreenResources,
"XRRFreeScreenResources"),
218 makeSymbolBinding (xRRGetOutputInfo,
"XRRGetOutputInfo"),
219 makeSymbolBinding (xRRFreeOutputInfo,
"XRRFreeOutputInfo"),
220 makeSymbolBinding (xRRGetCrtcInfo,
"XRRGetCrtcInfo"),
221 makeSymbolBinding (xRRFreeCrtcInfo,
"XRRFreeCrtcInfo"),
222 makeSymbolBinding (xRRGetOutputPrimary,
"XRRGetOutputPrimary"));
225 loadSymbols (xLib, xextLib,
226 makeSymbolBinding (xShmAttach,
"XShmAttach"),
227 makeSymbolBinding (xShmCreateImage,
"XShmCreateImage"),
228 makeSymbolBinding (xShmDetach,
"XShmDetach"),
229 makeSymbolBinding (xShmGetEventBase,
"XShmGetEventBase"),
230 makeSymbolBinding (xShmPutImage,
"XShmPutImage"),
231 makeSymbolBinding (xShmQueryVersion,
"XShmQueryVersion"));
#define JUCE_IMPLEMENT_SINGLETON(Classname)
This is a counterpart to the JUCE_DECLARE_SINGLETON macros.