diff options
author | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2015-07-06 11:25:32 +0100 |
---|---|---|
committer | Daniel Kolesa <d.kolesa@osg.samsung.com> | 2015-07-06 11:25:32 +0100 |
commit | c2b1e670b486da6c8e63970c558f2c390a7bda49 (patch) | |
tree | dfa6d4e50c6f8ba99b80ac9e27db7199ad244722 | |
parent | c0731cdd51849ac2d8d0da811c0e1b1733eedfd2 (diff) | |
download | efl-c2b1e670b486da6c8e63970c558f2c390a7bda49.tar.gz |
eolian/generator: use the __eolian function in overrides when default values are present
-rw-r--r-- | src/bin/eolian/eo_generator.c | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/bin/eolian/eo_generator.c b/src/bin/eolian/eo_generator.c index d31a656a80..2be1fa7ffe 100644 --- a/src/bin/eolian/eo_generator.c +++ b/src/bin/eolian/eo_generator.c @@ -834,8 +834,32 @@ eo_source_end_generate(const Eolian_Class *class, Eina_Strbuf *buf) _class_env_create(impl_class, NULL, &impl_env); funcname = eolian_function_name_get(fnid); + Eina_Bool dflt_values = EINA_FALSE; + Eina_Iterator *pitr = NULL; + if (!eolian_implement_is_auto(impl_desc) && fnid && (ftype != EOLIAN_PROP_SET)) + { + Eolian_Function_Parameter *param; + pitr = (ftype == EOLIAN_METHOD) ? eolian_function_parameters_get(fnid) + : eolian_property_values_get(fnid, ftype); + EINA_ITERATOR_FOREACH(pitr, param) + { + const Eolian_Expression *dflt_value = eolian_parameter_default_value_get(param); + if (dflt_value) + { + Eolian_Value val = eolian_expression_eval + (dflt_value, EOLIAN_MASK_ALL); + if (val.type) + { + dflt_values = EINA_TRUE; + break; + } + } + } + eina_iterator_free(pitr); + } + sprintf(implname, "%s_%s_%s", - eolian_implement_is_auto(impl_desc) || eolian_implement_is_empty(impl_desc)? + (eolian_implement_is_auto(impl_desc) || eolian_implement_is_empty(impl_desc) || dflt_values)? "__eolian":"", class_env.full_classname, impl_env.full_classname); eina_str_tolower(&tp); |