changeset 7456:bd05ab4731f7 legacy-trunk

Patches from Jack for new Apple headers
author Guido van Rossum <guido@python.org>
date Mon, 23 Feb 1998 15:30:44 +0000
parents 483286e219e1
children 1a9b09b3caf8
files Tools/bgen/bgen/bgenlocations.py Tools/bgen/bgen/macsupport.py Tools/bgen/bgen/scantools.py
diffstat 3 files changed, 36 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/Tools/bgen/bgen/bgenlocations.py	Mon Feb 23 14:42:00 1998 +0000
+++ b/Tools/bgen/bgen/bgenlocations.py	Mon Feb 23 15:30:44 1998 +0000
@@ -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"
--- a/Tools/bgen/bgen/macsupport.py	Mon Feb 23 14:42:00 1998 +0000
+++ b/Tools/bgen/bgen/macsupport.py	Mon Feb 23 15:30:44 1998 +0000
@@ -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 @@
 		Output("if (%s != noErr) return PyMac_Error(%s);", name, name)
 		self.used = 1
 OSErr = OSErrType("OSErr", 'h')
+OSStatus = OSErrType("OSStatus", 'l')
 
 
 # Various buffer types
--- a/Tools/bgen/bgen/scantools.py	Mon Feb 23 14:42:00 1998 +0000
+++ b/Tools/bgen/bgen/scantools.py	Mon Feb 23 15:30:44 1998 +0000
@@ -93,6 +93,9 @@
 		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 @@
 		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]+\(<type>[a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)[ \t\n]+"
+#		self.type_pat = "pascal[ \t\n]+\(<type>[a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)[ \t\n]+"
+		self.type_pat = "EXTERN_API" + \
+						"[ \t\n]*([ \t\n]*" + \
+						"\(<type>[a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)" + \
+						"[ \t\n]*)[ \t\n]*"
 		self.name_pat = "\(<name>[a-zA-Z0-9_]+\)[ \t\n]*"
 		self.args_pat = "(\(<args>\([^(;=)]+\|([^(;=)]*)\)*\))"
 		self.whole_pat = self.type_pat + self.name_pat + self.args_pat
+#		self.sym_pat = "^[ \t]*\(<name>[a-zA-Z0-9_]+\)[ \t]*=" + \
+#		               "[ \t]*\(<defn>[-0-9'\"][^\t\n,;}]*\),?"
 		self.sym_pat = "^[ \t]*\(<name>[a-zA-Z0-9_]+\)[ \t]*=" + \
-		               "[ \t]*\(<defn>[-0-9'\"][^\t\n,;}]*\),?"
+		               "[ \t]*\(<defn>[-0-9_a-zA-Z'\"][^\t\n,;}]*\),?"
 		self.asplit_pat = "^\(<type>.*[^a-zA-Z0-9_]\)\(<name>[a-zA-Z0-9_]+\)$"
 
 	def compilepatterns(self):
@@ -356,6 +366,7 @@
 		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 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 @@
 				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]+\(<type>[a-zA-Z0-9_ \t]*[a-zA-Z0-9_]\)[ \t\n]+"
+		self.name_pat = "\(<name>[a-zA-Z0-9_]+\)[ \t\n]*"
+		self.args_pat = "(\(<args>\([^(;=)]+\|([^(;=)]*)\)*\))"
+		self.whole_pat = self.type_pat + self.name_pat + self.args_pat
+		self.sym_pat = "^[ \t]*\(<name>[a-zA-Z0-9_]+\)[ \t]*=" + \
+		               "[ \t]*\(<defn>[-0-9'\"][^\t\n,;}]*\),?"
+		self.asplit_pat = "^\(<type>.*[^a-zA-Z0-9_]\)\(<name>[a-zA-Z0-9_]+\)$"
+
+	
 def test():
 	input = "D:Development:THINK C:Mac #includes:Apple #includes:AppleEvents.h"
 	output = "@aespecs.py"