#include <stdlib.h>
#include <sys/stat.h>
-#include "tree.h"
+#include "treefuncs.h"
#include "parse.h"
#include "out.h"
#include "util.h"
(Type *)new_type(0, g_strdup("void"),NULL),
NULL, NULL, NULL, g_strdup("class_init"),
make_func_arg(cl->otype, TRUE, g_strdup("c")),
- NULL, NULL, 0, 0, FALSE);
+ NULL, NULL, NULL, 0, 0, FALSE);
cl->nodes = g_list_prepend(cl->nodes,node);
}
if(!got_init) {
(Type *)new_type(0, g_strdup("void"),NULL),
NULL, NULL, NULL, g_strdup("init"),
make_func_arg(cl->otype, FALSE, g_strdup("o")),
- NULL, NULL, 0, 0, FALSE);
+ NULL, NULL, NULL, 0, 0, FALSE);
cl->nodes = g_list_prepend(cl->nodes,node);
}
}
g_strdup("Gtk:Object"),
NULL, NULL, g_strdup("finalize"),
make_func_arg("Gtk:Object",FALSE,g_strdup("o")),
- NULL,
+ NULL, NULL,
g_strdup("PARENT_HANDLER (o);\n"),
0,0,FALSE);
cl->nodes = g_list_append(cl->nodes,node);
put_signal_args(m);
out_printf(out,");\n}\n");
} else {
- out_printf(out,"\t");
- print_type(out,m->mtype,TRUE);
- out_printf(out,"return_val;\n");
+ out_printf(out, "\t");
+ print_type(out, m->mtype, TRUE);
+ out_printf(out, "return_val = (");
+ print_type(out, m->mtype, TRUE);
+ if(m->defreturn)
+ out_printf(out, ")(%s);\n", m->defreturn);
+ else if(m->onerror)
+ out_printf(out, ")(%s);\n", m->onerror);
+ else
+ out_printf(out, ")(0);\n");
print_preconditions(m);
out_printf(out,"\tgtk_signal_emit (GTK_OBJECT (%s),\n"
"\t\tobject_signals[%s_SIGNAL]",
out_printf(out,");\n}\n");
} else {
GList *li;
- out_printf(out,"\t\treturn (*klass->%s)(%s",m->id,
+ out_printf(out, "\t\treturn (*klass->%s)(%s",m->id,
((FuncArg *)m->args->data)->name);
for(li=m->args->next;li;li=g_list_next(li)) {
FuncArg *fa = li->data;
out_printf(out,",%s",fa->name);
}
- out_printf(out,");\n"
+ out_printf(out, ");\n"
"\telse\n"
"\t\treturn (");
- print_type(out,m->mtype,TRUE);
- out_printf(out,")(%s);\n}\n",
- m->onerror?m->onerror:"0");
+ print_type(out, m->mtype, TRUE);
+ if(m->defreturn)
+ out_printf(out, ")(%s);\n}\n", m->defreturn);
+ else if(m->onerror)
+ out_printf(out, ")(%s);\n}\n", m->onerror);
+ else
+ out_printf(out, ")(0);\n}\n");
}
if(!m->cbuf)