Commit e20a52c8adfac1a481b88d77088441a3f3dc9a04
1 parent
b7d95b1a
add a macro to make a retcall on the parent class
Showing
1 changed file
with
16 additions
and
0 deletions
... | ... | @@ -262,6 +262,22 @@ |
262 | 262 | iface->method(object, ##__VA_ARGS__); \ |
263 | 263 | } while(0) |
264 | 264 | |
265 | +/* | |
266 | + * Like retcall but this calls the implementation of the direct parent | |
267 | + * class of this object. | |
268 | + * | |
269 | + * \see TR_RETCALL | |
270 | + */ | |
271 | +#define TR_PARENTRETCALL(object,_iface,method,ret,...) \ | |
272 | + do { \ | |
273 | + struct i_##_iface * iface; \ | |
274 | + TR_class_ptr pc_class = TR_GET_CLASS((object)); \ | |
275 | + assert(TR_HAS_PARENT(pc_class)); \ | |
276 | + _TR_CALL(pc_class->parent, _iface, method, ##__VA_ARGS__); \ | |
277 | + ret = iface->method(object, ##__VA_ARGS__); \ | |
278 | + } while(0) | |
279 | + | |
280 | + | |
265 | 281 | /** |
266 | 282 | * Definition of the metadata structures and symbols used to |
267 | 283 | * manage classe. | ... | ... |
Please
register
or
login
to post a comment