ยปCore Development>Code coverage>Mac/Modules/qt/qtscan.py

Python code coverage for Mac/Modules/qt/qtscan.py

#countcontent
1n/a# Scan an Apple header file, generating a Python file of generator calls.
2n/a
3n/aimport sys
4n/afrom bgenlocations import TOOLBOXDIR, BGENDIR
5n/asys.path.append(BGENDIR)
6n/afrom scantools import Scanner
7n/a
8n/aLONG = "QuickTime"
9n/aSHORT = "qt"
10n/aHEADERFILES= (
11n/a# "Components.h" -- In Carbon.Cm
12n/a "Movies.h",
13n/a "ImageCompression.h",
14n/a "QuickTimeComponents.h",
15n/a# "ImageCodec.h" -- seems not too useful, and difficult.
16n/a# "IsochronousDataHandlers.h" -- Is this useful?
17n/a "MediaHandlers.h",
18n/a# "QTML.h", -- Windows only, needs separate module
19n/a# "QuickTimeStreaming.h", -- Difficult
20n/a# "QTStreamingComponents.h", -- Needs QTStreaming
21n/a "QuickTimeMusic.h",
22n/a# "QuickTimeVR.h", -- Not done yet
23n/a# "Sound.h", -- In Carbon.Snd
24n/a )
25n/aOBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController",
26n/a "IdleManager", "SGOutput")
27n/a
28n/adef main():
29n/a input = HEADERFILES
30n/a output = SHORT + "gen.py"
31n/a defsoutput = TOOLBOXDIR + LONG + ".py"
32n/a scanner = MyScanner(input, output, defsoutput)
33n/a scanner.scan()
34n/a scanner.close()
35n/a scanner.gentypetest(SHORT+"typetest.py")
36n/a print "=== Testing definitions output code ==="
37n/a execfile(defsoutput, {}, {})
38n/a print "=== Done scanning and generating, now importing the generated code... ==="
39n/a exec "import " + SHORT + "support"
40n/a print "=== Done. It's up to you to compile it now! ==="
41n/a
42n/aclass MyScanner(Scanner):
43n/a
44n/a def destination(self, type, name, arglist):
45n/a classname = "Function"
46n/a listname = "functions"
47n/a if arglist:
48n/a t, n, m = arglist[0]
49n/a if t in OBJECTS and m == "InMode":
50n/a classname = "Method"
51n/a listname = t + "_methods"
52n/a return classname, listname
53n/a
54n/a def writeinitialdefs(self):
55n/a self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
56n/a self.defsfile.write("xmlIdentifierUnrecognized = -1\n")
57n/a self.defsfile.write("kControllerMinimum = -0xf777\n")
58n/a self.defsfile.write("notImplementedMusicOSErr = -2071\n")
59n/a self.defsfile.write("cantSendToSynthesizerOSErr = -2072\n")
60n/a self.defsfile.write("cantReceiveFromSynthesizerOSErr = -2073\n")
61n/a self.defsfile.write("illegalVoiceAllocationOSErr = -2074\n")
62n/a self.defsfile.write("illegalPartOSErr = -2075\n")
63n/a self.defsfile.write("illegalChannelOSErr = -2076\n")
64n/a self.defsfile.write("illegalKnobOSErr = -2077\n")
65n/a self.defsfile.write("illegalKnobValueOSErr = -2078\n")
66n/a self.defsfile.write("illegalInstrumentOSErr = -2079\n")
67n/a self.defsfile.write("illegalControllerOSErr = -2080\n")
68n/a self.defsfile.write("midiManagerAbsentOSErr = -2081\n")
69n/a self.defsfile.write("synthesizerNotRespondingOSErr = -2082\n")
70n/a self.defsfile.write("synthesizerOSErr = -2083\n")
71n/a self.defsfile.write("illegalNoteChannelOSErr = -2084\n")
72n/a self.defsfile.write("noteChannelNotAllocatedOSErr = -2085\n")
73n/a self.defsfile.write("tunePlayerFullOSErr = -2086\n")
74n/a self.defsfile.write("tuneParseOSErr = -2087\n")
75n/a
76n/a def makeblacklistnames(self):
77n/a return [
78n/a "xmlIdentifierUnrecognized", # const with incompatible definition
79n/a "DisposeMovie", # Done on python-object disposal
80n/a "DisposeMovieTrack", # ditto
81n/a "DisposeTrackMedia", # ditto
82n/a "DisposeUserData", # ditto
83n/a# "DisposeTimeBase", # ditto
84n/a "DisposeMovieController", # ditto
85n/a
86n/a # The following 4 use 'void *' in an uncontrolled way
87n/a # TBD when I've read the manual...
88n/a "GetUserDataItem",
89n/a "SetUserDataItem",
90n/a "SetTextSampleData",
91n/a "BeginFullScreen",
92n/a # bgen gets the argument in/out wrong..
93n/a "AddTextSample",
94n/a "AddTESample",
95n/a "AddHiliteSample",
96n/a "HiliteTextSample",
97n/a
98n/a "MakeTrackTimeTable", # Uses long * return?
99n/a "MakeMediaTimeTable", # ditto
100n/a## "VideoMediaGetStallCount", # Undefined in CW Pro 3 library
101n/a # OS8 only:
102n/a 'SpriteMediaGetIndImageProperty', # XXXX Why isn't this in carbon?
103n/a 'CheckQuickTimeRegistration',
104n/a 'SetMovieAnchorDataRef',
105n/a 'GetMovieAnchorDataRef',
106n/a 'GetMovieLoadState',
107n/a 'OpenADataHandler',
108n/a 'MovieMediaGetCurrentMovieProperty',
109n/a 'MovieMediaGetCurrentTrackProperty',
110n/a 'MovieMediaGetChildMovieDataReference',
111n/a 'MovieMediaSetChildMovieDataReference',
112n/a 'MovieMediaLoadChildMovieFromDataReference',
113n/a 'Media3DGetViewObject',
114n/a
115n/a # these are ImageCompression blacklists
116n/a "GraphicsExportGetInputPtr",
117n/a
118n/a # QuickTimeComponents
119n/a # These two need some help: the first returns a point to a databuffer that
120n/a # the second disposes. Generate manually?
121n/a "VDCompressDone",
122n/a "VDReleaseCompressBuffer",
123n/a "QTVideoOutputGetGWorldParameters", # How useful is this?
124n/a
125n/a # MediaHandlers
126n/a "MediaMakeMediaTimeTable", # just lazy
127n/a "MediaGetSampleDataPointer", # funny output pointer
128n/a
129n/a # QuickTimeMusic
130n/a "kControllerMinimum",
131n/a # These are artefacts of a macro definition
132n/a "ulen",
133n/a "_ext",
134n/a "x",
135n/a "w1",
136n/a "w2",
137n/a ]
138n/a
139n/a def makeblacklisttypes(self):
140n/a return [
141n/a # I don't think we want to do these
142n/a "QTSyncTaskPtr",
143n/a # We dont do callbacks yet, so no need for these
144n/a "QTCallBack",
145n/a # Skipped for now, due to laziness
146n/a "TrackEditState",
147n/a "MovieEditState",
148n/a "MatrixRecord",
149n/a "MatrixRecord_ptr",
150n/a "SampleReferencePtr",
151n/a "QTTweener",
152n/a "QTErrorReplacementPtr",
153n/a "QTRestrictionSet",
154n/a "QTUUID",
155n/a "QTUUID_ptr",
156n/a
157n/a # Routine pointers, not yet.
158n/a "MoviesErrorUPP",
159n/a "MoviePreviewCallOutUPP",
160n/a "MovieDrawingCompleteUPP",
161n/a "QTCallBackUPP",
162n/a "TextMediaUPP",
163n/a "MovieProgressUPP",
164n/a "MovieRgnCoverUPP",
165n/a "MCActionFilterUPP",
166n/a "MCActionFilterWithRefConUPP",
167n/a "GetMovieUPP",
168n/a "ModalFilterUPP",
169n/a "TrackTransferUPP",
170n/a "MoviePrePrerollCompleteUPP",
171n/a "MovieExecuteWiredActionsUPP",
172n/a "QTBandwidthNotificationUPP",
173n/a "DoMCActionUPP",
174n/a "QTNextTaskNeededSoonerCallbackUPP",
175n/a
176n/a "SampleReference64Ptr", # Don't know what this does, yet
177n/a "QTRuntimeSpriteDescPtr",
178n/a "QTBandwidthReference",
179n/a "QTScheduledBandwidthReference",
180n/a "QTAtomContainer",
181n/a "SpriteWorld",
182n/a "Sprite",
183n/a
184n/a # these are ImageCompression blacklists
185n/a "ICMDataUPP",
186n/a "ICMFlushUPP",
187n/a "ICMCompletionUPP",
188n/a "ICMProgressUPP",
189n/a "StdPixUPP",
190n/a "QDPixUPP",
191n/a "ICMAlignmentUPP",
192n/a "ICMCursorShieldedUPP",
193n/a "ICMMemoryDisposedUPP",
194n/a "ICMConvertDataFormatUPP",
195n/a "ModalFilterYDUPP",
196n/a "FileFilterUPP",
197n/a
198n/a "CodecNameSpecListPtr",
199n/a "CodecInfo",
200n/a "ImageSequence",
201n/a "MatrixRecordPtr",
202n/a "ICMDataProcRecordPtr",
203n/a "OpenCPicParams",
204n/a "ICMProgressProcRecordPtr",
205n/a "ICMAlignmentProcRecordPtr",
206n/a "ICMPixelFormatInfoPtr",
207n/a "ImageSequenceDataSource",
208n/a "ConstStrFileNameParam",
209n/a "ImageTranscodeSequence",
210n/a "ImageFieldSequence",
211n/a "Fract",
212n/a "PixMapPtr",
213n/a "GWorldFlags",
214n/a "void_ptr", # XXX Being lazy, this one is doable.
215n/a
216n/a # These are from QuickTimeComponents
217n/a "CDataHandlerUPP",
218n/a "CharDataHandlerUPP",
219n/a "CommentHandlerUPP",
220n/a "DataHCompletionUPP",
221n/a "'MovieExportGetDataUPP",
222n/a "MovieExportGetPropertyUPP",
223n/a "PreprocessInstructionHandlerUPP",
224n/a "SGModalFilterUPP",
225n/a "StartDocumentHandlerUPP",
226n/a "StartElementHandlerUPP",
227n/a "VdigIntUPP",
228n/a "SGDataUPP",
229n/a "EndDocumentHandlerUPP",
230n/a "EndElementHandlerUPP",
231n/a "VideoBottles", # Record full of UPPs
232n/a
233n/a "SCParams",
234n/a "ICMCompletionProcRecordPtr",
235n/a "DataHVolumeList",
236n/a "DigitizerInfo",
237n/a "SGCompressInfo",
238n/a "SeqGrabExtendedFrameInfoPtr",
239n/a "SeqGrabFrameInfoPtr",
240n/a "TCTextOptionsPtr",
241n/a "SGCompressInfo_ptr",
242n/a "SGDeviceList",
243n/a "TextDisplayData",
244n/a "TimeCodeDef",
245n/a "TimeCodeRecord",
246n/a "TweenRecord",
247n/a "VDGamRecPtr",
248n/a "ToneDescription", # XXXX Just lazy: this one is easy.
249n/a "XMLDoc",
250n/a "UInt64", # XXXX lazy
251n/a "UInt64_ptr", # XXXX lazy
252n/a
253n/a # From MediaHandlers
254n/a "ActionsUPP",
255n/a "PrePrerollCompleteUPP",
256n/a "CodecComponentHandle", # Difficult: handle containing list of components.
257n/a "GetMovieCompleteParams", # Immense struct
258n/a "LevelMeterInfoPtr", # Lazy. Also: can be an output parameter!!
259n/a "MediaEQSpectrumBandsRecordPtr", # ditto
260n/a
261n/a # From QuickTimeMusic
262n/a "MusicMIDISendUPP",
263n/a "MusicOfflineDataUPP",
264n/a "TuneCallBackUPP",
265n/a "TunePlayCallBackUPP",
266n/a "GCPart", # Struct with lots of fields
267n/a "GCPart_ptr",
268n/a "GenericKnobDescription", # Struct with lots of fields
269n/a "KnobDescription", # Struct with lots of fields
270n/a "InstrumentAboutInfo", # Struct, not too difficult
271n/a "NoteChannel", # XXXX Lazy. Could be opaque, I think
272n/a "NoteRequest", # XXXX Lazy. Not-too-difficult struct
273n/a "SynthesizerConnections", # Struct with lots of fields
274n/a "SynthesizerDescription", # Struct with lots of fields
275n/a "TuneStatus", # Struct with lots of fields
276n/a
277n/a ]
278n/a
279n/a def makerepairinstructions(self):
280n/a return [
281n/a ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
282n/a
283n/a # Movie controller creation
284n/a ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
285n/a [('MovieController', '*', 'ReturnMode')]),
286n/a
287n/a # NewMovieFromFile
288n/a ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
289n/a [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
290n/a
291n/a # MCDoAction and more
292n/a ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
293n/a
294n/a # SetTimeBaseZero. Does not handle NULLs, unfortunately
295n/a ([('TimeRecord', 'zero', 'OutMode')], [('TimeRecord', 'zero', 'InMode')]),
296n/a
297n/a # ConvertTime and ConvertTimeScale
298n/a ([('TimeRecord', 'inout', 'OutMode')], [('TimeRecord', 'inout', 'InOutMode')]),
299n/a ([('TimeRecord', 'theTime', 'OutMode')], [('TimeRecord', 'theTime', 'InOutMode')]),
300n/a
301n/a # AddTime and SubtractTime
302n/a ([('TimeRecord', 'dst', 'OutMode')], [('TimeRecord', 'dst', 'InOutMode')]),
303n/a
304n/a # Funny definitions
305n/a ([('char_ptr', '*', 'InMode')], [('stringptr', '*', 'InMode')]),
306n/a ([('FSSpecPtr', '*', 'InMode')], [('FSSpec_ptr', '*', 'InMode')]),
307n/a ([('unsigned_char', 'swfVersion', 'OutMode')], [('UInt8', 'swfVersion', 'OutMode')]),
308n/a
309n/a # It seems MusicMIDIPacket if never flagged with const but always used
310n/a # for sending only. If that ever changes this needs to be fixed.
311n/a ([('MusicMIDIPacket', '*', 'OutMode')], [('MusicMIDIPacket_ptr', '*', 'InMode')]),
312n/a
313n/a # QTMusic const-less input parameters
314n/a ([('unsigned_long', 'header', 'OutMode')], [('UnsignedLongPtr', 'header', 'InMode')]),
315n/a ]
316n/a
317n/aif __name__ == "__main__":
318n/a main()