Back to index

lightning-sunbird  0.9+nobinonly
MetroNubUtils.c
Go to the documentation of this file.
00001 // ===========================================================================
00002 //     MetroNubUtils.c                           1996-1998 Metrowerks Inc. All rights reserved.
00003 // ===========================================================================
00004 
00005 #ifndef __MetroNubUtils__
00006 #include "MetroNubUtils.h"
00007 #endif
00008 
00009 #ifndef __MetroNubUserInterface__
00010 #include "MetroNubUserInterface.h"
00011 #endif
00012 
00013 #ifndef __GESTALT__
00014 #include <Gestalt.h>
00015 #endif
00016 
00017 #ifndef true
00018 #define true 1
00019 #endif
00020 
00021 #ifndef false
00022 #define false 0
00023 #endif
00024 
00025 
00026 static MetroNubUserEntryBlock*     gMetroNubEntry = NULL;
00027 
00028 
00029 
00030 Boolean       IsMetroNubInstalled()
00031 {
00032        static Boolean lookedForMetroNub = false;
00033        
00034        if (! lookedForMetroNub)
00035        {
00036               long   result;
00037               
00038               // look for MetroNub's Gestalt selector
00039               if (Gestalt(kMetroNubUserSignature, &result) == noErr)
00040               {
00041                      MetroNubUserEntryBlock* block = (MetroNubUserEntryBlock *)result;
00042                      
00043                      // make sure the version of the API is compatible
00044                      if (block->apiLowVersion <= kMetroNubUserAPIVersion &&
00045                             kMetroNubUserAPIVersion <= block->apiHiVersion)
00046                             gMetroNubEntry = block;            // success!
00047               }
00048               
00049               lookedForMetroNub = true;
00050        }
00051 
00052        return (gMetroNubEntry != NULL);
00053 }
00054 
00055 
00056 Boolean IsMWDebuggerRunning()
00057 {
00058        if (IsMetroNubInstalled())
00059               return CallIsDebuggerRunningProc(gMetroNubEntry->isDebuggerRunning);
00060        else
00061               return false;
00062 }
00063 
00064 
00065 
00066 Boolean AmIBeingMWDebugged()
00067 {
00068        if (IsMetroNubInstalled())
00069               return CallAmIBeingDebuggedProc(gMetroNubEntry->amIBeingDebugged);
00070        else
00071               return false;
00072 }