ยปCore Development>Code coverage>Mac/Modules/fm/fmscan.py

Python code coverage for Mac/Modules/fm/fmscan.py

#countcontent
1n/a# Scan an Apple header file, generating a Python file of generator calls.
2n/a
3n/aimport sys
4n/afrom bgenlocations import TOOLBOXDIR, BGENDIR
5n/asys.path.append(BGENDIR)
6n/afrom scantools import Scanner
7n/a
8n/aLONG = "Fonts"
9n/aSHORT = "fm"
10n/a
11n/adef main():
12n/a input = "Fonts.h"
13n/a output = SHORT + "gen.py"
14n/a defsoutput = TOOLBOXDIR + LONG + ".py"
15n/a scanner = MyScanner(input, output, defsoutput)
16n/a scanner.scan()
17n/a scanner.close()
18n/a print "=== Testing definitions output code ==="
19n/a execfile(defsoutput, {}, {})
20n/a print "=== Done scanning and generating, now importing the generated code... ==="
21n/a exec "import " + SHORT + "support"
22n/a print "=== Done. It's up to you to compile it now! ==="
23n/a
24n/aclass MyScanner(Scanner):
25n/a
26n/a def destination(self, type, name, arglist):
27n/a classname = "Function"
28n/a listname = "functions"
29n/a return classname, listname
30n/a
31n/a def makeblacklistnames(self):
32n/a return [
33n/a "OutlineMetrics", # Too complicated
34n/a "AntiTextIsAntiAliased", # XXXX Missing from library...
35n/a "AntiTextGetEnabled",
36n/a "AntiTextSetEnabled",
37n/a "AntiTextGetApplicationAware",
38n/a "AntiTextSetApplicationAware",
39n/a # These are tricky: they're not Carbon dependent or anything, but they
40n/a # exist only on 8.6 or later (both in Carbon and Classic).
41n/a # Disabling them is the easiest path.
42n/a 'SetAntiAliasedTextEnabled',
43n/a 'IsAntiAliasedTextEnabled',
44n/a # OS8-only
45n/a 'InitFonts',
46n/a 'SetFontLock',
47n/a 'FlushFonts',
48n/a ]
49n/a
50n/a def makeblacklisttypes(self):
51n/a return [
52n/a "FMInput_ptr", # Not needed for now
53n/a "FMOutPtr", # Ditto
54n/a## "void_ptr", # Don't know how to do this right now
55n/a "FontInfo", # Ditto
56n/a ]
57n/a
58n/a def makerepairinstructions(self):
59n/a return [
60n/a ([('Str255', '*', 'InMode')], [('Str255', '*', 'OutMode')]),
61n/a ([('FMetricRecPtr', 'theMetrics', 'InMode')], [('FMetricRecPtr', 'theMetrics', 'OutMode')]),
62n/a ([('short', 'byteCount', 'InMode'), ('void_ptr', 'textAddr', 'InMode'),],
63n/a [('TextBuffer', 'inText', 'InMode')]),
64n/a ]
65n/a
66n/a def writeinitialdefs(self):
67n/a self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
68n/a self.defsfile.write("kNilOptions = 0\n")
69n/a
70n/aif __name__ == "__main__":
71n/a main()