From 557f44661899fc3fdc276db8079df07b7f2cdb7e Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 23 Feb 1998 15:30:44 +0000 Subject: [PATCH] Patches from Jack for new Apple headers --- Tools/bgen/bgen/bgenlocations.py | 4 ++-- Tools/bgen/bgen/macsupport.py | 4 ++++ Tools/bgen/bgen/scantools.py | 34 ++++++++++++++++++++++++++++---- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/Tools/bgen/bgen/bgenlocations.py b/Tools/bgen/bgen/bgenlocations.py index 1b6b31da20f..56d9e6ec113 100644 --- a/Tools/bgen/bgen/bgenlocations.py +++ b/Tools/bgen/bgen/bgenlocations.py @@ -3,11 +3,11 @@ # # Where to find the Universal Header include files: -MWERKSDIR="Moes:Metrowerks:Metrowerks CodeWarrior:" +MWERKSDIR="flap:Metrowerks:Metrowerks CodeWarrior:" INCLUDEDIR=MWERKSDIR + "MacOS Support:Headers:Universal Headers:" # Where to put the python definitions file: -TOOLBOXDIR="Moes:Development:Jack:Python:Mac:Lib:toolbox:" +TOOLBOXDIR="flap:Jack:Python:Mac:Lib:lib-toolbox:" # Creator for C files: CREATOR="CWIE" diff --git a/Tools/bgen/bgen/macsupport.py b/Tools/bgen/bgen/macsupport.py index f8570e43165..4c84dbf2079 100644 --- a/Tools/bgen/bgen/macsupport.py +++ b/Tools/bgen/bgen/macsupport.py @@ -15,6 +15,9 @@ ScriptCode = Type("ScriptCode", "h") Size = Type("Size", "l") Style = Type("Style", "b") +StyleParameter = Type("Style", "h") +CharParameter = Type("CharParameter", "h") +TextEncoding = Type("TextEncoding", "l") UInt8 = Type("UInt8", "b") SInt8 = Type("SInt8", "b") @@ -75,6 +78,7 @@ def errorCheck(self, name): Output("if (%s != noErr) return PyMac_Error(%s);", name, name) self.used = 1 OSErr = OSErrType("OSErr", 'h') +OSStatus = OSErrType("OSStatus", 'l') # Various buffer types diff --git a/Tools/bgen/bgen/scantools.py b/Tools/bgen/bgen/scantools.py index 58006813a10..851a4d0929e 100644 --- a/Tools/bgen/bgen/scantools.py +++ b/Tools/bgen/bgen/scantools.py @@ -93,6 +93,9 @@ def report(self, format, *args): if not self.silent: print format%args + def writeinitialdefs(self): + pass + def initblacklists(self): self.blacklistnames = self.makeblacklistnames() self.blacklisttypes = ["unknown", "-"] + self.makeblacklisttypes() @@ -219,14 +222,21 @@ def initpaths(self): self.includepath = [':', INCLUDEDIR] def initpatterns(self): - self.head_pat = "^extern pascal[ \t]+" # XXX Mac specific! +# self.head_pat = "^extern pascal[ \t]+" # XXX Mac specific! + self.head_pat = "^EXTERN_API[^_]" self.tail_pat = "[;={}]" - self.type_pat = "pascal[ \t\n]+\([a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)[ \t\n]+" +# self.type_pat = "pascal[ \t\n]+\([a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)[ \t\n]+" + self.type_pat = "EXTERN_API" + \ + "[ \t\n]*([ \t\n]*" + \ + "\([a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)" + \ + "[ \t\n]*)[ \t\n]*" self.name_pat = "\([a-zA-Z0-9_]+\)[ \t\n]*" self.args_pat = "(\(\([^(;=)]+\|([^(;=)]*)\)*\))" self.whole_pat = self.type_pat + self.name_pat + self.args_pat +# self.sym_pat = "^[ \t]*\([a-zA-Z0-9_]+\)[ \t]*=" + \ +# "[ \t]*\([-0-9'\"][^\t\n,;}]*\),?" self.sym_pat = "^[ \t]*\([a-zA-Z0-9_]+\)[ \t]*=" + \ - "[ \t]*\([-0-9'\"][^\t\n,;}]*\),?" + "[ \t]*\([-0-9_a-zA-Z'\"][^\t\n,;}]*\),?" self.asplit_pat = "^\(.*[^a-zA-Z0-9_]\)\([a-zA-Z0-9_]+\)$" def compilepatterns(self): @@ -356,6 +366,7 @@ def scan(self): else: self.report("defsfile = %s", `self.defsfile.name`) self.defsfile.write("# Generated from %s\n\n" % `inputname`) + self.writeinitialdefs() self.alreadydone = [] try: while 1: @@ -373,7 +384,8 @@ def scan(self): def dosymdef(self): name, defn = self.sym.group('name', 'defn') - self.defsfile.write("%s = %s\n" % (name, defn)) + if not name in self.blacklistnames: + self.defsfile.write("%s = %s\n" % (name, defn)) def dofuncspec(self): raw = self.line @@ -519,6 +531,20 @@ def unmanageable(self, type, name, arglist): return 1 return 0 +class Scanner_PreUH3(Scanner): + """Scanner for Universal Headers before release 3""" + def initpatterns(self): + self.head_pat = "^extern pascal[ \t]+" # XXX Mac specific! + self.tail_pat = "[;={}]" + self.type_pat = "pascal[ \t\n]+\([a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)[ \t\n]+" + self.name_pat = "\([a-zA-Z0-9_]+\)[ \t\n]*" + self.args_pat = "(\(\([^(;=)]+\|([^(;=)]*)\)*\))" + self.whole_pat = self.type_pat + self.name_pat + self.args_pat + self.sym_pat = "^[ \t]*\([a-zA-Z0-9_]+\)[ \t]*=" + \ + "[ \t]*\([-0-9'\"][^\t\n,;}]*\),?" + self.asplit_pat = "^\(.*[^a-zA-Z0-9_]\)\([a-zA-Z0-9_]+\)$" + + def test(): input = "D:Development:THINK C:Mac #includes:Apple #includes:AppleEvents.h" output = "@aespecs.py"