1d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansen# Scan an Apple header file, generating a Python file of generator calls. 2d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansen 3d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansenimport sys 4d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansenfrom bgenlocations import TOOLBOXDIR, BGENDIR 5d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansensys.path.append(BGENDIR) 6d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansenfrom scantools import Scanner_OSX 7d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansen 8d59f8d0691aff6649c70bfc764f7edce8d5f105cJack JansenLONG = "AppleHelp" 9d59f8d0691aff6649c70bfc764f7edce8d5f105cJack JansenSHORT = "ah" 10d59f8d0691aff6649c70bfc764f7edce8d5f105cJack JansenOBJECT = "NOTUSED" 11d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansen 12d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansendef main(): 13182b5aca27d376b08a2904bed42b751496f932f3Tim Peters input = LONG + ".h" 14182b5aca27d376b08a2904bed42b751496f932f3Tim Peters output = SHORT + "gen.py" 15182b5aca27d376b08a2904bed42b751496f932f3Tim Peters defsoutput = TOOLBOXDIR + LONG + ".py" 16182b5aca27d376b08a2904bed42b751496f932f3Tim Peters scanner = MyScanner(input, output, defsoutput) 17182b5aca27d376b08a2904bed42b751496f932f3Tim Peters scanner.scan() 18182b5aca27d376b08a2904bed42b751496f932f3Tim Peters scanner.close() 19182b5aca27d376b08a2904bed42b751496f932f3Tim Peters print "=== Testing definitions output code ===" 20182b5aca27d376b08a2904bed42b751496f932f3Tim Peters execfile(defsoutput, {}, {}) 21182b5aca27d376b08a2904bed42b751496f932f3Tim Peters print "=== Done scanning and generating, now importing the generated code... ===" 22182b5aca27d376b08a2904bed42b751496f932f3Tim Peters exec "import " + SHORT + "support" 23182b5aca27d376b08a2904bed42b751496f932f3Tim Peters print "=== Done. It's up to you to compile it now! ===" 24d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansen 25d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansenclass MyScanner(Scanner_OSX): 26d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansen 27182b5aca27d376b08a2904bed42b751496f932f3Tim Peters def destination(self, type, name, arglist): 28182b5aca27d376b08a2904bed42b751496f932f3Tim Peters classname = "Function" 29182b5aca27d376b08a2904bed42b751496f932f3Tim Peters listname = "functions" 30182b5aca27d376b08a2904bed42b751496f932f3Tim Peters if arglist: 31182b5aca27d376b08a2904bed42b751496f932f3Tim Peters t, n, m = arglist[0] 32182b5aca27d376b08a2904bed42b751496f932f3Tim Peters # This is non-functional today 33182b5aca27d376b08a2904bed42b751496f932f3Tim Peters if t == OBJECT and m == "InMode": 34182b5aca27d376b08a2904bed42b751496f932f3Tim Peters classname = "Method" 35182b5aca27d376b08a2904bed42b751496f932f3Tim Peters listname = "methods" 36182b5aca27d376b08a2904bed42b751496f932f3Tim Peters return classname, listname 37182b5aca27d376b08a2904bed42b751496f932f3Tim Peters 38182b5aca27d376b08a2904bed42b751496f932f3Tim Peters def makeblacklistnames(self): 39182b5aca27d376b08a2904bed42b751496f932f3Tim Peters return [ 40182b5aca27d376b08a2904bed42b751496f932f3Tim Peters ] 41182b5aca27d376b08a2904bed42b751496f932f3Tim Peters 42182b5aca27d376b08a2904bed42b751496f932f3Tim Peters def makeblacklisttypes(self): 43182b5aca27d376b08a2904bed42b751496f932f3Tim Peters return [ 44182b5aca27d376b08a2904bed42b751496f932f3Tim Peters ] 45182b5aca27d376b08a2904bed42b751496f932f3Tim Peters 46182b5aca27d376b08a2904bed42b751496f932f3Tim Peters def makerepairinstructions(self): 47182b5aca27d376b08a2904bed42b751496f932f3Tim Peters return [ 48182b5aca27d376b08a2904bed42b751496f932f3Tim Peters ] 49182b5aca27d376b08a2904bed42b751496f932f3Tim Peters 50d59f8d0691aff6649c70bfc764f7edce8d5f105cJack Jansenif __name__ == "__main__": 51182b5aca27d376b08a2904bed42b751496f932f3Tim Peters main() 52