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) <[email protected]>
> 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!!!

------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to