# HG changeset patch # User Paul Boddie # Date 1484240581 -3600 # Node ID f78e88fc732126cdbfc7ba28d0dde2dd2e31fbb4 # Parent 4b362aa64c6d86970970826fb955d72cbbaee49e Added a convenience macro for testing instance compatibility. diff -r 4b362aa64c6d -r f78e88fc7321 templates/progops.h --- a/templates/progops.h Thu Jan 12 16:32:06 2017 +0100 +++ b/templates/progops.h Thu Jan 12 18:03:01 2017 +0100 @@ -74,4 +74,8 @@ int __BOOL(__attr attr); +/* Convenience definitions. */ + +#define __ISINSTANCE(__ATTR, __TYPE) __BOOL(__fn_native_introspection_isinstance((__attr[]) {{0, 0}, __ATTR, __TYPE})) + #endif /* __PROGOPS_H__ */ diff -r 4b362aa64c6d -r f78e88fc7321 translator.py --- a/translator.py Thu Jan 12 16:32:06 2017 +0100 +++ b/translator.py Thu Jan 12 18:03:01 2017 +0100 @@ -1510,7 +1510,7 @@ if name is not None: name_ref = self.process_structure_node(name) - self.writeline("else if (__BOOL(__fn_native_introspection_isinstance((__attr[]) {{0, 0}, __tmp_exc.arg, %s})))" % name_ref) + self.writeline("else if (__ISINSTANCE(__tmp_exc.arg, %s))" % name_ref) else: self.writeline("else if (1)")