X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=dispatch.py;h=a2f23e92d5f126bc47162f18ce8f9d4d7f9d7645;hb=67528023641345f3439a2ba75e11cd1a31157fcf;hp=bfd332bd5dfd029d54f98dcc43ff6b6ba94e338b;hpb=2603acf99672788aaf9797c989cddc39fa0b35cb;p=apitrace diff --git a/dispatch.py b/dispatch.py index bfd332b..a2f23e9 100644 --- a/dispatch.py +++ b/dispatch.py @@ -28,7 +28,7 @@ """ -import stdapi +import specs.stdapi as stdapi def function_pointer_type(function): @@ -49,7 +49,6 @@ class Dispatcher: # # static __PROC __getPublicProcAddress(const char *name); # static __PROC __getPrivateProcAddress(const char *name); - # static void __abort(void); # raise NotImplementedError @@ -62,7 +61,9 @@ class Dispatcher: # functions print '#ifdef RETRACE' for function in api.functions: - if not self.is_public_function(function): + if self.is_public_function(function): + print '#define __%s %s' % (function.name, function.name) + else: print '#define %s __%s' % (function.name, function.name) print '#endif /* RETRACE */' print @@ -77,6 +78,7 @@ class Dispatcher: print 'static %s %s = NULL;' % (ptype, pvalue) print print 'static inline ' + function.prototype('__' + function.name) + ' {' + print ' const char *__name = "%s";' % function.name if function.type is stdapi.Void: ret = '' else: @@ -100,22 +102,23 @@ class Dispatcher: else: get_proc_address = '__getPrivateProcAddress' print ' if (!%s) {' % (pvalue,) - print ' %s = (%s)%s("%s");' % (pvalue, ptype, get_proc_address, function.name) + print ' %s = (%s)%s(__name);' % (pvalue, ptype, get_proc_address) print ' if (!%s) {' % (pvalue,) self.fail_function(function) print ' }' print ' }' def fail_function(self, function): - print ' OS::DebugMessage("error: unavailable function \\"%s\\"\\n");' % function.name - if function.fail is not None: + if function.type is stdapi.Void or function.fail is not None: + print r' os::log("warning: ignoring call to unavailable function %s\n", __name);' if function.type is stdapi.Void: - assert function.fail == '' + assert function.fail is None print ' return;' else: - assert function.fail != '' + assert function.fail is not None print ' return %s;' % function.fail else: - print ' __abort();' + print r' os::log("error: unavailable function %s\n", __name);' + print r' os::abort();'