cpython/Mac/Modules/qt/qtscan.py

142 lines
3.7 KiB
Python
Raw Normal View History

1995-11-30 11:03:59 -04:00
# Scan an Apple header file, generating a Python file of generator calls.
import sys
import os
BGENDIR=os.path.join(sys.prefix, ':Tools:bgen:bgen')
sys.path.append(BGENDIR)
1995-11-30 11:03:59 -04:00
from scantools import Scanner
from bgenlocations import TOOLBOXDIR
1995-11-30 11:03:59 -04:00
LONG = "QuickTime"
SHORT = "qt"
OBJECTS = ("Movie", "Track", "Media", "UserData", "TimeBase", "MovieController")
1995-11-30 11:03:59 -04:00
def main():
input = "Movies.h"
output = SHORT + "gen.py"
defsoutput = TOOLBOXDIR + LONG + ".py"
1995-11-30 11:03:59 -04:00
scanner = MyScanner(input, output, defsoutput)
scanner.scan()
scanner.close()
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]
1995-11-30 13:42:08 -04:00
if t in OBJECTS and m == "InMode":
1995-11-30 11:03:59 -04:00
classname = "Method"
1995-11-30 13:42:08 -04:00
listname = t + "_methods"
1995-11-30 11:03:59 -04:00
return classname, listname
def writeinitialdefs(self):
self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
1995-11-30 11:03:59 -04:00
def makeblacklistnames(self):
return [
"DisposeMovie", # Done on python-object disposal
1995-11-30 13:42:08 -04:00
"DisposeMovieTrack", # ditto
"DisposeTrackMedia", # ditto
"DisposeUserData", # ditto
"DisposeTimeBase", # ditto
"DisposeMovieController", # ditto
1997-09-01 12:38:24 -03:00
1995-11-30 13:42:08 -04:00
# The following 4 use 'void *' in an uncontrolled way
# TBD when I've read the manual...
"GetUserDataItem",
"SetUserDataItem",
"SetTextSampleData",
"BeginFullScreen",
1995-11-30 13:42:08 -04:00
# bgen gets the argument in/out wrong..
"AddTextSample",
"AddTESample",
"AddHiliteSample",
"HiliteTextSample",
# Missing in CW11 quicktime library
"SpriteMediaGetDisplayedSampleNumber",
"SpriteMediaGetIndImageDescription",
"SpriteMediaCountImages",
"SpriteMediaCountSprites",
"SpriteMediaHitTestSprites",
"SpriteMediaGetProperty",
"SpriteMediaSetProperty",
"TextMediaSetTextSampleData",
"TextMediaHiliteTextSample",
"TextMediaFindNextText",
"TextMediaAddHiliteSample",
"TextMediaAddTESample",
"TextMediaAddTextSample",
"VideoMediaGetStatistics",
"VideoMediaResetStatistics",
"EndFullScreen",
"NewMovieFromDataRef",
"MCPtInController",
"MCRemoveAMovie",
"MCRemoveAllMovies",
"MCInvalidate",
"InvalidateMovieRegion",
"GetMovieCompositeBufferFlags",
"SetMovieCompositeBufferFlags",
"SetTrackSoundLocalizationSettings",
"GetTrackSoundLocalizationSettings",
"GetMovieNaturalBoundsRect",
1995-11-30 11:03:59 -04:00
]
def makeblacklisttypes(self):
return [
1995-11-30 13:42:08 -04:00
# I don't think we want to do these
"QTSyncTaskPtr",
# We dont do callbacks yet, so no need for these
1995-11-30 11:03:59 -04:00
"QTCallBack",
1995-11-30 13:42:08 -04:00
# Skipped for now, due to laziness
1995-11-30 11:03:59 -04:00
"TimeRecord",
"TimeRecord_ptr",
"TrackEditState",
"MovieEditState",
1995-11-30 13:42:08 -04:00
"MatrixRecord",
"MatrixRecord_ptr",
"SampleReferencePtr",
1997-09-01 12:38:24 -03:00
1995-11-30 13:42:08 -04:00
# Routine pointers, not yet.
"MoviesErrorUPP",
"MoviePreviewCallOutUPP",
1995-11-30 11:03:59 -04:00
"MovieDrawingCompleteUPP",
"QTCallBackUPP",
"TextMediaUPP",
"MovieProgressUPP",
"MovieRgnCoverUPP",
"MCActionFilterUPP",
"MCActionFilterWithRefConUPP",
1995-11-30 13:42:08 -04:00
"GetMovieUPP",
"ModalFilterUPP",
"TrackTransferUPP",
"QTAtomContainer",
"SpriteWorld",
"Sprite",
1995-11-30 11:03:59 -04:00
]
def makerepairinstructions(self):
return [
1995-11-30 13:42:08 -04:00
([('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')]),
1995-11-30 11:03:59 -04:00
]
if __name__ == "__main__":
main()