move sections
[python/dscho.git] / Mac / Modules / drag / dragscan.py
blobbd419c4a6f4e77e67c720c0845c694b3d14892c6
1 # Scan <Drag.h>, generating draggen.py.
2 import sys
3 from bgenlocations import TOOLBOXDIR, BGENDIR, INCLUDEDIR
4 sys.path.append(BGENDIR)
6 from scantools import Scanner
8 MISSING_DEFINES="""
9 kDragHasLeftSenderWindow = (1 << 0)
10 kDragInsideSenderApplication = (1 << 1)
11 kDragInsideSenderWindow = (1 << 2)
12 kDragRegionAndImage = (1 << 4)
13 flavorSenderOnly = (1 << 0)
14 flavorSenderTranslated = (1 << 1)
15 flavorNotSaved = (1 << 2)
16 flavorSystemTranslated = (1 << 8)
17 """
20 def main():
21 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()
27 print "=== Testing definitions output code ==="
28 execfile(defsoutput, {}, {})
29 print "=== Done scanning and generating, now doing 'import dragsupport' ==="
30 import dragsupport
31 print "=== Done. It's up to you to compile Dragmodule.c ==="
33 class MyScanner(Scanner):
35 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
45 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)
54 def makeblacklistnames(self):
55 return [
56 "kDragActionAll",
59 def makeblacklisttypes(self):
60 return [
61 "DragTrackingHandlerUPP",
62 "DragReceiveHandlerUPP",
63 "DragSendDataUPP",
64 "DragInputUPP",
65 "DragDrawingUPP",
68 def makerepairinstructions(self):
69 return [
70 ([("void_ptr", "*", "InMode"), ("Size", "*", "InMode")],
71 [("OptionalInBuffer", "*", "*")]),
73 ([("void", "*", "OutMode"), ("Size", "*", "OutMode")],
74 [("VarOutBuffer", "*", "InOutMode")]),
78 if __name__ == "__main__":
79 main()