blob: 31e2336b1d48709e91172c0287486d453692507a [file] [log] [blame]
Jack Jansen52e90452001-11-05 14:44:23 +00001# IBCarbonscan.py
2
3import sys
Jack Jansen52e90452001-11-05 14:44:23 +00004import MacOS
Jack Jansen34cbe712001-11-05 16:15:45 +00005import sys
Jack Jansen52e90452001-11-05 14:44:23 +00006
Jack Jansenaaebdd62002-08-05 15:39:30 +00007from bgenlocations import TOOLBOXDIR, BGENDIR
Jack Jansen52e90452001-11-05 14:44:23 +00008sys.path.append(BGENDIR)
9
Jack Jansen52e90452001-11-05 14:44:23 +000010from scantools import Scanner, Scanner_OSX
11
12def main():
Tim Peters182b5ac2004-07-18 06:16:08 +000013 print "---Scanning CarbonEvents.h---"
14 input = ["CarbonEvents.h"]
15 output = "CarbonEventsgen.py"
16 defsoutput = TOOLBOXDIR + "CarbonEvents.py"
17 scanner = CarbonEvents_Scanner(input, output, defsoutput)
18 scanner.scan()
19 scanner.close()
20 print "=== Testing definitions output code ==="
21 execfile(defsoutput, {}, {})
22 print "--done scanning, importing--"
23 import CarbonEvtsupport
24 print "done"
Jack Jansen52e90452001-11-05 14:44:23 +000025
Tim Peters182b5ac2004-07-18 06:16:08 +000026RefObjectTypes = ["EventRef",
27 "EventQueueRef",
28 "EventLoopRef",
29 "EventLoopTimerRef",
30 "EventHandlerRef",
31 "EventHandlerCallRef",
32 "EventTargetRef",
33 "EventHotKeyRef",
34 ]
Jack Jansen52e90452001-11-05 14:44:23 +000035
Just van Rossumf8d64732001-12-12 20:48:53 +000036class CarbonEvents_Scanner(Scanner_OSX):
Tim Peters182b5ac2004-07-18 06:16:08 +000037 def destination(self, type, name, arglist):
38 classname = "CarbonEventsFunction"
39 listname = "functions"
40 if arglist:
41 t, n, m = arglist[0]
42 if t in RefObjectTypes and m == "InMode":
43 if t == "EventHandlerRef":
44 classname = "EventHandlerRefMethod"
45 else:
46 classname = "CarbonEventsMethod"
47 listname = t + "methods"
48 #else:
49 # print "not method"
50 return classname, listname
Jack Jansen52e90452001-11-05 14:44:23 +000051
Tim Peters182b5ac2004-07-18 06:16:08 +000052 def writeinitialdefs(self):
53 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
54 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
55 self.defsfile.write("false = 0\n")
56 self.defsfile.write("true = 1\n")
57 self.defsfile.write("keyAEEventClass = FOUR_CHAR_CODE('evcl')\n")
58 self.defsfile.write("keyAEEventID = FOUR_CHAR_CODE('evti')\n")
Jack Jansen52e90452001-11-05 14:44:23 +000059
Tim Peters182b5ac2004-07-18 06:16:08 +000060 def makeblacklistnames(self):
61 return [
62 "sHandler",
63 "MacCreateEvent",
64# "TrackMouseLocationWithOptions",
65# "TrackMouseLocation",
66# "TrackMouseRegion",
67 "RegisterToolboxObjectClass",
68 "UnregisterToolboxObjectClass",
69 "ProcessHICommand",
70 "GetCFRunLoopFromEventLoop",
Jack Jansen52e90452001-11-05 14:44:23 +000071
Tim Peters182b5ac2004-07-18 06:16:08 +000072 "InvokeEventHandlerUPP",
73 "InvokeEventComparatorUPP",
74 "InvokeEventLoopTimerUPP",
75 "NewEventComparatorUPP",
76 "NewEventLoopTimerUPP",
77 "NewEventHandlerUPP",
78 "DisposeEventComparatorUPP",
79 "DisposeEventLoopTimerUPP",
80 "DisposeEventHandlerUPP",
Jack Jansen52e90452001-11-05 14:44:23 +000081
Tim Peters182b5ac2004-07-18 06:16:08 +000082 # Wrote by hand
83 "InstallEventHandler",
84 "RemoveEventHandler",
Jack Jansen34cbe712001-11-05 16:15:45 +000085
Tim Peters182b5ac2004-07-18 06:16:08 +000086 # Write by hand?
87 "GetEventParameter",
88 "FlushSpecificEventsFromQueue",
89 "FindSpecificEventInQueue",
90 "InstallEventLoopTimer",
91
92 # Don't do these because they require a CFRelease
93 "CreateTypeStringWithOSType",
94 "CopyEvent",
95 ]
96
97# def makeblacklisttypes(self):
98# return ["EventComparatorUPP",
99# "EventLoopTimerUPP",
100# #"EventHandlerUPP",
101# "EventComparatorProcPtr",
102# "EventLoopTimerProcPtr",
103# "EventHandlerProcPtr",
104# ]
105
106 def makerepairinstructions(self):
107 return [
108 ([("UInt32", 'inSize', "InMode"), ("void_ptr", 'inDataPtr', "InMode")],
109 [("MyInBuffer", 'inDataPtr', "InMode")]),
110 ([("Boolean", 'ioWasInRgn', "OutMode")],
111 [("Boolean", 'ioWasInRgn', "InOutMode")]),
112 ]
Just van Rossum4b367352002-01-09 18:54:16 +0000113
Jack Jansen52e90452001-11-05 14:44:23 +0000114if __name__ == "__main__":
Tim Peters182b5ac2004-07-18 06:16:08 +0000115 main()