Files
FEX-Emu--FEX/ThunkLibs/libX11/libX11_interface.cpp
T
Paulo Matos 2b4ec88dae Whole-tree reformat
This follows discussions from #3413.
Followup commits add clang-format file, script and blame ignore lists.
2024-04-12 16:26:02 +02:00

1635 lines
46 KiB
C++

#include <common/GeneratorInterface.h>
extern "C" {
#define XUTIL_DEFINE_FUNCTIONS
#include <X11/Xproto.h>
#include <X11/XKBlib.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xresource.h>
#include <X11/ImUtil.h>
#include <X11/extensions/extutil.h>
#include <X11/extensions/Xext.h>
#include <X11/extensions/XKBgeom.h>
#include <X11/Xlibint.h>
#include <X11/XKBlib.h>
#include <X11/Xtrans/Xtransint.h>
#include <X11/Xutil.h>
}
#include <type_traits>
template<auto>
struct fex_gen_config {
unsigned version = 6;
};
template<typename>
struct fex_gen_type {};
// Function, parameter index, parameter type [optional]
template<auto, int, typename = void>
struct fex_gen_param {};
template<>
struct fex_gen_type<XID(Display*)> {}; // XDisplay::resource_alloc
// NOTE: only indirect calls to this are allowed
// NOTE: The char* and int arguments are only present in some configurations, but always enabling them interfers with our internal ABI...
template<>
struct fex_gen_type<void(Display* /*, char*, int*/)> {}; // XDisplay::lock_fns->lock_display
template<>
struct fex_gen_type<void(_XDisplay*, XID*, int)> {}; // XDisplay::idlist_alloc
#if !(X11_VERSION_MAJOR >= 1 && X11_VERSION_MINOR >= 7 && X11_VERSION_PATCH >= 0)
// Doesn't exist on older X11
typedef void (*XIOErrorExitHandler)(Display*, void*);
#endif
template<>
struct fex_gen_type<std::remove_pointer_t<XIOErrorExitHandler>> {}; // XDisplay::exit_handler
template<>
struct fex_gen_type<Bool(Display*, xReply*, char*, int, XPointer)> {}; // XDisplay::async_handlers->handler
template<>
struct fex_gen_type<Bool(XIM, XPointer, XPointer)> {}; // XIMProc
template<>
struct fex_gen_type<Bool(XIC, XPointer, XPointer)> {}; // XICProc
template<>
struct fex_gen_type<void(Display*, XPointer, XPointer)> {}; // XIDProc
template<>
struct fex_gen_type<int(XImage*)> {}; // XImage::f.destroy_image
template<>
struct fex_gen_type<unsigned long(XImage*, int, int)> {}; // XImage::f.get_pixel
template<>
struct fex_gen_type<int(XImage*, int, int, unsigned long)> {}; // XImage::f.put_pixel
template<>
struct fex_gen_type<int(XImage*, long)> {}; // XImage::f.add_pixel
template<>
struct fex_gen_type<std::remove_pointer_t<XIC>> : fexgen::opaque_type {};
template<>
struct fex_gen_type<std::remove_pointer_t<XIM>> : fexgen::opaque_type {};
template<>
struct fex_gen_type<std::remove_pointer_t<XOC>> : fexgen::opaque_type {};
template<>
struct fex_gen_type<std::remove_pointer_t<XOM>> : fexgen::opaque_type {};
template<>
struct fex_gen_type<_XrmHashBucketRec> : fexgen::opaque_type {};
template<>
struct fex_gen_type<_XkbInfoRec> : fexgen::opaque_type {};
template<>
struct fex_gen_type<_XContextDB> : fexgen::opaque_type {};
template<>
struct fex_gen_type<_XDisplayAtoms> : fexgen::opaque_type {};
template<>
struct fex_gen_type<_XLockInfo> : fexgen::opaque_type {};
template<>
struct fex_gen_type<_XIMFilter> : fexgen::opaque_type {};
template<>
struct fex_gen_type<_XKeytrans> : fexgen::opaque_type {};
template<>
struct fex_gen_type<_X11XCBPrivate> : fexgen::opaque_type {};
#ifndef IS_32BIT_THUNK
// This has a public definition but is used as an opaque type in most APIs
template<>
struct fex_gen_type<std::remove_pointer_t<Region>> : fexgen::assume_compatible_data_layout {};
// Union types
template<>
struct fex_gen_type<XEvent> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<xEvent> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<XkbDoodadRec> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<xReply> : fexgen::assume_compatible_data_layout {};
// Union type of all sorts of different X objects... Further, XEHeadOfExtensionList casts this to XExtData**.
// This is likely highly unsafe to assume compatible.
template<>
struct fex_gen_type<XEDataObject> : fexgen::assume_compatible_data_layout {};
// Linked-list types
template<>
struct fex_gen_type<_XtransConnFd> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<_XkbDeviceLedChanges> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<_XQEvent> : fexgen::assume_compatible_data_layout {};
// Contains nontrivial circular pointer relationships
template<>
struct fex_gen_type<XkbOverlayRec> : fexgen::assume_compatible_data_layout {};
// TODO: These are largely compatible, *but* contain function pointer members that need adjustment!
template<>
struct fex_gen_type<_XConnWatchInfo> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<XExtData> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<_XLockPtrs> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<_XFreeFuncRec> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<_XExtension> : fexgen::assume_compatible_data_layout {}; // Also contains linked-list pointers
template<>
struct fex_gen_type<_XConnectionInfo> : fexgen::assume_compatible_data_layout {}; // Also contains linked-list pointers
template<>
struct fex_gen_type<_XInternalAsync> : fexgen::assume_compatible_data_layout {}; // Also contains linked-list pointers
template<>
struct fex_gen_type<_XDisplay> : fexgen::assume_compatible_data_layout {};
// TODO: This contains a nested struct type of function pointer members
template<>
struct fex_gen_type<XImage> : fexgen::assume_compatible_data_layout {};
template<>
struct fex_gen_type<XExtensionHooks> : fexgen::assume_compatible_data_layout {};
#endif
// Union type (each member is defined in terms of char members)
template<>
struct fex_gen_type<XkbAction> : fexgen::assume_compatible_data_layout {};
// Xlibint
template<>
struct fex_gen_config<_XGetRequest> {};
template<>
struct fex_gen_config<_XFlushGCCache> {};
#if __SIZEOF_POINTER__ == 8
template<>
struct fex_gen_config<_XData32> {};
template<>
struct fex_gen_config<_XRead32> {};
#endif
template<>
struct fex_gen_config<_XDeqAsyncHandler> {};
template<>
struct fex_gen_config<_XError> {};
template<>
struct fex_gen_config<_XIOError> {};
template<>
struct fex_gen_config<_XEatData> {};
template<>
struct fex_gen_config<_XEatDataWords> {};
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> : fexgen::custom_host_impl, fexgen::custom_guest_entrypoint {};
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<XESetCreateGC> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetCopyGC> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetFlushGC> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetFreeGC> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetCreateFont> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetFreeFont> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetCloseDisplay> : fexgen::returns_guest_pointer {};
// TODO: Should probably catch these with a custom handler
template<>
struct fex_gen_config<XESetError> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetErrorString> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetPrintErrorValues> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetWireToEvent> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetWireToEventCookie> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetCopyEventCookie> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetEventToWire> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XESetBeforeFlush> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<_XRegisterInternalConnection> {};
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> {};
#if !(X11_VERSION_MAJOR >= 1 && X11_VERSION_MINOR >= 7 && X11_VERSION_PATCH >= 0)
// Doesn't exist on older X11
extern void _XDefaultIOErrorExit(Display* dpy, void* user_data);
#endif
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> {};
// XKB
template<>
struct fex_gen_config<XkbIgnoreExtension> {};
template<>
struct fex_gen_config<XkbOpenDisplay> {};
template<>
struct fex_gen_config<XkbQueryExtension> {};
template<>
struct fex_gen_config<XkbUseExtension> {};
template<>
struct fex_gen_config<XkbLibraryVersion> {};
template<>
struct fex_gen_config<XkbSetXlibControls> {};
template<>
struct fex_gen_config<XkbGetXlibControls> {};
template<>
struct fex_gen_config<XkbXlibControlsImplemented> {};
// TODO: template<> struct fex_gen_config<XkbSetAtomFuncs> {};
template<>
struct fex_gen_config<XkbKeycodeToKeysym> {};
template<>
struct fex_gen_config<XkbKeysymToModifiers> {};
template<>
struct fex_gen_config<XkbLookupKeySym> {};
template<>
struct fex_gen_config<XkbLookupKeyBinding> {};
template<>
struct fex_gen_config<XkbTranslateKeyCode> {};
template<>
struct fex_gen_config<XkbTranslateKeySym> {};
template<>
struct fex_gen_config<XkbSetAutoRepeatRate> {};
template<>
struct fex_gen_config<XkbGetAutoRepeatRate> {};
template<>
struct fex_gen_config<XkbChangeEnabledControls> {};
template<>
struct fex_gen_config<XkbDeviceBell> {};
template<>
struct fex_gen_config<XkbForceDeviceBell> {};
template<>
struct fex_gen_config<XkbDeviceBellEvent> {};
template<>
struct fex_gen_config<XkbBell> {};
template<>
struct fex_gen_config<XkbForceBell> {};
template<>
struct fex_gen_config<XkbBellEvent> {};
template<>
struct fex_gen_config<XkbSelectEvents> {};
template<>
struct fex_gen_config<XkbSelectEventDetails> {};
template<>
struct fex_gen_config<XkbNoteMapChanges> {};
template<>
struct fex_gen_config<XkbNoteNameChanges> {};
template<>
struct fex_gen_config<XkbGetIndicatorState> {};
template<>
struct fex_gen_config<XkbGetDeviceIndicatorState> {};
template<>
struct fex_gen_config<XkbGetIndicatorMap> {};
template<>
struct fex_gen_config<XkbSetIndicatorMap> {};
template<>
struct fex_gen_config<XkbGetNamedIndicator> {};
template<>
struct fex_gen_config<XkbGetNamedDeviceIndicator> {};
template<>
struct fex_gen_config<XkbSetNamedIndicator> {};
template<>
struct fex_gen_config<XkbSetNamedDeviceIndicator> {};
template<>
struct fex_gen_config<XkbLockModifiers> {};
template<>
struct fex_gen_config<XkbLatchModifiers> {};
template<>
struct fex_gen_config<XkbLockGroup> {};
template<>
struct fex_gen_config<XkbLatchGroup> {};
template<>
struct fex_gen_config<XkbSetServerInternalMods> {};
template<>
struct fex_gen_config<XkbSetIgnoreLockMods> {};
template<>
struct fex_gen_config<XkbVirtualModsToReal> {};
template<>
struct fex_gen_config<XkbComputeEffectiveMap> {};
template<>
struct fex_gen_config<XkbInitCanonicalKeyTypes> {};
template<>
struct fex_gen_config<XkbAllocKeyboard> {};
template<>
struct fex_gen_config<XkbFreeKeyboard> {};
template<>
struct fex_gen_config<XkbAllocClientMap> {};
template<>
struct fex_gen_config<XkbAllocServerMap> {};
template<>
struct fex_gen_config<XkbFreeClientMap> {};
template<>
struct fex_gen_config<XkbFreeServerMap> {};
template<>
struct fex_gen_config<XkbAddKeyType> {};
template<>
struct fex_gen_config<XkbAllocIndicatorMaps> {};
template<>
struct fex_gen_config<XkbFreeIndicatorMaps> {};
template<>
struct fex_gen_config<XkbGetMap> {};
template<>
struct fex_gen_config<XkbGetUpdatedMap> {};
template<>
struct fex_gen_config<XkbGetMapChanges> {};
template<>
struct fex_gen_config<XkbRefreshKeyboardMapping> {};
template<>
struct fex_gen_config<XkbGetKeyTypes> {};
template<>
struct fex_gen_config<XkbGetKeySyms> {};
template<>
struct fex_gen_config<XkbGetKeyActions> {};
template<>
struct fex_gen_config<XkbGetKeyBehaviors> {};
template<>
struct fex_gen_config<XkbGetVirtualMods> {};
template<>
struct fex_gen_config<XkbGetKeyExplicitComponents> {};
template<>
struct fex_gen_config<XkbGetKeyModifierMap> {};
template<>
struct fex_gen_config<XkbGetKeyVirtualModMap> {};
template<>
struct fex_gen_config<XkbAllocControls> {};
template<>
struct fex_gen_config<XkbFreeControls> {};
template<>
struct fex_gen_config<XkbGetControls> {};
template<>
struct fex_gen_config<XkbSetControls> {};
template<>
struct fex_gen_config<XkbNoteControlsChanges> {};
template<>
struct fex_gen_config<XkbAllocCompatMap> {};
template<>
struct fex_gen_config<XkbFreeCompatMap> {};
template<>
struct fex_gen_config<XkbGetCompatMap> {};
template<>
struct fex_gen_config<XkbSetCompatMap> {};
template<>
struct fex_gen_config<XkbAddSymInterpret> {};
template<>
struct fex_gen_config<XkbAllocNames> {};
template<>
struct fex_gen_config<XkbGetNames> {};
template<>
struct fex_gen_config<XkbSetNames> {};
template<>
struct fex_gen_config<XkbChangeNames> {};
template<>
struct fex_gen_config<XkbFreeNames> {};
template<>
struct fex_gen_config<XkbGetState> {};
template<>
struct fex_gen_config<XkbSetMap> {};
template<>
struct fex_gen_config<XkbChangeMap> {};
template<>
struct fex_gen_config<XkbSetDetectableAutoRepeat> {};
template<>
struct fex_gen_config<XkbGetDetectableAutoRepeat> {};
template<>
struct fex_gen_config<XkbSetAutoResetControls> {};
template<>
struct fex_gen_config<XkbGetAutoResetControls> {};
template<>
struct fex_gen_config<XkbSetPerClientControls> {};
template<>
struct fex_gen_config<XkbGetPerClientControls> {};
template<>
struct fex_gen_config<XkbCopyKeyType> {};
template<>
struct fex_gen_config<XkbCopyKeyTypes> {};
template<>
struct fex_gen_config<XkbResizeKeyType> {};
template<>
struct fex_gen_config<XkbResizeKeySyms> {};
template<>
struct fex_gen_config<XkbResizeKeyActions> {};
template<>
struct fex_gen_config<XkbChangeTypesOfKey> {};
template<>
struct fex_gen_config<XkbChangeKeycodeRange> {};
template<>
struct fex_gen_config<XkbListComponents> {};
template<>
struct fex_gen_config<XkbFreeComponentList> {};
template<>
struct fex_gen_config<XkbGetKeyboard> {};
template<>
struct fex_gen_config<XkbGetKeyboardByName> {};
template<>
struct fex_gen_config<XkbKeyTypesForCoreSymbols> {};
template<>
struct fex_gen_config<XkbApplyCompatMapToKey> {};
template<>
struct fex_gen_config<XkbUpdateMapFromCore> {};
template<>
struct fex_gen_config<XkbAddDeviceLedInfo> {};
template<>
struct fex_gen_config<XkbResizeDeviceButtonActions> {};
template<>
struct fex_gen_config<XkbAllocDeviceInfo> {};
template<>
struct fex_gen_config<XkbFreeDeviceInfo> {};
template<>
struct fex_gen_config<XkbNoteDeviceChanges> {};
template<>
struct fex_gen_config<XkbGetDeviceInfo> {};
template<>
struct fex_gen_config<XkbGetDeviceInfoChanges> {};
template<>
struct fex_gen_config<XkbGetDeviceButtonActions> {};
template<>
struct fex_gen_config<XkbGetDeviceLedInfo> {};
template<>
struct fex_gen_config<XkbSetDeviceInfo> {};
template<>
struct fex_gen_config<XkbChangeDeviceInfo> {};
template<>
struct fex_gen_config<XkbSetDeviceLedInfo> {};
template<>
struct fex_gen_config<XkbSetDeviceButtonActions> {};
template<>
struct fex_gen_config<XkbToControl> {};
template<>
struct fex_gen_config<XkbSetDebuggingFlags> {};
template<>
struct fex_gen_config<XkbApplyVirtualModChanges> {};
template<>
struct fex_gen_config<XkbUpdateActionVirtualMods> {};
template<>
struct fex_gen_config<XkbUpdateKeyTypeVirtualMods> {};
// Xlib.h
// TODO: template<> struct fex_gen_config<_Xmblen> {};
template<>
struct fex_gen_config<XLoadQueryFont> {};
template<>
struct fex_gen_config<XQueryFont> {};
template<>
struct fex_gen_config<XGetMotionEvents> {};
template<>
struct fex_gen_config<XDeleteModifiermapEntry> {};
template<>
struct fex_gen_config<XGetModifierMapping> {};
template<>
struct fex_gen_config<XInsertModifiermapEntry> {};
template<>
struct fex_gen_config<XNewModifiermap> {};
template<>
struct fex_gen_config<XCreateImage> : fexgen::custom_guest_entrypoint {};
template<>
struct fex_gen_config<XInitImage> : fexgen::custom_guest_entrypoint {};
template<>
struct fex_gen_config<XGetImage> {};
template<>
struct fex_gen_config<XGetSubImage> {};
template<>
struct fex_gen_config<XOpenDisplay> : fexgen::custom_guest_entrypoint {};
template<>
struct fex_gen_config<XrmInitialize> {};
template<>
struct fex_gen_config<XFetchBytes> {};
template<>
struct fex_gen_config<XFetchBuffer> {};
template<>
struct fex_gen_config<XGetAtomName> {};
template<>
struct fex_gen_config<XGetAtomNames> {};
template<>
struct fex_gen_config<XGetDefault> {};
template<>
struct fex_gen_config<XDisplayName> {};
template<>
struct fex_gen_config<XKeysymToString> {};
template<>
struct fex_gen_config<XSynchronize> : fexgen::returns_guest_pointer {};
// TODO: template<> struct fex_gen_config<XSetAfterFunction> {};
template<>
struct fex_gen_config<XInternAtom> {};
template<>
struct fex_gen_config<XInternAtoms> {};
template<>
struct fex_gen_config<XCopyColormapAndFree> {};
template<>
struct fex_gen_config<XCreateColormap> {};
template<>
struct fex_gen_config<XCreatePixmapCursor> {};
template<>
struct fex_gen_config<XCreateGlyphCursor> {};
template<>
struct fex_gen_config<XCreateFontCursor> {};
template<>
struct fex_gen_config<XLoadFont> {};
template<>
struct fex_gen_config<XCreateGC> {};
template<>
struct fex_gen_config<XGContextFromGC> {};
template<>
struct fex_gen_config<XFlushGC> {};
template<>
struct fex_gen_config<XCreatePixmap> {};
template<>
struct fex_gen_config<XCreateBitmapFromData> {};
template<>
struct fex_gen_config<XCreatePixmapFromBitmapData> {};
template<>
struct fex_gen_config<XCreateSimpleWindow> {};
template<>
struct fex_gen_config<XGetSelectionOwner> {};
template<>
struct fex_gen_config<XCreateWindow> {};
template<>
struct fex_gen_config<XListInstalledColormaps> {};
template<>
struct fex_gen_config<XListFonts> {};
template<>
struct fex_gen_config<XListFontsWithInfo> {};
template<>
struct fex_gen_config<XGetFontPath> {};
template<>
struct fex_gen_config<XListExtensions> {};
template<>
struct fex_gen_config<XListProperties> {};
template<>
struct fex_gen_config<XListHosts> {};
template<>
struct fex_gen_config<XKeycodeToKeysym> {};
template<>
struct fex_gen_config<XLookupKeysym> {};
template<>
struct fex_gen_config<XGetKeyboardMapping> {};
template<>
struct fex_gen_config<XStringToKeysym> {};
template<>
struct fex_gen_config<XMaxRequestSize> {};
template<>
struct fex_gen_config<XExtendedMaxRequestSize> {};
template<>
struct fex_gen_config<XResourceManagerString> {};
template<>
struct fex_gen_config<XScreenResourceString> {};
template<>
struct fex_gen_config<XDisplayMotionBufferSize> {};
template<>
struct fex_gen_config<XVisualIDFromVisual> {};
// Sets up vtables for various objects
Status XInitThreadsInternal(uintptr_t OnXInitDisplayLock, uintptr_t OnXInitDisplayLockPacker);
template<>
struct fex_gen_config<XInitThreads> : fexgen::custom_guest_entrypoint {};
template<>
struct fex_gen_config<XInitThreadsInternal> : fexgen::custom_host_impl, fexgen::custom_guest_entrypoint {};
template<>
struct fex_gen_config<XLockDisplay> {};
template<>
struct fex_gen_config<XUnlockDisplay> {};
template<>
struct fex_gen_config<XInitExtension> {};
template<>
struct fex_gen_config<XAddExtension> {};
template<>
struct fex_gen_config<XFindOnExtensionList> {};
template<>
struct fex_gen_config<XEHeadOfExtensionList> {};
template<>
struct fex_gen_config<XRootWindow> {};
template<>
struct fex_gen_config<XDefaultRootWindow> {};
template<>
struct fex_gen_config<XRootWindowOfScreen> {};
template<>
struct fex_gen_config<XDefaultVisual> {};
template<>
struct fex_gen_config<XDefaultVisualOfScreen> {};
template<>
struct fex_gen_config<XDefaultGC> {};
template<>
struct fex_gen_config<XDefaultGCOfScreen> {};
template<>
struct fex_gen_config<XBlackPixel> {};
template<>
struct fex_gen_config<XWhitePixel> {};
template<>
struct fex_gen_config<XAllPlanes> {};
template<>
struct fex_gen_config<XBlackPixelOfScreen> {};
template<>
struct fex_gen_config<XWhitePixelOfScreen> {};
template<>
struct fex_gen_config<XNextRequest> {};
template<>
struct fex_gen_config<XLastKnownRequestProcessed> {};
template<>
struct fex_gen_config<XServerVendor> {};
template<>
struct fex_gen_config<XDisplayString> {};
template<>
struct fex_gen_config<XDefaultColormap> {};
template<>
struct fex_gen_config<XDefaultColormapOfScreen> {};
template<>
struct fex_gen_config<XDisplayOfScreen> {};
template<>
struct fex_gen_config<XScreenOfDisplay> {};
template<>
struct fex_gen_config<XDefaultScreenOfDisplay> {};
template<>
struct fex_gen_config<XEventMaskOfScreen> {};
template<>
struct fex_gen_config<XScreenNumberOfScreen> {};
// TODO: Make returned function pointer guest-callable. For now, just pretend it already is.
template<>
struct fex_gen_config<XSetErrorHandler> : fexgen::returns_guest_pointer {};
template<>
struct fex_gen_config<XSetIOErrorHandler> : fexgen::returns_guest_pointer {};
// TODO: template<> struct fex_gen_config<XSetIOErrorExitHandler> {};
template<>
struct fex_gen_config<XListPixmapFormats> {};
template<>
struct fex_gen_config<XListDepths> {};
template<>
struct fex_gen_config<XReconfigureWMWindow> {};
template<>
struct fex_gen_config<XGetWMProtocols> {};
template<>
struct fex_gen_config<XSetWMProtocols> {};
template<>
struct fex_gen_config<XIconifyWindow> {};
template<>
struct fex_gen_config<XWithdrawWindow> {};
template<>
struct fex_gen_config<XGetCommand> {};
template<>
struct fex_gen_config<XGetWMColormapWindows> {};
template<>
struct fex_gen_config<XSetWMColormapWindows> {};
template<>
struct fex_gen_config<XFreeStringList> {};
template<>
struct fex_gen_config<XSetTransientForHint> {};
template<>
struct fex_gen_config<XActivateScreenSaver> {};
template<>
struct fex_gen_config<XAddHost> {};
template<>
struct fex_gen_config<XAddHosts> {};
template<>
struct fex_gen_config<XAddToExtensionList> {};
template<>
struct fex_gen_config<XAddToSaveSet> {};
template<>
struct fex_gen_config<XAllocColor> {};
template<>
struct fex_gen_config<XAllocColorCells> {};
template<>
struct fex_gen_config<XAllocColorPlanes> {};
template<>
struct fex_gen_config<XAllocNamedColor> {};
template<>
struct fex_gen_config<XAllowEvents> {};
template<>
struct fex_gen_config<XAutoRepeatOff> {};
template<>
struct fex_gen_config<XAutoRepeatOn> {};
template<>
struct fex_gen_config<XBell> {};
template<>
struct fex_gen_config<XBitmapBitOrder> {};
template<>
struct fex_gen_config<XBitmapPad> {};
template<>
struct fex_gen_config<XBitmapUnit> {};
template<>
struct fex_gen_config<XCellsOfScreen> {};
template<>
struct fex_gen_config<XChangeActivePointerGrab> {};
template<>
struct fex_gen_config<XChangeGC> {};
template<>
struct fex_gen_config<XChangeKeyboardControl> {};
template<>
struct fex_gen_config<XChangeKeyboardMapping> {};
template<>
struct fex_gen_config<XChangePointerControl> {};
template<>
struct fex_gen_config<XChangeProperty> {};
template<>
struct fex_gen_config<XChangeSaveSet> {};
template<>
struct fex_gen_config<XChangeWindowAttributes> {};
template<>
struct fex_gen_config<XCheckIfEvent> {};
template<>
struct fex_gen_config<XCheckMaskEvent> {};
template<>
struct fex_gen_config<XCheckTypedEvent> {};
template<>
struct fex_gen_config<XCheckTypedWindowEvent> {};
template<>
struct fex_gen_config<XCheckWindowEvent> {};
template<>
struct fex_gen_config<XCirculateSubwindows> {};
template<>
struct fex_gen_config<XCirculateSubwindowsDown> {};
template<>
struct fex_gen_config<XCirculateSubwindowsUp> {};
template<>
struct fex_gen_config<XClearArea> {};
template<>
struct fex_gen_config<XClearWindow> {};
template<>
struct fex_gen_config<XCloseDisplay> {};
template<>
struct fex_gen_config<XConfigureWindow> {};
template<>
struct fex_gen_config<XConnectionNumber> {};
template<>
struct fex_gen_config<XConvertSelection> {};
template<>
struct fex_gen_config<XCopyArea> {};
template<>
struct fex_gen_config<XCopyGC> {};
template<>
struct fex_gen_config<XCopyPlane> {};
template<>
struct fex_gen_config<XDefaultDepth> {};
template<>
struct fex_gen_config<XDefaultDepthOfScreen> {};
template<>
struct fex_gen_config<XDefaultScreen> {};
template<>
struct fex_gen_config<XDefineCursor> {};
template<>
struct fex_gen_config<XDeleteProperty> {};
template<>
struct fex_gen_config<XDestroyWindow> {};
template<>
struct fex_gen_config<XDestroySubwindows> {};
template<>
struct fex_gen_config<XDoesBackingStore> {};
template<>
struct fex_gen_config<XDoesSaveUnders> {};
template<>
struct fex_gen_config<XDisableAccessControl> {};
template<>
struct fex_gen_config<XDisplayCells> {};
template<>
struct fex_gen_config<XDisplayHeight> {};
template<>
struct fex_gen_config<XDisplayHeightMM> {};
template<>
struct fex_gen_config<XDisplayKeycodes> {};
template<>
struct fex_gen_config<XDisplayPlanes> {};
template<>
struct fex_gen_config<XDisplayWidth> {};
template<>
struct fex_gen_config<XDisplayWidthMM> {};
template<>
struct fex_gen_config<XDrawArc> {};
template<>
struct fex_gen_config<XDrawArcs> {};
template<>
struct fex_gen_config<XDrawImageString> {};
template<>
struct fex_gen_config<XDrawImageString16> {};
template<>
struct fex_gen_config<XDrawLine> {};
template<>
struct fex_gen_config<XDrawLines> {};
template<>
struct fex_gen_config<XDrawPoint> {};
template<>
struct fex_gen_config<XDrawPoints> {};
template<>
struct fex_gen_config<XDrawRectangle> {};
template<>
struct fex_gen_config<XDrawRectangles> {};
template<>
struct fex_gen_config<XDrawSegments> {};
template<>
struct fex_gen_config<XDrawString> {};
template<>
struct fex_gen_config<XDrawString16> {};
template<>
struct fex_gen_config<XDrawText> {};
template<>
struct fex_gen_config<XDrawText16> {};
template<>
struct fex_gen_config<XEnableAccessControl> {};
template<>
struct fex_gen_config<XEventsQueued> {};
template<>
struct fex_gen_config<XFetchName> {};
template<>
struct fex_gen_config<XFillArc> {};
template<>
struct fex_gen_config<XFillArcs> {};
template<>
struct fex_gen_config<XFillPolygon> {};
template<>
struct fex_gen_config<XFillRectangle> {};
template<>
struct fex_gen_config<XFillRectangles> {};
template<>
struct fex_gen_config<XFlush> {};
template<>
struct fex_gen_config<XForceScreenSaver> {};
template<>
struct fex_gen_config<XFree> : fexgen::custom_guest_entrypoint {};
template<>
struct fex_gen_config<XFreeColormap> {};
template<>
struct fex_gen_config<XFreeColors> {};
template<>
struct fex_gen_config<XFreeCursor> {};
template<>
struct fex_gen_config<XFreeExtensionList> {};
template<>
struct fex_gen_config<XFreeFont> {};
template<>
struct fex_gen_config<XFreeFontInfo> {};
template<>
struct fex_gen_config<XFreeFontNames> {};
template<>
struct fex_gen_config<XFreeFontPath> {};
template<>
struct fex_gen_config<XFreeGC> {};
template<>
struct fex_gen_config<XFreeModifiermap> {};
template<>
struct fex_gen_config<XFreePixmap> {};
template<>
struct fex_gen_config<XGeometry> {};
template<>
struct fex_gen_config<XGetErrorDatabaseText> {};
template<>
struct fex_gen_config<XGetErrorText> {};
template<>
struct fex_gen_config<XGetFontProperty> {};
template<>
struct fex_gen_config<XGetGCValues> {};
template<>
struct fex_gen_config<XGetGeometry> {};
template<>
struct fex_gen_config<XGetIconName> {};
template<>
struct fex_gen_config<XGetInputFocus> {};
template<>
struct fex_gen_config<XGetKeyboardControl> {};
template<>
struct fex_gen_config<XGetPointerControl> {};
template<>
struct fex_gen_config<XGetPointerMapping> {};
template<>
struct fex_gen_config<XGetScreenSaver> {};
template<>
struct fex_gen_config<XGetTransientForHint> {};
template<>
struct fex_gen_config<XGetWindowProperty> {};
template<>
struct fex_gen_config<XGetWindowAttributes> {};
template<>
struct fex_gen_config<XGrabButton> {};
template<>
struct fex_gen_config<XGrabKey> {};
template<>
struct fex_gen_config<XGrabKeyboard> {};
template<>
struct fex_gen_config<XGrabPointer> {};
template<>
struct fex_gen_config<XGrabServer> {};
template<>
struct fex_gen_config<XHeightMMOfScreen> {};
template<>
struct fex_gen_config<XHeightOfScreen> {};
template<>
struct fex_gen_config<XIfEvent> {};
template<>
struct fex_gen_config<XImageByteOrder> {};
template<>
struct fex_gen_config<XInstallColormap> {};
template<>
struct fex_gen_config<XKeysymToKeycode> {};
template<>
struct fex_gen_config<XKillClient> {};
template<>
struct fex_gen_config<XLookupColor> {};
template<>
struct fex_gen_config<XLowerWindow> {};
template<>
struct fex_gen_config<XMapRaised> {};
template<>
struct fex_gen_config<XMapSubwindows> {};
template<>
struct fex_gen_config<XMapWindow> {};
template<>
struct fex_gen_config<XMaskEvent> {};
template<>
struct fex_gen_config<XMaxCmapsOfScreen> {};
template<>
struct fex_gen_config<XMinCmapsOfScreen> {};
template<>
struct fex_gen_config<XMoveResizeWindow> {};
template<>
struct fex_gen_config<XMoveWindow> {};
template<>
struct fex_gen_config<XNextEvent> {};
template<>
struct fex_gen_config<XNoOp> {};
template<>
struct fex_gen_config<XParseColor> {};
template<>
struct fex_gen_config<XParseGeometry> {};
template<>
struct fex_gen_config<XPeekEvent> {};
// TODO: template<> struct fex_gen_config<XPeekIfEvent> {};
template<>
struct fex_gen_config<XPending> {};
template<>
struct fex_gen_config<XPlanesOfScreen> {};
template<>
struct fex_gen_config<XProtocolRevision> {};
template<>
struct fex_gen_config<XProtocolVersion> {};
template<>
struct fex_gen_config<XPutBackEvent> {};
template<>
struct fex_gen_config<XPutImage> {};
template<>
struct fex_gen_config<XQLength> {};
template<>
struct fex_gen_config<XQueryBestCursor> {};
template<>
struct fex_gen_config<XQueryBestSize> {};
template<>
struct fex_gen_config<XQueryBestStipple> {};
template<>
struct fex_gen_config<XQueryBestTile> {};
template<>
struct fex_gen_config<XQueryColor> {};
template<>
struct fex_gen_config<XQueryColors> {};
template<>
struct fex_gen_config<XQueryExtension> {};
template<>
struct fex_gen_config<XQueryKeymap> {};
template<>
struct fex_gen_config<XQueryPointer> {};
template<>
struct fex_gen_config<XQueryTextExtents> {};
template<>
struct fex_gen_config<XQueryTextExtents16> {};
template<>
struct fex_gen_config<XQueryTree> {};
template<>
struct fex_gen_config<XRaiseWindow> {};
template<>
struct fex_gen_config<XReadBitmapFile> {};
template<>
struct fex_gen_config<XReadBitmapFileData> {};
template<>
struct fex_gen_config<XRebindKeysym> {};
template<>
struct fex_gen_config<XRecolorCursor> {};
template<>
struct fex_gen_config<XRefreshKeyboardMapping> {};
template<>
struct fex_gen_config<XRemoveFromSaveSet> {};
template<>
struct fex_gen_config<XRemoveHost> {};
template<>
struct fex_gen_config<XRemoveHosts> {};
template<>
struct fex_gen_config<XReparentWindow> {};
template<>
struct fex_gen_config<XResetScreenSaver> {};
template<>
struct fex_gen_config<XResizeWindow> {};
template<>
struct fex_gen_config<XRestackWindows> {};
template<>
struct fex_gen_config<XRotateBuffers> {};
template<>
struct fex_gen_config<XRotateWindowProperties> {};
template<>
struct fex_gen_config<XScreenCount> {};
template<>
struct fex_gen_config<XSelectInput> {};
template<>
struct fex_gen_config<XSendEvent> {};
template<>
struct fex_gen_config<XSetAccessControl> {};
template<>
struct fex_gen_config<XSetArcMode> {};
template<>
struct fex_gen_config<XSetBackground> {};
template<>
struct fex_gen_config<XSetClipMask> {};
template<>
struct fex_gen_config<XSetClipOrigin> {};
template<>
struct fex_gen_config<XSetClipRectangles> {};
template<>
struct fex_gen_config<XSetCloseDownMode> {};
template<>
struct fex_gen_config<XSetCommand> {};
template<>
struct fex_gen_config<XSetDashes> {};
template<>
struct fex_gen_config<XSetFillRule> {};
template<>
struct fex_gen_config<XSetFillStyle> {};
template<>
struct fex_gen_config<XSetFont> {};
template<>
struct fex_gen_config<XSetFontPath> {};
template<>
struct fex_gen_config<XSetForeground> {};
template<>
struct fex_gen_config<XSetFunction> {};
template<>
struct fex_gen_config<XSetGraphicsExposures> {};
template<>
struct fex_gen_config<XSetIconName> {};
template<>
struct fex_gen_config<XSetInputFocus> {};
template<>
struct fex_gen_config<XSetLineAttributes> {};
template<>
struct fex_gen_config<XSetModifierMapping> {};
template<>
struct fex_gen_config<XSetPlaneMask> {};
template<>
struct fex_gen_config<XSetPointerMapping> {};
template<>
struct fex_gen_config<XSetScreenSaver> {};
template<>
struct fex_gen_config<XSetSelectionOwner> {};
template<>
struct fex_gen_config<XSetState> {};
template<>
struct fex_gen_config<XSetStipple> {};
template<>
struct fex_gen_config<XSetSubwindowMode> {};
template<>
struct fex_gen_config<XSetTSOrigin> {};
template<>
struct fex_gen_config<XSetTile> {};
template<>
struct fex_gen_config<XSetWindowBackground> {};
template<>
struct fex_gen_config<XSetWindowBackgroundPixmap> {};
template<>
struct fex_gen_config<XSetWindowBorder> {};
template<>
struct fex_gen_config<XSetWindowBorderPixmap> {};
template<>
struct fex_gen_config<XSetWindowBorderWidth> {};
template<>
struct fex_gen_config<XSetWindowColormap> {};
template<>
struct fex_gen_config<XStoreBuffer> {};
template<>
struct fex_gen_config<XStoreBytes> {};
template<>
struct fex_gen_config<XStoreColor> {};
template<>
struct fex_gen_config<XStoreColors> {};
template<>
struct fex_gen_config<XStoreName> {};
template<>
struct fex_gen_config<XStoreNamedColor> {};
template<>
struct fex_gen_config<XSync> {};
template<>
struct fex_gen_config<XTextExtents> {};
template<>
struct fex_gen_config<XTextExtents16> {};
template<>
struct fex_gen_config<XTextWidth> {};
template<>
struct fex_gen_config<XTextWidth16> {};
template<>
struct fex_gen_config<XTranslateCoordinates> {};
template<>
struct fex_gen_config<XUndefineCursor> {};
template<>
struct fex_gen_config<XUngrabButton> {};
template<>
struct fex_gen_config<XUngrabKey> {};
template<>
struct fex_gen_config<XUngrabKeyboard> {};
template<>
struct fex_gen_config<XUngrabPointer> {};
template<>
struct fex_gen_config<XUngrabServer> {};
template<>
struct fex_gen_config<XUninstallColormap> {};
template<>
struct fex_gen_config<XUnloadFont> {};
template<>
struct fex_gen_config<XUnmapSubwindows> {};
template<>
struct fex_gen_config<XUnmapWindow> {};
template<>
struct fex_gen_config<XVendorRelease> {};
template<>
struct fex_gen_config<XWarpPointer> {};
template<>
struct fex_gen_config<XWidthMMOfScreen> {};
template<>
struct fex_gen_config<XWidthOfScreen> {};
template<>
struct fex_gen_config<XWindowEvent> {};
template<>
struct fex_gen_config<XWriteBitmapFile> {};
template<>
struct fex_gen_config<XSupportsLocale> {};
template<>
struct fex_gen_config<XSetLocaleModifiers> {};
template<>
struct fex_gen_config<XOpenOM> {};
template<>
struct fex_gen_config<XCloseOM> {};
// TODO: template<> struct fex_gen_config<XSetOMValues> {};
// TODO: template<> struct fex_gen_config<XGetOMValues> {};
template<>
struct fex_gen_config<XDisplayOfOM> {};
template<>
struct fex_gen_config<XLocaleOfOM> {};
// TODO: template<> struct fex_gen_config<XCreateOC> {};
template<>
struct fex_gen_config<XDestroyOC> {};
template<>
struct fex_gen_config<XOMOfOC> {};
// TODO: template<> struct fex_gen_config<XSetOCValues> {};
// TODO: template<> struct fex_gen_config<XGetOCValues> {};
template<>
struct fex_gen_config<XCreateFontSet> {};
template<>
struct fex_gen_config<XFreeFontSet> {};
template<>
struct fex_gen_config<XFontsOfFontSet> {};
template<>
struct fex_gen_config<XBaseFontNameListOfFontSet> {};
template<>
struct fex_gen_config<XLocaleOfFontSet> {};
template<>
struct fex_gen_config<XContextDependentDrawing> {};
template<>
struct fex_gen_config<XDirectionalDependentDrawing> {};
template<>
struct fex_gen_config<XContextualDrawing> {};
template<>
struct fex_gen_config<XExtentsOfFontSet> {};
template<>
struct fex_gen_config<XmbTextEscapement> {};
template<>
struct fex_gen_config<XwcTextEscapement> {};
template<>
struct fex_gen_config<Xutf8TextEscapement> {};
template<>
struct fex_gen_config<XmbTextExtents> {};
template<>
struct fex_gen_config<XwcTextExtents> {};
template<>
struct fex_gen_config<Xutf8TextExtents> {};
template<>
struct fex_gen_config<XmbTextPerCharExtents> {};
template<>
struct fex_gen_config<XwcTextPerCharExtents> {};
template<>
struct fex_gen_config<Xutf8TextPerCharExtents> {};
template<>
struct fex_gen_config<XmbDrawText> {};
template<>
struct fex_gen_config<XwcDrawText> {};
template<>
struct fex_gen_config<Xutf8DrawText> {};
template<>
struct fex_gen_config<XmbDrawString> {};
template<>
struct fex_gen_config<XwcDrawString> {};
template<>
struct fex_gen_config<Xutf8DrawString> {};
template<>
struct fex_gen_config<XmbDrawImageString> {};
template<>
struct fex_gen_config<XwcDrawImageString> {};
template<>
struct fex_gen_config<Xutf8DrawImageString> {};
template<>
struct fex_gen_config<XOpenIM> {};
template<>
struct fex_gen_config<XCloseIM> {};
template<>
struct fex_gen_config<XGetIMValues> {
using uniform_va_type = void*;
};
template<>
struct fex_gen_config<XSetIMValues> {
using uniform_va_type = void*;
};
template<>
struct fex_gen_config<XDisplayOfIM> {};
template<>
struct fex_gen_config<XLocaleOfIM> {};
template<>
struct fex_gen_config<XCreateIC> {
using uniform_va_type = void*;
};
template<>
struct fex_gen_config<XDestroyIC> {};
template<>
struct fex_gen_config<XSetICFocus> {};
template<>
struct fex_gen_config<XUnsetICFocus> {};
template<>
struct fex_gen_config<XwcResetIC> {};
template<>
struct fex_gen_config<XmbResetIC> {};
template<>
struct fex_gen_config<Xutf8ResetIC> {};
template<>
struct fex_gen_config<XSetICValues> {
using uniform_va_type = void*;
};
template<>
struct fex_gen_config<XGetICValues> {
using uniform_va_type = void*;
};
template<>
struct fex_gen_config<XIMOfIC> {};
template<>
struct fex_gen_config<XFilterEvent> {};
template<>
struct fex_gen_config<XmbLookupString> {};
template<>
struct fex_gen_config<XwcLookupString> {};
template<>
struct fex_gen_config<Xutf8LookupString> {};
template<>
struct fex_gen_config<XVaCreateNestedList> {
using uniform_va_type = void*;
};
template<>
struct fex_gen_config<XRegisterIMInstantiateCallback> : fexgen::custom_guest_entrypoint {};
template<>
struct fex_gen_config<XUnregisterIMInstantiateCallback> : fexgen::custom_guest_entrypoint {};
template<>
struct fex_gen_config<XInternalConnectionNumbers> {};
template<>
struct fex_gen_config<XProcessInternalConnection> {};
template<>
struct fex_gen_config<XAddConnectionWatch> {};
template<>
struct fex_gen_config<XRemoveConnectionWatch> {};
template<>
struct fex_gen_config<XSetAuthorization> {};
template<>
struct fex_gen_config<_Xmbtowc> {};
template<>
struct fex_gen_config<_Xwctomb> {};
template<>
struct fex_gen_config<XGetEventData> {};
template<>
struct fex_gen_config<XFreeEventData> : fexgen::custom_guest_entrypoint {};
// Xresource.h
template<>
struct fex_gen_config<Xpermalloc> {};
template<>
struct fex_gen_config<XrmStringToQuark> {};
template<>
struct fex_gen_config<XrmPermStringToQuark> {};
template<>
struct fex_gen_config<XrmQuarkToString> {};
template<>
struct fex_gen_config<XrmUniqueQuark> {};
template<>
struct fex_gen_config<XrmStringToQuarkList> {};
template<>
struct fex_gen_config<XrmStringToBindingQuarkList> {};
template<>
struct fex_gen_config<XrmDestroyDatabase> {};
template<>
struct fex_gen_config<XrmQPutResource> {};
template<>
struct fex_gen_config<XrmPutResource> {};
template<>
struct fex_gen_config<XrmQPutStringResource> {};
template<>
struct fex_gen_config<XrmPutStringResource> {};
template<>
struct fex_gen_config<XrmPutLineResource> {};
template<>
struct fex_gen_config<XrmQGetResource> {};
template<>
struct fex_gen_config<XrmGetResource> {};
template<>
struct fex_gen_config<XrmQGetSearchList> {};
template<>
struct fex_gen_config<XrmQGetSearchResource> {};
template<>
struct fex_gen_config<XrmSetDatabase> {};
template<>
struct fex_gen_config<XrmGetDatabase> {};
template<>
struct fex_gen_config<XrmGetFileDatabase> {};
template<>
struct fex_gen_config<XrmCombineFileDatabase> {};
template<>
struct fex_gen_config<XrmGetStringDatabase> {};
template<>
struct fex_gen_config<XrmPutFileDatabase> {};
template<>
struct fex_gen_config<XrmMergeDatabases> {};
template<>
struct fex_gen_config<XrmCombineDatabase> {};
template<>
struct fex_gen_config<XrmEnumerateDatabase> {};
template<>
struct fex_gen_config<XrmLocaleOfDatabase> {};
template<>
struct fex_gen_config<XrmParseCommand> {};
// Xutil.h
template<>
struct fex_gen_config<XDestroyImage> {};
template<>
struct fex_gen_config<XGetPixel> {};
template<>
struct fex_gen_config<XPutPixel> {};
template<>
struct fex_gen_config<XSubImage> {};
template<>
struct fex_gen_config<XAddPixel> {};
template<>
struct fex_gen_config<XAllocClassHint> {};
template<>
struct fex_gen_config<XAllocIconSize> {};
template<>
struct fex_gen_config<XAllocSizeHints> {};
template<>
struct fex_gen_config<XAllocStandardColormap> {};
template<>
struct fex_gen_config<XAllocWMHints> {};
template<>
struct fex_gen_config<XClipBox> {};
template<>
struct fex_gen_config<XCreateRegion> {};
template<>
struct fex_gen_config<XDefaultString> {};
template<>
struct fex_gen_config<XDeleteContext> {};
template<>
struct fex_gen_config<XDestroyRegion> {};
template<>
struct fex_gen_config<XEmptyRegion> {};
template<>
struct fex_gen_config<XEqualRegion> {};
template<>
struct fex_gen_config<XFindContext> {};
template<>
struct fex_gen_config<XGetClassHint> {};
template<>
struct fex_gen_config<XGetIconSizes> {};
template<>
struct fex_gen_config<XGetNormalHints> {};
template<>
struct fex_gen_config<XGetRGBColormaps> {};
template<>
struct fex_gen_config<XGetSizeHints> {};
template<>
struct fex_gen_config<XGetStandardColormap> {};
template<>
struct fex_gen_config<XGetTextProperty> {};
template<>
struct fex_gen_config<XGetVisualInfo> {};
template<>
struct fex_gen_config<XGetWMClientMachine> {};
template<>
struct fex_gen_config<XGetWMHints> {};
template<>
struct fex_gen_config<XGetWMIconName> {};
template<>
struct fex_gen_config<XGetWMName> {};
template<>
struct fex_gen_config<XGetWMNormalHints> {};
template<>
struct fex_gen_config<XGetWMSizeHints> {};
template<>
struct fex_gen_config<XGetZoomHints> {};
template<>
struct fex_gen_config<XIntersectRegion> {};
template<>
struct fex_gen_config<XConvertCase> {};
template<>
struct fex_gen_config<XLookupString> {};
template<>
struct fex_gen_config<XMatchVisualInfo> {};
template<>
struct fex_gen_config<XOffsetRegion> {};
template<>
struct fex_gen_config<XPointInRegion> {};
template<>
struct fex_gen_config<XPolygonRegion> {};
template<>
struct fex_gen_config<XRectInRegion> {};
template<>
struct fex_gen_config<XSaveContext> {};
template<>
struct fex_gen_config<XSetClassHint> {};
template<>
struct fex_gen_config<XSetIconSizes> {};
template<>
struct fex_gen_config<XSetNormalHints> {};
template<>
struct fex_gen_config<XSetRGBColormaps> {};
template<>
struct fex_gen_config<XSetSizeHints> {};
template<>
struct fex_gen_config<XSetStandardProperties> {};
template<>
struct fex_gen_config<XSetTextProperty> {};
template<>
struct fex_gen_config<XSetWMClientMachine> {};
template<>
struct fex_gen_config<XSetWMHints> {};
template<>
struct fex_gen_config<XSetWMIconName> {};
template<>
struct fex_gen_config<XSetWMName> {};
template<>
struct fex_gen_config<XSetWMNormalHints> {};
template<>
struct fex_gen_config<XSetWMProperties> {};
template<>
struct fex_gen_config<XmbSetWMProperties> {};
template<>
struct fex_gen_config<Xutf8SetWMProperties> {};
template<>
struct fex_gen_config<XSetWMSizeHints> {};
template<>
struct fex_gen_config<XSetRegion> {};
template<>
struct fex_gen_config<XSetStandardColormap> {};
template<>
struct fex_gen_config<XSetZoomHints> {};
template<>
struct fex_gen_config<XShrinkRegion> {};
template<>
struct fex_gen_config<XStringListToTextProperty> {};
template<>
struct fex_gen_config<XSubtractRegion> {};
template<>
struct fex_gen_config<XmbTextListToTextProperty> {};
template<>
struct fex_gen_config<XwcTextListToTextProperty> {};
template<>
struct fex_gen_config<Xutf8TextListToTextProperty> {};
template<>
struct fex_gen_config<XwcFreeStringList> {};
template<>
struct fex_gen_config<XTextPropertyToStringList> {};
template<>
struct fex_gen_config<XmbTextPropertyToTextList> {};
template<>
struct fex_gen_config<XwcTextPropertyToTextList> {};
template<>
struct fex_gen_config<Xutf8TextPropertyToTextList> {};
template<>
struct fex_gen_config<XUnionRectWithRegion> {};
template<>
struct fex_gen_config<XUnionRegion> {};
template<>
struct fex_gen_config<XWMGeometry> {};
template<>
struct fex_gen_config<XXorRegion> {};
// ImUtil.h
template<>
struct fex_gen_config<_XGetScanlinePad> {};
template<>
struct fex_gen_config<_XGetBitsPerPixel> {};
template<>
struct fex_gen_config<_XSetImage> {};
template<>
struct fex_gen_config<_XReverse_Bytes> {};
template<>
struct fex_gen_config<_XInitImageFuncPtrs> : fexgen::custom_guest_entrypoint {};