blob: e3c72ae23def87acda72fc26a534233209cb2201 [file] [log] [blame]
Jack Jansen52e90452001-11-05 14:44:23 +00001# IBCarbonscan.py
2
3import sys
4import os
5import string
6import MacOS
Jack Jansen34cbe712001-11-05 16:15:45 +00007import sys
Jack Jansen52e90452001-11-05 14:44:23 +00008
Jack Jansenaaebdd62002-08-05 15:39:30 +00009from bgenlocations import TOOLBOXDIR, BGENDIR
Jack Jansen52e90452001-11-05 14:44:23 +000010sys.path.append(BGENDIR)
11
Jack Jansen52e90452001-11-05 14:44:23 +000012from scantools import Scanner, Scanner_OSX
13
14def main():
Tim Peters182b5ac2004-07-18 06:16:08 +000015 print "---Scanning CarbonEvents.h---"
16 input = ["CarbonEvents.h"]
17 output = "CarbonEventsgen.py"
18 defsoutput = TOOLBOXDIR + "CarbonEvents.py"
19 scanner = CarbonEvents_Scanner(input, output, defsoutput)
20 scanner.scan()
21 scanner.close()
22 print "=== Testing definitions output code ==="
23 execfile(defsoutput, {}, {})
24 print "--done scanning, importing--"
25 import CarbonEvtsupport
26 print "done"
Jack Jansen52e90452001-11-05 14:44:23 +000027
Tim Peters182b5ac2004-07-18 06:16:08 +000028RefObjectTypes = ["EventRef",
29 "EventQueueRef",
30 "EventLoopRef",
31 "EventLoopTimerRef",
32 "EventHandlerRef",
33 "EventHandlerCallRef",
34 "EventTargetRef",
35 "EventHotKeyRef",
36 ]
Jack Jansen52e90452001-11-05 14:44:23 +000037
Just van Rossumf8d64732001-12-12 20:48:53 +000038class CarbonEvents_Scanner(Scanner_OSX):
Tim Peters182b5ac2004-07-18 06:16:08 +000039 def destination(self, type, name, arglist):
40 classname = "CarbonEventsFunction"
41 listname = "functions"
42 if arglist:
43 t, n, m = arglist[0]
44 if t in RefObjectTypes and m == "InMode":
45 if t == "EventHandlerRef":
46 classname = "EventHandlerRefMethod"
47 else:
48 classname = "CarbonEventsMethod"
49 listname = t + "methods"
50 #else:
51 # print "not method"
52 return classname, listname
Jack Jansen52e90452001-11-05 14:44:23 +000053
Tim Peters182b5ac2004-07-18 06:16:08 +000054 def writeinitialdefs(self):
55 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
56 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
57 self.defsfile.write("false = 0\n")
58 self.defsfile.write("true = 1\n")
59 self.defsfile.write("keyAEEventClass = FOUR_CHAR_CODE('evcl')\n")
60 self.defsfile.write("keyAEEventID = FOUR_CHAR_CODE('evti')\n")
Jack Jansen52e90452001-11-05 14:44:23 +000061
Tim Peters182b5ac2004-07-18 06:16:08 +000062 def makeblacklistnames(self):
63 return [
64 "sHandler",
65 "MacCreateEvent",
66# "TrackMouseLocationWithOptions",
67# "TrackMouseLocation",
68# "TrackMouseRegion",
69 "RegisterToolboxObjectClass",
70 "UnregisterToolboxObjectClass",
71 "ProcessHICommand",
72 "GetCFRunLoopFromEventLoop",
Jack Jansen52e90452001-11-05 14:44:23 +000073
Tim Peters182b5ac2004-07-18 06:16:08 +000074 "InvokeEventHandlerUPP",
75 "InvokeEventComparatorUPP",
76 "InvokeEventLoopTimerUPP",
77 "NewEventComparatorUPP",
78 "NewEventLoopTimerUPP",
79 "NewEventHandlerUPP",
80 "DisposeEventComparatorUPP",
81 "DisposeEventLoopTimerUPP",
82 "DisposeEventHandlerUPP",
Jack Jansen52e90452001-11-05 14:44:23 +000083
Tim Peters182b5ac2004-07-18 06:16:08 +000084 # Wrote by hand
85 "InstallEventHandler",
86 "RemoveEventHandler",
Jack Jansen34cbe712001-11-05 16:15:45 +000087
Tim Peters182b5ac2004-07-18 06:16:08 +000088 # Write by hand?
89 "GetEventParameter",
90 "FlushSpecificEventsFromQueue",
91 "FindSpecificEventInQueue",
92 "InstallEventLoopTimer",
93
94 # Don't do these because they require a CFRelease
95 "CreateTypeStringWithOSType",
96 "CopyEvent",
97 ]
98
99# def makeblacklisttypes(self):
100# return ["EventComparatorUPP",
101# "EventLoopTimerUPP",
102# #"EventHandlerUPP",
103# "EventComparatorProcPtr",
104# "EventLoopTimerProcPtr",
105# "EventHandlerProcPtr",
106# ]
107
108 def makerepairinstructions(self):
109 return [
110 ([("UInt32", 'inSize', "InMode"), ("void_ptr", 'inDataPtr', "InMode")],
111 [("MyInBuffer", 'inDataPtr', "InMode")]),
112 ([("Boolean", 'ioWasInRgn', "OutMode")],
113 [("Boolean", 'ioWasInRgn', "InOutMode")]),
114 ]
Just van Rossum4b367352002-01-09 18:54:16 +0000115
Jack Jansen52e90452001-11-05 14:44:23 +0000116if __name__ == "__main__":
Tim Peters182b5ac2004-07-18 06:16:08 +0000117 main()