blob: cafdb5fea650c0ddcf1a36341d03bb4b5e37281d [file] [log] [blame]
Jack Jansenc4f63311999-06-21 15:14:26 +00001# Scan <Drag.h>, generating draggen.py.
2import sys
Jack Jansenc4ff1942002-08-05 21:13:07 +00003from bgenlocations import TOOLBOXDIR, BGENDIR, INCLUDEDIR
Jack Jansenc4f63311999-06-21 15:14:26 +00004sys.path.append(BGENDIR)
5
6from scantools import Scanner
Jack Jansenc4f63311999-06-21 15:14:26 +00007
8MISSING_DEFINES="""
Tim Peters182b5ac2004-07-18 06:16:08 +00009kDragHasLeftSenderWindow = (1 << 0)
Jack Jansenc4f63311999-06-21 15:14:26 +000010kDragInsideSenderApplication = (1 << 1)
Tim Peters182b5ac2004-07-18 06:16:08 +000011kDragInsideSenderWindow = (1 << 2)
12kDragRegionAndImage = (1 << 4)
13flavorSenderOnly = (1 << 0)
14flavorSenderTranslated = (1 << 1)
15flavorNotSaved = (1 << 2)
16flavorSystemTranslated = (1 << 8)
Jack Jansenc4f63311999-06-21 15:14:26 +000017"""
18
19
20def main():
Tim Peters182b5ac2004-07-18 06:16:08 +000021 input = INCLUDEDIR + "Drag.h"
22 output = "draggen.py"
23 defsoutput = TOOLBOXDIR + "Dragconst.py"
24 scanner = MyScanner(input, output, defsoutput)
25 scanner.scan()
26 scanner.close()
Collin Wintere7bf59f2007-08-30 18:39:28 +000027 print("=== Testing definitions output code ===")
Neal Norwitz01688022007-08-12 00:43:29 +000028 exec(open(defsoutput).read(), {}, {})
Collin Wintere7bf59f2007-08-30 18:39:28 +000029 print("=== Done scanning and generating, now doing 'import dragsupport' ===")
Tim Peters182b5ac2004-07-18 06:16:08 +000030 import dragsupport
Collin Wintere7bf59f2007-08-30 18:39:28 +000031 print("=== Done. It's up to you to compile Dragmodule.c ===")
Jack Jansenc4f63311999-06-21 15:14:26 +000032
33class MyScanner(Scanner):
34
Tim Peters182b5ac2004-07-18 06:16:08 +000035 def destination(self, type, name, arglist):
36 classname = "Function"
37 listname = "functions"
38 if arglist:
39 t, n, m = arglist[0]
40 if t in ('DragReference', 'DragRef') and m == "InMode":
41 classname = "Method"
42 listname = "methods"
43 return classname, listname
Jack Jansenc4f63311999-06-21 15:14:26 +000044
Tim Peters182b5ac2004-07-18 06:16:08 +000045 def writeinitialdefs(self):
46 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
47 self.defsfile.write("from Carbon.TextEdit import *\n")
48 self.defsfile.write("from Carbon.QuickDraw import *\n")
49 self.defsfile.write("fkDragActionAll = -1\n")
50 self.defsfile.write("\n")
51 # Defines unparseable in Drag.h
52 self.defsfile.write(MISSING_DEFINES)
Jack Jansenc4f63311999-06-21 15:14:26 +000053
Tim Peters182b5ac2004-07-18 06:16:08 +000054 def makeblacklistnames(self):
55 return [
56 "kDragActionAll",
57 ]
Jack Jansenc4f63311999-06-21 15:14:26 +000058
Tim Peters182b5ac2004-07-18 06:16:08 +000059 def makeblacklisttypes(self):
60 return [
61 "DragTrackingHandlerUPP",
62 "DragReceiveHandlerUPP",
63 "DragSendDataUPP",
64 "DragInputUPP",
65 "DragDrawingUPP",
66 ]
Jack Jansenc4f63311999-06-21 15:14:26 +000067
Tim Peters182b5ac2004-07-18 06:16:08 +000068 def makerepairinstructions(self):
69 return [
70 ([("void_ptr", "*", "InMode"), ("Size", "*", "InMode")],
71 [("OptionalInBuffer", "*", "*")]),
72
73 ([("void", "*", "OutMode"), ("Size", "*", "OutMode")],
74 [("VarOutBuffer", "*", "InOutMode")]),
75
76 ]
Jack Jansenc4f63311999-06-21 15:14:26 +000077
78if __name__ == "__main__":
Tim Peters182b5ac2004-07-18 06:16:08 +000079 main()