1 # Scan an Apple header file, generating a Python file of generator calls.
5 BGENDIR
=os
.path
.join(sys
.prefix
, ':Tools:bgen:bgen')
6 sys
.path
.append(BGENDIR
)
7 from scantools
import Scanner
8 from bgenlocations
import TOOLBOXDIR
12 OBJECTS
= ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController")
16 output
= SHORT
+ "gen.py"
17 defsoutput
= TOOLBOXDIR
+ LONG
+ ".py"
18 scanner
= MyScanner(input, output
, defsoutput
)
21 print "=== Done scanning and generating, now importing the generated code... ==="
22 exec "import " + SHORT
+ "support"
23 print "=== Done. It's up to you to compile it now! ==="
25 class MyScanner(Scanner
):
27 def destination(self
, type, name
, arglist
):
28 classname
= "Function"
29 listname
= "functions"
32 if t
in OBJECTS
and m
== "InMode":
34 listname
= t
+ "_methods"
35 return classname
, listname
37 def writeinitialdefs(self
):
38 self
.defsfile
.write("def FOUR_CHAR_CODE(x): return x\n")
40 def makeblacklistnames(self
):
42 "DisposeMovie", # Done on python-object disposal
43 "DisposeMovieTrack", # ditto
44 "DisposeTrackMedia", # ditto
45 "DisposeUserData", # ditto
46 # "DisposeTimeBase", # ditto
47 "DisposeMovieController", # ditto
49 # The following 4 use 'void *' in an uncontrolled way
50 # TBD when I've read the manual...
55 # bgen gets the argument in/out wrong..
61 "MakeTrackTimeTable", # Uses long * return?
62 "MakeMediaTimeTable", # ditto
63 ## "VideoMediaGetStallCount", # Undefined in CW Pro 3 library
66 def makegreylist(self
):
68 ('#if !TARGET_API_MAC_CARBON', [
69 'SpriteMediaGetIndImageProperty', # XXXX Why isn't this in carbon?
70 'CheckQuickTimeRegistration',
71 'SetMovieAnchorDataRef',
72 'GetMovieAnchorDataRef',
75 'MovieMediaGetCurrentMovieProperty',
76 'MovieMediaGetCurrentTrackProperty',
77 'MovieMediaGetChildMovieDataReference',
78 'MovieMediaSetChildMovieDataReference',
79 'MovieMediaLoadChildMovieFromDataReference',
80 'Media3DGetViewObject',
83 def makeblacklisttypes(self
):
85 # I don't think we want to do these
87 # We dont do callbacks yet, so no need for these
89 # Skipped for now, due to laziness
97 # Routine pointers, not yet.
99 "MoviePreviewCallOutUPP",
100 "MovieDrawingCompleteUPP",
106 "MCActionFilterWithRefConUPP",
110 "MoviePrePrerollCompleteUPP",
111 "MovieExecuteWiredActionsUPP",
112 "QTBandwidthNotificationUPP",
115 "SampleReference64Ptr", # Don't know what this does, yet
116 "QTRuntimeSpriteDescPtr",
117 "QTBandwidthReference",
118 "QTScheduledBandwidthReference",
124 def makerepairinstructions(self
):
126 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
128 # Movie controller creation
129 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
130 [('MovieController', '*', 'ReturnMode')]),
133 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
134 [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
136 # MCDoAction and more
137 ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
139 # SetTimeBaseZero. Does not handle NULLs, unfortunately
140 ([('TimeRecord', 'zero', 'OutMode')], [('TimeRecord', 'zero', 'InMode')]),
142 # ConvertTime and ConvertTimeScale
143 ([('TimeRecord', 'inout', 'OutMode')], [('TimeRecord', 'inout', 'InOutMode')]),
145 # AddTime and SubtractTime
146 ([('TimeRecord', 'dst', 'OutMode')], [('TimeRecord', 'dst', 'InOutMode')]),
149 if __name__
== "__main__":