blob: e55f22270300ac24ef00a05df2449d714191f90d [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()
22 print "=== Done scanning and generating, now importing the generated code... ==="
23 exec "import " + SHORT + "support"
24 print "=== Done. It's up to you to compile it now! ==="
25
26class MyScanner(Scanner_OSX):
27
28 def destination(self, type, name, arglist):
29 classname = "Function"
30 listname = "functions"
31 if arglist:
32 t, n, m = arglist[0]
33 if t in OBJECTS and m == "InMode":
34 classname = "Method"
35 listname = t + "_methods"
36 return classname, listname
37
38 def writeinitialdefs(self):
Jack Jansenf0ded2f2001-07-14 14:00:50 +000039 self.defsfile.write("""
40def FOUR_CHAR_CODE(x): return x
41false = 0
42true = 1
43kTXNClearThisControl = 0xFFFFFFFF
44kTXNClearTheseFontFeatures = 0x80000000
45kTXNDontCareTypeSize = 0xFFFFFFFF
46kTXNDecrementTypeSize = 0x80000000
47kTXNUseCurrentSelection = 0xFFFFFFFF
48kTXNStartOffset = 0
49kTXNEndOffset = 0x7FFFFFFF
50MovieFileType = FOUR_CHAR_CODE('moov')
51""")
Jack Jansen2aadb892001-07-13 20:56:52 +000052
53 def makeblacklistnames(self):
54 return [
Jack Jansend4b83612001-07-13 22:27:20 +000055 "TXNGetFontDefaults", # Arg is too difficult
56 "TXNSetFontDefaults", # Arg is too difficult
57 "TXNInitTextension", # done manually
Jack Jansenf0ded2f2001-07-14 14:00:50 +000058
59 # Constants with funny definitions
60 "kTXNClearThisControl",
61 "kTXNClearTheseFontFeatures",
62 "kTXNDontCareTypeSize",
63 "kTXNDecrementTypeSize",
64 "kTXNUseCurrentSelection",
65 "kTXNStartOffset",
66 "kTXNEndOffset",
67 "kTXNQDFontNameAttributeSize",
68 "kTXNQDFontFamilyIDAttributeSize",
69 "kTXNQDFontSizeAttributeSize",
70 "kTXNQDFontStyleAttributeSize",
71 "kTXNQDFontColorAttributeSize",
72 "kTXNTextEncodingAttributeSize",
73 "status",
74 "justification",
Jack Jansen2aadb892001-07-13 20:56:52 +000075 ]
76
77 def makegreylist(self):
Jack Jansen03b33ef2001-08-03 15:34:29 +000078 return [
Jack Jansen620a7662001-12-18 15:39:38 +000079 ('#if TARGET_API_MAC_OS8', [
Jack Jansen03b33ef2001-08-03 15:34:29 +000080 'TXNTSMCheck',
81 ])]
82
Jack Jansen2aadb892001-07-13 20:56:52 +000083
84 def makeblacklisttypes(self):
85 return [
86 "TXNTab", # TBD
87 "TXNMargins", # TBD
88 "TXNControlData", #TBD
89 "TXNATSUIFeatures", #TBD
90 "TXNATSUIVariations", #TBD
91 "TXNAttributeData", #TBD
92 "TXNTypeAttributes", #TBD
93 "TXNMatchTextRecord", #TBD
94 "TXNBackground", #TBD
Jack Jansen2aadb892001-07-13 20:56:52 +000095 "TXNFindUPP",
Jack Jansen620a7662001-12-18 15:39:38 +000096 "ATSUStyle", #TBD
97 "TXNActionKeyMapperProcPtr",
98 "TXNActionKeyMapperUPP",
99 "TXNTextBoxOptionsData",
100 "TXNCountOptions",
Jack Jansen2aadb892001-07-13 20:56:52 +0000101 ]
102
103 def makerepairinstructions(self):
104 return [
Jack Jansend4b83612001-07-13 22:27:20 +0000105 # TXNNewObject has a lot of optional parameters
106 ([("FSSpec_ptr", "iFileSpec", "InMode")],
107 [("OptFSSpecPtr", "*", "*")]),
108 ([("Rect", "iFrame", "OutMode")],
109 [("OptRectPtr", "*", "InMode")]),
110
111 # In UH 332 some of the "const" are missing for input parameters passed
112 # by reference. We fix that up here.
113 ([("EventRecord", "iEvent", "OutMode")],
114 [("EventRecord_ptr", "*", "InMode")]),
115 ([("FSSpec", "iFileSpecification", "OutMode")],
116 [("FSSpec_ptr", "*", "InMode")]),
117 ([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")],
118 [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]),
119
120 # In buffers are passed as void *
Jack Jansen2aadb892001-07-13 20:56:52 +0000121 ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")],
122 [("MlteInBuffer", "*", "InMode")]),
Jack Jansenf0ded2f2001-07-14 14:00:50 +0000123
124 # The AdjustCursor region handle is optional
125 ([("RgnHandle", "ioCursorRgn", "InMode")],
Jack Jansene85e4e42001-07-16 21:58:44 +0000126 [("OptRgnHandle", "*", "*")]),
127
128 # The GWorld for TXNDraw is optional
129 ([('GWorldPtr', 'iDrawPort', 'InMode')],
130 [('OptGWorldPtr', '*', '*')]),
Jack Jansen2aadb892001-07-13 20:56:52 +0000131 ]
132
133if __name__ == "__main__":
134 main()