Thunks: Use libclang-based code generation for libXext

This commit is contained in:
Tony Wasserka committed 2021-12-10 11:24:58 +01:00
1 parent bd380e0f15
commit 4ceb2dfdf2
4 files changed
+186 -191

No files matched your search

-189
View File
@@ -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()
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+184
View File
@@ -0,0 +1,184 @@
#include <common/GeneratorInterface.h>
#include <X11/Xlib.h>
#include <X11/Xlibint.h>
#include <X11/extensions/Xext.h>
#include <X11/extensions/dpms.h>
#include <X11/extensions/XEVI.h>
#include <X11/extensions/Xge.h>
#include <X11/extensions/XLbx.h>
#include <X11/extensions/multibuf.h>
#include <X11/extensions/MITMisc.h>
#include <X11/extensions/security.h>
#include <X11/extensions/shape.h>
#include <X11/extensions/XShm.h>
#include <X11/extensions/sync.h>
extern "C" {
#include <X11/extensions/extutil.h>
}
template<auto>
struct fex_gen_config {
unsigned version = 6;
};
template<> struct fex_gen_config<DPMSCapable> {};
template<> struct fex_gen_config<DPMSDisable> {};
template<> struct fex_gen_config<DPMSEnable> {};
template<> struct fex_gen_config<DPMSForceLevel> {};
template<> struct fex_gen_config<DPMSGetTimeouts> {};
template<> struct fex_gen_config<DPMSGetVersion> {};
template<> struct fex_gen_config<DPMSInfo> {};
template<> struct fex_gen_config<DPMSQueryExtension> {};
template<> struct fex_gen_config<DPMSSetTimeouts> {};
template<> struct fex_gen_config<XeviGetVisualInfo> {};
template<> struct fex_gen_config<XeviQueryExtension> {};
template<> struct fex_gen_config<XeviQueryVersion> {};
template<> struct fex_gen_config<XGEQueryExtension> {};
template<> struct fex_gen_config<XGEQueryVersion> {};
template<> struct fex_gen_config<XLbxGetEventBase> {};
template<> struct fex_gen_config<XLbxQueryExtension> {};
template<> struct fex_gen_config<XLbxQueryVersion> {};
template<> struct fex_gen_config<XmbufCreateBuffers> {};
template<> struct fex_gen_config<XmbufGetBufferAttributes> {};
template<> struct fex_gen_config<XmbufGetScreenInfo> {};
template<> struct fex_gen_config<XmbufGetVersion> {};
template<> struct fex_gen_config<XmbufGetWindowAttributes> {};
template<> struct fex_gen_config<XmbufQueryExtension> {};
template<> struct fex_gen_config<XMissingExtension> {};
template<> struct fex_gen_config<XMITMiscGetBugMode> {};
template<> struct fex_gen_config<XMITMiscQueryExtension> {};
template<> struct fex_gen_config<XMITMiscSetBugMode> {};
template<> struct fex_gen_config<XSecurityQueryExtension> {};
template<> struct fex_gen_config<XSecurityRevokeAuthorization> {};
template<> struct fex_gen_config<XShapeQueryExtension> {};
template<> struct fex_gen_config<XShapeQueryExtents> {};
template<> struct fex_gen_config<XShapeQueryVersion> {};
template<> struct fex_gen_config<XShmAttach> {};
template<> struct fex_gen_config<XShmDetach> {};
template<> struct fex_gen_config<XShmGetEventBase> {};
template<> struct fex_gen_config<XShmGetImage> {};
template<> struct fex_gen_config<XShmPixmapFormat> {};
template<> struct fex_gen_config<XShmPutImage> {};
template<> struct fex_gen_config<XShmQueryExtension> {};
template<> struct fex_gen_config<XShmQueryVersion> {};
template<> struct fex_gen_config<XSyncAwait> {};
template<> struct fex_gen_config<XSyncAwaitFence> {};
template<> struct fex_gen_config<XSyncChangeAlarm> {};
template<> struct fex_gen_config<XSyncChangeCounter> {};
template<> struct fex_gen_config<XSyncDestroyAlarm> {};
template<> struct fex_gen_config<XSyncDestroyCounter> {};
template<> struct fex_gen_config<XSyncDestroyFence> {};
template<> struct fex_gen_config<XSyncGetPriority> {};
template<> struct fex_gen_config<XSyncInitialize> {};
template<> struct fex_gen_config<XSyncQueryAlarm> {};
template<> struct fex_gen_config<XSyncQueryCounter> {};
template<> struct fex_gen_config<XSyncQueryExtension> {};
template<> struct fex_gen_config<XSyncQueryFence> {};
template<> struct fex_gen_config<XSyncResetFence> {};
template<> struct fex_gen_config<XSyncSetCounter> {};
template<> struct fex_gen_config<XSyncSetPriority> {};
template<> struct fex_gen_config<XSyncTriggerFence> {};
template<> struct fex_gen_config<XSyncValueEqual> {};
template<> struct fex_gen_config<XSyncValueGreaterOrEqual> {};
template<> struct fex_gen_config<XSyncValueGreaterThan> {};
template<> struct fex_gen_config<XSyncValueHigh32> {};
template<> struct fex_gen_config<XSyncValueIsNegative> {};
template<> struct fex_gen_config<XSyncValueIsPositive> {};
template<> struct fex_gen_config<XSyncValueIsZero> {};
template<> struct fex_gen_config<XSyncValueLessOrEqual> {};
template<> struct fex_gen_config<XSyncValueLessThan> {};
template<> struct fex_gen_config<XShapeInputSelected> {};
template<> struct fex_gen_config<XShmCreatePixmap> {};
template<> struct fex_gen_config<XSyncValueLow32> {};
template<> struct fex_gen_config<XmbufChangeBufferAttributes> {};
template<> struct fex_gen_config<XmbufChangeWindowAttributes> {};
template<> struct fex_gen_config<XmbufClearBufferArea> {};
template<> struct fex_gen_config<XmbufDestroyBuffers> {};
template<> struct fex_gen_config<XmbufDisplayBuffers> {};
template<> struct fex_gen_config<XSecurityFreeXauth> {};
template<> struct fex_gen_config<XShapeCombineMask> {};
template<> struct fex_gen_config<XShapeCombineRectangles> {};
template<> struct fex_gen_config<XShapeCombineRegion> {};
template<> struct fex_gen_config<XShapeCombineShape> {};
template<> struct fex_gen_config<XShapeOffsetShape> {};
template<> struct fex_gen_config<XShapeSelectInput> {};
template<> struct fex_gen_config<XSyncFreeSystemCounterList> {};
template<> struct fex_gen_config<XSyncIntsToValue> {};
template<> struct fex_gen_config<XSyncIntToValue> {};
template<> struct fex_gen_config<XSyncMaxValue> {};
template<> struct fex_gen_config<XSyncMinValue> {};
template<> struct fex_gen_config<XSyncValueAdd> {};
template<> struct fex_gen_config<XSyncValueSubtract> {};
template<> struct fex_gen_config<XmbufCreateStereoWindow> {};
template<> struct fex_gen_config<XSecurityAllocXauth> {};
template<> struct fex_gen_config<XSecurityGenerateAuthorization> {};
template<> struct fex_gen_config<XShmCreateImage> {};
template<> struct fex_gen_config<XShapeGetRectangles> {};
template<> struct fex_gen_config<XSyncCreateAlarm> {};
template<> struct fex_gen_config<XSyncCreateCounter> {};
template<> struct fex_gen_config<XSyncCreateFence> {};
template<> struct fex_gen_config<XSyncListSystemCounters> {};
template<> struct fex_gen_config<XextCreateExtension> {};
template<> struct fex_gen_config<XextDestroyExtension> {};
template<> struct fex_gen_config<XextAddDisplay> {};
template<> struct fex_gen_config<XextRemoveDisplay> {};
template<> struct fex_gen_config<XextFindDisplay> {};
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<xlocaledir> {};