summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/qd/qdscan.py
blob: 057db6dab01529f52611e55c8029aee45cac3b2b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# Scan an Apple header file, generating a Python file of generator calls.

import addpack
addpack.addpack('D:python:Tools:bgen:bgen')

from scantools import Scanner

def main():
	input = "QuickDraw.h"
	output = "qdgen.py"
	defsoutput = "QuickDraw.py"
	scanner = MyScanner(input, output, defsoutput)
	scanner.scan()
	scanner.close()
	print "=== Done scanning and generating, now importing the generated code... ==="
	import qdsupport
	print "=== Done.  It's up to you to compile it now! ==="

class MyScanner(Scanner):

	def destination(self, type, name, arglist):
		classname = "Function"
		listname = "functions"
		if arglist:
			t, n, m = arglist[0]
			if t in ("WindowPtr", "WindowPeek") and m == "InMode":
				classname = "Method"
				listname = "methods"
		return classname, listname

	def makeblacklistnames(self):
		return [
			'InitGraf',
			'StuffHex',
			'StdLine',
			'StdComment',
			'StdGetPic',
			'StdLine',
			]

	def makeblacklisttypes(self):
		return [
			'BitMap_ptr',
			'CCrsrHandle',
			'CGrafPtr',
			'CIconHandle',
			'CQDProcs',
			'CSpecArray',
			'CTabHandle',
			'ColorComplementProcPtr',
			'ColorSearchProcPtr',
			'ConstPatternParam',
			'Cursor_ptr',
			'DeviceLoopDrawingProcPtr',
			'DeviceLoopFlags',
			'FontInfo',
			'GDHandle',
			'GrafVerb',
			'OpenCPicParams_ptr',
			'PenState',
			'PenState_ptr',
			'Ptr',
			'QDProcs',
			'RGBColor',
			'RGBColor_ptr',
			'ReqListRec',
			'void_ptr',
			]

	def makerepairinstructions(self):
		return [
			([('void_ptr', 'textBuf', 'InMode'),
			  ('short', 'firstByte', 'InMode'),
			  ('short', 'byteCount', 'InMode')],
			 [('TextThingie', '*', '*'), ('*', '*', '*'), ('*', '*', '*')]),
			
			([('Point', '*', 'OutMode')],
			 [('*', '*', 'InOutMode')]),
			
			]

if __name__ == "__main__":
	main()