blob: ae45f79223462e8436b9e26d189ddfb9ab856817 [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
5BGENDIR=os.path.join(sys.prefix, ':Tools:bgen:bgen')
6sys.path.append(BGENDIR)
7from scantools import Scanner_OSX
8from bgenlocations import TOOLBOXDIR
9
10LONG = "MacTextEditor"
11SHORT = "mlte"
12OBJECTS = ("TXNObject", "TXNFontMenuObject")
13# ADD object typenames here
14
15def main():
16 input = "MacTextEditor.h"
17 output = SHORT + "gen.py"
18 defsoutput = TOOLBOXDIR + LONG + ".py"
19 scanner = MyScanner(input, output, defsoutput)
20 scanner.scan()
21 scanner.gentypetest(SHORT+"typetest.py")
22 scanner.close()
23 print "=== Done scanning and generating, now importing the generated code... ==="
24 exec "import " + SHORT + "support"
25 print "=== Done. It's up to you to compile it now! ==="
26
27class MyScanner(Scanner_OSX):
28
29 def destination(self, type, name, arglist):
30 classname = "Function"
31 listname = "functions"
32 if arglist:
33 t, n, m = arglist[0]
34 if t in OBJECTS and m == "InMode":
35 classname = "Method"
36 listname = t + "_methods"
37 return classname, listname
38
39 def writeinitialdefs(self):
Jack Jansenf0ded2f2001-07-14 14:00:50 +000040 self.defsfile.write("""
41def FOUR_CHAR_CODE(x): return x
42false = 0
43true = 1
44kTXNClearThisControl = 0xFFFFFFFF
45kTXNClearTheseFontFeatures = 0x80000000
46kTXNDontCareTypeSize = 0xFFFFFFFF
47kTXNDecrementTypeSize = 0x80000000
48kTXNUseCurrentSelection = 0xFFFFFFFF
49kTXNStartOffset = 0
50kTXNEndOffset = 0x7FFFFFFF
51MovieFileType = FOUR_CHAR_CODE('moov')
52""")
Jack Jansen2aadb892001-07-13 20:56:52 +000053
54 def makeblacklistnames(self):
55 return [
Jack Jansend4b83612001-07-13 22:27:20 +000056 "TXNGetFontDefaults", # Arg is too difficult
57 "TXNSetFontDefaults", # Arg is too difficult
58 "TXNInitTextension", # done manually
Jack Jansenf0ded2f2001-07-14 14:00:50 +000059
60 # Constants with funny definitions
61 "kTXNClearThisControl",
62 "kTXNClearTheseFontFeatures",
63 "kTXNDontCareTypeSize",
64 "kTXNDecrementTypeSize",
65 "kTXNUseCurrentSelection",
66 "kTXNStartOffset",
67 "kTXNEndOffset",
68 "kTXNQDFontNameAttributeSize",
69 "kTXNQDFontFamilyIDAttributeSize",
70 "kTXNQDFontSizeAttributeSize",
71 "kTXNQDFontStyleAttributeSize",
72 "kTXNQDFontColorAttributeSize",
73 "kTXNTextEncodingAttributeSize",
74 "status",
75 "justification",
Jack Jansen2aadb892001-07-13 20:56:52 +000076 ]
77
78 def makegreylist(self):
Jack Jansen03b33ef2001-08-03 15:34:29 +000079 return [
80 ('#if !TARGET_API_MAC_OSX', [
81 'TXNTSMCheck',
82 ])]
83
Jack Jansen2aadb892001-07-13 20:56:52 +000084
85 def makeblacklisttypes(self):
86 return [
87 "TXNTab", # TBD
88 "TXNMargins", # TBD
89 "TXNControlData", #TBD
90 "TXNATSUIFeatures", #TBD
91 "TXNATSUIVariations", #TBD
92 "TXNAttributeData", #TBD
93 "TXNTypeAttributes", #TBD
94 "TXNMatchTextRecord", #TBD
95 "TXNBackground", #TBD
96 "UniChar", #TBD
97 "TXNFindUPP",
98 ]
99
100 def makerepairinstructions(self):
101 return [
Jack Jansend4b83612001-07-13 22:27:20 +0000102 # TXNNewObject has a lot of optional parameters
103 ([("FSSpec_ptr", "iFileSpec", "InMode")],
104 [("OptFSSpecPtr", "*", "*")]),
105 ([("Rect", "iFrame", "OutMode")],
106 [("OptRectPtr", "*", "InMode")]),
107
108 # In UH 332 some of the "const" are missing for input parameters passed
109 # by reference. We fix that up here.
110 ([("EventRecord", "iEvent", "OutMode")],
111 [("EventRecord_ptr", "*", "InMode")]),
112 ([("FSSpec", "iFileSpecification", "OutMode")],
113 [("FSSpec_ptr", "*", "InMode")]),
114 ([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")],
115 [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]),
116
117 # In buffers are passed as void *
Jack Jansen2aadb892001-07-13 20:56:52 +0000118 ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")],
119 [("MlteInBuffer", "*", "InMode")]),
Jack Jansenf0ded2f2001-07-14 14:00:50 +0000120
121 # The AdjustCursor region handle is optional
122 ([("RgnHandle", "ioCursorRgn", "InMode")],
Jack Jansene85e4e42001-07-16 21:58:44 +0000123 [("OptRgnHandle", "*", "*")]),
124
125 # The GWorld for TXNDraw is optional
126 ([('GWorldPtr', 'iDrawPort', 'InMode')],
127 [('OptGWorldPtr', '*', '*')]),
Jack Jansen2aadb892001-07-13 20:56:52 +0000128 ]
129
130if __name__ == "__main__":
131 main()