blob: c4b3d47895758c2b7feb410e94ff075b534df2cd [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 [
Jack Jansen620a7662001-12-18 15:39:38 +000080 ('#if TARGET_API_MAC_OS8', [
Jack Jansen03b33ef2001-08-03 15:34:29 +000081 '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
Jack Jansen620a7662001-12-18 15:39:38 +000097 "UniCharCount", #TBD
98 "UniChar_ptr", #TBD
Jack Jansen2aadb892001-07-13 20:56:52 +000099 "TXNFindUPP",
Jack Jansen620a7662001-12-18 15:39:38 +0000100 "ATSUStyle", #TBD
101 "TXNActionKeyMapperProcPtr",
102 "TXNActionKeyMapperUPP",
103 "TXNTextBoxOptionsData",
104 "TXNCountOptions",
Jack Jansen2aadb892001-07-13 20:56:52 +0000105 ]
106
107 def makerepairinstructions(self):
108 return [
Jack Jansend4b83612001-07-13 22:27:20 +0000109 # TXNNewObject has a lot of optional parameters
110 ([("FSSpec_ptr", "iFileSpec", "InMode")],
111 [("OptFSSpecPtr", "*", "*")]),
112 ([("Rect", "iFrame", "OutMode")],
113 [("OptRectPtr", "*", "InMode")]),
114
115 # In UH 332 some of the "const" are missing for input parameters passed
116 # by reference. We fix that up here.
117 ([("EventRecord", "iEvent", "OutMode")],
118 [("EventRecord_ptr", "*", "InMode")]),
119 ([("FSSpec", "iFileSpecification", "OutMode")],
120 [("FSSpec_ptr", "*", "InMode")]),
121 ([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")],
122 [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]),
123
124 # In buffers are passed as void *
Jack Jansen2aadb892001-07-13 20:56:52 +0000125 ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")],
126 [("MlteInBuffer", "*", "InMode")]),
Jack Jansenf0ded2f2001-07-14 14:00:50 +0000127
128 # The AdjustCursor region handle is optional
129 ([("RgnHandle", "ioCursorRgn", "InMode")],
Jack Jansene85e4e42001-07-16 21:58:44 +0000130 [("OptRgnHandle", "*", "*")]),
131
132 # The GWorld for TXNDraw is optional
133 ([('GWorldPtr', 'iDrawPort', 'InMode')],
134 [('OptGWorldPtr', '*', '*')]),
Jack Jansen2aadb892001-07-13 20:56:52 +0000135 ]
136
137if __name__ == "__main__":
138 main()