blob: 980a98e97c693c535e5116da883513003b868d52 [file] [log] [blame]
Jack Jansen2aadb892001-07-13 20:56:52 +00001# Scan an Apple header file, generating a Python file of generator calls.
2
3import sys
4import os
Jack Jansenaaebdd62002-08-05 15:39:30 +00005from bgenlocations import TOOLBOXDIR, BGENDIR
Jack Jansen2aadb892001-07-13 20:56:52 +00006sys.path.append(BGENDIR)
7from scantools import Scanner_OSX
Jack Jansen2aadb892001-07-13 20:56:52 +00008
9LONG = "MacTextEditor"
10SHORT = "mlte"
11OBJECTS = ("TXNObject", "TXNFontMenuObject")
12# ADD object typenames here
13
14def main():
15 input = "MacTextEditor.h"
16 output = SHORT + "gen.py"
17 defsoutput = TOOLBOXDIR + LONG + ".py"
18 scanner = MyScanner(input, output, defsoutput)
19 scanner.scan()
20 scanner.gentypetest(SHORT+"typetest.py")
21 scanner.close()
Jack Jansen87eea882002-08-15 21:48:16 +000022 print "=== Testing definitions output code ==="
23 execfile(defsoutput, {}, {})
Jack Jansen2aadb892001-07-13 20:56:52 +000024 print "=== Done scanning and generating, now importing the generated code... ==="
25 exec "import " + SHORT + "support"
26 print "=== Done. It's up to you to compile it now! ==="
27
28class MyScanner(Scanner_OSX):
29
30 def destination(self, type, name, arglist):
31 classname = "Function"
32 listname = "functions"
33 if arglist:
34 t, n, m = arglist[0]
35 if t in OBJECTS and m == "InMode":
36 classname = "Method"
37 listname = t + "_methods"
38 return classname, listname
39
40 def writeinitialdefs(self):
Jack Jansenf0ded2f2001-07-14 14:00:50 +000041 self.defsfile.write("""
42def FOUR_CHAR_CODE(x): return x
43false = 0
44true = 1
45kTXNClearThisControl = 0xFFFFFFFF
46kTXNClearTheseFontFeatures = 0x80000000
47kTXNDontCareTypeSize = 0xFFFFFFFF
48kTXNDecrementTypeSize = 0x80000000
49kTXNUseCurrentSelection = 0xFFFFFFFF
50kTXNStartOffset = 0
51kTXNEndOffset = 0x7FFFFFFF
52MovieFileType = FOUR_CHAR_CODE('moov')
53""")
Jack Jansen2aadb892001-07-13 20:56:52 +000054
55 def makeblacklistnames(self):
56 return [
Jack Jansend4b83612001-07-13 22:27:20 +000057 "TXNGetFontDefaults", # Arg is too difficult
58 "TXNSetFontDefaults", # Arg is too difficult
59 "TXNInitTextension", # done manually
Jack Jansenf0ded2f2001-07-14 14:00:50 +000060
61 # Constants with funny definitions
62 "kTXNClearThisControl",
63 "kTXNClearTheseFontFeatures",
64 "kTXNDontCareTypeSize",
65 "kTXNDecrementTypeSize",
66 "kTXNUseCurrentSelection",
67 "kTXNStartOffset",
68 "kTXNEndOffset",
69 "kTXNQDFontNameAttributeSize",
70 "kTXNQDFontFamilyIDAttributeSize",
71 "kTXNQDFontSizeAttributeSize",
72 "kTXNQDFontStyleAttributeSize",
73 "kTXNQDFontColorAttributeSize",
74 "kTXNTextEncodingAttributeSize",
75 "status",
76 "justification",
Jack Jansen2aadb892001-07-13 20:56:52 +000077 ]
78
79 def makegreylist(self):
Jack Jansen03b33ef2001-08-03 15:34:29 +000080 return [
Jack Jansen620a7662001-12-18 15:39:38 +000081 ('#if TARGET_API_MAC_OS8', [
Jack Jansen03b33ef2001-08-03 15:34:29 +000082 'TXNTSMCheck',
83 ])]
84
Jack Jansen2aadb892001-07-13 20:56:52 +000085
86 def makeblacklisttypes(self):
87 return [
88 "TXNTab", # TBD
89 "TXNMargins", # TBD
90 "TXNControlData", #TBD
91 "TXNATSUIFeatures", #TBD
92 "TXNATSUIVariations", #TBD
93 "TXNAttributeData", #TBD
94 "TXNTypeAttributes", #TBD
95 "TXNMatchTextRecord", #TBD
96 "TXNBackground", #TBD
Jack Jansen2aadb892001-07-13 20:56:52 +000097 "TXNFindUPP",
Jack Jansen620a7662001-12-18 15:39:38 +000098 "ATSUStyle", #TBD
99 "TXNActionKeyMapperProcPtr",
100 "TXNActionKeyMapperUPP",
101 "TXNTextBoxOptionsData",
102 "TXNCountOptions",
Jack Jansen2aadb892001-07-13 20:56:52 +0000103 ]
104
105 def makerepairinstructions(self):
106 return [
Jack Jansend4b83612001-07-13 22:27:20 +0000107 # TXNNewObject has a lot of optional parameters
108 ([("FSSpec_ptr", "iFileSpec", "InMode")],
109 [("OptFSSpecPtr", "*", "*")]),
110 ([("Rect", "iFrame", "OutMode")],
111 [("OptRectPtr", "*", "InMode")]),
112
113 # In UH 332 some of the "const" are missing for input parameters passed
114 # by reference. We fix that up here.
115 ([("EventRecord", "iEvent", "OutMode")],
116 [("EventRecord_ptr", "*", "InMode")]),
117 ([("FSSpec", "iFileSpecification", "OutMode")],
118 [("FSSpec_ptr", "*", "InMode")]),
119 ([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")],
120 [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]),
121
122 # In buffers are passed as void *
Jack Jansen2aadb892001-07-13 20:56:52 +0000123 ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")],
124 [("MlteInBuffer", "*", "InMode")]),
Jack Jansenf0ded2f2001-07-14 14:00:50 +0000125
126 # The AdjustCursor region handle is optional
127 ([("RgnHandle", "ioCursorRgn", "InMode")],
Jack Jansene85e4e42001-07-16 21:58:44 +0000128 [("OptRgnHandle", "*", "*")]),
129
130 # The GWorld for TXNDraw is optional
131 ([('GWorldPtr', 'iDrawPort', 'InMode')],
132 [('OptGWorldPtr', '*', '*')]),
Jack Jansen2aadb892001-07-13 20:56:52 +0000133 ]
134
135if __name__ == "__main__":
136 main()