q66 pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=883c4ca7df68507aaaad5d44bfa6896ed1a7ed49
commit 883c4ca7df68507aaaad5d44bfa6896ed1a7ed49 Author: Daniel Kolesa <[email protected]> Date: Fri Jul 11 11:47:37 2014 +0100 eolian: events now use Eolian_Type* instead of stringshare --- src/bin/eolian_cxx/eolian_wrappers.hh | 4 ++-- src/lib/eolian/Eolian.h | 3 ++- src/lib/eolian/database_event.c | 2 +- src/lib/eolian/database_event_api.c | 2 +- src/lib/eolian/database_print.c | 7 +++++-- src/lib/eolian/eo_parser.c | 4 ++-- src/lib/eolian/eolian_database.h | 2 +- 7 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src/bin/eolian_cxx/eolian_wrappers.hh b/src/bin/eolian_cxx/eolian_wrappers.hh index d44b3e5..e9a9ab9 100644 --- a/src/bin/eolian_cxx/eolian_wrappers.hh +++ b/src/bin/eolian_cxx/eolian_wrappers.hh @@ -310,8 +310,8 @@ inline efl::eolian::eo_event event_create(Eolian_Class const& klass, const Eolian_Event *event_) { efl::eolian::eo_event event; - const char *name, *type, *comment; - if(::eolian_class_event_information_get(event_, &name, &type, &comment)) + const char *name, *comment; + if(::eolian_class_event_information_get(event_, &name, NULL, &comment)) { std::string name_ = safe_str(name); std::transform(name_.begin(), name_.end(), name_.begin(), diff --git a/src/lib/eolian/Eolian.h b/src/lib/eolian/Eolian.h index fa4ee7b..764a16e 100644 --- a/src/lib/eolian/Eolian.h +++ b/src/lib/eolian/Eolian.h @@ -670,12 +670,13 @@ EAPI const Eina_List *eolian_class_events_list_get(const Eolian_Class *klass); * * @param[in] event handle of the event * @param[out] event_name name of the event + * @param[out] event_type type of the event * @param[out] event_desc description of the event * @return EINA_TRUE on success, EINA_FALSE otherwise. * * @ingroup Eolian */ -EAPI Eina_Bool eolian_class_event_information_get(const Eolian_Event *event, const char **event_name, const char **event_type, const char **event_desc); +EAPI Eina_Bool eolian_class_event_information_get(const Eolian_Event *event, const char **event_name, const Eolian_Type **event_type, const char **event_desc); /* * @brief Indicates if the class constructor has to invoke diff --git a/src/lib/eolian/database_event.c b/src/lib/eolian/database_event.c index f51a408..8549c1e 100644 --- a/src/lib/eolian/database_event.c +++ b/src/lib/eolian/database_event.c @@ -6,7 +6,7 @@ database_event_del(Eolian_Event *event) { if (!event) return; if (event->name) eina_stringshare_del(event->name); - if (event->type) eina_stringshare_del(event->type); if (event->comment) eina_stringshare_del(event->comment); + database_type_del(event->type); free(event); } diff --git a/src/lib/eolian/database_event_api.c b/src/lib/eolian/database_event_api.c index 5a184ff..520ef93 100644 --- a/src/lib/eolian/database_event_api.c +++ b/src/lib/eolian/database_event_api.c @@ -2,7 +2,7 @@ #include "eolian_database.h" EAPI Eina_Bool -eolian_class_event_information_get(const Eolian_Event *event, const char **event_name, const char **event_type, const char **event_comment) +eolian_class_event_information_get(const Eolian_Event *event, const char **event_name, const Eolian_Type **event_type, const char **event_comment) { EINA_SAFETY_ON_NULL_RETURN_VAL(event, EINA_FALSE); if (event_name) *event_name = event->name; diff --git a/src/lib/eolian/database_print.c b/src/lib/eolian/database_print.c index aef936b..2d66460 100644 --- a/src/lib/eolian/database_print.c +++ b/src/lib/eolian/database_print.c @@ -29,10 +29,13 @@ _implements_print(Eolian_Implement *impl, int nb_spaces) static void _event_print(Eolian_Event *ev, int nb_spaces) { - const char *name, *comment, *type; + const char *name, *comment; + const Eolian_Type *type; eolian_class_event_information_get(ev, &name, &type, &comment); - printf("%*s <%s> <%s> <%s>\n", nb_spaces + 5, "", name, type, comment); + printf("%*s <%s> <", nb_spaces + 5, "", name); + database_type_print((Eolian_Type*)type); + printf("> <%s>\n", comment); } static Eina_Bool _function_print(const Eolian_Function *fid, int nb_spaces) diff --git a/src/lib/eolian/eo_parser.c b/src/lib/eolian/eo_parser.c index 8bcf1a8..9c8649d 100644 --- a/src/lib/eolian/eo_parser.c +++ b/src/lib/eolian/eo_parser.c @@ -808,9 +808,9 @@ parse_event(Eo_Lexer *ls) if (ls->t.token == '(') { int line = ls->line_number, col = ls->column; - eo_lexer_get_balanced(ls, '(', ')'); - ev->type = eina_stringshare_add(ls->t.value); eo_lexer_get(ls); + ev->type = parse_type(ls); + pop_type(ls); check_match(ls, ')', '(', line, col); } check(ls, ';'); diff --git a/src/lib/eolian/eolian_database.h b/src/lib/eolian/eolian_database.h index bd14647..f208138 100644 --- a/src/lib/eolian/eolian_database.h +++ b/src/lib/eolian/eolian_database.h @@ -130,8 +130,8 @@ struct _Eolian_Implement struct _Eolian_Event { Eina_Stringshare *name; - Eina_Stringshare *type; Eina_Stringshare *comment; + Eolian_Type *type; }; typedef struct _Eolian_Typedef --
