1 # Scan an Apple header file, generating a Python file of generator calls.
5 from bgenlocations
import TOOLBOXDIR
, BGENDIR
6 sys
.path
.append(BGENDIR
)
7 from scantools
import Scanner
11 OBJECTS
= ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController")
15 output
= SHORT
+ "gen.py"
16 defsoutput
= TOOLBOXDIR
+ LONG
+ ".py"
17 scanner
= MyScanner(input, output
, defsoutput
)
20 print "=== Testing definitions output code ==="
21 execfile(defsoutput
, {}, {})
22 print "=== Done scanning and generating, now importing the generated code... ==="
23 exec "import " + SHORT
+ "support"
24 print "=== Done. It's up to you to compile it now! ==="
26 class MyScanner(Scanner
):
28 def destination(self
, type, name
, arglist
):
29 classname
= "Function"
30 listname
= "functions"
33 if t
in OBJECTS
and m
== "InMode":
35 listname
= t
+ "_methods"
36 return classname
, listname
38 def writeinitialdefs(self
):
39 self
.defsfile
.write("def FOUR_CHAR_CODE(x): return x\n")
41 def makeblacklistnames(self
):
43 "DisposeMovie", # Done on python-object disposal
44 "DisposeMovieTrack", # ditto
45 "DisposeTrackMedia", # ditto
46 "DisposeUserData", # ditto
47 # "DisposeTimeBase", # ditto
48 "DisposeMovieController", # ditto
50 # The following 4 use 'void *' in an uncontrolled way
51 # TBD when I've read the manual...
56 # bgen gets the argument in/out wrong..
62 "MakeTrackTimeTable", # Uses long * return?
63 "MakeMediaTimeTable", # ditto
64 ## "VideoMediaGetStallCount", # Undefined in CW Pro 3 library
66 'SpriteMediaGetIndImageProperty', # XXXX Why isn't this in carbon?
67 'CheckQuickTimeRegistration',
68 'SetMovieAnchorDataRef',
69 'GetMovieAnchorDataRef',
72 'MovieMediaGetCurrentMovieProperty',
73 'MovieMediaGetCurrentTrackProperty',
74 'MovieMediaGetChildMovieDataReference',
75 'MovieMediaSetChildMovieDataReference',
76 'MovieMediaLoadChildMovieFromDataReference',
77 'Media3DGetViewObject',
81 def makeblacklisttypes(self
):
83 # I don't think we want to do these
85 # We dont do callbacks yet, so no need for these
87 # Skipped for now, due to laziness
95 # Routine pointers, not yet.
97 "MoviePreviewCallOutUPP",
98 "MovieDrawingCompleteUPP",
104 "MCActionFilterWithRefConUPP",
108 "MoviePrePrerollCompleteUPP",
109 "MovieExecuteWiredActionsUPP",
110 "QTBandwidthNotificationUPP",
113 "SampleReference64Ptr", # Don't know what this does, yet
114 "QTRuntimeSpriteDescPtr",
115 "QTBandwidthReference",
116 "QTScheduledBandwidthReference",
122 def makerepairinstructions(self
):
124 ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
126 # Movie controller creation
127 ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
128 [('MovieController', '*', 'ReturnMode')]),
131 ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
132 [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
134 # MCDoAction and more
135 ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
137 # SetTimeBaseZero. Does not handle NULLs, unfortunately
138 ([('TimeRecord', 'zero', 'OutMode')], [('TimeRecord', 'zero', 'InMode')]),
140 # ConvertTime and ConvertTimeScale
141 ([('TimeRecord', 'inout', 'OutMode')], [('TimeRecord', 'inout', 'InOutMode')]),
142 ([('TimeRecord', 'theTime', 'OutMode')], [('TimeRecord', 'theTime', 'InOutMode')]),
144 # AddTime and SubtractTime
145 ([('TimeRecord', 'dst', 'OutMode')], [('TimeRecord', 'dst', 'InOutMode')]),
148 ([('char_ptr', '*', 'InMode')], [('stringptr', '*', 'InMode')]),
149 ([('FSSpecPtr', '*', 'InMode')], [('FSSpec_ptr', '*', 'InMode')]),
150 ([('unsigned_char', 'swfVersion', 'OutMode')], [('UInt8', 'swfVersion', 'OutMode')]),
153 if __name__
== "__main__":