def trace_function_impl(self, function):
pvalue = self.function_pointer_value(function)
print function.prototype() + ' {'
- print ' static const char * __args[%u] = {%s};' % (len(function.args), ', '.join(['"%s"' % arg.name for arg in function.args]))
+ if function.args:
+ print ' static const char * __args[%u] = {%s};' % (len(function.args), ', '.join(['"%s"' % arg.name for arg in function.args]))
+ else:
+ print ' static const char ** __args = NULL;'
print ' static const Trace::FunctionSig __sig = {%u, "%s", %u, __args};' % (int(function.id), function.name, len(function.args))
if function.type is stdapi.Void:
result = ''
from wglapi import wglapi
from trace import Tracer
+from codegen import *
public_symbols = set([
def wrap_ret(self, function, instance):
if function.name == "wglGetProcAddress":
print ' if (%s) {' % instance
- else_ = ''
- for f in wglapi.functions:
+
+ func_dict = dict([(f.name, f) for f in wglapi.functions])
+
+ def handle_case(function_name):
+ f = func_dict[function_name]
ptype = self.function_pointer_type(f)
pvalue = self.function_pointer_value(f)
- print ' %sif (!strcmp("%s", lpszProc)) {' % (else_, f.name)
- print ' %s = (%s)%s;' % (pvalue, ptype, instance)
- print ' %s = (%s)&%s;' % (instance, function.type, f.name);
- print ' }'
- else_ = 'else '
- print ' %s{' % (else_,)
- print ' OS::DebugMessage("apitrace: unknown function \\"%s\\"\\n", lpszProc);'
- print ' }'
+ print ' %s = (%s)%s;' % (pvalue, ptype, instance)
+ print ' %s = (%s)&%s;' % (instance, function.type, f.name);
+
+ def handle_default():
+ print ' OS::DebugMessage("apitrace: unknown function \\"%s\\"\\n", lpszProc);'
+
+ string_switch('lpszProc', func_dict.keys(), handle_case, handle_default)
print ' }'