Update for release.
[python/dscho.git] / Mac / Modules / waste / wastescan.py
blobbb186aa808295f684bc13b452267d85fd81d67da
1 # Scan an Apple header file, generating a Python file of generator calls.
3 import sys
4 import os
5 from bgenlocations import TOOLBOXDIR, BGENDIR
6 sys.path.append(BGENDIR)
7 from scantools import Scanner
9 WASTEDIR='/Volumes/Moes/Applications (Mac OS 9)/Metrowerks CodeWarrior 7.0/Metrowerks CodeWarrior/MacOS Support/(Third Party Support)/Waste 2.0 Distribution/C_C++ Headers/'
11 if not os.path.exists(WASTEDIR):
12 raise 'Error: not found: %s', WASTEDIR
14 OBJECT = "TEHandle"
15 SHORT = "waste"
16 OBJECT = "WEReference"
17 OBJECT2 = "WEObjectReference"
19 def main():
20 input = WASTEDIR + "WASTE.h"
21 output = SHORT + "gen.py"
22 defsoutput = TOOLBOXDIR + "WASTEconst.py"
23 scanner = MyScanner(input, output, defsoutput)
24 scanner.scan()
25 ## scanner.gentypetest(SHORT+"typetest.py")
26 scanner.close()
27 print "=== Testing definitions output code ==="
28 execfile(defsoutput, {}, {})
29 print "=== Done scanning and generating, now importing the generated code... ==="
30 exec "import " + SHORT + "support"
31 print "=== Done. It's up to you to compile it now! ==="
33 #class MyScanner(Scanner_PreUH3):
34 class MyScanner(Scanner):
36 def destination(self, type, name, arglist):
37 classname = "Function"
38 listname = "functions"
39 if arglist:
40 t, n, m = arglist[-1]
41 # This is non-functional today
42 if t == OBJECT and m == "InMode":
43 classname = "Method"
44 listname = "methods"
45 else:
46 t, n, m = arglist[0]
47 if t == OBJECT2 and m == "InMode":
48 classname = "Method2"
49 listname = "methods2"
50 return classname, listname
52 def writeinitialdefs(self):
53 self.defsfile.write("kPascalStackBased = None # workaround for header parsing\n")
54 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
56 def makeblacklistnames(self):
57 return [
58 "WEDispose",
59 "WESetInfo", # Argument type unknown...
60 "WEGetInfo",
61 "WEVersion", # Unfortunately...
62 "WEPut", # XXXX TBD: needs array of flavortypes.
63 "WEGetOneAttribute", # XXXX TBD: output buffer
64 # Incompatible constant definitions
65 "weDoAutoScroll",
66 "weDoOutlineHilite",
67 "weDoReadOnly",
68 "weDoUndo",
69 "weDoIntCutAndPaste",
70 "weDoDragAndDrop",
71 "weDoInhibitRecal",
72 "weDoUseTempMem",
73 "weDoDrawOffscreen",
74 "weDoInhibitRedraw",
75 "weDoMonoStyled",
76 "weDoMultipleUndo",
77 "weDoNoKeyboardSync",
78 "weDoInhibitICSupport",
79 "weDoInhibitColor",
82 def makeblacklisttypes(self):
83 return [
84 "DragReference", # For now...
85 "UniversalProcPtr",
86 "WEFontIDToNameUPP",
87 "WEFontNameToIDUPP",
88 "WEClickLoopUPP",
89 "WEScrollUPP",
90 "WETSMPreUpdateUPP",
91 "WETSMPostUpdateUPP",
92 "WEPreTrackDragUPP",
93 "WETranslateDragUPP",
94 "WEHiliteDropAreaUPP",
95 "WEDrawTextUPP",
96 "WEDrawTSMHiliteUPP",
97 "WEPixelToCharUPP",
98 "WECharToPixelUPP",
99 "WELineBreakUPP",
100 "WEWordBreakUPP",
101 "WECharByteUPP",
102 "WECharTypeUPP",
103 "WEEraseUPP",
104 "WEFluxUPP",
105 "WENewObjectUPP",
106 "WEDisposeObjectUPP",
107 "WEDrawObjectUPP",
108 "WEClickObjectUPP",
109 "WEStreamObjectUPP",
110 "WEHoverObjectUPP",
111 "WERuler", # XXXX To be done
112 "WERuler_ptr", # ditto
113 "WEParaInfo", # XXXX To be done
114 "WEPrintSession", # XXXX To be done
115 "WEPrintOptions_ptr", # XXXX To be done
118 def makerepairinstructions(self):
119 return [
120 ([("void_ptr", "*", "InMode"), ("SInt32", "*", "InMode")],
121 [("InBuffer", "*", "*")]),
123 # WEContinuousStyle
124 ([("WEStyleMode", "ioMode", "OutMode"), ("TextStyle", "outTextStyle", "OutMode")],
125 [("WEStyleMode", "*", "InOutMode"), ("TextStyle", "*", "*")]),
127 # WECopyRange
128 ([('Handle', 'outText', 'InMode'), ('StScrpHandle', 'outStyles', 'InMode'),
129 ('WESoupHandle', 'outSoup', 'InMode')],
130 [('OptHandle', '*', '*'), ('OptStScrpHandle', '*', '*'),
131 ('OptSoupHandle', '*', '*')]),
133 # WEInsert
134 ([('StScrpHandle', 'inStyles', 'InMode'), ('WESoupHandle', 'inSoup', 'InMode')],
135 [('OptStScrpHandle', '*', '*'), ('OptSoupHandle', '*', '*')]),
137 # WEGetObjectOwner
138 ("WEGetObjectOwner",
139 [('WEReference', '*', 'ReturnMode')],
140 [('ExistingWEReference', '*', 'ReturnMode')]),
142 # WEFindParagraph
143 ([("char_ptr", "inKey", "InMode")],
144 [("stringptr", "*", "*")]),
146 # WESetOneAttribute
147 ([("void_ptr", "*", "InMode"), ("ByteCount", "*", "InMode")],
148 [("InBuffer", "*", "*")]),
151 if __name__ == "__main__":
152 main()