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 = "MacHelp" 9 SHORT = "help" 10 OBJECT = "NOTUSED" 11 12 def main(): 13 input = LONG + ".h" 14 output = SHORT + "gen.py" 15 defsoutput = TOOLBOXDIR + LONG + ".py" 16 scanner = MyScanner(input, output, defsoutput) 17 scanner.scan() 18 scanner.close() 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 # This is non-functional today 33 if t == OBJECT and m == "InMode": 34 classname = "Method" 35 listname = "methods" 36 return classname, listname 37 38 def writeinitialdefs(self): 39 self.defsfile.write("def FOUR_CHAR_CODE(x): return x\n") 40 41 def makeblacklistnames(self): 42 return [ 43 ] 44 45 def makeblacklisttypes(self): 46 return [ 47 ## "TipFunctionUPP", 48 ## "HMMessageRecord", 49 ## "HMMessageRecord_ptr", 50 "HMWindowContentUPP", 51 "HMMenuTitleContentUPP", 52 "HMControlContentUPP", 53 "HMMenuItemContentUPP", 54 # For the moment 55 "HMHelpContentRec", 56 "HMHelpContentRec_ptr", 57 ] 58 59 def makerepairinstructions(self): 60 return [ 61 ## ([("WindowPtr", "*", "OutMode")], 62 ## [("ExistingWindowPtr", "*", "*")]), 63 ] 64 65 if __name__ == "__main__": 66 main() 67