diff -r ffa851df0825 -r 2fb8b9db1c86 symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/ae/aescan.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/ae/aescan.py Fri Jul 31 15:01:17 2009 +0100 @@ -0,0 +1,97 @@ +# Scan AppleEvents.h header file, generate aegen.py and AppleEvents.py files. +# Then run aesupport to generate AEmodule.c. +# (Should learn how to tell the compiler to compile it as well.) + +import sys +import MacOS + +from bgenlocations import TOOLBOXDIR, BGENDIR +sys.path.append(BGENDIR) + +from scantools import Scanner + +def main(): + print "=== Scanning AEDataModel.h, AppleEvents.h, AERegistry.h, AEObjects.h ===" + input = ["AEDataModel.h", "AEInteraction.h", "AppleEvents.h", "AERegistry.h", "AEObjects.h"] + output = "aegen.py" + defsoutput = TOOLBOXDIR + "AppleEvents.py" + scanner = AppleEventsScanner(input, output, defsoutput) + scanner.scan() + scanner.close() + print "=== Testing definitions output code ===" + execfile(defsoutput, {}, {}) + print "=== Done Scanning and Generating, now doing 'import aesupport' ===" + import aesupport + print "=== Done 'import aesupport'. It's up to you to compile AEmodule.c ===" + +class AppleEventsScanner(Scanner): + + def destination(self, type, name, arglist): + classname = "AEFunction" + listname = "functions" + if arglist: + t, n, m = arglist[0] + if t[-4:] == "_ptr" and m == "InMode" and \ + t[:-4] in ("AEDesc", "AEAddressDesc", "AEDescList", + "AERecord", "AppleEvent"): + classname = "AEMethod" + listname = "aedescmethods" + return classname, listname + + def makeblacklistnames(self): + return [ + "AEDisposeDesc", +# "AEGetEventHandler", + "AEGetDescData", # Use object.data + "AEGetSpecialHandler", + # Constants with funny definitions + "kAEDontDisposeOnResume", + "kAEUseStandardDispatch", + ] + + def makeblacklisttypes(self): + return [ + "ProcPtr", + "AEArrayType", + "AECoercionHandlerUPP", + "UniversalProcPtr", + "OSLCompareUPP", + "OSLAccessorUPP", + ] + + def makerepairinstructions(self): + return [ + ([("Boolean", "isSysHandler", "InMode")], + [("AlwaysFalse", "*", "*")]), + + ([("void_ptr", "*", "InMode"), ("Size", "*", "InMode")], + [("InBuffer", "*", "*")]), + + ([("EventHandlerProcPtr", "*", "InMode"), ("long", "*", "InMode")], + [("EventHandler", "*", "*")]), + + ([("EventHandlerProcPtr", "*", "OutMode"), ("long", "*", "OutMode")], + [("EventHandler", "*", "*")]), + + ([("AEEventHandlerUPP", "*", "InMode"), ("long", "*", "InMode")], + [("EventHandler", "*", "*")]), + + ([("AEEventHandlerUPP", "*", "OutMode"), ("long", "*", "OutMode")], + [("EventHandler", "*", "*")]), + + ([("void", "*", "OutMode"), ("Size", "*", "InMode"), + ("Size", "*", "OutMode")], + [("VarVarOutBuffer", "*", "InOutMode")]), + + ([("AppleEvent", "theAppleEvent", "OutMode")], + [("AppleEvent_ptr", "*", "InMode")]), + + ([("AEDescList", "theAEDescList", "OutMode")], + [("AEDescList_ptr", "*", "InMode")]), + ] + + def writeinitialdefs(self): + self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") + +if __name__ == "__main__": + main()