- out_printf(out,"#define PARENT_HANDLER(args...) \\\n"
- "\t{ if(%s_CLASS(parent_class)->%s) \\\n"
- "\t\t(* %s_CLASS(parent_class)->%s)(##args); }\n",
- s,m->id,s,m->id);
+ if(is_void) {
+ out_printf(out,"#define PARENT_HANDLER(args...) \\\n"
+ "\t{ if(%s_CLASS(parent_class)->%s) \\\n"
+ "\t\t(* %s_CLASS(parent_class)->%s)(##args); }\n",
+ s,m->id,s,m->id);
+ } else {
+ out_printf(out,"#define PARENT_HANDLER(args...) \\\n"
+ "\t((%s_CLASS(parent_class)->%s)? \\\n"
+ "\t\t(* %s_CLASS(parent_class)->%s)(##args): \\\n"
+ "\t\t(",
+ s,m->id,s,m->id);
+ out_printf(out,"(");
+ print_type(out,m->mtype,TRUE);
+ out_printf(out,")%s))\n",
+ m->onerror?m->onerror:"0");
+ }