2003/09/12 01:28:04
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:15:37 +0000 (07:15 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:15:37 +0000 (07:15 +0000)
darcs-hash:20040130071537-2ba56-531398334b7b51ccf6ec9635f06ea0d7a598425c.gz

src/org/xwt/plat/DarwinWeakSymbols.h [new file with mode: 0644]

diff --git a/src/org/xwt/plat/DarwinWeakSymbols.h b/src/org/xwt/plat/DarwinWeakSymbols.h
new file mode 100644 (file)
index 0000000..e0d16e8
--- /dev/null
@@ -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");
+}