blob: 408c9c2eadb7b0334b55dae6ab8fab82a6f31396 [file] [log] [blame]
Guido van Rossume56db431995-03-19 22:49:50 +00001# Scan an Apple header file, generating a Python file of generator calls.
2
3import addpack
Jack Jansenb81cf9d1995-06-06 13:08:40 +00004addpack.addpack(':Tools:bgen:bgen')
Guido van Rossume56db431995-03-19 22:49:50 +00005
6from scantools import Scanner
7
8def main():
9 input = "QuickDraw.h"
10 output = "qdgen.py"
11 defsoutput = "QuickDraw.py"
12 scanner = MyScanner(input, output, defsoutput)
13 scanner.scan()
14 scanner.close()
Jack Jansenb81cf9d1995-06-06 13:08:40 +000015
16 # Grmpf. Universal Headers have Text-stuff in a different include file...
17 input = "QuickDrawText.h"
18 output = "@qdgentext.py"
19 defsoutput = "@QuickDrawText.py"
20 have_extra = 0
21 try:
22 scanner = MyScanner(input, output, defsoutput)
23 scanner.scan()
24 scanner.close()
25 have_extra = 1
26 except IOError:
27 pass
28 if have_extra:
29 print "=== Copying QuickDrawText stuff into main files... ==="
30 ifp = open("@qdgentext.py")
31 ofp = open("qdgen.py", "a")
32 ofp.write(ifp.read())
33 ifp.close()
34 ofp.close()
35 ifp = open("@QuickDrawText.py")
36 ofp = open("QuickDraw.py", "a")
37 ofp.write(ifp.read())
38 ifp.close()
39 ofp.close()
40
Guido van Rossume56db431995-03-19 22:49:50 +000041 print "=== Done scanning and generating, now importing the generated code... ==="
42 import qdsupport
43 print "=== Done. It's up to you to compile it now! ==="
44
45class MyScanner(Scanner):
46
47 def destination(self, type, name, arglist):
48 classname = "Function"
49 listname = "functions"
50 if arglist:
51 t, n, m = arglist[0]
Jack Jansenb81cf9d1995-06-06 13:08:40 +000052 if t in ("WindowPtr", "WindowPeek", "WindowRef") and m == "InMode":
Guido van Rossume56db431995-03-19 22:49:50 +000053 classname = "Method"
54 listname = "methods"
55 return classname, listname
56
57 def makeblacklistnames(self):
58 return [
59 'InitGraf',
60 'StuffHex',
61 'StdLine',
62 'StdComment',
63 'StdGetPic',
64 'StdLine',
65 ]
66
67 def makeblacklisttypes(self):
68 return [
69 'BitMap_ptr',
70 'CCrsrHandle',
71 'CGrafPtr',
72 'CIconHandle',
73 'CQDProcs',
74 'CSpecArray',
75 'CTabHandle',
76 'ColorComplementProcPtr',
Jack Jansenb81cf9d1995-06-06 13:08:40 +000077 'ColorComplementUPP',
Guido van Rossume56db431995-03-19 22:49:50 +000078 'ColorSearchProcPtr',
Jack Jansenb81cf9d1995-06-06 13:08:40 +000079 'ColorSearchUPP',
Guido van Rossume56db431995-03-19 22:49:50 +000080 'ConstPatternParam',
Jack Jansen7d0bc831995-06-09 20:56:31 +000081 'Pattern_ptr',
Jack Jansen54c8f7e1995-11-14 10:46:01 +000082 'Pattern',
Guido van Rossume56db431995-03-19 22:49:50 +000083 'Cursor_ptr',
84 'DeviceLoopDrawingProcPtr',
85 'DeviceLoopFlags',
86 'FontInfo',
87 'GDHandle',
88 'GrafVerb',
89 'OpenCPicParams_ptr',
90 'PenState',
91 'PenState_ptr',
92 'Ptr',
93 'QDProcs',
94 'RGBColor',
95 'RGBColor_ptr',
96 'ReqListRec',
97 'void_ptr',
98 ]
99
100 def makerepairinstructions(self):
101 return [
102 ([('void_ptr', 'textBuf', 'InMode'),
103 ('short', 'firstByte', 'InMode'),
104 ('short', 'byteCount', 'InMode')],
105 [('TextThingie', '*', '*'), ('*', '*', '*'), ('*', '*', '*')]),
106
107 ([('Point', '*', 'OutMode')],
108 [('*', '*', 'InOutMode')]),
Jack Jansen54c8f7e1995-11-14 10:46:01 +0000109
110 # InsetRect, OffsetRect
111 ([('Rect', 'r', 'OutMode'),
112 ('short', 'dh', 'InMode'),
113 ('short', 'dv', 'InMode')],
114 [('Rect', 'r', 'InOutMode'),
115 ('short', 'dh', 'InMode'),
116 ('short', 'dv', 'InMode')]),
117
118 # MapRect
119 ([('Rect', 'r', 'OutMode'),
120 ('Rect_ptr', 'srcRect', 'InMode'),
121 ('Rect_ptr', 'dstRect', 'InMode')],
122 [('Rect', 'r', 'InOutMode'),
123 ('Rect_ptr', 'srcRect', 'InMode'),
124 ('Rect_ptr', 'dstRect', 'InMode')]),
Guido van Rossume56db431995-03-19 22:49:50 +0000125
126 ]
127
128if __name__ == "__main__":
129 main()