From 2df5eae338c1e419207ebfe68a476af2eeb0da5b Mon Sep 17 00:00:00 2001 From: Daniel Kolesa Date: Wed, 13 Aug 2014 14:54:54 +0100 Subject: [PATCH] eolian/generator: support for private and protected events --- src/bin/eolian/eo_generator.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c index cb47c21bf1..02402121a8 100644 --- a/src/bin/eolian/eo_generator.c +++ b/src/bin/eolian/eo_generator.c @@ -273,13 +273,25 @@ eo_header_generate(const Eolian_Class *class, Eina_Strbuf *buf) { const char *evname = eolian_event_name_get(event); const char *evdesc = eolian_event_description_get(event); + Eolian_Object_Scope scope = eolian_event_scope_get(event); + + if (scope == EOLIAN_SCOPE_PRIVATE) + continue; + + if (scope == EOLIAN_SCOPE_PROTECTED) + { + eina_strbuf_append_printf(str_ev, "\n#ifdef %s_PROTECTED\n", class_env.upper_classname); + eina_strbuf_append_printf(str_extrn_ev, "#ifdef %s_PROTECTED\n", class_env.upper_classname); + } + else + eina_strbuf_append_char(str_ev, '\n'); if (!evdesc) evdesc = "No description"; eina_strbuf_reset(tmpbuf); eina_strbuf_append(tmpbuf, evdesc); eina_strbuf_replace_all(tmpbuf, "\n", "\n * "); eina_strbuf_prepend(tmpbuf," * "); - eina_strbuf_append_printf(str_ev, "\n/**\n%s\n */\n", eina_strbuf_string_get(tmpbuf)); + eina_strbuf_append_printf(str_ev, "/**\n%s\n */\n", eina_strbuf_string_get(tmpbuf)); eina_strbuf_reset(tmpbuf); eina_strbuf_append_printf(tmpbuf, "%s_EVENT_%s", class_env.upper_classname, evname); @@ -288,6 +300,12 @@ eo_header_generate(const Eolian_Class *class, Eina_Strbuf *buf) 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) + { + eina_strbuf_append(str_ev, "#endif\n"); + eina_strbuf_append(str_extrn_ev, "#endif\n"); + } } int i;