mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	 6c7e326eaa
			
		
	
	
		6c7e326eaa
		
	
	
	
	
		
			
			TARGET_API_MAC_OS8 (or !TARGET_API_MAC_CARBON) is gone. Also some TARGET_API_MAC_OSX conditional code is gone, because it is no longer used on OSX-only Python (only in MacPython-OS9).
		
			
				
	
	
		
			140 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			140 lines
		
	
	
	
		
			3.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Scan an Apple header file, generating a Python file of generator calls.
 | |
| 
 | |
| import sys
 | |
| import os
 | |
| from bgenlocations import TOOLBOXDIR, BGENDIR
 | |
| sys.path.append(BGENDIR)
 | |
| from scantools import Scanner_OSX
 | |
| 
 | |
| LONG = "MacTextEditor"
 | |
| SHORT = "mlte"
 | |
| OBJECTS = ("TXNObject", "TXNFontMenuObject")
 | |
| # ADD object typenames here
 | |
| 
 | |
| def main():
 | |
| 	input = "MacTextEditor.h"
 | |
| 	output = SHORT + "gen.py"
 | |
| 	defsoutput = TOOLBOXDIR + LONG + ".py"
 | |
| 	scanner = MyScanner(input, output, defsoutput)
 | |
| 	scanner.scan()
 | |
| 	scanner.gentypetest(SHORT+"typetest.py")
 | |
| 	scanner.close()
 | |
| 	print "=== Testing definitions output code ==="
 | |
| 	execfile(defsoutput, {}, {})
 | |
| 	print "=== Done scanning and generating, now importing the generated code... ==="
 | |
| 	exec "import " + SHORT + "support"
 | |
| 	print "=== Done.  It's up to you to compile it now! ==="
 | |
| 
 | |
| class MyScanner(Scanner_OSX):
 | |
| 
 | |
| 	def destination(self, type, name, arglist):
 | |
| 		classname = "Function"
 | |
| 		listname = "functions"
 | |
| 		if arglist:
 | |
| 			t, n, m = arglist[0]
 | |
| 			if t in OBJECTS and m == "InMode":
 | |
| 				classname = "Method"
 | |
| 				listname = t + "_methods"
 | |
| 		return classname, listname
 | |
| 
 | |
| 	def writeinitialdefs(self):
 | |
| 		self.defsfile.write("""
 | |
| def FOUR_CHAR_CODE(x): return x
 | |
| false = 0
 | |
| true = 1
 | |
| kTXNClearThisControl = 0xFFFFFFFF
 | |
| kTXNClearTheseFontFeatures = 0x80000000
 | |
| kTXNDontCareTypeSize = 0xFFFFFFFF
 | |
| kTXNDecrementTypeSize = 0x80000000
 | |
| kTXNUseCurrentSelection = 0xFFFFFFFF
 | |
| kTXNStartOffset = 0
 | |
| kTXNEndOffset = 0x7FFFFFFF
 | |
| MovieFileType = FOUR_CHAR_CODE('moov')
 | |
| kTXNUseEncodingWordRulesMask = 0x80000000
 | |
| kTXNFontSizeAttributeSize = 4
 | |
| """)
 | |
| 
 | |
| 	def makeblacklistnames(self):
 | |
| 		return [
 | |
| 			"TXNGetFontDefaults", # Arg is too difficult
 | |
| 			"TXNSetFontDefaults", # Arg is too difficult
 | |
| 			"TXNInitTextension", # done manually
 | |
| 			
 | |
| 			# Constants with funny definitions
 | |
| 			"kTXNClearThisControl", 
 | |
| 			"kTXNClearTheseFontFeatures",
 | |
| 			"kTXNDontCareTypeSize",
 | |
| 			"kTXNDecrementTypeSize",
 | |
| 			"kTXNUseCurrentSelection",
 | |
| 			"kTXNStartOffset",
 | |
| 			"kTXNEndOffset",
 | |
| 			"kTXNQDFontNameAttributeSize",
 | |
| 			"kTXNQDFontFamilyIDAttributeSize",
 | |
| 			"kTXNQDFontSizeAttributeSize",
 | |
| 			"kTXNQDFontStyleAttributeSize",
 | |
| 			"kTXNQDFontColorAttributeSize",
 | |
| 			"kTXNTextEncodingAttributeSize",
 | |
| 			"kTXNUseEncodingWordRulesMask",
 | |
| 			"kTXNFontSizeAttributeSize",
 | |
| 			"status",
 | |
| 			"justification",
 | |
| 			'TXNTSMCheck', # OS8
 | |
| 			]
 | |
| 
 | |
| 	def makegreylist(self):
 | |
| 		return [
 | |
| 			('#if TARGET_API_MAC_OS8', [
 | |
| 			])]
 | |
| 
 | |
| 
 | |
| 	def makeblacklisttypes(self):
 | |
| 		return [
 | |
| 			"TXNTab", # TBD
 | |
| 			"TXNMargins", # TBD
 | |
| 			"TXNControlData", #TBD
 | |
| 			"TXNATSUIFeatures", #TBD
 | |
| 			"TXNATSUIVariations", #TBD
 | |
| 			"TXNAttributeData", #TBD
 | |
| 			"TXNTypeAttributes", #TBD
 | |
| 			"TXNMatchTextRecord", #TBD
 | |
| 			"TXNBackground", #TBD
 | |
| 			"TXNFindUPP", 
 | |
| 			"ATSUStyle", #TBD
 | |
| 			"TXNActionKeyMapperProcPtr",
 | |
| 			"TXNActionKeyMapperUPP",
 | |
| 			"TXNTextBoxOptionsData",
 | |
| 			"TXNCountOptions",
 | |
| 			]
 | |
| 
 | |
| 	def makerepairinstructions(self):
 | |
| 		return [
 | |
| 			# TXNNewObject has a lot of optional parameters
 | |
| 			([("FSSpec_ptr", "iFileSpec", "InMode")],
 | |
| 			 [("OptFSSpecPtr", "*", "*")]),
 | |
| 			([("Rect", "iFrame", "OutMode")],
 | |
| 			 [("OptRectPtr", "*", "InMode")]),
 | |
| 			 
 | |
| 			# In UH 332 some of the "const" are missing for input parameters passed
 | |
| 			# by reference. We fix that up here.
 | |
| 			([("EventRecord", "iEvent", "OutMode")],
 | |
| 			 [("EventRecord_ptr", "*", "InMode")]),
 | |
| 			([("FSSpec", "iFileSpecification", "OutMode")],
 | |
| 			 [("FSSpec_ptr", "*", "InMode")]),
 | |
| 			([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")],
 | |
| 			 [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]),
 | |
| 			 
 | |
| 			# In buffers are passed as void *
 | |
| 			([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")],
 | |
| 			 [("MlteInBuffer", "*", "InMode")]),
 | |
| 			 
 | |
| 			# The AdjustCursor region handle is optional
 | |
| 			([("RgnHandle", "ioCursorRgn", "InMode")],
 | |
| 			 [("OptRgnHandle", "*", "*")]),
 | |
| 			 
 | |
| 			# The GWorld for TXNDraw is optional
 | |
| 			([('GWorldPtr', 'iDrawPort', 'InMode')],
 | |
| 			 [('OptGWorldPtr', '*', '*')]),
 | |
| 			]
 | |
| 			
 | |
| if __name__ == "__main__":
 | |
| 	main()
 |