summaryrefslogtreecommitdiffstats
path: root/Mac/Modules/qt/qtscan.py
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Modules/qt/qtscan.py')
-rw-r--r--Mac/Modules/qt/qtscan.py604
1 files changed, 302 insertions, 302 deletions
diff --git a/Mac/Modules/qt/qtscan.py b/Mac/Modules/qt/qtscan.py
index b756bfe..a2dba15 100644
--- a/Mac/Modules/qt/qtscan.py
+++ b/Mac/Modules/qt/qtscan.py
@@ -9,311 +9,311 @@ from scantools import Scanner
LONG = "QuickTime"
SHORT = "qt"
HEADERFILES= (
-# "Components.h" -- In Carbon.Cm
- "Movies.h",
- "ImageCompression.h",
- "QuickTimeComponents.h",
-# "ImageCodec.h" -- seems not too useful, and difficult.
-# "IsochronousDataHandlers.h" -- Is this useful?
- "MediaHandlers.h",
-# "QTML.h", -- Windows only, needs separate module
-# "QuickTimeStreaming.h", -- Difficult
-# "QTStreamingComponents.h", -- Needs QTStreaming
- "QuickTimeMusic.h",
-# "QuickTimeVR.h", -- Not done yet
-# "Sound.h", -- In Carbon.Snd
- )
-OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController",
- "IdleManager", "SGOutput")
+# "Components.h" -- In Carbon.Cm
+ "Movies.h",
+ "ImageCompression.h",
+ "QuickTimeComponents.h",
+# "ImageCodec.h" -- seems not too useful, and difficult.
+# "IsochronousDataHandlers.h" -- Is this useful?
+ "MediaHandlers.h",
+# "QTML.h", -- Windows only, needs separate module
+# "QuickTimeStreaming.h", -- Difficult
+# "QTStreamingComponents.h", -- Needs QTStreaming
+ "QuickTimeMusic.h",
+# "QuickTimeVR.h", -- Not done yet
+# "Sound.h", -- In Carbon.Snd
+ )
+OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController",
+ "IdleManager", "SGOutput")
def main():
- input = HEADERFILES
- output = SHORT + "gen.py"
- defsoutput = TOOLBOXDIR + LONG + ".py"
- scanner = MyScanner(input, output, defsoutput)
- scanner.scan()
- scanner.close()
- scanner.gentypetest(SHORT+"typetest.py")
- print "=== Testing definitions output code ==="
- execfile(defsoutput, {}, {})
- print "=== Done scanning and generating, now importing the generated code... ==="
- exec "import " + SHORT + "support"
- print "=== Done. It's up to you to compile it now! ==="
+ input = HEADERFILES
+ output = SHORT + "gen.py"
+ defsoutput = TOOLBOXDIR + LONG + ".py"
+ scanner = MyScanner(input, output, defsoutput)
+ scanner.scan()
+ scanner.close()
+ scanner.gentypetest(SHORT+"typetest.py")
+ print "=== Testing definitions output code ==="
+ execfile(defsoutput, {}, {})
+ print "=== Done scanning and generating, now importing the generated code... ==="
+ exec "import " + SHORT + "support"
+ print "=== Done. It's up to you to compile it now! ==="
class MyScanner(Scanner):
- def destination(self, type, name, arglist):
- classname = "Function"
- listname = "functions"
- if arglist:
- t, n, m = arglist[0]
- if t in OBJECTS and m == "InMode":
- classname = "Method"
- listname = t + "_methods"
- return classname, listname
-
- def writeinitialdefs(self):
- self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
- self.defsfile.write("xmlIdentifierUnrecognized = -1\n")
- self.defsfile.write("kControllerMinimum = -0xf777\n")
- self.defsfile.write("notImplementedMusicOSErr = -2071\n")
- self.defsfile.write("cantSendToSynthesizerOSErr = -2072\n")
- self.defsfile.write("cantReceiveFromSynthesizerOSErr = -2073\n")
- self.defsfile.write("illegalVoiceAllocationOSErr = -2074\n")
- self.defsfile.write("illegalPartOSErr = -2075\n")
- self.defsfile.write("illegalChannelOSErr = -2076\n")
- self.defsfile.write("illegalKnobOSErr = -2077\n")
- self.defsfile.write("illegalKnobValueOSErr = -2078\n")
- self.defsfile.write("illegalInstrumentOSErr = -2079\n")
- self.defsfile.write("illegalControllerOSErr = -2080\n")
- self.defsfile.write("midiManagerAbsentOSErr = -2081\n")
- self.defsfile.write("synthesizerNotRespondingOSErr = -2082\n")
- self.defsfile.write("synthesizerOSErr = -2083\n")
- self.defsfile.write("illegalNoteChannelOSErr = -2084\n")
- self.defsfile.write("noteChannelNotAllocatedOSErr = -2085\n")
- self.defsfile.write("tunePlayerFullOSErr = -2086\n")
- self.defsfile.write("tuneParseOSErr = -2087\n")
-
- def makeblacklistnames(self):
- return [
- "xmlIdentifierUnrecognized", # const with incompatible definition
- "DisposeMovie", # Done on python-object disposal
- "DisposeMovieTrack", # ditto
- "DisposeTrackMedia", # ditto
- "DisposeUserData", # ditto
-# "DisposeTimeBase", # ditto
- "DisposeMovieController", # ditto
-
- # The following 4 use 'void *' in an uncontrolled way
- # TBD when I've read the manual...
- "GetUserDataItem",
- "SetUserDataItem",
- "SetTextSampleData",
- "BeginFullScreen",
- # bgen gets the argument in/out wrong..
- "AddTextSample",
- "AddTESample",
- "AddHiliteSample",
- "HiliteTextSample",
-
- "MakeTrackTimeTable", # Uses long * return?
- "MakeMediaTimeTable", # ditto
-## "VideoMediaGetStallCount", # Undefined in CW Pro 3 library
- # OS8 only:
- 'SpriteMediaGetIndImageProperty', # XXXX Why isn't this in carbon?
- 'CheckQuickTimeRegistration',
- 'SetMovieAnchorDataRef',
- 'GetMovieAnchorDataRef',
- 'GetMovieLoadState',
- 'OpenADataHandler',
- 'MovieMediaGetCurrentMovieProperty',
- 'MovieMediaGetCurrentTrackProperty',
- 'MovieMediaGetChildMovieDataReference',
- 'MovieMediaSetChildMovieDataReference',
- 'MovieMediaLoadChildMovieFromDataReference',
- 'Media3DGetViewObject',
-
- # these are ImageCompression blacklists
- "GraphicsExportGetInputPtr",
-
- # QuickTimeComponents
- # These two need some help: the first returns a point to a databuffer that
- # the second disposes. Generate manually?
- "VDCompressDone",
- "VDReleaseCompressBuffer",
- "QTVideoOutputGetGWorldParameters", # How useful is this?
-
- # MediaHandlers
- "MediaMakeMediaTimeTable", # just lazy
- "MediaGetSampleDataPointer", # funny output pointer
-
- # QuickTimeMusic
- "kControllerMinimum",
- # These are artefacts of a macro definition
- "ulen",
- "_ext",
- "x",
- "w1",
- "w2",
- ]
-
- def makeblacklisttypes(self):
- return [
- # I don't think we want to do these
- "QTSyncTaskPtr",
- # We dont do callbacks yet, so no need for these
- "QTCallBack",
- # Skipped for now, due to laziness
- "TrackEditState",
- "MovieEditState",
- "MatrixRecord",
- "MatrixRecord_ptr",
- "SampleReferencePtr",
- "QTTweener",
- "QTErrorReplacementPtr",
- "QTRestrictionSet",
- "QTUUID",
- "QTUUID_ptr",
-
- # Routine pointers, not yet.
- "MoviesErrorUPP",
- "MoviePreviewCallOutUPP",
- "MovieDrawingCompleteUPP",
- "QTCallBackUPP",
- "TextMediaUPP",
- "MovieProgressUPP",
- "MovieRgnCoverUPP",
- "MCActionFilterUPP",
- "MCActionFilterWithRefConUPP",
- "GetMovieUPP",
- "ModalFilterUPP",
- "TrackTransferUPP",
- "MoviePrePrerollCompleteUPP",
- "MovieExecuteWiredActionsUPP",
- "QTBandwidthNotificationUPP",
- "DoMCActionUPP",
- "QTNextTaskNeededSoonerCallbackUPP",
-
- "SampleReference64Ptr", # Don't know what this does, yet
- "QTRuntimeSpriteDescPtr",
- "QTBandwidthReference",
- "QTScheduledBandwidthReference",
- "QTAtomContainer",
- "SpriteWorld",
- "Sprite",
-
- # these are ImageCompression blacklists
- "ICMDataUPP",
- "ICMFlushUPP",
- "ICMCompletionUPP",
- "ICMProgressUPP",
- "StdPixUPP",
- "QDPixUPP",
- "ICMAlignmentUPP",
- "ICMCursorShieldedUPP",
- "ICMMemoryDisposedUPP",
- "ICMConvertDataFormatUPP",
- "ModalFilterYDUPP",
- "FileFilterUPP",
-
- "CodecNameSpecListPtr",
- "CodecInfo",
- "ImageSequence",
- "MatrixRecordPtr",
- "ICMDataProcRecordPtr",
- "OpenCPicParams",
- "ICMProgressProcRecordPtr",
- "ICMAlignmentProcRecordPtr",
- "ICMPixelFormatInfoPtr",
- "ImageSequenceDataSource",
- "ConstStrFileNameParam",
- "ImageTranscodeSequence",
- "ImageFieldSequence",
- "Fract",
- "PixMapPtr",
- "GWorldFlags",
- "void_ptr", # XXX Being lazy, this one is doable.
-
- # These are from QuickTimeComponents
- "CDataHandlerUPP",
- "CharDataHandlerUPP",
- "CommentHandlerUPP",
- "DataHCompletionUPP",
- "'MovieExportGetDataUPP",
- "MovieExportGetPropertyUPP",
- "PreprocessInstructionHandlerUPP",
- "SGModalFilterUPP",
- "StartDocumentHandlerUPP",
- "StartElementHandlerUPP",
- "VdigIntUPP",
- "SGDataUPP",
- "EndDocumentHandlerUPP",
- "EndElementHandlerUPP",
- "VideoBottles", # Record full of UPPs
-
- "SCParams",
- "ICMCompletionProcRecordPtr",
- "DataHVolumeList",
- "DigitizerInfo",
- "SGCompressInfo",
- "SeqGrabExtendedFrameInfoPtr",
- "SeqGrabFrameInfoPtr",
- "TCTextOptionsPtr",
- "SGCompressInfo_ptr",
- "SGDeviceList",
- "TextDisplayData",
- "TimeCodeDef",
- "TimeCodeRecord",
- "TweenRecord",
- "VDGamRecPtr",
- "ToneDescription", # XXXX Just lazy: this one is easy.
- "XMLDoc",
- "UInt64", # XXXX lazy
- "UInt64_ptr", # XXXX lazy
-
- # From MediaHandlers
- "ActionsUPP",
- "PrePrerollCompleteUPP",
- "CodecComponentHandle", # Difficult: handle containing list of components.
- "GetMovieCompleteParams", # Immense struct
- "LevelMeterInfoPtr", # Lazy. Also: can be an output parameter!!
- "MediaEQSpectrumBandsRecordPtr", # ditto
-
- # From QuickTimeMusic
- "MusicMIDISendUPP",
- "MusicOfflineDataUPP",
- "TuneCallBackUPP",
- "TunePlayCallBackUPP",
- "GCPart", # Struct with lots of fields
- "GCPart_ptr",
- "GenericKnobDescription", # Struct with lots of fields
- "KnobDescription", # Struct with lots of fields
- "InstrumentAboutInfo", # Struct, not too difficult
- "NoteChannel", # XXXX Lazy. Could be opaque, I think
- "NoteRequest", # XXXX Lazy. Not-too-difficult struct
- "SynthesizerConnections", # Struct with lots of fields
- "SynthesizerDescription", # Struct with lots of fields
- "TuneStatus", # Struct with lots of fields
-
- ]
-
- def makerepairinstructions(self):
- return [
- ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
-
- # Movie controller creation
- ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
- [('MovieController', '*', 'ReturnMode')]),
-
- # NewMovieFromFile
- ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
- [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
-
- # MCDoAction and more
- ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
-
- # SetTimeBaseZero. Does not handle NULLs, unfortunately
- ([('TimeRecord', 'zero', 'OutMode')], [('TimeRecord', 'zero', 'InMode')]),
-
- # ConvertTime and ConvertTimeScale
- ([('TimeRecord', 'inout', 'OutMode')], [('TimeRecord', 'inout', 'InOutMode')]),
- ([('TimeRecord', 'theTime', 'OutMode')], [('TimeRecord', 'theTime', 'InOutMode')]),
-
- # AddTime and SubtractTime
- ([('TimeRecord', 'dst', 'OutMode')], [('TimeRecord', 'dst', 'InOutMode')]),
-
- # Funny definitions
- ([('char_ptr', '*', 'InMode')], [('stringptr', '*', 'InMode')]),
- ([('FSSpecPtr', '*', 'InMode')], [('FSSpec_ptr', '*', 'InMode')]),
- ([('unsigned_char', 'swfVersion', 'OutMode')], [('UInt8', 'swfVersion', 'OutMode')]),
-
- # It seems MusicMIDIPacket if never flagged with const but always used
- # for sending only. If that ever changes this needs to be fixed.
- ([('MusicMIDIPacket', '*', 'OutMode')], [('MusicMIDIPacket_ptr', '*', 'InMode')]),
-
- # QTMusic const-less input parameters
- ([('unsigned_long', 'header', 'OutMode')], [('UnsignedLongPtr', 'header', 'InMode')]),
- ]
-
+ def destination(self, type, name, arglist):
+ classname = "Function"
+ listname = "functions"
+ if arglist:
+ t, n, m = arglist[0]
+ if t in OBJECTS and m == "InMode":
+ classname = "Method"
+ listname = t + "_methods"
+ return classname, listname
+
+ def writeinitialdefs(self):
+ self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
+ self.defsfile.write("xmlIdentifierUnrecognized = -1\n")
+ self.defsfile.write("kControllerMinimum = -0xf777\n")
+ self.defsfile.write("notImplementedMusicOSErr = -2071\n")
+ self.defsfile.write("cantSendToSynthesizerOSErr = -2072\n")
+ self.defsfile.write("cantReceiveFromSynthesizerOSErr = -2073\n")
+ self.defsfile.write("illegalVoiceAllocationOSErr = -2074\n")
+ self.defsfile.write("illegalPartOSErr = -2075\n")
+ self.defsfile.write("illegalChannelOSErr = -2076\n")
+ self.defsfile.write("illegalKnobOSErr = -2077\n")
+ self.defsfile.write("illegalKnobValueOSErr = -2078\n")
+ self.defsfile.write("illegalInstrumentOSErr = -2079\n")
+ self.defsfile.write("illegalControllerOSErr = -2080\n")
+ self.defsfile.write("midiManagerAbsentOSErr = -2081\n")
+ self.defsfile.write("synthesizerNotRespondingOSErr = -2082\n")
+ self.defsfile.write("synthesizerOSErr = -2083\n")
+ self.defsfile.write("illegalNoteChannelOSErr = -2084\n")
+ self.defsfile.write("noteChannelNotAllocatedOSErr = -2085\n")
+ self.defsfile.write("tunePlayerFullOSErr = -2086\n")
+ self.defsfile.write("tuneParseOSErr = -2087\n")
+
+ def makeblacklistnames(self):
+ return [
+ "xmlIdentifierUnrecognized", # const with incompatible definition
+ "DisposeMovie", # Done on python-object disposal
+ "DisposeMovieTrack", # ditto
+ "DisposeTrackMedia", # ditto
+ "DisposeUserData", # ditto
+# "DisposeTimeBase", # ditto
+ "DisposeMovieController", # ditto
+
+ # The following 4 use 'void *' in an uncontrolled way
+ # TBD when I've read the manual...
+ "GetUserDataItem",
+ "SetUserDataItem",
+ "SetTextSampleData",
+ "BeginFullScreen",
+ # bgen gets the argument in/out wrong..
+ "AddTextSample",
+ "AddTESample",
+ "AddHiliteSample",
+ "HiliteTextSample",
+
+ "MakeTrackTimeTable", # Uses long * return?
+ "MakeMediaTimeTable", # ditto
+## "VideoMediaGetStallCount", # Undefined in CW Pro 3 library
+ # OS8 only:
+ 'SpriteMediaGetIndImageProperty', # XXXX Why isn't this in carbon?
+ 'CheckQuickTimeRegistration',
+ 'SetMovieAnchorDataRef',
+ 'GetMovieAnchorDataRef',
+ 'GetMovieLoadState',
+ 'OpenADataHandler',
+ 'MovieMediaGetCurrentMovieProperty',
+ 'MovieMediaGetCurrentTrackProperty',
+ 'MovieMediaGetChildMovieDataReference',
+ 'MovieMediaSetChildMovieDataReference',
+ 'MovieMediaLoadChildMovieFromDataReference',
+ 'Media3DGetViewObject',
+
+ # these are ImageCompression blacklists
+ "GraphicsExportGetInputPtr",
+
+ # QuickTimeComponents
+ # These two need some help: the first returns a point to a databuffer that
+ # the second disposes. Generate manually?
+ "VDCompressDone",
+ "VDReleaseCompressBuffer",
+ "QTVideoOutputGetGWorldParameters", # How useful is this?
+
+ # MediaHandlers
+ "MediaMakeMediaTimeTable", # just lazy
+ "MediaGetSampleDataPointer", # funny output pointer
+
+ # QuickTimeMusic
+ "kControllerMinimum",
+ # These are artefacts of a macro definition
+ "ulen",
+ "_ext",
+ "x",
+ "w1",
+ "w2",
+ ]
+
+ def makeblacklisttypes(self):
+ return [
+ # I don't think we want to do these
+ "QTSyncTaskPtr",
+ # We dont do callbacks yet, so no need for these
+ "QTCallBack",
+ # Skipped for now, due to laziness
+ "TrackEditState",
+ "MovieEditState",
+ "MatrixRecord",
+ "MatrixRecord_ptr",
+ "SampleReferencePtr",
+ "QTTweener",
+ "QTErrorReplacementPtr",
+ "QTRestrictionSet",
+ "QTUUID",
+ "QTUUID_ptr",
+
+ # Routine pointers, not yet.
+ "MoviesErrorUPP",
+ "MoviePreviewCallOutUPP",
+ "MovieDrawingCompleteUPP",
+ "QTCallBackUPP",
+ "TextMediaUPP",
+ "MovieProgressUPP",
+ "MovieRgnCoverUPP",
+ "MCActionFilterUPP",
+ "MCActionFilterWithRefConUPP",
+ "GetMovieUPP",
+ "ModalFilterUPP",
+ "TrackTransferUPP",
+ "MoviePrePrerollCompleteUPP",
+ "MovieExecuteWiredActionsUPP",
+ "QTBandwidthNotificationUPP",
+ "DoMCActionUPP",
+ "QTNextTaskNeededSoonerCallbackUPP",
+
+ "SampleReference64Ptr", # Don't know what this does, yet
+ "QTRuntimeSpriteDescPtr",
+ "QTBandwidthReference",
+ "QTScheduledBandwidthReference",
+ "QTAtomContainer",
+ "SpriteWorld",
+ "Sprite",
+
+ # these are ImageCompression blacklists
+ "ICMDataUPP",
+ "ICMFlushUPP",
+ "ICMCompletionUPP",
+ "ICMProgressUPP",
+ "StdPixUPP",
+ "QDPixUPP",
+ "ICMAlignmentUPP",
+ "ICMCursorShieldedUPP",
+ "ICMMemoryDisposedUPP",
+ "ICMConvertDataFormatUPP",
+ "ModalFilterYDUPP",
+ "FileFilterUPP",
+
+ "CodecNameSpecListPtr",
+ "CodecInfo",
+ "ImageSequence",
+ "MatrixRecordPtr",
+ "ICMDataProcRecordPtr",
+ "OpenCPicParams",
+ "ICMProgressProcRecordPtr",
+ "ICMAlignmentProcRecordPtr",
+ "ICMPixelFormatInfoPtr",
+ "ImageSequenceDataSource",
+ "ConstStrFileNameParam",
+ "ImageTranscodeSequence",
+ "ImageFieldSequence",
+ "Fract",
+ "PixMapPtr",
+ "GWorldFlags",
+ "void_ptr", # XXX Being lazy, this one is doable.
+
+ # These are from QuickTimeComponents
+ "CDataHandlerUPP",
+ "CharDataHandlerUPP",
+ "CommentHandlerUPP",
+ "DataHCompletionUPP",
+ "'MovieExportGetDataUPP",
+ "MovieExportGetPropertyUPP",
+ "PreprocessInstructionHandlerUPP",
+ "SGModalFilterUPP",
+ "StartDocumentHandlerUPP",
+ "StartElementHandlerUPP",
+ "VdigIntUPP",
+ "SGDataUPP",
+ "EndDocumentHandlerUPP",
+ "EndElementHandlerUPP",
+ "VideoBottles", # Record full of UPPs
+
+ "SCParams",
+ "ICMCompletionProcRecordPtr",
+ "DataHVolumeList",
+ "DigitizerInfo",
+ "SGCompressInfo",
+ "SeqGrabExtendedFrameInfoPtr",
+ "SeqGrabFrameInfoPtr",
+ "TCTextOptionsPtr",
+ "SGCompressInfo_ptr",
+ "SGDeviceList",
+ "TextDisplayData",
+ "TimeCodeDef",
+ "TimeCodeRecord",
+ "TweenRecord",
+ "VDGamRecPtr",
+ "ToneDescription", # XXXX Just lazy: this one is easy.
+ "XMLDoc",
+ "UInt64", # XXXX lazy
+ "UInt64_ptr", # XXXX lazy
+
+ # From MediaHandlers
+ "ActionsUPP",
+ "PrePrerollCompleteUPP",
+ "CodecComponentHandle", # Difficult: handle containing list of components.
+ "GetMovieCompleteParams", # Immense struct
+ "LevelMeterInfoPtr", # Lazy. Also: can be an output parameter!!
+ "MediaEQSpectrumBandsRecordPtr", # ditto
+
+ # From QuickTimeMusic
+ "MusicMIDISendUPP",
+ "MusicOfflineDataUPP",
+ "TuneCallBackUPP",
+ "TunePlayCallBackUPP",
+ "GCPart", # Struct with lots of fields
+ "GCPart_ptr",
+ "GenericKnobDescription", # Struct with lots of fields
+ "KnobDescription", # Struct with lots of fields
+ "InstrumentAboutInfo", # Struct, not too difficult
+ "NoteChannel", # XXXX Lazy. Could be opaque, I think
+ "NoteRequest", # XXXX Lazy. Not-too-difficult struct
+ "SynthesizerConnections", # Struct with lots of fields
+ "SynthesizerDescription", # Struct with lots of fields
+ "TuneStatus", # Struct with lots of fields
+
+ ]
+
+ def makerepairinstructions(self):
+ return [
+ ([('FSSpec', '*', 'OutMode')], [('FSSpec_ptr', '*', 'InMode')]),
+
+ # Movie controller creation
+ ([('ComponentInstance', 'NewMovieController', 'ReturnMode')],
+ [('MovieController', '*', 'ReturnMode')]),
+
+ # NewMovieFromFile
+ ([('short', 'resId', 'OutMode'), ('StringPtr', 'resName', 'InMode')],
+ [('short', 'resId', 'InOutMode'), ('dummyStringPtr', 'resName', 'InMode')]),
+
+ # MCDoAction and more
+ ([('void', '*', 'OutMode')], [('mcactionparams', '*', 'InMode')]),
+
+ # SetTimeBaseZero. Does not handle NULLs, unfortunately
+ ([('TimeRecord', 'zero', 'OutMode')], [('TimeRecord', 'zero', 'InMode')]),
+
+ # ConvertTime and ConvertTimeScale
+ ([('TimeRecord', 'inout', 'OutMode')], [('TimeRecord', 'inout', 'InOutMode')]),
+ ([('TimeRecord', 'theTime', 'OutMode')], [('TimeRecord', 'theTime', 'InOutMode')]),
+
+ # AddTime and SubtractTime
+ ([('TimeRecord', 'dst', 'OutMode')], [('TimeRecord', 'dst', 'InOutMode')]),
+
+ # Funny definitions
+ ([('char_ptr', '*', 'InMode')], [('stringptr', '*', 'InMode')]),
+ ([('FSSpecPtr', '*', 'InMode')], [('FSSpec_ptr', '*', 'InMode')]),
+ ([('unsigned_char', 'swfVersion', 'OutMode')], [('UInt8', 'swfVersion', 'OutMode')]),
+
+ # It seems MusicMIDIPacket if never flagged with const but always used
+ # for sending only. If that ever changes this needs to be fixed.
+ ([('MusicMIDIPacket', '*', 'OutMode')], [('MusicMIDIPacket_ptr', '*', 'InMode')]),
+
+ # QTMusic const-less input parameters
+ ([('unsigned_long', 'header', 'OutMode')], [('UnsignedLongPtr', 'header', 'InMode')]),
+ ]
+
if __name__ == "__main__":
- main()
+ main()