blob: 1fc819126572c0deccd43b1d60a70ef0cb12942d [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
7import os
Jack Jansenaaebdd62002-08-05 15:39:30 +00008from bgenlocations import TOOLBOXDIR, BGENDIR
Jack Jansen0c4d9471998-04-17 14:07:56 +00009sys.path.append(BGENDIR)
Jack Jansenda6a9711996-04-12 16:25:30 +000010from scantools import Scanner
Jack Jansenda6a9711996-04-12 16:25:30 +000011
12LONG = "Scrap"
Jack Jansena05ac601999-12-12 21:41:51 +000013SHORT = "scrap"
Jack Jansenda6a9711996-04-12 16:25:30 +000014
15def main():
Tim Peters182b5ac2004-07-18 06:16:08 +000016 input = "Scrap.h"
17 output = SHORT + "gen.py"
18 defsoutput = "@Scrap.py"
19 scanner = MyScanner(input, output, defsoutput)
20 scanner.scan()
21 scanner.close()
22## print "=== Testing definitions output code ==="
23## execfile(defsoutput, {}, {})
24 print "=== Done scanning and generating, now importing the generated code... ==="
25 exec "import " + SHORT + "support"
26 print "=== Done. It's up to you to compile it now! ==="
Jack Jansenda6a9711996-04-12 16:25:30 +000027
28class MyScanner(Scanner):
29
Tim Peters182b5ac2004-07-18 06:16:08 +000030 def destination(self, type, name, arglist):
31 classname = "Function"
32 listname = "functions"
33 if arglist:
34 t, n, m = arglist[0]
35 if t == 'ScrapRef' and m == "InMode":
36 classname = "Method"
37 listname = "methods"
38 return classname, listname
Jack Jansenda6a9711996-04-12 16:25:30 +000039
Tim Peters182b5ac2004-07-18 06:16:08 +000040 def makeblacklistnames(self):
41 return [
42 "GetScrapFlavorInfoList",
43 'InfoScrap',
44 'GetScrap',
45 'ZeroScrap',
46 'PutScrap',
47 ]
Jack Jansenda6a9711996-04-12 16:25:30 +000048
Tim Peters182b5ac2004-07-18 06:16:08 +000049 def makeblacklisttypes(self):
50 return [
51 'ScrapPromiseKeeperUPP',
52 ]
Jack Jansenda6a9711996-04-12 16:25:30 +000053
Tim Peters182b5ac2004-07-18 06:16:08 +000054 def makerepairinstructions(self):
55 return [
56 ([('void', '*', 'OutMode')], [('putscrapbuffer', '*', 'InMode')]),
57 ([('void_ptr', '*', 'InMode')], [('putscrapbuffer', '*', 'InMode')]),
58 ]
59
Jack Jansenda6a9711996-04-12 16:25:30 +000060if __name__ == "__main__":
Tim Peters182b5ac2004-07-18 06:16:08 +000061 main()