diff options
Diffstat (limited to 'progs/tests/getprocaddress.py')
-rw-r--r-- | progs/tests/getprocaddress.py | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/progs/tests/getprocaddress.py b/progs/tests/getprocaddress.py new file mode 100644 index 00000000000..e5d2fbbc6f5 --- /dev/null +++ b/progs/tests/getprocaddress.py @@ -0,0 +1,97 @@ +#!/usr/bin/env python + +# $Id: getprocaddress.py,v 1.1 2002/11/08 15:35:47 brianp Exp $ + +# Helper for the getprocaddress.c test. + + +import re, string + +def PrintHead(): + print """ +struct name_test_pair { + const char *name; + GLboolean (*test)(void *); +}; + +static struct name_test_pair functions[] = {""" + + +def PrintTail(): + print""" + { NULL, NULL } +}; +""" + + +def HaveTest(function): + testFuncs = [ + "glActiveTextureARB", + "glSampleCoverageARB" + ] + if function in testFuncs: + return 1 + else: + return 0 + + +def FindTestFunctions(): + """Scan getprocaddress.c for lines that start with "test_" to find + extension function tests. Return a list of names found.""" + functions = [] + f = open("getprocaddress.c") + if not f: + return functions + for line in f.readlines(): + v = re.search("^test_([a-zA-Z0-9]+)", line) + if v: + func = v.group(1) + #print "Found -%s-" % func + functions.append(func) + f.close + return functions + + +def PrintFunctions(specFile, tests): + + # init some vars + prevCategory = '' + funcName = '' + + f = open(specFile) + for line in f.readlines(): + + # split line into tokens + tokens = string.split(line) + + if len(tokens) > 0 and line[0] != '#': + + if tokens[0] == 'name': + if funcName != '': + if category != prevCategory: + print ' { "-%s", NULL},' % category + prevCategory = category + +# if HaveTest("gl" + funcName): + if funcName in tests: + test = "test_%s" % funcName + else: + test = "NULL" + print ' { "gl%s", %s },' % (funcName, test) + funcName = tokens[1] + + elif tokens[0] == 'category': + category = tokens[1] + + #endif + #endif + #endfor +#enddef + + +tests = FindTestFunctions() +PrintHead() +PrintFunctions("../bin/APIspec", tests) +PrintTail() + + |