blob: 1950a62ca4145096461cabbc4cf834db894ca8f4 [file] [log] [blame]
Jack Jansen90ecdf41996-04-16 14:29:15 +00001# Scan an Apple header file, generating a Python file of generator calls.
2
Jack Jansen0c4d9471998-04-17 14:07:56 +00003import sys
4import os
5BGENDIR=os.path.join(sys.prefix, ':Tools:bgen:bgen')
6sys.path.append(BGENDIR)
Jack Jansenb99e5212002-01-11 12:37:15 +00007from scantools import Scanner
Jack Jansen8505ef81997-08-27 14:09:25 +00008from bgenlocations import MWERKSDIR, TOOLBOXDIR
Jack Jansen90ecdf41996-04-16 14:29:15 +00009
Jack Jansenb99e5212002-01-11 12:37:15 +000010#WASTEDIR=":::::Waste 1.3 Distribution:WASTE C/C++ Headers:"
11WASTEDIR=MWERKSDIR + 'MacOS Support:(Third Party Support):Waste 2.0 Distribution:C_C++ Headers:'
Jack Jansen90ecdf41996-04-16 14:29:15 +000012
13OBJECT = "TEHandle"
14SHORT = "waste"
15OBJECT = "WEReference"
16OBJECT2 = "WEObjectReference"
17
18def main():
Jack Jansen8505ef81997-08-27 14:09:25 +000019 input = WASTEDIR + "WASTE.h"
Jack Jansen90ecdf41996-04-16 14:29:15 +000020 output = SHORT + "gen.py"
21 defsoutput = TOOLBOXDIR + "WASTEconst.py"
22 scanner = MyScanner(input, output, defsoutput)
23 scanner.scan()
Jack Jansen8ae8e4f1996-04-23 16:17:08 +000024## scanner.gentypetest(SHORT+"typetest.py")
Jack Jansen90ecdf41996-04-16 14:29:15 +000025 scanner.close()
26 print "=== Done scanning and generating, now importing the generated code... ==="
27 exec "import " + SHORT + "support"
28 print "=== Done. It's up to you to compile it now! ==="
29
Jack Jansenb99e5212002-01-11 12:37:15 +000030#class MyScanner(Scanner_PreUH3):
31class MyScanner(Scanner):
Jack Jansen90ecdf41996-04-16 14:29:15 +000032
Jack Jansen90ecdf41996-04-16 14:29:15 +000033 def destination(self, type, name, arglist):
34 classname = "Function"
35 listname = "functions"
36 if arglist:
37 t, n, m = arglist[-1]
38 # This is non-functional today
39 if t == OBJECT and m == "InMode":
40 classname = "Method"
41 listname = "methods"
42 else:
43 t, n, m = arglist[0]
44 if t == OBJECT2 and m == "InMode":
45 classname = "Method2"
46 listname = "methods2"
47 return classname, listname
48
Jack Jansen2369a981998-02-20 15:57:30 +000049 def writeinitialdefs(self):
50 self.defsfile.write("kPascalStackBased = None # workaround for header parsing\n")
Jack Jansen9d799902002-03-24 23:04:18 +000051 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
52
Jack Jansen90ecdf41996-04-16 14:29:15 +000053 def makeblacklistnames(self):
54 return [
55 "WEDispose",
56 "WESetInfo", # Argument type unknown...
57 "WEGetInfo",
Jack Jansen2268af51996-08-06 16:04:22 +000058 "WEVersion", # Unfortunately...
Jack Jansenb99e5212002-01-11 12:37:15 +000059 "WEPut", # XXXX TBD: needs array of flavortypes.
60 "WEGetOneAttribute", # XXXX TBD: output buffer
Jack Jansen9d799902002-03-24 23:04:18 +000061 # Incompatible constant definitions
62 "weDoAutoScroll",
63 "weDoOutlineHilite",
64 "weDoReadOnly",
65 "weDoUndo",
66 "weDoIntCutAndPaste",
67 "weDoDragAndDrop",
68 "weDoInhibitRecal",
69 "weDoUseTempMem",
70 "weDoDrawOffscreen",
71 "weDoInhibitRedraw",
72 "weDoMonoStyled",
73 "weDoMultipleUndo",
74 "weDoNoKeyboardSync",
75 "weDoInhibitICSupport",
76 "weDoInhibitColor",
Jack Jansen90ecdf41996-04-16 14:29:15 +000077 ]
78
79 def makeblacklisttypes(self):
80 return [
81 "DragReference", # For now...
82 "UniversalProcPtr",
Jack Jansen8505ef81997-08-27 14:09:25 +000083 "WEFontIDToNameUPP",
84 "WEFontNameToIDUPP",
Jack Jansenb99e5212002-01-11 12:37:15 +000085 "WEClickLoopUPP",
86 "WEScrollUPP",
87 "WETSMPreUpdateUPP",
88 "WETSMPostUpdateUPP",
89 "WEPreTrackDragUPP",
90 "WETranslateDragUPP",
91 "WEHiliteDropAreaUPP",
92 "WEDrawTextUPP",
93 "WEDrawTSMHiliteUPP",
94 "WEPixelToCharUPP",
95 "WECharToPixelUPP",
96 "WELineBreakUPP",
97 "WEWordBreakUPP",
98 "WECharByteUPP",
99 "WECharTypeUPP",
100 "WEEraseUPP",
101 "WEFluxUPP",
102 "WENewObjectUPP",
103 "WEDisposeObjectUPP",
104 "WEDrawObjectUPP",
105 "WEClickObjectUPP",
106 "WEStreamObjectUPP",
107 "WEHoverObjectUPP",
108 "WERuler", # XXXX To be done
109 "WERuler_ptr", # ditto
110 "WEParaInfo", # XXXX To be done
111 "WEPrintSession", # XXXX To be done
112 "WEPrintOptions_ptr", # XXXX To be done
Jack Jansen90ecdf41996-04-16 14:29:15 +0000113 ]
114
115 def makerepairinstructions(self):
116 return [
Jack Jansen2268af51996-08-06 16:04:22 +0000117 ([("void_ptr", "*", "InMode"), ("SInt32", "*", "InMode")],
Jack Jansen90ecdf41996-04-16 14:29:15 +0000118 [("InBuffer", "*", "*")]),
119
120 # WEContinuousStyle
Jack Jansenb99e5212002-01-11 12:37:15 +0000121 ([("WEStyleMode", "ioMode", "OutMode"), ("TextStyle", "outTextStyle", "OutMode")],
122 [("WEStyleMode", "*", "InOutMode"), ("TextStyle", "*", "*")]),
Jack Jansen8ae8e4f1996-04-23 16:17:08 +0000123
124 # WECopyRange
Jack Jansenb99e5212002-01-11 12:37:15 +0000125 ([('Handle', 'outText', 'InMode'), ('StScrpHandle', 'outStyles', 'InMode'),
126 ('WESoupHandle', 'outSoup', 'InMode')],
127 [('OptHandle', '*', '*'), ('OptStScrpHandle', '*', '*'),
128 ('OptSoupHandle', '*', '*')]),
Jack Jansen8ae8e4f1996-04-23 16:17:08 +0000129
130 # WEInsert
Jack Jansenb99e5212002-01-11 12:37:15 +0000131 ([('StScrpHandle', 'inStyles', 'InMode'), ('WESoupHandle', 'inSoup', 'InMode')],
132 [('OptStScrpHandle', '*', '*'), ('OptSoupHandle', '*', '*')]),
Jack Jansen756522f1996-05-07 15:24:01 +0000133
134 # WEGetObjectOwner
135 ("WEGetObjectOwner",
136 [('WEReference', '*', 'ReturnMode')],
Jack Jansenb99e5212002-01-11 12:37:15 +0000137 [('ExistingWEReference', '*', 'ReturnMode')]),
138
139 # WEFindParagraph
140 ([("char_ptr", "inKey", "InMode")],
141 [("stringptr", "*", "*")]),
142
143 # WESetOneAttribute
144 ([("void_ptr", "*", "InMode"), ("ByteCount", "*", "InMode")],
145 [("InBuffer", "*", "*")]),
Jack Jansen90ecdf41996-04-16 14:29:15 +0000146 ]
147
148if __name__ == "__main__":
149 main()