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

Reply via email to