blob: 9bd1dfcdc752d09018e75e488b9705dab0481064 [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')
Jack Jansen7ca993e2002-08-15 22:05:58 +000053kTXNUseEncodingWordRulesMask = 0x80000000
54kTXNFontSizeAttributeSize = 4
Jack Jansenf0ded2f2001-07-14 14:00:50 +000055""")
Jack Jansen2aadb892001-07-13 20:56:52 +000056
57 def makeblacklistnames(self):
58 return [
Jack Jansend4b83612001-07-13 22:27:20 +000059 "TXNGetFontDefaults", # Arg is too difficult
60 "TXNSetFontDefaults", # Arg is too difficult
61 "TXNInitTextension", # done manually
Jack Jansenf0ded2f2001-07-14 14:00:50 +000062
63 # Constants with funny definitions
64 "kTXNClearThisControl",
65 "kTXNClearTheseFontFeatures",
66 "kTXNDontCareTypeSize",
67 "kTXNDecrementTypeSize",
68 "kTXNUseCurrentSelection",
69 "kTXNStartOffset",
70 "kTXNEndOffset",
71 "kTXNQDFontNameAttributeSize",
72 "kTXNQDFontFamilyIDAttributeSize",
73 "kTXNQDFontSizeAttributeSize",
74 "kTXNQDFontStyleAttributeSize",
75 "kTXNQDFontColorAttributeSize",
76 "kTXNTextEncodingAttributeSize",
Jack Jansen7ca993e2002-08-15 22:05:58 +000077 "kTXNUseEncodingWordRulesMask",
78 "kTXNFontSizeAttributeSize",
Jack Jansenf0ded2f2001-07-14 14:00:50 +000079 "status",
80 "justification",
Jack Jansen6c7e3262002-12-12 10:31:54 +000081 'TXNTSMCheck', # OS8
Jack Jansen2aadb892001-07-13 20:56:52 +000082 ]
83
84 def makegreylist(self):
Jack Jansen03b33ef2001-08-03 15:34:29 +000085 return [
Jack Jansen620a7662001-12-18 15:39:38 +000086 ('#if TARGET_API_MAC_OS8', [
Jack Jansen03b33ef2001-08-03 15:34:29 +000087 ])]
88
Jack Jansen2aadb892001-07-13 20:56:52 +000089
90 def makeblacklisttypes(self):
91 return [
92 "TXNTab", # TBD
93 "TXNMargins", # TBD
94 "TXNControlData", #TBD
95 "TXNATSUIFeatures", #TBD
96 "TXNATSUIVariations", #TBD
97 "TXNAttributeData", #TBD
98 "TXNTypeAttributes", #TBD
99 "TXNMatchTextRecord", #TBD
100 "TXNBackground", #TBD
Jack Jansen2aadb892001-07-13 20:56:52 +0000101 "TXNFindUPP",
Jack Jansen620a7662001-12-18 15:39:38 +0000102 "ATSUStyle", #TBD
103 "TXNActionKeyMapperProcPtr",
104 "TXNActionKeyMapperUPP",
105 "TXNTextBoxOptionsData",
106 "TXNCountOptions",
Jack Jansen2aadb892001-07-13 20:56:52 +0000107 ]
108
109 def makerepairinstructions(self):
110 return [
Jack Jansend4b83612001-07-13 22:27:20 +0000111 # TXNNewObject has a lot of optional parameters
112 ([("FSSpec_ptr", "iFileSpec", "InMode")],
113 [("OptFSSpecPtr", "*", "*")]),
114 ([("Rect", "iFrame", "OutMode")],
115 [("OptRectPtr", "*", "InMode")]),
116
117 # In UH 332 some of the "const" are missing for input parameters passed
118 # by reference. We fix that up here.
119 ([("EventRecord", "iEvent", "OutMode")],
120 [("EventRecord_ptr", "*", "InMode")]),
121 ([("FSSpec", "iFileSpecification", "OutMode")],
122 [("FSSpec_ptr", "*", "InMode")]),
123 ([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")],
124 [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]),
125
126 # In buffers are passed as void *
Jack Jansen2aadb892001-07-13 20:56:52 +0000127 ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")],
128 [("MlteInBuffer", "*", "InMode")]),
Jack Jansenf0ded2f2001-07-14 14:00:50 +0000129
130 # The AdjustCursor region handle is optional
131 ([("RgnHandle", "ioCursorRgn", "InMode")],
Jack Jansene85e4e42001-07-16 21:58:44 +0000132 [("OptRgnHandle", "*", "*")]),
133
134 # The GWorld for TXNDraw is optional
135 ([('GWorldPtr', 'iDrawPort', 'InMode')],
136 [('OptGWorldPtr', '*', '*')]),
Jack Jansen2aadb892001-07-13 20:56:52 +0000137 ]
138
139if __name__ == "__main__":
140 main()