blob: 923a56bd4dd62e0975c5dc917be4e83a5aed40d8 [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="""
Tim Peters182b5ac2004-07-18 06:16:08 +000010kDragHasLeftSenderWindow = (1 << 0)
Jack Jansenc4f63311999-06-21 15:14:26 +000011kDragInsideSenderApplication = (1 << 1)
Tim Peters182b5ac2004-07-18 06:16:08 +000012kDragInsideSenderWindow = (1 << 2)
13kDragRegionAndImage = (1 << 4)
14flavorSenderOnly = (1 << 0)
15flavorSenderTranslated = (1 << 1)
16flavorNotSaved = (1 << 2)
17flavorSystemTranslated = (1 << 8)
Jack Jansenc4f63311999-06-21 15:14:26 +000018"""
19
20
21def main():
Tim Peters182b5ac2004-07-18 06:16:08 +000022 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 "=== Testing definitions output code ==="
29 execfile(defsoutput, {}, {})
30 print "=== Done scanning and generating, now doing 'import dragsupport' ==="
31 import dragsupport
32 print "=== Done. It's up to you to compile Dragmodule.c ==="
Jack Jansenc4f63311999-06-21 15:14:26 +000033
34class MyScanner(Scanner):
35
Tim Peters182b5ac2004-07-18 06:16:08 +000036 def destination(self, type, name, arglist):
37 classname = "Function"
38 listname = "functions"
39 if arglist:
40 t, n, m = arglist[0]
41 if t in ('DragReference', 'DragRef') and m == "InMode":
42 classname = "Method"
43 listname = "methods"
44 return classname, listname
Jack Jansenc4f63311999-06-21 15:14:26 +000045
Tim Peters182b5ac2004-07-18 06:16:08 +000046 def writeinitialdefs(self):
47 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
48 self.defsfile.write("from Carbon.TextEdit import *\n")
49 self.defsfile.write("from Carbon.QuickDraw import *\n")
50 self.defsfile.write("fkDragActionAll = -1\n")
51 self.defsfile.write("\n")
52 # Defines unparseable in Drag.h
53 self.defsfile.write(MISSING_DEFINES)
Jack Jansenc4f63311999-06-21 15:14:26 +000054
Tim Peters182b5ac2004-07-18 06:16:08 +000055 def makeblacklistnames(self):
56 return [
57 "kDragActionAll",
58 ]
Jack Jansenc4f63311999-06-21 15:14:26 +000059
Tim Peters182b5ac2004-07-18 06:16:08 +000060 def makeblacklisttypes(self):
61 return [
62 "DragTrackingHandlerUPP",
63 "DragReceiveHandlerUPP",
64 "DragSendDataUPP",
65 "DragInputUPP",
66 "DragDrawingUPP",
67 ]
Jack Jansenc4f63311999-06-21 15:14:26 +000068
Tim Peters182b5ac2004-07-18 06:16:08 +000069 def makerepairinstructions(self):
70 return [
71 ([("void_ptr", "*", "InMode"), ("Size", "*", "InMode")],
72 [("OptionalInBuffer", "*", "*")]),
73
74 ([("void", "*", "OutMode"), ("Size", "*", "OutMode")],
75 [("VarOutBuffer", "*", "InOutMode")]),
76
77 ]
Jack Jansenc4f63311999-06-21 15:14:26 +000078
79if __name__ == "__main__":
Tim Peters182b5ac2004-07-18 06:16:08 +000080 main()