blob: 1d62f6e70f4c76b6a4b5446cf1d924019c949174 [file] [log] [blame]
Jack Jansenc4f63311999-06-21 15:14:26 +00001# Scan <Drag.h>, generating draggen.py.
2import sys
3import os
Jack Jansenc4ff1942002-08-05 21:13:07 +00004from bgenlocations import TOOLBOXDIR, BGENDIR, INCLUDEDIR
Jack Jansenc4f63311999-06-21 15:14:26 +00005sys.path.append(BGENDIR)
6
7from scantools import Scanner
Jack Jansenc4f63311999-06-21 15:14:26 +00008
9MISSING_DEFINES="""
10kDragHasLeftSenderWindow = (1 << 0)
11kDragInsideSenderApplication = (1 << 1)
12kDragInsideSenderWindow = (1 << 2)
13kDragRegionAndImage = (1 << 4)
14flavorSenderOnly = (1 << 0)
15flavorSenderTranslated = (1 << 1)
16flavorNotSaved = (1 << 2)
17flavorSystemTranslated = (1 << 8)
18"""
19
20
21def main():
22 input = INCLUDEDIR + "Drag.h"
23 output = "draggen.py"
24 defsoutput = TOOLBOXDIR + "Dragconst.py"
25 scanner = MyScanner(input, output, defsoutput)
26 scanner.scan()
27 scanner.close()
28 print "=== Done scanning and generating, now doing 'import dragsupport' ==="
29 import dragsupport
30 print "=== Done. It's up to you to compile Dragmodule.c ==="
31
32class MyScanner(Scanner):
33
34 def destination(self, type, name, arglist):
35 classname = "Function"
36 listname = "functions"
37 if arglist:
38 t, n, m = arglist[0]
Jack Jansenecdaadb2001-02-05 13:47:13 +000039 if t in ('DragReference', 'DragRef') and m == "InMode":
Jack Jansenc4f63311999-06-21 15:14:26 +000040 classname = "Method"
41 listname = "methods"
42 return classname, listname
43
44 def writeinitialdefs(self):
45 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
46 self.defsfile.write("from TextEdit import *\n")
47 self.defsfile.write("from QuickDraw import *\n")
48 self.defsfile.write("\n")
49 # Defines unparseable in Drag.h
50 self.defsfile.write(MISSING_DEFINES)
51
52 def makeblacklistnames(self):
53 return [
54 ]
55
56 def makeblacklisttypes(self):
57 return [
58 "DragTrackingHandlerUPP",
59 "DragReceiveHandlerUPP",
60 "DragSendDataUPP",
61 "DragInputUPP",
62 "DragDrawingUPP",
63 ]
64
65 def makerepairinstructions(self):
66 return [
67 ([("void_ptr", "*", "InMode"), ("Size", "*", "InMode")],
68 [("OptionalInBuffer", "*", "*")]),
69
70 ([("void", "*", "OutMode"), ("Size", "*", "OutMode")],
71 [("VarOutBuffer", "*", "InOutMode")]),
72
73 ]
74
75if __name__ == "__main__":
76 main()