blob: 2de23b578c4c880ab2ddbf3d1b17f9f0dff8e76f [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 Jansen90ecdf41996-04-16 14:29:15 +000051 def makeblacklistnames(self):
52 return [
53 "WEDispose",
54 "WESetInfo", # Argument type unknown...
55 "WEGetInfo",
Jack Jansen2268af51996-08-06 16:04:22 +000056 "WEVersion", # Unfortunately...
Jack Jansenb99e5212002-01-11 12:37:15 +000057 "WEPut", # XXXX TBD: needs array of flavortypes.
58 "WEGetOneAttribute", # XXXX TBD: output buffer
Jack Jansen90ecdf41996-04-16 14:29:15 +000059 ]
60
61 def makeblacklisttypes(self):
62 return [
63 "DragReference", # For now...
64 "UniversalProcPtr",
Jack Jansen8505ef81997-08-27 14:09:25 +000065 "WEFontIDToNameUPP",
66 "WEFontNameToIDUPP",
Jack Jansenb99e5212002-01-11 12:37:15 +000067 "WEClickLoopUPP",
68 "WEScrollUPP",
69 "WETSMPreUpdateUPP",
70 "WETSMPostUpdateUPP",
71 "WEPreTrackDragUPP",
72 "WETranslateDragUPP",
73 "WEHiliteDropAreaUPP",
74 "WEDrawTextUPP",
75 "WEDrawTSMHiliteUPP",
76 "WEPixelToCharUPP",
77 "WECharToPixelUPP",
78 "WELineBreakUPP",
79 "WEWordBreakUPP",
80 "WECharByteUPP",
81 "WECharTypeUPP",
82 "WEEraseUPP",
83 "WEFluxUPP",
84 "WENewObjectUPP",
85 "WEDisposeObjectUPP",
86 "WEDrawObjectUPP",
87 "WEClickObjectUPP",
88 "WEStreamObjectUPP",
89 "WEHoverObjectUPP",
90 "WERuler", # XXXX To be done
91 "WERuler_ptr", # ditto
92 "WEParaInfo", # XXXX To be done
93 "WEPrintSession", # XXXX To be done
94 "WEPrintOptions_ptr", # XXXX To be done
Jack Jansen90ecdf41996-04-16 14:29:15 +000095 ]
96
97 def makerepairinstructions(self):
98 return [
Jack Jansen2268af51996-08-06 16:04:22 +000099 ([("void_ptr", "*", "InMode"), ("SInt32", "*", "InMode")],
Jack Jansen90ecdf41996-04-16 14:29:15 +0000100 [("InBuffer", "*", "*")]),
101
102 # WEContinuousStyle
Jack Jansenb99e5212002-01-11 12:37:15 +0000103 ([("WEStyleMode", "ioMode", "OutMode"), ("TextStyle", "outTextStyle", "OutMode")],
104 [("WEStyleMode", "*", "InOutMode"), ("TextStyle", "*", "*")]),
Jack Jansen8ae8e4f1996-04-23 16:17:08 +0000105
106 # WECopyRange
Jack Jansenb99e5212002-01-11 12:37:15 +0000107 ([('Handle', 'outText', 'InMode'), ('StScrpHandle', 'outStyles', 'InMode'),
108 ('WESoupHandle', 'outSoup', 'InMode')],
109 [('OptHandle', '*', '*'), ('OptStScrpHandle', '*', '*'),
110 ('OptSoupHandle', '*', '*')]),
Jack Jansen8ae8e4f1996-04-23 16:17:08 +0000111
112 # WEInsert
Jack Jansenb99e5212002-01-11 12:37:15 +0000113 ([('StScrpHandle', 'inStyles', 'InMode'), ('WESoupHandle', 'inSoup', 'InMode')],
114 [('OptStScrpHandle', '*', '*'), ('OptSoupHandle', '*', '*')]),
Jack Jansen756522f1996-05-07 15:24:01 +0000115
116 # WEGetObjectOwner
117 ("WEGetObjectOwner",
118 [('WEReference', '*', 'ReturnMode')],
Jack Jansenb99e5212002-01-11 12:37:15 +0000119 [('ExistingWEReference', '*', 'ReturnMode')]),
120
121 # WEFindParagraph
122 ([("char_ptr", "inKey", "InMode")],
123 [("stringptr", "*", "*")]),
124
125 # WESetOneAttribute
126 ([("void_ptr", "*", "InMode"), ("ByteCount", "*", "InMode")],
127 [("InBuffer", "*", "*")]),
Jack Jansen90ecdf41996-04-16 14:29:15 +0000128 ]
129
130if __name__ == "__main__":
131 main()