return "";
}
-int
-eo_gen_type_c_params_gen(Eina_Strbuf *buf, Eolian_Function_Parameter *pr, Eolian_Function_Type ftype, int *rpid)
+static int
+_gen_param(Eina_Strbuf *buf, Eolian_Function_Parameter *pr, Eolian_Function_Type ftype, int *rpid)
{
const Eolian_Type *prt = eolian_parameter_type_get(pr);
const Eolian_Typedecl *ptd = eolian_type_typedecl_get(prt);
return 1;
}
-static void
-_gen_params(Eina_Iterator *itr, Eina_Strbuf *buf, Eina_Strbuf **flagbuf, int *nidx, Eolian_Function_Type ftype)
+void
+eo_gen_params(Eina_Iterator *itr, Eina_Strbuf *buf, Eina_Strbuf **flagbuf, int *nidx, Eolian_Function_Type ftype)
{
Eolian_Function_Parameter *pr;
EINA_ITERATOR_FOREACH(itr, pr)
int rpid = 0;
if (*nidx)
eina_strbuf_append(buf, ", ");
- *nidx += eo_gen_type_c_params_gen(buf, pr, ftype, &rpid);
+ *nidx += _gen_param(buf, pr, ftype, &rpid);
- if (!eolian_parameter_is_nonull(pr))
+ if (!eolian_parameter_is_nonull(pr) || !flagbuf)
continue;
if (!*flagbuf)
eina_strbuf_append(buf, "Eo *obj");
}
- _gen_params(eolian_property_keys_get(fid, ftype), buf, &flagbuf, &nidx, EOLIAN_PROPERTY);
+ eo_gen_params(eolian_property_keys_get(fid, ftype), buf, &flagbuf, &nidx, EOLIAN_PROPERTY);
if (!var_as_ret)
{
itr = eolian_property_values_get(fid, ftype);
else
itr = eolian_function_parameters_get(fid);
- _gen_params(itr, buf, &flagbuf, &nidx, ftype);
+ eo_gen_params(itr, buf, &flagbuf, &nidx, ftype);
}
if (flagbuf)
#include "main.h"
+#include "headers.h"
#include "docs.h"
static Eina_Strbuf *
/* Parameters */
eina_strbuf_append(buf, "(void *data");
- Eina_Iterator *params = eolian_function_parameters_get(fid);
- const Eolian_Function_Parameter *param = NULL;
- EINA_ITERATOR_FOREACH(params, param)
- {
- const Eolian_Typedecl *ptd = eolian_type_typedecl_get(eolian_parameter_type_get(param));
- Eina_Stringshare *pn = eolian_parameter_name_get(param);
- Eina_Stringshare *pt = eolian_type_c_type_get(eolian_parameter_type_get(param), EOLIAN_C_TYPE_PARAM);
-
- if (!pn)
- pn = ""; // FIXME add some kind of param1/param2 control for null?
-
- if (ptd && eolian_typedecl_type_get(ptd) == EOLIAN_TYPEDECL_FUNCTION_POINTER)
- eina_strbuf_append_printf(buf, ", void *%s_data, %s %s, Eina_Free_Cb %s_free_cb",
- pn, pt, pn, pn);
- else
- eina_strbuf_append_printf(buf, ", %s %s", pt, pn);
-
- }
+ int nidx = 1;
+ eo_gen_params(eolian_function_parameters_get(fid), buf, NULL, &nidx, EOLIAN_FUNCTION_POINTER);
eina_strbuf_append(buf, ")");
break;
typedef const char * (*SimpleFunc)(void *data, int a, double b);
-typedef double (*ComplexFunc)(void *data, const char * c, const char * d);
+typedef double (*ComplexFunc)(void *data, const char *c, const char **d);
typedef void (*FuncAsArgFunc)(void *data, void *cb_data, VoidFunc cb, Eina_Free_Cb cb_free_cb, void *another_cb_data, SimpleFunc another_cb, Eina_Free_Cb another_cb_free_cb);