forked from enlightenment/efl
eolian gen: utilize the new class C name getter instead of manual concat
This commit is contained in:
parent
e5d016bb63
commit
d3d63ea8d3
|
@ -217,9 +217,11 @@ eo_gen_header_gen(const Eolian_Class *cl, Eina_Strbuf *buf, Eina_Bool legacy)
|
|||
eina_strbuf_free(cdoc);
|
||||
}
|
||||
}
|
||||
eina_strbuf_append_printf(buf, "#define %s_%s %s_%s_get()\n\n",
|
||||
cnameu, _cl_type_str_get(cl, EINA_TRUE),
|
||||
cnamel, _cl_type_str_get(cl, EINA_FALSE));
|
||||
|
||||
Eina_Stringshare *mname = eolian_class_c_name_get(cl);
|
||||
eina_strbuf_append_printf(buf, "#define %s %s_%s_get()\n\n",
|
||||
mname, cnamel, _cl_type_str_get(cl, EINA_FALSE));
|
||||
eina_stringshare_del(mname);
|
||||
|
||||
eina_strbuf_append_printf(buf, "EWAPI const Efl_Class *%s_%s_get(void);\n",
|
||||
cnamel, _cl_type_str_get(cl, EINA_FALSE));
|
||||
|
|
|
@ -1,23 +1,6 @@
|
|||
#include "main.h"
|
||||
#include "docs.h"
|
||||
|
||||
static const char *
|
||||
_cl_type_str_get(const Eolian_Class *cl)
|
||||
{
|
||||
switch (eolian_class_type_get(cl))
|
||||
{
|
||||
case EOLIAN_CLASS_REGULAR:
|
||||
case EOLIAN_CLASS_ABSTRACT:
|
||||
return "CLASS";
|
||||
case EOLIAN_CLASS_MIXIN:
|
||||
return "MIXIN";
|
||||
case EOLIAN_CLASS_INTERFACE:
|
||||
return "INTERFACE";
|
||||
default:
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/* Used to store the function names that will have to be appended
|
||||
* with __eolian during C generation. Needed when params have to
|
||||
* be initialized and for future features.
|
||||
|
@ -279,8 +262,8 @@ _gen_func(const Eolian_Class *cl, const Eolian_Function *fid,
|
|||
Eina_Stringshare *rtpn = rtp ? eolian_type_c_type_get(rtp)
|
||||
: eina_stringshare_add("void");
|
||||
|
||||
char *cname = NULL, *cnameu = NULL, *cnamel = NULL, *ocnamel = NULL;
|
||||
eo_gen_class_names_get(cl, &cname, &cnameu, &cnamel);
|
||||
char *cname = NULL, *cnamel = NULL, *ocnamel = NULL;
|
||||
eo_gen_class_names_get(cl, &cname, NULL, &cnamel);
|
||||
eo_gen_class_names_get(eolian_implement_class_get(impl), NULL, NULL, &ocnamel);
|
||||
|
||||
if (impl_need)
|
||||
|
@ -505,7 +488,11 @@ _gen_func(const Eolian_Class *cl, const Eolian_Function *fid,
|
|||
if (!eolian_function_is_class(fid))
|
||||
eina_strbuf_append(lbuf, "obj");
|
||||
else
|
||||
eina_strbuf_append_printf(lbuf, "%s_%s", cnameu, _cl_type_str_get(cl));
|
||||
{
|
||||
Eina_Stringshare *mname = eolian_class_c_name_get(cl);
|
||||
eina_strbuf_append_printf(lbuf, mname);
|
||||
eina_stringshare_del(mname);
|
||||
}
|
||||
if (has_params)
|
||||
eina_strbuf_append_printf(lbuf, ", %s", eina_strbuf_string_get(params));
|
||||
eina_strbuf_append(lbuf, ");\n}\n");
|
||||
|
@ -516,7 +503,6 @@ _gen_func(const Eolian_Class *cl, const Eolian_Function *fid,
|
|||
}
|
||||
|
||||
free(cname);
|
||||
free(cnameu);
|
||||
free(cnamel);
|
||||
free(ocnamel);
|
||||
|
||||
|
@ -665,8 +651,8 @@ eo_gen_source_gen(const Eolian_Class *cl, Eina_Strbuf *buf)
|
|||
|
||||
_funcs_params_init = eina_hash_pointer_new(NULL);
|
||||
|
||||
char *cname = NULL, *cnameu = NULL, *cnamel = NULL;
|
||||
eo_gen_class_names_get(cl, &cname, &cnameu, &cnamel);
|
||||
char *cname = NULL, *cnamel = NULL;
|
||||
eo_gen_class_names_get(cl, &cname, NULL, &cnamel);
|
||||
|
||||
/* event section, they come first */
|
||||
{
|
||||
|
@ -790,12 +776,10 @@ eo_gen_source_gen(const Eolian_Class *cl, Eina_Strbuf *buf)
|
|||
eina_strbuf_append(buf, ", NULL");
|
||||
EINA_ITERATOR_FOREACH(itr, iname)
|
||||
{
|
||||
char *inameu = NULL;
|
||||
const Eolian_Class *icl = eolian_class_get_by_name(iname);
|
||||
eo_gen_class_names_get(icl, NULL, &inameu, NULL);
|
||||
eina_strbuf_append(buf, ", ");
|
||||
eina_strbuf_append_printf(buf, "%s_%s", inameu, _cl_type_str_get(icl));
|
||||
free(inameu);
|
||||
Eina_Stringshare *mname = eolian_class_c_name_get(icl);
|
||||
eina_strbuf_append_printf(buf, ", %s", mname);
|
||||
eina_stringshare_del(mname);
|
||||
}
|
||||
eina_iterator_free(itr);
|
||||
}
|
||||
|
@ -810,7 +794,6 @@ eo_gen_source_gen(const Eolian_Class *cl, Eina_Strbuf *buf)
|
|||
|
||||
/* and we're done */
|
||||
free(cname);
|
||||
free(cnameu);
|
||||
free(cnamel);
|
||||
eina_hash_free(_funcs_params_init);
|
||||
}
|
||||
|
@ -883,7 +866,7 @@ static void
|
|||
_gen_proto(const Eolian_Class *cl, const Eolian_Function *fid,
|
||||
Eolian_Function_Type ftype, Eina_Strbuf *buf,
|
||||
const Eolian_Implement *impl, const char *dtype,
|
||||
const char *cnamel, const char *cnameu)
|
||||
const char *cnamel)
|
||||
{
|
||||
Eina_Bool impl_same_class = (eolian_implement_class_get(impl) == cl);
|
||||
if (impl_same_class && eolian_function_is_virtual_pure(fid, ftype))
|
||||
|
@ -962,11 +945,12 @@ _gen_proto(const Eolian_Class *cl, const Eolian_Function *fid,
|
|||
if (!strcmp(efname + strlen(efname) - sizeof("destructor") + 1, "destructor"))
|
||||
{
|
||||
Eina_Stringshare *fcn = eolian_function_full_c_name_get(fid, ftype, EINA_FALSE);
|
||||
Eina_Stringshare *mname = eolian_class_c_name_get(cl);
|
||||
eina_strbuf_append(buf, " ");
|
||||
eina_strbuf_append(buf, fcn);
|
||||
eina_stringshare_del(fcn);
|
||||
eina_strbuf_append_printf(buf, "(efl_super(obj, %s_%s)",
|
||||
cnameu, _cl_type_str_get(cl));
|
||||
eina_strbuf_append_printf(buf, "(efl_super(obj, %s)", mname);
|
||||
eina_stringshare_del(mname);
|
||||
if (eina_strbuf_length_get(params))
|
||||
eina_strbuf_append(buf, eina_strbuf_string_get(params));
|
||||
eina_strbuf_append(buf, ");\n");
|
||||
|
@ -984,8 +968,8 @@ eo_gen_impl_gen(const Eolian_Class *cl, Eina_Strbuf *buf)
|
|||
if (!cl)
|
||||
return;
|
||||
|
||||
char *cname = NULL, *cnameu = NULL, *cnamel = NULL;
|
||||
eo_gen_class_names_get(cl, &cname, &cnameu, &cnamel);
|
||||
char *cname = NULL, *cnamel = NULL;
|
||||
eo_gen_class_names_get(cl, &cname, NULL, &cnamel);
|
||||
|
||||
Eina_Strbuf *beg = eina_strbuf_new();
|
||||
|
||||
|
@ -1037,14 +1021,14 @@ eo_gen_impl_gen(const Eolian_Class *cl, Eina_Strbuf *buf)
|
|||
{
|
||||
case EOLIAN_PROP_GET:
|
||||
case EOLIAN_PROP_SET:
|
||||
_gen_proto(cl, fid, ftype, buf, imp, adt, cnamel, cnameu);
|
||||
_gen_proto(cl, fid, ftype, buf, imp, adt, cnamel);
|
||||
break;
|
||||
case EOLIAN_PROPERTY:
|
||||
_gen_proto(cl, fid, EOLIAN_PROP_SET, buf, imp, adt, cnamel, cnameu);
|
||||
_gen_proto(cl, fid, EOLIAN_PROP_GET, buf, imp, adt, cnamel, cnameu);
|
||||
_gen_proto(cl, fid, EOLIAN_PROP_SET, buf, imp, adt, cnamel);
|
||||
_gen_proto(cl, fid, EOLIAN_PROP_GET, buf, imp, adt, cnamel);
|
||||
break;
|
||||
default:
|
||||
_gen_proto(cl, fid, EOLIAN_UNRESOLVED, buf, imp, adt, cnamel, cnameu);
|
||||
_gen_proto(cl, fid, EOLIAN_UNRESOLVED, buf, imp, adt, cnamel);
|
||||
}
|
||||
}
|
||||
eina_iterator_free(itr);
|
||||
|
@ -1089,6 +1073,5 @@ eo_gen_impl_gen(const Eolian_Class *cl, Eina_Strbuf *buf)
|
|||
eina_strbuf_append_printf(buf, "#include \"%s.eo.c\"\n", cnamel);
|
||||
|
||||
free(cname);
|
||||
free(cnameu);
|
||||
free(cnamel);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue