diff --git a/ThunkLibs/Generators/libXext.py b/ThunkLibs/Generators/libXext.py deleted file mode 100644 index f26d87394..000000000 --- a/ThunkLibs/Generators/libXext.py +++ /dev/null @@ -1,189 +0,0 @@ -#!/usr/bin/python3 -from ThunkHelpers import * - -lib("libXext", "6") - -# needs function pointer -# fn("int (* XSetExtensionErrorHandler(XextErrorHandler))(Display*, const char*, const char*)") - -fn("int DPMSCapable(Display*)") -fn("int DPMSDisable(Display*)") -fn("int DPMSEnable(Display*)") -fn("int DPMSForceLevel(Display*, CARD16)") -fn("int DPMSGetTimeouts(Display*, CARD16*, CARD16*, CARD16*)") -fn("int DPMSGetVersion(Display*, int*, int*)") -fn("int DPMSInfo(Display*, CARD16*, BOOL*)") -fn("int DPMSQueryExtension(Display*, int*, int*)") -fn("int DPMSSetTimeouts(Display*, CARD16, CARD16, CARD16)") -fn("int XeviGetVisualInfo(Display*, VisualID*, int, ExtendedVisualInfo**, int*)") -fn("int XeviQueryExtension(Display*)") -fn("int XeviQueryVersion(Display*, int*, int*)") -fn("int XGEQueryExtension(Display*, int*, int*)") -fn("int XGEQueryVersion(Display*, int*, int*)") -fn("int XLbxGetEventBase(Display*)") -fn("int XLbxQueryExtension(Display*, int*, int*, int*)") -fn("int XLbxQueryVersion(Display*, int*, int*)") -fn("int XmbufCreateBuffers(Display*, Window, int, int, int, Multibuffer*)") -fn("int XmbufGetBufferAttributes(Display*, Multibuffer, XmbufBufferAttributes*)") -fn("int XmbufGetScreenInfo(Display*, Drawable, int*, XmbufBufferInfo**, int*, XmbufBufferInfo**)") -fn("int XmbufGetVersion(Display*, int*, int*)") -fn("int XmbufGetWindowAttributes(Display*, Window, XmbufWindowAttributes*)") -fn("int XmbufQueryExtension(Display*, int*, int*)") -fn("int XMissingExtension(Display*, const char*)") -fn("int XMITMiscGetBugMode(Display*)") -fn("int XMITMiscQueryExtension(Display*, int*, int*)") -fn("int XMITMiscSetBugMode(Display*, int)") -fn("int XSecurityQueryExtension(Display*, int*, int*)") -fn("int XSecurityRevokeAuthorization(Display*, XSecurityAuthorization)") -fn("int XShapeQueryExtension(Display*, int*, int*)") -fn("int XShapeQueryExtents(Display*, Window, int*, int*, int*, unsigned int*, unsigned int*, int*, int*, int*, unsigned int*, unsigned int*)") -fn("int XShapeQueryVersion(Display*, int*, int*)") -fn("int XShmAttach(Display*, XShmSegmentInfo*)") -fn("int XShmDetach(Display*, XShmSegmentInfo*)") -fn("int XShmGetEventBase(Display*)") -fn("int XShmGetImage(Display*, Drawable, XImage*, int, int, long unsigned int)") -fn("int XShmPixmapFormat(Display*)") -fn("int XShmPutImage(Display*, Drawable, GC, XImage*, int, int, int, int, unsigned int, unsigned int, int)") -fn("int XShmQueryExtension(Display*)") -fn("int XShmQueryVersion(Display*, int*, int*, int*)") -fn("int XSyncAwait(Display*, XSyncWaitCondition*, int)") -fn("int XSyncAwaitFence(Display*, const XSyncFence*, int)") -fn("int XSyncChangeAlarm(Display*, XSyncAlarm, long unsigned int, XSyncAlarmAttributes*)") -fn("int XSyncChangeCounter(Display*, XSyncCounter, XSyncValue)") -fn("int XSyncDestroyAlarm(Display*, XSyncAlarm)") -fn("int XSyncDestroyCounter(Display*, XSyncCounter)") -fn("int XSyncDestroyFence(Display*, XSyncFence)") -fn("int XSyncGetPriority(Display*, XID, int*)") -fn("int XSyncInitialize(Display*, int*, int*)") -fn("int XSyncQueryAlarm(Display*, XSyncAlarm, XSyncAlarmAttributes*)") -fn("int XSyncQueryCounter(Display*, XSyncCounter, XSyncValue*)") -fn("int XSyncQueryExtension(Display*, int*, int*)") -fn("int XSyncQueryFence(Display*, XSyncFence, int*)") -fn("int XSyncResetFence(Display*, XSyncFence)") -fn("int XSyncSetCounter(Display*, XSyncCounter, XSyncValue)") -fn("int XSyncSetPriority(Display*, XID, int)") -fn("int XSyncTriggerFence(Display*, XSyncFence)") -fn("int XSyncValueEqual(XSyncValue, XSyncValue)") -fn("int XSyncValueGreaterOrEqual(XSyncValue, XSyncValue)") -fn("int XSyncValueGreaterThan(XSyncValue, XSyncValue)") -fn("int XSyncValueHigh32(XSyncValue)") -fn("int XSyncValueIsNegative(XSyncValue)") -fn("int XSyncValueIsPositive(XSyncValue)") -fn("int XSyncValueIsZero(XSyncValue)") -fn("int XSyncValueLessOrEqual(XSyncValue, XSyncValue)") -fn("int XSyncValueLessThan(XSyncValue, XSyncValue)") -fn("long unsigned int XShapeInputSelected(Display*, Window)") -fn("Pixmap XShmCreatePixmap(Display*, Drawable, char*, XShmSegmentInfo*, unsigned int, unsigned int, unsigned int)") -fn("unsigned int XSyncValueLow32(XSyncValue)") -fn("void XmbufChangeBufferAttributes(Display*, Multibuffer, long unsigned int, XmbufSetBufferAttributes*)") -fn("void XmbufChangeWindowAttributes(Display*, Window, long unsigned int, XmbufSetWindowAttributes*)") -fn("void XmbufClearBufferArea(Display*, Multibuffer, int, int, unsigned int, unsigned int, int)") -fn("void XmbufDestroyBuffers(Display*, Window)") -fn("void XmbufDisplayBuffers(Display*, int, Multibuffer*, int, int)") -fn("void XSecurityFreeXauth(Xauth*)") -fn("void XShapeCombineMask(Display*, Window, int, int, int, Pixmap, int)") -fn("void XShapeCombineRectangles(Display*, Window, int, int, int, XRectangle*, int, int, int)") -fn("void XShapeCombineRegion(Display*, Window, int, int, int, Region, int)") -fn("void XShapeCombineShape(Display*, Window, int, int, int, Window, int, int)") -fn("void XShapeOffsetShape(Display*, Window, int, int, int)") -fn("void XShapeSelectInput(Display*, Window, long unsigned int)") -fn("void XSyncFreeSystemCounterList(XSyncSystemCounter*)") -fn("void XSyncIntsToValue(XSyncValue*, unsigned int, int)") -fn("void XSyncIntToValue(XSyncValue*, int)") -fn("void XSyncMaxValue(XSyncValue*)") -fn("void XSyncMinValue(XSyncValue*)") -fn("void XSyncValueAdd(XSyncValue*, XSyncValue, XSyncValue, int*)") -fn("void XSyncValueSubtract(XSyncValue*, XSyncValue, XSyncValue, int*)") -fn("Window XmbufCreateStereoWindow(Display*, Window, int, int, unsigned int, unsigned int, unsigned int, int, unsigned int, Visual*, long unsigned int, XSetWindowAttributes*, Multibuffer*, Multibuffer*)") -fn("Xauth* XSecurityAllocXauth()") -fn("Xauth* XSecurityGenerateAuthorization(Display*, Xauth*, long unsigned int, XSecurityAuthorizationAttributes*, XSecurityAuthorization*)") -fn("XImage* XShmCreateImage(Display*, Visual*, unsigned int, int, char*, XShmSegmentInfo*, unsigned int, unsigned int)") -fn("XRectangle* XShapeGetRectangles(Display*, Window, int, int*, int*)") -fn("XSyncAlarm XSyncCreateAlarm(Display*, long unsigned int, XSyncAlarmAttributes*)") -fn("XSyncCounter XSyncCreateCounter(Display*, XSyncValue)") -fn("XSyncFence XSyncCreateFence(Display*, Drawable, int)") -fn("XSyncSystemCounter* XSyncListSystemCounters(Display*, int*)") - -# extutil.h -fn("XExtensionInfo * XextCreateExtension()") -fn("void XextDestroyExtension(XExtensionInfo *)") -fn("XExtDisplayInfo * XextAddDisplay(XExtensionInfo *, Display*, const char *, XExtensionHooks *, int, XPointer)") -fn("int XextRemoveDisplay(XExtensionInfo *, Display*)") -fn("XExtDisplayInfo * XextFindDisplay(XExtensionInfo *, Display*)") - -# Xlibint.h -fn("void * _XGetRequest(Display *, CARD8, size_t)") -fn("void _XFlushGCCache(Display *, GC)") -fn("int _XData32(Display *, const long *, unsigned int)") -fn("void _XRead32(Display *, long *, long)") -fn("void _XDeqAsyncHandler(Display *, _XAsyncHandler *)") -fn("int _XError(Display *, xError *)") -fn("int _XIOError(Display *)") -fn("char * _XAllocScratch(Display *, unsigned long)") -fn("char * _XAllocTemp(Display *, unsigned long)") -fn("void _XFreeTemp(Display *, char *, unsigned long)") -fn("Visual * _XVIDtoVisual(Display *, VisualID)") -fn("unsigned long _XSetLastRequestRead(Display *, xGenericReply *)") -fn("int _XGetHostname(char *, int)") -fn("Screen * _XScreenOfWindow(Display *, Window)") -fn("int _XAsyncErrorHandler(Display *, xReply *, char *, int, XPointer)") -fn("char * _XGetAsyncReply(Display *, char *, xReply *, char *, int, int, int)") -fn("void _XGetAsyncData(Display *, char *, char *, int, int, int, int)") -fn("void _XFlush(Display *)") -fn("int _XEventsQueued(Display *, int)") -fn("void _XReadEvents(Display *)") -fn("int _XRead(Display *, char *, long)") -fn("void _XReadPad(Display *, char *, long)") -fn("void _XSend(Display *, const char *, long)") -fn("int _XReply(Display *, xReply *, int, int)") -fn("void _XEnq(Display *, xEvent *)") -fn("void _XDeq(Display *, _XQEvent *, _XQEvent *)") -fn("int _XUnknownWireEvent(Display *, XEvent *, xEvent *)") -fn("int _XUnknownWireEventCookie(Display *, XGenericEventCookie *, xEvent *)") -fn("int _XUnknownCopyEventCookie(Display *, XGenericEventCookie *, XGenericEventCookie *)") -fn("int _XUnknownNativeEvent(Display *, XEvent *, xEvent *)") -fn("int _XWireToEvent(Display *, XEvent *, xEvent *)") -fn("int _XDefaultWireError(Display *, XErrorEvent *, xError *)") -fn("int _XPollfdCacheInit(Display *)") -fn("void _XPollfdCacheAdd(Display *, int)") -fn("void _XPollfdCacheDel(Display *, int)") -fn("XID _XAllocID(Display *)") -fn("void _XAllocIDs(Display *, XID *, int)") -fn("int _XFreeExtData(XExtData *)") -#fn("int (*)(Display *, GC, XExtCodes *) XESetCreateGC(Display *, GC, XExtCodes *, Display *, int, int (*)(Display *, GC, XExtCodes *))") -#fn("int (*)(Display *, GC, XExtCodes *) XESetCopyGC(Display *, GC, XExtCodes *, Display *, int, int (*)(Display *, GC, XExtCodes *))") -#fn("int (*)(Display *, GC, XExtCodes *) XESetFlushGC(Display *, GC, XExtCodes *, Display *, int, int (*)(Display *, GC, XExtCodes *))") -#fn("int (*)(Display *, GC, XExtCodes *) XESetFreeGC(Display *, GC, XExtCodes *, Display *, int, int (*)(Display *, GC, XExtCodes *))") -#fn("int (*)(Display *, XFontStruct *, XExtCodes *) XESetCreateFont(Display *, XFontStruct *, XExtCodes *, Display *, int, int (*)(Display *, XFontStruct *, XExtCodes *))") -#fn("int (*)(Display *, XFontStruct *, XExtCodes *) XESetFreeFont(Display *, XFontStruct *, XExtCodes *, Display *, int, int (*)(Display *, XFontStruct *, XExtCodes *))") -#fn("int (*)(Display *, XExtCodes *) XESetCloseDisplay(Display *, XExtCodes *, Display *, int, int (*)(Display *, XExtCodes *))") -#fn("int (*)(Display *, xError *, XExtCodes *, int *) XESetError(Display *, xError *, XExtCodes *, int *, Display *, int, int (*)(Display *, xError *, XExtCodes *, int *))") -#fn("char *(*)(Display *, int, XExtCodes *, char *, int) XESetErrorString(Display *, int, XExtCodes *, char *, int, Display *, int, char *(*)(Display *, int, XExtCodes *, char *, int))") -#fn("void (*)(Display *, XErrorEvent *, void *) XESetPrintErrorValues(Display *, XErrorEvent *, void *, Display *, int, void (*)(Display *, XErrorEvent *, void *))") -#fn("int (*)(Display *, XEvent *, xEvent *) XESetWireToEvent(Display *, XEvent *, xEvent *, Display *, int, int (*)(Display *, XEvent *, xEvent *))") -#fn("int (*)(Display *, XGenericEventCookie *, xEvent *) XESetWireToEventCookie(Display *, XGenericEventCookie *, xEvent *, Display *, int, int (*)(Display *, XGenericEventCookie *, xEvent *))") -#fn("int (*)(Display *, XGenericEventCookie *, XGenericEventCookie *) XESetCopyEventCookie(Display *, XGenericEventCookie *, XGenericEventCookie *, Display *, int, int (*)(Display *, XGenericEventCookie *, XGenericEventCookie *))") -#fn("int (*)(Display *, XEvent *, xEvent *) XESetEventToWire(Display *, XEvent *, xEvent *, Display *, int, int (*)(Display *, XEvent *, xEvent *))") -#fn("int (*)(Display *, XErrorEvent *, xError *) XESetWireToError(Display *, XErrorEvent *, xError *, Display *, int, int (*)(Display *, XErrorEvent *, xError *))") -#fn("void (*)(Display *, XExtCodes *, const char *, long) XESetBeforeFlush(Display *, XExtCodes *, const char *, long, Display *, int, void (*)(Display *, XExtCodes *, const char *, long))") -fn("int _XRegisterInternalConnection(Display *, int, _XInternalConnectionProc, XPointer)") -fn("void _XUnregisterInternalConnection(Display *, int)") -fn("void _XProcessInternalConnection(Display *, struct _XConnectionInfo *)") -fn("int _XTextHeight(XFontStruct *, const char *, int)") -fn("int _XTextHeight16(XFontStruct *, const XChar2b *, int)") -fn("int _XEventToWire(Display *, XEvent *, xEvent *)") -fn("int _XF86LoadQueryLocaleFont(Display *, const char *, XFontStruct **, Font *)") -fn("void _XProcessWindowAttributes(Display *, xChangeWindowAttributesReq *, unsigned long, XSetWindowAttributes *)") -fn("int _XDefaultError(Display *, XErrorEvent *)") -fn("int _XDefaultIOError(Display *)") -fn("void _XDefaultIOErrorExit(Display *, void *)") -fn("void _XSetClipRectangles(Display *, GC, int, int, XRectangle *, int, int)") -fn("int _XGetWindowAttributes(Display *, Window, XWindowAttributes *)") -fn("int _XPutBackEvent(Display *, XEvent *)") -fn("int _XIsEventCookie(Display *, XEvent *)") -fn("void _XFreeEventCookies(Display *)") -fn("void _XStoreEventCookie(Display *, XEvent *)") -fn("int _XFetchEventCookie(Display *, XGenericEventCookie *)") -fn("int _XCopyEventCookie(Display *, XGenericEventCookie *, XGenericEventCookie *)") -fn("void xlocaledir(char *, int)") -Generate() diff --git a/ThunkLibs/GuestLibs/CMakeLists.txt b/ThunkLibs/GuestLibs/CMakeLists.txt index c4a4c6033..4114c78c2 100644 --- a/ThunkLibs/GuestLibs/CMakeLists.txt +++ b/ThunkLibs/GuestLibs/CMakeLists.txt @@ -138,7 +138,7 @@ add_guest_lib(GL) generate(libX11 thunks function_packs function_packs_public callback_structs callback_unpacks_header callback_unpacks_header_init callback_unpacks callback_typedefs) add_guest_lib(X11) -generate(libXext thunks function_packs function_packs_public) +generate_new(libXext ${CMAKE_CURRENT_SOURCE_DIR}/../libXext/libXext_interface.cpp thunks function_packs function_packs_public) add_guest_lib(Xext) generate_new(libXrender ${CMAKE_CURRENT_SOURCE_DIR}/../libXrender/libXrender_interface.cpp thunks function_packs function_packs_public) diff --git a/ThunkLibs/HostLibs/CMakeLists.txt b/ThunkLibs/HostLibs/CMakeLists.txt index 1832f7412..fbecb69b1 100644 --- a/ThunkLibs/HostLibs/CMakeLists.txt +++ b/ThunkLibs/HostLibs/CMakeLists.txt @@ -132,7 +132,7 @@ target_link_libraries(GL-host PRIVATE OpenGL::GL) generate(libX11 function_unpacks tab_function_unpacks ldr ldr_ptrs callback_packs callback_structs callback_unpacks_header callback_typedefs) add_host_lib(X11) -generate(libXext function_unpacks tab_function_unpacks ldr ldr_ptrs) +generate_new(libXext ${CMAKE_CURRENT_SOURCE_DIR}/../libXext/libXext_interface.cpp function_unpacks tab_function_unpacks ldr ldr_ptrs) add_host_lib(Xext) generate_new(libXrender ${CMAKE_CURRENT_SOURCE_DIR}/../libXrender/libXrender_interface.cpp function_unpacks tab_function_unpacks ldr ldr_ptrs) diff --git a/ThunkLibs/libXext/libXext_interface.cpp b/ThunkLibs/libXext/libXext_interface.cpp new file mode 100644 index 000000000..60936a35c --- /dev/null +++ b/ThunkLibs/libXext/libXext_interface.cpp @@ -0,0 +1,184 @@ +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +extern "C" { +#include +} + +template +struct fex_gen_config { + unsigned version = 6; +}; + +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config {}; +template<> struct fex_gen_config<_XGetRequest> {}; +template<> struct fex_gen_config<_XFlushGCCache> {}; +template<> struct fex_gen_config<_XData32> {}; +template<> struct fex_gen_config<_XRead32> {}; +template<> struct fex_gen_config<_XDeqAsyncHandler> {}; +template<> struct fex_gen_config<_XError> {}; +template<> struct fex_gen_config<_XIOError> {}; +template<> struct fex_gen_config<_XAllocScratch> {}; +template<> struct fex_gen_config<_XAllocTemp> {}; +template<> struct fex_gen_config<_XFreeTemp> {}; +template<> struct fex_gen_config<_XVIDtoVisual> {}; +template<> struct fex_gen_config<_XSetLastRequestRead> {}; +template<> struct fex_gen_config<_XGetHostname> {}; +template<> struct fex_gen_config<_XScreenOfWindow> {}; +template<> struct fex_gen_config<_XAsyncErrorHandler> {}; +template<> struct fex_gen_config<_XGetAsyncReply> {}; +template<> struct fex_gen_config<_XGetAsyncData> {}; +template<> struct fex_gen_config<_XFlush> {}; +template<> struct fex_gen_config<_XEventsQueued> {}; +template<> struct fex_gen_config<_XReadEvents> {}; +template<> struct fex_gen_config<_XRead> {}; +template<> struct fex_gen_config<_XReadPad> {}; +template<> struct fex_gen_config<_XSend> {}; +template<> struct fex_gen_config<_XReply> {}; +template<> struct fex_gen_config<_XEnq> {}; +template<> struct fex_gen_config<_XDeq> {}; +template<> struct fex_gen_config<_XUnknownWireEvent> {}; +template<> struct fex_gen_config<_XUnknownWireEventCookie> {}; +template<> struct fex_gen_config<_XUnknownCopyEventCookie> {}; +template<> struct fex_gen_config<_XUnknownNativeEvent> {}; +template<> struct fex_gen_config<_XWireToEvent> {}; +template<> struct fex_gen_config<_XDefaultWireError> {}; +template<> struct fex_gen_config<_XPollfdCacheInit> {}; +template<> struct fex_gen_config<_XPollfdCacheAdd> {}; +template<> struct fex_gen_config<_XPollfdCacheDel> {}; +template<> struct fex_gen_config<_XAllocID> {}; +template<> struct fex_gen_config<_XAllocIDs> {}; +template<> struct fex_gen_config<_XFreeExtData> {}; +template<> struct fex_gen_config<_XRegisterInternalConnection> : fexgen::callback_stub {}; +template<> struct fex_gen_config<_XUnregisterInternalConnection> {}; +template<> struct fex_gen_config<_XProcessInternalConnection> {}; +template<> struct fex_gen_config<_XTextHeight> {}; +template<> struct fex_gen_config<_XTextHeight16> {}; +template<> struct fex_gen_config<_XEventToWire> {}; +template<> struct fex_gen_config<_XF86LoadQueryLocaleFont> {}; +template<> struct fex_gen_config<_XProcessWindowAttributes> {}; +template<> struct fex_gen_config<_XDefaultError> {}; +template<> struct fex_gen_config<_XDefaultIOError> {}; +template<> struct fex_gen_config<_XDefaultIOErrorExit> {}; +template<> struct fex_gen_config<_XSetClipRectangles> {}; +template<> struct fex_gen_config<_XGetWindowAttributes> {}; +template<> struct fex_gen_config<_XPutBackEvent> {}; +template<> struct fex_gen_config<_XIsEventCookie> {}; +template<> struct fex_gen_config<_XFreeEventCookies> {}; +template<> struct fex_gen_config<_XStoreEventCookie> {}; +template<> struct fex_gen_config<_XFetchEventCookie> {}; +template<> struct fex_gen_config<_XCopyEventCookie> {}; +template<> struct fex_gen_config {};