On Sun, 17 Aug 2014 09:12:58 +0300 Daniel Zaoui <daniel.za...@samsung.com> said:
> Hi, > > On 08/16/14 07:17, Carsten Haitzler wrote: > > raster pushed a commit to branch master. > > > > http://git.enlightenment.org/core/efl.git/commit/?id=d444e8f5f395d25b255ee9e927e22458cd8738bc > > > > commit d444e8f5f395d25b255ee9e927e22458cd8738bc > > Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com> > > Date: Sat Aug 16 13:09:17 2014 +0900 > > > > eolain_gen - fix implementation generation - it didn't even compile > > > > so the test suites were useless because they didn't ecompile what was > > generated. it was missing a ) at the end of calling eo_do_super to > > start with. it was missing a call to do_uper fo destructors too. also > > it didnt deal with the #include "blah.eo.c" at the file end either so > > it produced uncompilable src at the start. again - also fix. this also > > fixes test case comparisons to match the now correct generation that > > compiles. > > --- > > src/bin/eolian/impl_generator.c | 28 +++++++++++++++++++++++++ > > +-- src/tests/eolian/data/object_impl_add_ref.c | 4 +++- > > src/tests/eolian/data/object_impl_ref.c | 4 +++- > > 3 files changed, 32 insertions(+), 4 deletions(-) > > > > diff --git a/src/bin/eolian/impl_generator.c > > b/src/bin/eolian/impl_generator.c index 2b7aa2b..d43fd7c 100644 > > --- a/src/bin/eolian/impl_generator.c > > +++ b/src/bin/eolian/impl_generator.c > > @@ -122,6 +122,8 @@ _prototype_generate(const Eolian_Function *foo, > > Eolian_Function_Type ftype, Eina Eina_Strbuf *params = NULL, *short_params > > = NULL, *super_invok = NULL; char func_name[PATH_MAX]; > > char impl_name[PATH_MAX]; > > + const char *fname; > > + int flen; > > _eolian_class_vars impl_env; > > > > if (!impl_desc && eolian_function_is_virtual_pure(foo, ftype)) return > > EINA_TRUE; @@ -171,12 +173,26 @@ _prototype_generate(const Eolian_Function > > *foo, Eolian_Function_Type ftype, Eina if (impl_desc && ftype == > > EOLIAN_CTOR) { > > eina_strbuf_append_printf(super_invok, > > - " eo_do_super(obj, %s_%s, %s_%s(%s);\n", > > + " eo_do_super(obj, %s_%s, %s_%s(%s));\n", > > class_env.upper_eo_prefix, class_env.upper_classtype, > > - impl_env.lower_classname, eolian_function_name_get(foo), > > + impl_env.lower_eo_prefix, eolian_function_name_get(foo), > > eina_strbuf_string_get(short_params)); > > } > > > > + fname = eolian_function_name_get(foo); > > + flen = strlen(fname); > > + if ((fname) && (flen >= strlen("destructor"))) > > + { > > + if (impl_desc && !strcmp(fname + flen - strlen("destructor"), > > "destructor")) > > + { > > + eina_strbuf_append_printf(super_invok, > > + " eo_do_super(obj, %s_%s, %s_%s(%s));\n", > > + class_env.upper_eo_prefix, class_env.upper_classtype, > > + impl_env.lower_eo_prefix, eolian_function_name_get(foo), > > + eina_strbuf_string_get(short_params)); > > + } > > + } > > + > > const char *rettype = NULL; > > if (rettypet) rettype = eolian_type_c_type_get(rettypet); > > > > @@ -209,6 +225,7 @@ impl_source_generate(const Eolian_Class *class, > > Eina_Strbuf *buffer) const Eolian_Function *foo; > > Eina_Strbuf *begin = eina_strbuf_new(); > > const char *class_name = eolian_class_name_get(class); > > + char core_incl[PATH_MAX]; > > > > _class_env_create(class, NULL, &class_env); > > > > @@ -329,6 +346,13 @@ impl_source_generate(const Eolian_Class *class, > > Eina_Strbuf *buffer) class_env.lower_classname); > > } > > } > > + printf("Removal of all inline instances of #include \"%s.eo.c\"\n", > > class_env.lower_classname); > > + snprintf(core_incl, sizeof(core_incl), "\n#include \"%s.eo.c\"\n", > > class_env.lower_classname); > > + eina_strbuf_replace_all(buffer, core_incl, "\n"); > > + > > + snprintf(core_incl, sizeof(core_incl), "\"%s.eo.c\"", > > class_env.lower_classname); > > + printf("Generation of #include \"%s.eo.c\"\n", > > class_env.lower_classname); > > + eina_strbuf_append_printf(buffer, "#include \"%s.eo.c\"\n", > > class_env.lower_classname); > > ret = EINA_TRUE; > > end: > > diff --git a/src/tests/eolian/data/object_impl_add_ref.c > > b/src/tests/eolian/data/object_impl_add_ref.c index 5527619..6240887 100644 > > --- a/src/tests/eolian/data/object_impl_add_ref.c > > +++ b/src/tests/eolian/data/object_impl_add_ref.c > > @@ -52,13 +52,14 @@ _object_constructor_2(Eo *obj, Object_Data *pd) > > EOLIAN static void > > _object_base_constructor(Eo *obj, Object_Data *pd) > > { > > - eo_do_super(obj, OBJECT_CLASS, base_constructor(); > > + eo_do_super(obj, OBJECT_CLASS, base_constructor()); > > > > } > > > > EOLIAN static void > > _object_base_destructor(Eo *obj, Object_Data *pd) > > { > > + eo_do_super(obj, OBJECT_CLASS, base_destructor()); > > > > } > > > > @@ -86,3 +87,4 @@ _object_c_get(Eo *obj, Object_Data *pd) > > > > } > > > > +#include "object.eo.c" > > diff --git a/src/tests/eolian/data/object_impl_ref.c > > b/src/tests/eolian/data/object_impl_ref.c index 7786159..cc25fd4 100644 > > --- a/src/tests/eolian/data/object_impl_ref.c > > +++ b/src/tests/eolian/data/object_impl_ref.c > > @@ -52,13 +52,14 @@ _object_constructor_2(Eo *obj, Object_Data *pd) > > EOLIAN static void > > _object_base_constructor(Eo *obj, Object_Data *pd) > > { > > - eo_do_super(obj, OBJECT_CLASS, base_constructor(); > > + eo_do_super(obj, OBJECT_CLASS, base_constructor()); > > > > } > > > > EOLIAN static void > > _object_base_destructor(Eo *obj, Object_Data *pd) > > { > > + eo_do_super(obj, OBJECT_CLASS, base_destructor()); > > > > } > > > > @@ -74,3 +75,4 @@ _object_class_destructor(Eo_Class *klass) > > > > } > > > > +#include "object.eo.c" > > > I got to admit that I forgot a little the compilation side. Well, I > expected you to check it earlier... ;-) Anyway, sorry for the > inconvenience. Ok, no I'm not sorry cause I am French, so, naturally, I > make bugs and you fix them!!! :-P~ it compiles now. and i added do super for destructor which is what you want. the impl ge should at least generate a compiling and working bit of code - even if it "does nothing" :). -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com ------------------------------------------------------------------------------ _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel