blob: 25f8d5d38168b6adf3b1f2c69a0d29849664f50a [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 Jansen2369a981998-02-20 15:57:30 +00007from scantools import Scanner_PreUH3
Jack Jansen8505ef81997-08-27 14:09:25 +00008from bgenlocations import MWERKSDIR, TOOLBOXDIR
Jack Jansen90ecdf41996-04-16 14:29:15 +00009
Jack Jansen2369a981998-02-20 15:57:30 +000010WASTEDIR=":::::Waste 1.3 Distribution:WASTE C/C++ Headers:"
Jack Jansen90ecdf41996-04-16 14:29:15 +000011
12OBJECT = "TEHandle"
13SHORT = "waste"
14OBJECT = "WEReference"
15OBJECT2 = "WEObjectReference"
16
17def main():
Jack Jansen8505ef81997-08-27 14:09:25 +000018 input = WASTEDIR + "WASTE.h"
Jack Jansen90ecdf41996-04-16 14:29:15 +000019 output = SHORT + "gen.py"
20 defsoutput = TOOLBOXDIR + "WASTEconst.py"
21 scanner = MyScanner(input, output, defsoutput)
22 scanner.scan()
Jack Jansen8ae8e4f1996-04-23 16:17:08 +000023## scanner.gentypetest(SHORT+"typetest.py")
Jack Jansen90ecdf41996-04-16 14:29:15 +000024 scanner.close()
25 print "=== Done scanning and generating, now importing the generated code... ==="
26 exec "import " + SHORT + "support"
27 print "=== Done. It's up to you to compile it now! ==="
28
Jack Jansen2369a981998-02-20 15:57:30 +000029class MyScanner(Scanner_PreUH3):
Jack Jansen90ecdf41996-04-16 14:29:15 +000030
Jack Jansen90ecdf41996-04-16 14:29:15 +000031 def destination(self, type, name, arglist):
32 classname = "Function"
33 listname = "functions"
34 if arglist:
35 t, n, m = arglist[-1]
36 # This is non-functional today
37 if t == OBJECT and m == "InMode":
38 classname = "Method"
39 listname = "methods"
40 else:
41 t, n, m = arglist[0]
42 if t == OBJECT2 and m == "InMode":
43 classname = "Method2"
44 listname = "methods2"
45 return classname, listname
46
Jack Jansen2369a981998-02-20 15:57:30 +000047 def writeinitialdefs(self):
48 self.defsfile.write("kPascalStackBased = None # workaround for header parsing\n")
Jack Jansen90ecdf41996-04-16 14:29:15 +000049 def makeblacklistnames(self):
50 return [
51 "WEDispose",
52 "WESetInfo", # Argument type unknown...
53 "WEGetInfo",
Jack Jansen2268af51996-08-06 16:04:22 +000054 "WEVersion", # Unfortunately...
Jack Jansen90ecdf41996-04-16 14:29:15 +000055 ]
56
57 def makeblacklisttypes(self):
58 return [
59 "DragReference", # For now...
60 "UniversalProcPtr",
Jack Jansen8505ef81997-08-27 14:09:25 +000061 "WEFontIDToNameUPP",
62 "WEFontNameToIDUPP",
Jack Jansen90ecdf41996-04-16 14:29:15 +000063 ]
64
65 def makerepairinstructions(self):
66 return [
Jack Jansen2268af51996-08-06 16:04:22 +000067 ([("void_ptr", "*", "InMode"), ("SInt32", "*", "InMode")],
Jack Jansen90ecdf41996-04-16 14:29:15 +000068 [("InBuffer", "*", "*")]),
69
70 # WEContinuousStyle
Jack Jansen8ae8e4f1996-04-23 16:17:08 +000071 ([("WEStyleMode", "mode", "OutMode"), ("TextStyle", "ts", "OutMode")],
72 [("WEStyleMode", "mode", "InOutMode"), ("TextStyle", "ts", "OutMode")]),
73
74 # WECopyRange
75 ([('Handle', 'hText', 'InMode'), ('StScrpHandle', 'hStyles', 'InMode'),
76 ('WESoupHandle', 'hSoup', 'InMode')],
77 [('OptHandle', 'hText', 'InMode'), ('OptStScrpHandle', 'hStyles', 'InMode'),
78 ('OptSoupHandle', 'hSoup', 'InMode')]),
79
80 # WEInsert
81 ([('StScrpHandle', 'hStyles', 'InMode'), ('WESoupHandle', 'hSoup', 'InMode')],
Jack Jansen756522f1996-05-07 15:24:01 +000082 [('OptStScrpHandle', 'hStyles', 'InMode'), ('OptSoupHandle', 'hSoup', 'InMode')]),
83
84 # WEGetObjectOwner
85 ("WEGetObjectOwner",
86 [('WEReference', '*', 'ReturnMode')],
87 [('ExistingWEReference', '*', 'ReturnMode')])
Jack Jansen8ae8e4f1996-04-23 16:17:08 +000088
Jack Jansen90ecdf41996-04-16 14:29:15 +000089 ]
90
91if __name__ == "__main__":
92 main()