Home | History | Annotate | Download | only in osa
      1 # Scan an Apple header file, generating a Python file of generator calls.
      2 
      3 import sys
      4 from bgenlocations import TOOLBOXDIR, BGENDIR
      5 sys.path.append(BGENDIR)
      6 from scantools import Scanner
      7 
      8 LONG = "OSAconst"
      9 SHORT = "osa"
     10 
     11 def main():
     12     input = "OSA.h"
     13     output = SHORT + "gen.py"
     14     defsoutput = TOOLBOXDIR + LONG + ".py"
     15     scanner = MyScanner(input, output, defsoutput)
     16     scanner.scan()
     17     scanner.close()
     18     scanner.gentypetest(SHORT+"typetest.py")
     19     print "=== Testing definitions output code ==="
     20     execfile(defsoutput, {}, {})
     21     print "=== Done scanning and generating, now importing the generated code... ==="
     22     exec "import " + SHORT + "support"
     23     print "=== Done.  It's up to you to compile it now! ==="
     24 
     25 class MyScanner(Scanner):
     26 
     27     def destination(self, type, name, arglist):
     28         classname = "Function"
     29         listname = "functions"
     30         if arglist:
     31             t, n, m = arglist[0]
     32             if t == "ComponentInstance" and m == "InMode":
     33                 classname = "Method"
     34                 listname = "methods"
     35         return classname, listname
     36 
     37     def writeinitialdefs(self):
     38         self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n")
     39         self.defsfile.write("from Carbon.AppleEvents import *\n")
     40         self.defsfile.write("kAEUseStandardDispatch = -1\n")
     41 
     42     def makeblacklistnames(self):
     43         return [
     44                 "OSACopyScript",
     45                 ]
     46 
     47     def makeblacklisttypes(self):
     48         return [
     49                 "OSALocalOrGlobal",
     50                 "OSACreateAppleEventUPP",
     51                 "OSAActiveUPP",
     52                 "AEEventHandlerUPP",
     53                 "OSASendUPP",
     54                 ]
     55 
     56     def makerepairinstructions(self):
     57         return [
     58                 ]
     59 
     60 if __name__ == "__main__":
     61     main()
     62