From: megacz Date: Fri, 30 Jan 2004 07:15:37 +0000 (+0000) Subject: 2003/09/12 01:28:04 X-Git-Tag: RC3~636 X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=commitdiff_plain;h=66c3a447530ca82371a6b4757b4e853e01cf1373 2003/09/12 01:28:04 darcs-hash:20040130071537-2ba56-531398334b7b51ccf6ec9635f06ea0d7a598425c.gz --- diff --git a/src/org/xwt/plat/DarwinWeakSymbols.h b/src/org/xwt/plat/DarwinWeakSymbols.h new file mode 100644 index 0000000..e0d16e8 --- /dev/null +++ b/src/org/xwt/plat/DarwinWeakSymbols.h @@ -0,0 +1,276 @@ + +// this file contains declarations, initializations, and macros for +// all symbols that use Mac OS Frameworks. We dynamically load these +// libraries at runtime since it's cumbersome to lug around 100mb of +// libraries on the build machines (which usually don't run Mac OS X). + +static const mach_header* CarbonHandle = NULL; +static const mach_header* AGLHandle = NULL; +static const mach_header* SCHandle = NULL; + +static void* load_weak(char* symbol) { + if (CarbonHandle == NULL) CarbonHandle = NSAddImage("/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon", NSADDIMAGE_OPTION_NONE); + if (AGLHandle == NULL) AGLHandle = NSAddImage("/System/Library/Frameworks/AGL.framework/Versions/A/AGL", NSADDIMAGE_OPTION_NONE); + if (SCHandle == NULL) SCHandle = NSAddImage("/System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration", NSADDIMAGE_OPTION_NONE); + void* ret = NSAddressOfSymbol(NSLookupSymbolInImage(CarbonHandle, symbol, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW)); + if (ret == NULL) ret = NSAddressOfSymbol(NSLookupSymbolInImage(AGLHandle, symbol, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW)); + if (ret == NULL) ret = NSAddressOfSymbol(NSLookupSymbolInImage(SCHandle, symbol, NSLOOKUPSYMBOLINIMAGE_OPTION_BIND_NOW)); + printf("linking symbol %s to address %x\n", symbol, ret); + fflush(stdout); + return ret; +} + +#define declare_weak(symbol) typeof(symbol) *symbol##_weak = NULL + +declare_weak(AEGetNthPtr); +#define AEGetNthPtr (*AEGetNthPtr_weak) +declare_weak(CFArrayGetCount); +#define CFArrayGetCount (*CFArrayGetCount_weak) +declare_weak(CFArrayGetTypeID); +#define CFArrayGetTypeID (*CFArrayGetTypeID_weak) +declare_weak(CFArrayGetValueAtIndex); +#define CFArrayGetValueAtIndex (*CFArrayGetValueAtIndex_weak) +declare_weak(CFDictionaryGetValue); +#define CFDictionaryGetValue (*CFDictionaryGetValue_weak) +declare_weak(CFGetTypeID); +#define CFGetTypeID (*CFGetTypeID_weak) +declare_weak(CFNumberGetTypeID); +#define CFNumberGetTypeID (*CFNumberGetTypeID_weak) +declare_weak(CFNumberGetValue); +#define CFNumberGetValue (*CFNumberGetValue_weak) +declare_weak(CFRelease); +#define CFRelease (*CFRelease_weak) +declare_weak(CFStringCompare); +#define CFStringCompare (*CFStringCompare_weak) +declare_weak(CFStringCreateWithCString); +#define CFStringCreateWithCString (*CFStringCreateWithCString_weak) +declare_weak(CFStringCreateWithCharacters); +#define CFStringCreateWithCharacters (*CFStringCreateWithCharacters_weak) +declare_weak(CFStringGetCharacters); +#define CFStringGetCharacters (*CFStringGetCharacters_weak) +declare_weak(CFStringGetLength); +#define CFStringGetLength (*CFStringGetLength_weak) +declare_weak(CFStringGetTypeID); +#define CFStringGetTypeID (*CFStringGetTypeID_weak) +declare_weak(CFURLCopyScheme); +#define CFURLCopyScheme (*CFURLCopyScheme_weak) +declare_weak(CFURLCreateWithString); +#define CFURLCreateWithString (*CFURLCreateWithString_weak) +declare_weak(CGDisplayPixelsHigh); +#define CGDisplayPixelsHigh (*CGDisplayPixelsHigh_weak) +declare_weak(CGDisplayPixelsWide); +#define CGDisplayPixelsWide (*CGDisplayPixelsWide_weak) +declare_weak(CallNextEventHandler); +#define CallNextEventHandler (*CallNextEventHandler_weak) +declare_weak(CollapseWindow); +#define CollapseWindow (*CollapseWindow_weak) +declare_weak(ConstrainWindowToScreen); +#define ConstrainWindowToScreen (*ConstrainWindowToScreen_weak) +declare_weak(CreateEvent); +#define CreateEvent (*CreateEvent_weak) +declare_weak(CreateNewWindow); +#define CreateNewWindow (*CreateNewWindow_weak) +declare_weak(DisposeEventHandlerUPP); +#define DisposeEventHandlerUPP (*DisposeEventHandlerUPP_weak) +declare_weak(DisposeNavEventUPP); +#define DisposeNavEventUPP (*DisposeNavEventUPP_weak) +declare_weak(DisposeWindow); +#define DisposeWindow (*DisposeWindow_weak) +declare_weak(ExitToShell); +#define ExitToShell (*ExitToShell_weak) +declare_weak(FSRefMakePath); +#define FSRefMakePath (*FSRefMakePath_weak) +declare_weak(FrontWindow); +#define FrontWindow (*FrontWindow_weak) +declare_weak(Gestalt); +#define Gestalt (*Gestalt_weak) +declare_weak(GetApplicationEventTarget); +#define GetApplicationEventTarget (*GetApplicationEventTarget_weak) +declare_weak(GetCurrentProcess); +#define GetCurrentProcess (*GetCurrentProcess_weak) +declare_weak(GetCurrentScrap); +#define GetCurrentScrap (*GetCurrentScrap_weak) +declare_weak(GetEventClass); +#define GetEventClass (*GetEventClass_weak) +declare_weak(GetEventKind); +#define GetEventKind (*GetEventKind_weak) +declare_weak(GetEventParameter); +#define GetEventParameter (*GetEventParameter_weak) +declare_weak(GetMainEventQueue); +#define GetMainEventQueue (*GetMainEventQueue_weak) +declare_weak(GetScrapFlavorData); +#define GetScrapFlavorData (*GetScrapFlavorData_weak) +declare_weak(GetScrapFlavorSize); +#define GetScrapFlavorSize (*GetScrapFlavorSize_weak) +declare_weak(GetWindowBounds); +#define GetWindowBounds (*GetWindowBounds_weak) +declare_weak(GetWindowEventTarget); +#define GetWindowEventTarget (*GetWindowEventTarget_weak) +declare_weak(GetWindowPort); +#define GetWindowPort (*GetWindowPort_weak) +declare_weak(HideWindow); +#define HideWindow (*HideWindow_weak) +declare_weak(InstallEventHandler); +#define InstallEventHandler (*InstallEventHandler_weak) +declare_weak(IsWindowCollapsed); +#define IsWindowCollapsed (*IsWindowCollapsed_weak) +declare_weak(LSOpenCFURLRef); +#define LSOpenCFURLRef (*LSOpenCFURLRef_weak) +declare_weak(NavCreateGetFileDialog); +#define NavCreateGetFileDialog (*NavCreateGetFileDialog_weak) +declare_weak(NavCreatePutFileDialog); +#define NavCreatePutFileDialog (*NavCreatePutFileDialog_weak) +declare_weak(NavDialogDispose); +#define NavDialogDispose (*NavDialogDispose_weak) +declare_weak(NavDialogGetReply); +#define NavDialogGetReply (*NavDialogGetReply_weak) +declare_weak(NavDialogGetUserAction); +#define NavDialogGetUserAction (*NavDialogGetUserAction_weak) +declare_weak(NavDialogRun); +#define NavDialogRun (*NavDialogRun_weak) +declare_weak(NavDisposeReply); +#define NavDisposeReply (*NavDisposeReply_weak) +declare_weak(NavGetDefaultDialogCreationOptions); +#define NavGetDefaultDialogCreationOptions (*NavGetDefaultDialogCreationOptions_weak) +declare_weak(NewEventHandlerUPP); +#define NewEventHandlerUPP (*NewEventHandlerUPP_weak) +declare_weak(NewNavEventUPP); +#define NewNavEventUPP (*NewNavEventUPP_weak) +declare_weak(PostEventToQueue); +#define PostEventToQueue (*PostEventToQueue_weak) +declare_weak(PutScrapFlavor); +#define PutScrapFlavor (*PutScrapFlavor_weak) +declare_weak(QuitApplicationEventLoop); +#define QuitApplicationEventLoop (*QuitApplicationEventLoop_weak) +declare_weak(ReleaseEvent); +#define ReleaseEvent (*ReleaseEvent_weak) +declare_weak(RunApplicationEventLoop); +#define RunApplicationEventLoop (*RunApplicationEventLoop_weak) +declare_weak(SCDynamicStoreCopyProxies); +#define SCDynamicStoreCopyProxies (*SCDynamicStoreCopyProxies_weak) +declare_weak(SelectWindow); +#define SelectWindow (*SelectWindow_weak) +declare_weak(SendBehind); +#define SendBehind (*SendBehind_weak) +declare_weak(SetEventParameter); +#define SetEventParameter (*SetEventParameter_weak) +declare_weak(SetThemeCursor); +#define SetThemeCursor (*SetThemeCursor_weak) +declare_weak(SetWindowBounds); +#define SetWindowBounds (*SetWindowBounds_weak) +declare_weak(SetWindowResizeLimits); +#define SetWindowResizeLimits (*SetWindowResizeLimits_weak) +declare_weak(SetWindowTitleWithCFString); +#define SetWindowTitleWithCFString (*SetWindowTitleWithCFString_weak) +declare_weak(ShowWindow); +#define ShowWindow (*ShowWindow_weak) +declare_weak(ZoomWindowIdeal); +#define ZoomWindowIdeal (*ZoomWindowIdeal_weak) +declare_weak(__CFStringMakeConstantString); +#define __CFStringMakeConstantString (*__CFStringMakeConstantString_weak) +declare_weak(aglChoosePixelFormat); +#define aglChoosePixelFormat (*aglChoosePixelFormat_weak) +declare_weak(aglCreateContext); +#define aglCreateContext (*aglCreateContext_weak) +declare_weak(aglDestroyContext); +#define aglDestroyContext (*aglDestroyContext_weak) +declare_weak(aglSetCurrentContext); +#define aglSetCurrentContext (*aglSetCurrentContext_weak) +declare_weak(aglSetDrawable); +#define aglSetDrawable (*aglSetDrawable_weak) +declare_weak(aglSurfaceTexture); +#define aglSurfaceTexture (*aglSurfaceTexture_weak) +declare_weak(aglUpdateContext); +#define aglUpdateContext (*aglUpdateContext_weak) +const CFAllocatorRef *kCFAllocatorDefault_weak; +#define kCFAllocatorDefault (*kCFAllocatorDefault_weak) +declare_weak(CPSEnableForegroundOperation); +#define CPSEnableForegroundOperation (*CPSEnableForegroundOperation_weak) +declare_weak(CPSSetFrontProcess); +#define CPSSetFrontProcess (*CPSSetFrontProcess_weak) + +static void load_weak_symbols() { + AEGetNthPtr_weak = (typeof(AEGetNthPtr_weak))load_weak("_AEGetNthPtr"); + CFArrayGetCount_weak = (typeof(CFArrayGetCount_weak))load_weak("_CFArrayGetCount"); + CFArrayGetTypeID_weak = (typeof(CFArrayGetTypeID_weak))load_weak("_CFArrayGetTypeID"); + CFArrayGetValueAtIndex_weak = (typeof(CFArrayGetValueAtIndex_weak))load_weak("_CFArrayGetValueAtIndex"); + CFDictionaryGetValue_weak = (typeof(CFDictionaryGetValue_weak))load_weak("_CFDictionaryGetValue"); + CFGetTypeID_weak = (typeof(CFGetTypeID_weak))load_weak("_CFGetTypeID"); + CFNumberGetTypeID_weak = (typeof(CFNumberGetTypeID_weak))load_weak("_CFNumberGetTypeID"); + CFNumberGetValue_weak = (typeof(CFNumberGetValue_weak))load_weak("_CFNumberGetValue"); + CFRelease_weak = (typeof(CFRelease_weak))load_weak("_CFRelease"); + CFStringCompare_weak = (typeof(CFStringCompare_weak))load_weak("_CFStringCompare"); + CFStringCreateWithCString_weak = (typeof(CFStringCreateWithCString_weak))load_weak("_CFStringCreateWithCString"); + CFStringCreateWithCharacters_weak = (typeof(CFStringCreateWithCharacters_weak))load_weak("_CFStringCreateWithCharacters"); + CFStringGetCharacters_weak = (typeof(CFStringGetCharacters_weak))load_weak("_CFStringGetCharacters"); + CFStringGetLength_weak = (typeof(CFStringGetLength_weak))load_weak("_CFStringGetLength"); + CFStringGetTypeID_weak = (typeof(CFStringGetTypeID_weak))load_weak("_CFStringGetTypeID"); + CFURLCopyScheme_weak = (typeof(CFURLCopyScheme_weak))load_weak("_CFURLCopyScheme"); + CFURLCreateWithString_weak = (typeof(CFURLCreateWithString_weak))load_weak("_CFURLCreateWithString"); + CGDisplayPixelsHigh_weak = (typeof(CGDisplayPixelsHigh_weak))load_weak("_CGDisplayPixelsHigh"); + CGDisplayPixelsWide_weak = (typeof(CGDisplayPixelsWide_weak))load_weak("_CGDisplayPixelsWide"); + CallNextEventHandler_weak = (typeof(CallNextEventHandler_weak))load_weak("_CallNextEventHandler"); + CollapseWindow_weak = (typeof(CollapseWindow_weak))load_weak("_CollapseWindow"); + ConstrainWindowToScreen_weak = (typeof(ConstrainWindowToScreen_weak))load_weak("_ConstrainWindowToScreen"); + CreateEvent_weak = (typeof(CreateEvent_weak))load_weak("_CreateEvent"); + CreateNewWindow_weak = (typeof(CreateNewWindow_weak))load_weak("_CreateNewWindow"); + DisposeEventHandlerUPP_weak = (typeof(DisposeEventHandlerUPP_weak))load_weak("_DisposeEventHandlerUPP"); + DisposeNavEventUPP_weak = (typeof(DisposeNavEventUPP_weak))load_weak("_DisposeNavEventUPP"); + DisposeWindow_weak = (typeof(DisposeWindow_weak))load_weak("_DisposeWindow"); + ExitToShell_weak = (typeof(ExitToShell_weak))load_weak("_ExitToShell"); + FSRefMakePath_weak = (typeof(FSRefMakePath_weak))load_weak("_FSRefMakePath"); + FrontWindow_weak = (typeof(FrontWindow_weak))load_weak("_FrontWindow"); + Gestalt_weak = (typeof(Gestalt_weak))load_weak("_Gestalt"); + GetApplicationEventTarget_weak = (typeof(GetApplicationEventTarget_weak))load_weak("_GetApplicationEventTarget"); + GetCurrentProcess_weak = (typeof(GetCurrentProcess_weak))load_weak("_GetCurrentProcess"); + GetCurrentScrap_weak = (typeof(GetCurrentScrap_weak))load_weak("_GetCurrentScrap"); + GetEventClass_weak = (typeof(GetEventClass_weak))load_weak("_GetEventClass"); + GetEventKind_weak = (typeof(GetEventKind_weak))load_weak("_GetEventKind"); + GetEventParameter_weak = (typeof(GetEventParameter_weak))load_weak("_GetEventParameter"); + GetMainEventQueue_weak = (typeof(GetMainEventQueue_weak))load_weak("_GetMainEventQueue"); + GetScrapFlavorData_weak = (typeof(GetScrapFlavorData_weak))load_weak("_GetScrapFlavorData"); + GetScrapFlavorSize_weak = (typeof(GetScrapFlavorSize_weak))load_weak("_GetScrapFlavorSize"); + GetWindowBounds_weak = (typeof(GetWindowBounds_weak))load_weak("_GetWindowBounds"); + GetWindowEventTarget_weak = (typeof(GetWindowEventTarget_weak))load_weak("_GetWindowEventTarget"); + GetWindowPort_weak = (typeof(GetWindowPort_weak))load_weak("_GetWindowPort"); + HideWindow_weak = (typeof(HideWindow_weak))load_weak("_HideWindow"); + InstallEventHandler_weak = (typeof(InstallEventHandler_weak))load_weak("_InstallEventHandler"); + IsWindowCollapsed_weak = (typeof(IsWindowCollapsed_weak))load_weak("_IsWindowCollapsed"); + LSOpenCFURLRef_weak = (typeof(LSOpenCFURLRef_weak))load_weak("_LSOpenCFURLRef"); + NavCreateGetFileDialog_weak = (typeof(NavCreateGetFileDialog_weak))load_weak("_NavCreateGetFileDialog"); + NavCreatePutFileDialog_weak = (typeof(NavCreatePutFileDialog_weak))load_weak("_NavCreatePutFileDialog"); + NavDialogDispose_weak = (typeof(NavDialogDispose_weak))load_weak("_NavDialogDispose"); + NavDialogGetReply_weak = (typeof(NavDialogGetReply_weak))load_weak("_NavDialogGetReply"); + NavDialogGetUserAction_weak = (typeof(NavDialogGetUserAction_weak))load_weak("_NavDialogGetUserAction"); + NavDialogRun_weak = (typeof(NavDialogRun_weak))load_weak("_NavDialogRun"); + NavDisposeReply_weak = (typeof(NavDisposeReply_weak))load_weak("_NavDisposeReply"); + NavGetDefaultDialogCreationOptions_weak = (typeof(NavGetDefaultDialogCreationOptions_weak))load_weak("_NavGetDefaultDialogCreationOptions"); + NewEventHandlerUPP_weak = (typeof(NewEventHandlerUPP_weak))load_weak("_NewEventHandlerUPP"); + NewNavEventUPP_weak = (typeof(NewNavEventUPP_weak))load_weak("_NewNavEventUPP"); + PostEventToQueue_weak = (typeof(PostEventToQueue_weak))load_weak("_PostEventToQueue"); + PutScrapFlavor_weak = (typeof(PutScrapFlavor_weak))load_weak("_PutScrapFlavor"); + QuitApplicationEventLoop_weak = (typeof(QuitApplicationEventLoop_weak))load_weak("_QuitApplicationEventLoop"); + ReleaseEvent_weak = (typeof(ReleaseEvent_weak))load_weak("_ReleaseEvent"); + RunApplicationEventLoop_weak = (typeof(RunApplicationEventLoop_weak))load_weak("_RunApplicationEventLoop"); + SCDynamicStoreCopyProxies_weak = (typeof(SCDynamicStoreCopyProxies_weak))load_weak("_SCDynamicStoreCopyProxies"); + SelectWindow_weak = (typeof(SelectWindow_weak))load_weak("_SelectWindow"); + SendBehind_weak = (typeof(SendBehind_weak))load_weak("_SendBehind"); + SetEventParameter_weak = (typeof(SetEventParameter_weak))load_weak("_SetEventParameter"); + SetThemeCursor_weak = (typeof(SetThemeCursor_weak))load_weak("_SetThemeCursor"); + SetWindowBounds_weak = (typeof(SetWindowBounds_weak))load_weak("_SetWindowBounds"); + SetWindowResizeLimits_weak = (typeof(SetWindowResizeLimits_weak))load_weak("_SetWindowResizeLimits"); + SetWindowTitleWithCFString_weak = (typeof(SetWindowTitleWithCFString_weak))load_weak("_SetWindowTitleWithCFString"); + ShowWindow_weak = (typeof(ShowWindow_weak))load_weak("_ShowWindow"); + ZoomWindowIdeal_weak = (typeof(ZoomWindowIdeal_weak))load_weak("_ZoomWindowIdeal"); + __CFStringMakeConstantString_weak = (typeof(__CFStringMakeConstantString_weak))load_weak("___CFStringMakeConstantString"); + aglChoosePixelFormat_weak = (typeof(aglChoosePixelFormat_weak))load_weak("_aglChoosePixelFormat"); + aglCreateContext_weak = (typeof(aglCreateContext_weak))load_weak("_aglCreateContext"); + aglDestroyContext_weak = (typeof(aglDestroyContext_weak))load_weak("_aglDestroyContext"); + aglSetCurrentContext_weak = (typeof(aglSetCurrentContext_weak))load_weak("_aglSetCurrentContext"); + aglSetDrawable_weak = (typeof(aglSetDrawable_weak))load_weak("_aglSetDrawable"); + aglSurfaceTexture_weak = (typeof(aglSurfaceTexture_weak))load_weak("_aglSurfaceTexture"); + aglUpdateContext_weak = (typeof(aglUpdateContext_weak))load_weak("_aglUpdateContext"); + kCFAllocatorDefault_weak = (typeof(kCFAllocatorDefault_weak))load_weak("_kCFAllocatorDefault"); + CPSEnableForegroundOperation_weak = (typeof(CPSEnableForegroundOperation_weak))load_weak("_CPSEnableForegroundOperation"); + CPSSetFrontProcess_weak = (typeof(CPSSetFrontProcess_weak))load_weak("_CPSSetFrontProcess"); +}