blob: 80c966eb327ff2a2f1309ce56f381aa9d715b3ad [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
Jack Jansen2aadb892001-07-13 20:56:52 +000096 "TXNFindUPP",
Jack Jansen620a7662001-12-18 15:39:38 +000097 "ATSUStyle", #TBD
98 "TXNActionKeyMapperProcPtr",
99 "TXNActionKeyMapperUPP",
100 "TXNTextBoxOptionsData",
101 "TXNCountOptions",
Jack Jansen2aadb892001-07-13 20:56:52 +0000102 ]
103
104 def makerepairinstructions(self):
105 return [
Jack Jansend4b83612001-07-13 22:27:20 +0000106 # TXNNewObject has a lot of optional parameters
107 ([("FSSpec_ptr", "iFileSpec", "InMode")],
108 [("OptFSSpecPtr", "*", "*")]),
109 ([("Rect", "iFrame", "OutMode")],
110 [("OptRectPtr", "*", "InMode")]),
111
112 # In UH 332 some of the "const" are missing for input parameters passed
113 # by reference. We fix that up here.
114 ([("EventRecord", "iEvent", "OutMode")],
115 [("EventRecord_ptr", "*", "InMode")]),
116 ([("FSSpec", "iFileSpecification", "OutMode")],
117 [("FSSpec_ptr", "*", "InMode")]),
118 ([("TXNMacOSPreferredFontDescription", "iFontDefaults", "OutMode")],
119 [("TXNMacOSPreferredFontDescription_ptr", "*", "InMode")]),
120
121 # In buffers are passed as void *
Jack Jansen2aadb892001-07-13 20:56:52 +0000122 ([("void", "*", "OutMode"), ("ByteCount", "*", "InMode")],
123 [("MlteInBuffer", "*", "InMode")]),
Jack Jansenf0ded2f2001-07-14 14:00:50 +0000124
125 # The AdjustCursor region handle is optional
126 ([("RgnHandle", "ioCursorRgn", "InMode")],
Jack Jansene85e4e42001-07-16 21:58:44 +0000127 [("OptRgnHandle", "*", "*")]),
128
129 # The GWorld for TXNDraw is optional
130 ([('GWorldPtr', 'iDrawPort', 'InMode')],
131 [('OptGWorldPtr', '*', '*')]),
Jack Jansen2aadb892001-07-13 20:56:52 +0000132 ]
133
134if __name__ == "__main__":
135 main()