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