blob: 7fba93654a44e2cdda8fe1a5e1f067c1b902da7c [file] [log] [blame]
Jack Jansencb4eaad1995-11-30 15:03:59 +00001# Scan an Apple header file, generating a Python file of generator calls.
2
3import addpack
4addpack.addpack(':tools:bgen:bgen')
5from scantools import Scanner
Jack Jansen46d9e791996-04-12 16:29:23 +00006from bgenlocations import TOOLBOXDIR
Jack Jansencb4eaad1995-11-30 15:03:59 +00007
8LONG = "QuickTime"
9SHORT = "qt"
Jack Jansen9cfea101995-12-09 14:05:56 +000010OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController")
Jack Jansencb4eaad1995-11-30 15:03:59 +000011
12def main():
13 input = "Movies.h"
14 output = SHORT + "gen.py"
Jack Jansen46d9e791996-04-12 16:29:23 +000015 defsoutput = TOOLBOXDIR + LONG + ".py"
Jack Jansencb4eaad1995-11-30 15:03:59 +000016 scanner = MyScanner(input, output, defsoutput)
17 scanner.scan()
18 scanner.close()
19 print "=== Done scanning and generating, now importing the generated code... ==="
20 exec "import " + SHORT + "support"
21 print "=== Done. It's up to you to compile it now! ==="
22
23class MyScanner(Scanner):
24
25 def destination(self, type, name, arglist):
26 classname = "Function"
27 listname = "functions"
28 if arglist:
29 t, n, m = arglist[0]
Jack Jansen453ced51995-11-30 17:42:08 +000030 if t in OBJECTS and m == "InMode":
Jack Jansencb4eaad1995-11-30 15:03:59 +000031 classname = "Method"
Jack Jansen453ced51995-11-30 17:42:08 +000032 listname = t + "_methods"
Jack Jansencb4eaad1995-11-30 15:03:59 +000033 return classname, listname
34
35 def makeblacklistnames(self):
36 return [
37 "DisposeMovie", # Done on python-object disposal
Jack Jansen453ced51995-11-30 17:42:08 +000038 "DisposeMovieTrack", # ditto
39 "DisposeTrackMedia", # ditto
40 "DisposeUserData", # ditto
41 "DisposeTimeBase", # ditto
Jack Jansen9cfea101995-12-09 14:05:56 +000042 "DisposeMovieController", # ditto
Jack Jansencb4eaad1995-11-30 15:03:59 +000043 "GetMovieCreationTime", # type "unsigned long" in C, inparseable
44 "GetMovieModificationTime", # Ditto
Jack Jansen453ced51995-11-30 17:42:08 +000045 "GetTrackCreationTime", # ditto
46 "GetTrackModificationTime", # Ditto
47 "GetMediaCreationTime", # ditto
48 "GetMediaModificationTime", # Ditto
49 # The following 4 use 'void *' in an uncontrolled way
50 # TBD when I've read the manual...
51 "GetUserDataItem",
52 "SetUserDataItem",
53 "SetTextSampleData",
Jack Jansen453ced51995-11-30 17:42:08 +000054 # bgen gets the argument in/out wrong..
55 "AddTextSample",
56 "AddTESample",
57 "AddHiliteSample",
58 "HiliteTextSample",
Jack Jansencb4eaad1995-11-30 15:03:59 +000059 ]
60
61 def makeblacklisttypes(self):
62 return [
Jack Jansen453ced51995-11-30 17:42:08 +000063 # I don't think we want to do these
64 "QTSyncTaskPtr",
65 # We dont do callbacks yet, so no need for these
Jack Jansencb4eaad1995-11-30 15:03:59 +000066 "QTCallBack",
Jack Jansen453ced51995-11-30 17:42:08 +000067 # Skipped for now, due to laziness
Jack Jansencb4eaad1995-11-30 15:03:59 +000068 "TimeRecord",
69 "TimeRecord_ptr",
70 "TrackEditState",
71 "MovieEditState",
Jack Jansencb4eaad1995-11-30 15:03:59 +000072 "MatrixRecord",
73 "MatrixRecord_ptr",
Jack Jansen453ced51995-11-30 17:42:08 +000074 "SampleReferencePtr",
75# "SampleDescription",
76# "SoundDescription",
77# "TextDescription",
78# "MusicDescription",
79 # I dont know yet how to do these.
80 "CGrafPtr",
81 "GDHandle",
82 # Routine pointers, not yet.
83 "MoviesErrorUPP",
84 "MoviePreviewCallOutUPP",
85 "MovieDrawingCompleteUPP",
Jack Jansencb4eaad1995-11-30 15:03:59 +000086 "QTCallBackUPP",
87 "TextMediaUPP",
88 "MovieProgressUPP",
89 "MovieRgnCoverUPP",
90 "MCActionFilterUPP",
91 "MCActionFilterWithRefConUPP",
Jack Jansen453ced51995-11-30 17:42:08 +000092 "GetMovieUPP",
93 "ModalFilterUPP",
Jack Jansencb4eaad1995-11-30 15:03:59 +000094 ]
95
96 def makerepairinstructions(self):
97 return [
Jack Jansen453ced51995-11-30 17:42:08 +000098 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
Jack Jansen9cfea101995-12-09 14:05:56 +000099
100 # Movie controller creation
101 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
102 [('MovieController', '*', 'ReturnMode')]),
103
104 # NewMovieFromFile
105 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
106 [('dummyshortptr', 'resId', 'InMode'), ('dummyStringPtr', 'resName', 'InMode')]),
107
108 # MCDoAction
109 ([('void', 'params', 'OutMode')], [('mcactionparams', 'params', 'InMode')]),
Jack Jansencb4eaad1995-11-30 15:03:59 +0000110 ]
111
112if __name__ == "__main__":
113 main()