blob: 25a683ca96a418c4c1376998727ce96360900f63 [file] [log] [blame]
Jack Jansenda6a9711996-04-12 16:25:30 +00001# Scan an Apple header file, generating a Python file of generator calls.
2#
3# Note that the scrap-manager include file is so weird that this
4# generates a boilerplate to be edited by hand.
5
Jack Jansen0c4d9471998-04-17 14:07:56 +00006import sys
Jack Jansenaaebdd62002-08-05 15:39:30 +00007from bgenlocations import TOOLBOXDIR, BGENDIR
Jack Jansen0c4d9471998-04-17 14:07:56 +00008sys.path.append(BGENDIR)
Jack Jansenda6a9711996-04-12 16:25:30 +00009from scantools import Scanner
Jack Jansenda6a9711996-04-12 16:25:30 +000010
11LONG = "Scrap"
Jack Jansena05ac601999-12-12 21:41:51 +000012SHORT = "scrap"
Jack Jansenda6a9711996-04-12 16:25:30 +000013
14def main():
Tim Peters182b5ac2004-07-18 06:16:08 +000015 input = "Scrap.h"
16 output = SHORT + "gen.py"
17 defsoutput = "@Scrap.py"
18 scanner = MyScanner(input, output, defsoutput)
19 scanner.scan()
20 scanner.close()
21## print "=== Testing definitions output code ==="
22## execfile(defsoutput, {}, {})
23 print "=== Done scanning and generating, now importing the generated code... ==="
24 exec "import " + SHORT + "support"
25 print "=== Done. It's up to you to compile it now! ==="
Jack Jansenda6a9711996-04-12 16:25:30 +000026
27class MyScanner(Scanner):
28
Tim Peters182b5ac2004-07-18 06:16:08 +000029 def destination(self, type, name, arglist):
30 classname = "Function"
31 listname = "functions"
32 if arglist:
33 t, n, m = arglist[0]
34 if t == 'ScrapRef' and m == "InMode":
35 classname = "Method"
36 listname = "methods"
37 return classname, listname
Jack Jansenda6a9711996-04-12 16:25:30 +000038
Tim Peters182b5ac2004-07-18 06:16:08 +000039 def makeblacklistnames(self):
40 return [
41 "GetScrapFlavorInfoList",
42 'InfoScrap',
43 'GetScrap',
44 'ZeroScrap',
45 'PutScrap',
46 ]
Jack Jansenda6a9711996-04-12 16:25:30 +000047
Tim Peters182b5ac2004-07-18 06:16:08 +000048 def makeblacklisttypes(self):
49 return [
50 'ScrapPromiseKeeperUPP',
51 ]
Jack Jansenda6a9711996-04-12 16:25:30 +000052
Tim Peters182b5ac2004-07-18 06:16:08 +000053 def makerepairinstructions(self):
54 return [
55 ([('void', '*', 'OutMode')], [('putscrapbuffer', '*', 'InMode')]),
56 ([('void_ptr', '*', 'InMode')], [('putscrapbuffer', '*', 'InMode')]),
57 ]
58
Jack Jansenda6a9711996-04-12 16:25:30 +000059if __name__ == "__main__":
Tim Peters182b5ac2004-07-18 06:16:08 +000060 main()