symbian-qemu-0.9.1-12/python-2.6.1/Mac/Modules/snd/sndscan.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 # Scan Sound.h header file, generate sndgen.py and Sound.py files.
       
     2 # Then import sndsupport (which execs sndgen.py) to generate Sndmodule.c.
       
     3 # (Should learn how to tell the compiler to compile it as well.)
       
     4 
       
     5 import sys
       
     6 from bgenlocations import TOOLBOXDIR, BGENDIR
       
     7 sys.path.append(BGENDIR)
       
     8 
       
     9 from scantools import Scanner
       
    10 
       
    11 def main():
       
    12     input = "Sound.h"
       
    13     output = "sndgen.py"
       
    14     defsoutput = TOOLBOXDIR + "Sound.py"
       
    15     scanner = SoundScanner(input, output, defsoutput)
       
    16     scanner.scan()
       
    17     scanner.close()
       
    18     print "=== Testing definitions output code ==="
       
    19     execfile(defsoutput, {}, {})
       
    20     print "=== Done scanning and generating, now doing 'import sndsupport' ==="
       
    21     import sndsupport
       
    22     print "=== Done.  It's up to you to compile Sndmodule.c ==="
       
    23 
       
    24 class SoundScanner(Scanner):
       
    25 
       
    26     def destination(self, type, name, arglist):
       
    27         classname = "SndFunction"
       
    28         listname = "functions"
       
    29         if arglist:
       
    30             t, n, m = arglist[0]
       
    31             if t == "SndChannelPtr" and m == "InMode":
       
    32                 classname = "SndMethod"
       
    33                 listname = "sndmethods"
       
    34         return classname, listname
       
    35 
       
    36     def writeinitialdefs(self):
       
    37         self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
       
    38 
       
    39     def makeblacklistnames(self):
       
    40         return [
       
    41                 'SndDisposeChannel',            # automatic on deallocation
       
    42                 'SndAddModifier',               # for internal use only
       
    43                 'SndPlayDoubleBuffer',          # very low level routine
       
    44                 # Missing from libraries (UH332)
       
    45                 'SoundManagerSetInfo',
       
    46                 'SoundManagerGetInfo',
       
    47                 # Constants with funny definitions
       
    48                 'rate48khz',
       
    49                 'rate44khz',
       
    50                 'kInvalidSource',
       
    51                 # OS8 only:
       
    52                 'MACEVersion',
       
    53                 'SPBRecordToFile',
       
    54                 'Exp1to6',
       
    55                 'Comp6to1',
       
    56                 'Exp1to3',
       
    57                 'Comp3to1',
       
    58                 'SndControl',
       
    59                 'SndStopFilePlay',
       
    60                 'SndStartFilePlay',
       
    61                 'SndPauseFilePlay',
       
    62                 'SndRecordToFile',
       
    63 
       
    64                 ]
       
    65 
       
    66     def makeblacklisttypes(self):
       
    67         return [
       
    68                 "GetSoundVol",
       
    69                 "SetSoundVol",
       
    70                 "UnsignedFixed",
       
    71                 # Don't have the time to dig into this...
       
    72                 "Component",
       
    73                 "ComponentInstance",
       
    74                 "SoundComponentDataPtr",
       
    75                 "SoundComponentData",
       
    76                 "SoundComponentData_ptr",
       
    77                 "SoundConverter",
       
    78                 ]
       
    79 
       
    80     def makerepairinstructions(self):
       
    81         return [
       
    82                 ([("Str255", "*", "InMode")],
       
    83                  [("*", "*", "OutMode")]),
       
    84 
       
    85                 ([("void_ptr", "*", "InMode"), ("long", "*", "InMode")],
       
    86                  [("InBuffer", "*", "*")]),
       
    87 
       
    88                 ([("void", "*", "OutMode"), ("long", "*", "InMode"),
       
    89                                             ("long", "*", "OutMode")],
       
    90                  [("VarVarOutBuffer", "*", "InOutMode")]),
       
    91 
       
    92                 ([("SCStatusPtr", "*", "InMode")],
       
    93                  [("SCStatus", "*", "OutMode")]),
       
    94 
       
    95                 ([("SMStatusPtr", "*", "InMode")],
       
    96                  [("SMStatus", "*", "OutMode")]),
       
    97 
       
    98                 ([("CompressionInfoPtr", "*", "InMode")],
       
    99                  [("CompressionInfo", "*", "OutMode")]),
       
   100 
       
   101                 # For SndPlay's SndListHandle argument
       
   102                 ([("Handle", "sndHdl", "InMode")],
       
   103                  [("SndListHandle", "*", "*")]),
       
   104 
       
   105                 # For SndStartFilePlay
       
   106                 ([("long", "bufferSize", "InMode"), ("void", "theBuffer", "OutMode")],
       
   107                  [("*", "*", "*"), ("FakeType('0')", "*", "InMode")]),
       
   108 
       
   109                 # For Comp3to1 etc.
       
   110                 ([("void_ptr", "inBuffer", "InMode"),
       
   111                   ("void", "outBuffer", "OutMode"),
       
   112                   ("unsigned_long", "cnt", "InMode")],
       
   113                  [("InOutBuffer", "buffer", "InOutMode")]),
       
   114 
       
   115                 # Ditto
       
   116 ##                      ([("void_ptr", "inState", "InMode"), ("void", "outState", "OutMode")],
       
   117 ##                       [("InOutBuf128", "state", "InOutMode")]),
       
   118                 ([("StateBlockPtr", "inState", "InMode"), ("StateBlockPtr", "outState", "InMode")],
       
   119                  [("StateBlock", "state", "InOutMode")]),
       
   120 
       
   121                 # Catch-all for the last couple of void pointers
       
   122                 ([("void", "*", "OutMode")],
       
   123                  [("void_ptr", "*", "InMode")]),
       
   124                 ]
       
   125 
       
   126 if __name__ == "__main__":
       
   127     main()