ยปCore Development>Code coverage>Mac/Modules/win/winscan.py

Python code coverage for Mac/Modules/win/winscan.py

#countcontent
1n/a# Scan an Apple header file, generating a Python file of generator calls.
2n/aimport sys
3n/afrom bgenlocations import TOOLBOXDIR, BGENDIR
4n/asys.path.append(BGENDIR)
5n/a
6n/afrom scantools import Scanner
7n/a
8n/adef main():
9n/a input = "MacWindows.h"
10n/a output = "wingen.py"
11n/a defsoutput = TOOLBOXDIR + "Windows.py"
12n/a scanner = MyScanner(input, output, defsoutput)
13n/a scanner.scan()
14n/a scanner.close()
15n/a print "=== Testing definitions output code ==="
16n/a execfile(defsoutput, {}, {})
17n/a print "=== Done scanning and generating, now importing the generated code... ==="
18n/a import winsupport
19n/a print "=== Done. It's up to you to compile it now! ==="
20n/a
21n/aclass MyScanner(Scanner):
22n/a
23n/a def destination(self, type, name, arglist):
24n/a classname = "Function"
25n/a listname = "functions"
26n/a if arglist:
27n/a t, n, m = arglist[0]
28n/a if t in ("WindowPtr", "WindowPeek", "WindowRef") and m == "InMode":
29n/a classname = "Method"
30n/a listname = "methods"
31n/a return classname, listname
32n/a
33n/a def writeinitialdefs(self):
34n/a self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
35n/a self.defsfile.write("false = 0\n")
36n/a self.defsfile.write("true = 1\n")
37n/a self.defsfile.write("kWindowNoConstrainAttribute = 0x80000000\n")
38n/a
39n/a def makeblacklistnames(self):
40n/a return [
41n/a 'DisposeWindow', # Implied when the object is deleted
42n/a 'CloseWindow',
43n/a 'SetWindowProperty', # For the moment
44n/a 'GetWindowProperty',
45n/a 'GetWindowPropertySize',
46n/a 'RemoveWindowProperty',
47n/a 'MacCloseWindow',
48n/a 'GetWindowList', # Don't know whether this is safe...
49n/a # Constants with funny definitions
50n/a 'kMouseUpOutOfSlop',
51n/a 'kAllWindowClasses',
52n/a 'kWindowNoConstrainAttribute',
53n/a # OS8 only:
54n/a 'GetAuxWin',
55n/a 'GetWindowDataHandle',
56n/a 'SaveOld',
57n/a 'DrawNew',
58n/a 'SetWinColor',
59n/a 'SetDeskCPat',
60n/a 'InitWindows',
61n/a 'InitFloatingWindows',
62n/a 'GetWMgrPort',
63n/a 'GetCWMgrPort',
64n/a 'ValidRgn', # Use versions with Window in their name
65n/a 'ValidRect',
66n/a 'InvalRgn',
67n/a 'InvalRect',
68n/a 'IsValidWindowPtr', # I think this is useless for Python, but not sure...
69n/a 'GetWindowZoomFlag', # Not available in Carbon
70n/a 'GetWindowTitleWidth', # Ditto
71n/a 'GetWindowGoAwayFlag',
72n/a 'GetWindowSpareFlag',
73n/a ]
74n/a
75n/a def makeblacklisttypes(self):
76n/a return [
77n/a 'ProcPtr',
78n/a 'DragGrayRgnUPP',
79n/a 'WindowPaintUPP',
80n/a 'Collection', # For now, to be done later
81n/a 'WindowDefSpec', # Too difficult for now
82n/a 'WindowDefSpec_ptr',
83n/a 'EventRef', #TBD
84n/a ]
85n/a
86n/a def makerepairinstructions(self):
87n/a return [
88n/a
89n/a # GetWTitle
90n/a ([("Str255", "*", "InMode")],
91n/a [("*", "*", "OutMode")]),
92n/a
93n/a ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
94n/a [("InBuffer", "*", "*")]),
95n/a
96n/a ([("void", "*", "OutMode"), ("long", "*", "InMode"),
97n/a ("long", "*", "OutMode")],
98n/a [("VarVarOutBuffer", "*", "InOutMode")]),
99n/a
100n/a ([("void", "wStorage", "OutMode")],
101n/a [("NullStorage", "*", "InMode")]),
102n/a
103n/a # match FindWindowOfClass
104n/a ([("WindowRef", "outWindow", "OutMode"), ("WindowPartCode", "outWindowPart", "OutMode")],
105n/a [("ExistingWindowPtr", "*", "OutMode"), ("WindowPartCode", "outWindowPart", "OutMode")]),
106n/a # then match CreateNewWindow and CreateWindowFromResource
107n/a ([("WindowRef", "outWindow", "OutMode")],
108n/a [("WindowRef", "*", "*")]),
109n/a
110n/a ([("WindowPtr", "*", "OutMode")],
111n/a [("ExistingWindowPtr", "*", "*")]),
112n/a ([("WindowRef", "*", "OutMode")], # Same, but other style headerfiles
113n/a [("ExistingWindowPtr", "*", "*")]),
114n/a
115n/a ([("WindowPtr", "FrontWindow", "ReturnMode")],
116n/a [("ExistingWindowPtr", "*", "*")]),
117n/a ([("WindowRef", "FrontWindow", "ReturnMode")], # Ditto
118n/a [("ExistingWindowPtr", "*", "*")]),
119n/a ([("WindowPtr", "FrontNonFloatingWindow", "ReturnMode")],
120n/a [("ExistingWindowPtr", "*", "*")]),
121n/a ([("WindowRef", "FrontNonFloatingWindow", "ReturnMode")], # Ditto
122n/a [("ExistingWindowPtr", "*", "*")]),
123n/a
124n/a ([("Rect_ptr", "*", "ReturnMode")], # GetWindowXXXState accessors
125n/a [("void", "*", "ReturnMode")]),
126n/a ]
127n/a
128n/aif __name__ == "__main__":
129n/a main()