eolian: properly replace commas in event_c_name_get and cleanup generator

This commit is contained in:
Daniel Kolesa 2014-09-25 15:09:36 +01:00
parent a1552fe6a9
commit 13a9650491
2 changed files with 10 additions and 32 deletions

View File

@ -265,7 +265,7 @@ eo_header_generate(const Eolian_Class *class, Eina_Strbuf *buf)
itr = eolian_class_events_get(class);
EINA_ITERATOR_FOREACH(itr, event)
{
const char *evname = eolian_event_c_name_get(event);
Eina_Stringshare *evname = eolian_event_c_name_get(event);
const char *evdesc = eolian_event_description_get(event);
Eolian_Object_Scope scope = eolian_event_scope_get(event);
@ -287,14 +287,9 @@ eo_header_generate(const Eolian_Class *class, Eina_Strbuf *buf)
eina_strbuf_prepend(tmpbuf," * ");
eina_strbuf_append_printf(str_ev, "/**\n%s\n */\n", eina_strbuf_string_get(tmpbuf));
eina_strbuf_reset(tmpbuf);
eina_strbuf_append(tmpbuf, evname);
eina_strbuf_append_printf(str_ev, "#define %s (&(_%s))\n", evname, evname);
eina_strbuf_append_printf(str_extrn_ev, "EOAPI extern const Eo_Event_Description _%s;\n", evname);
eina_stringshare_del(evname);
eina_strbuf_replace_all(tmpbuf, ",", "_");
char* s = (char *)eina_strbuf_string_get(tmpbuf);
eina_str_toupper(&s);
eina_strbuf_append_printf(str_ev, "#define %s (&(_%s))\n", s, s);
eina_strbuf_append_printf(str_extrn_ev, "EOAPI extern const Eo_Event_Description _%s;\n", s);
if (scope == EOLIAN_SCOPE_PROTECTED)
{
@ -662,35 +657,25 @@ eo_source_beginning_generate(const Eolian_Class *class, Eina_Strbuf *buf)
Eina_Iterator *itr;
Eina_Strbuf *tmpbuf = eina_strbuf_new();
Eina_Strbuf *str_ev = eina_strbuf_new();
Eolian_Event *event;
itr = eolian_class_events_get(class);
EINA_ITERATOR_FOREACH(itr, event)
{
const char *evname = eolian_event_c_name_get(event);
Eina_Stringshare *evname = eolian_event_c_name_get(event);
const char *evdesc = eolian_event_description_get(event);
char *evdesc_line1;
char *p;
eina_strbuf_reset(str_ev);
evdesc_line1 = _source_desc_get(evdesc);
eina_strbuf_append(str_ev, evname);
eina_stringshare_del(evname);
p = (char *)eina_strbuf_string_get(str_ev);
eina_str_toupper(&p);
eina_strbuf_replace_all(str_ev, ",", "_");
char *evdesc_line1 = _source_desc_get(evdesc);
eina_strbuf_append_printf(tmpbuf,
"EOAPI const Eo_Event_Description _%s =\n EO_EVENT_DESCRIPTION(\"%s\", \"%s\");\n",
eina_strbuf_string_get(str_ev), eolian_event_name_get(event), evdesc_line1);
evname, eolian_event_name_get(event), evdesc_line1);
eina_stringshare_del(evname);
free(evdesc_line1);
}
eina_iterator_free(itr);
eina_strbuf_append(buf, eina_strbuf_string_get(tmpbuf));
eina_strbuf_free(str_ev);
eina_strbuf_free(tmpbuf);
return EINA_TRUE;
}
@ -880,16 +865,9 @@ eo_source_end_generate(const Eolian_Class *class, Eina_Strbuf *buf)
itr = eolian_class_events_get(class);
EINA_ITERATOR_FOREACH(itr, event)
{
const char *evname = eolian_event_c_name_get(event);
char *p;
eina_strbuf_reset(tmpbuf);
eina_strbuf_append(tmpbuf, evname);
Eina_Stringshare *evname = eolian_event_c_name_get(event);
eina_strbuf_append_printf(str_ev, "\n %s,", evname);
eina_stringshare_del(evname);
p = (char *)eina_strbuf_string_get(tmpbuf);
eina_str_toupper(&p);
eina_strbuf_replace_all(tmpbuf, ",", "_");
eina_strbuf_append_printf(str_ev, "\n %s,", eina_strbuf_string_get(tmpbuf));
}
eina_iterator_free(itr);

View File

@ -41,6 +41,6 @@ eolian_event_c_name_get(const Eolian_Event *event)
snprintf(buf, sizeof(buf), "%s_EVENT_%s", event->klass->full_name,
event->name);
eina_str_toupper(&tmp);
while ((tmp = strchr(tmp, '.'))) *tmp = '_';
while ((tmp = strpbrk(tmp, ".,"))) *tmp = '_';
return eina_stringshare_add(buf);
}