On Mon, 21 Apr 2014 10:31:51 -0300 Gustavo Sverzut Barbieri <barbi...@gmail.com> said:
> I'd not touch the user file, just my personal experience with all sw > that did this that I've used, from first incarnations of glade to some > web frameworks. none of them were fine. > > OTOH used Qt's uic and did implementations inheriting from their > generated class on my own files, never had a problem. just talking about initial generation and then a simple append of a method that was added to the .eo file that is not in the core file. not how much of that code i had to figure out myself and write which could have been easily generated. there's already options for eolian to append new methods to the glue h/c files - but not core impl. the way eolian works is you run it once per file u want to generate. if someone doesn't want to generate etc. the core file - they don't have to, BUT... it's far harder to start with a file you don't see, don't know what is meant to be there, and how it's meant to work (without reading lots of existing efl code to find out). > On Mon, Apr 21, 2014 at 10:25 AM, Carsten Haitzler <ras...@rasterman.com> > wrote: > > so given: > > > > -------------------------------- > > > > class Tst (Eo_Base) > > { > > eo_prefix: tst; > > data: Tst_Data; > > properties { > > name { > > set { /*@ This sets the name of the tst object */ > > } > > get { /*@ This gets the name of the tst object if set */ > > } > > values { > > const char *name; /*@ The name of the tst object as a C string > > */ } > > } > > size { > > set { /*@ This sets the size of the object, and on failure returns > > EINA_TRUE, and on failure EINA_FALSE */ return Eina_Bool; /* returns > > EINA_TRUE on success and EINA_FALSE on failure */ } > > get { /*@ This gets the size set */ > > } > > values { > > int size; /*@ The size in pixels */ > > } > > } > > } > > methods { > > activate { /*@ This method will activate the tst object, and when > > * called, any events listening to activated will be > > * triggered */ > > params { > > @in int number; /*@ The number of pixels to activate */ > > @in const char *string; /*@ A label to display on activation */ > > } > > return Eina_Bool; /* If activation succeeds, return EINA_TRUE, and > > on failure EINA_FALSE */ } > > disable { /*@ This disables the tst object to the level intidicated */ > > params { > > @in int level; /*@ This is the disabling level to use */ > > } > > } > > } > > implements { > > Eo_Base::destructor; > > } > > events { > > activated; /*@ When the tst object has been activated */ > > disabled; /*@ When the tst object has been disabled */ > > } > > } > > > > -------------------------------- > > > > then i need to make my actual implementation of code, but in this, all the > > lines marked with // GENME imho should be able to be auto-generated (or > > appended) to save a lot of copy & paste work and trying to figure out what > > to put in the heading (includes etc. > > > > -------------------------------- > > > > #define EFL_BETA_API_SUPPORT // GENME > > #include <Eo.h> // GENME > > #include "tst.eo.h" // GENME > > > > #define EO_BASE_CLASS EO_CLASS > > > > typedef struct // GENME > > { // GENME > > int size; > > char *name; > > Eina_Bool activated : 1; > > Eina_Bool disabled : 1; > > } Tst_Data; // GENME > > > > EOLIAN static void _tst_name_set(Eo *obj, Tst_Data *pd, const char *name) // > > GENME { // GENME > > printf("set %s\n", name); > > pd->name = strdup(name); > > } // GENME > > > > EOLIAN static const char * _tst_name_get(Eo *obj, Tst_Data *pd) // GENME > > { // GENME > > return pd->name; > > } // GENME > > > > EOLIAN static Eina_Bool _tst_size_set(Eo *obj, Tst_Data *pd, int size) // > > GENME { // GENME > > printf("size set %i\n", size); > > pd->size = size; > > } // GENME > > > > EOLIAN static int _tst_size_get(Eo *obj, Tst_Data *pd) // GENME > > { // GENME > > return pd->size; > > } // GENME > > > > EOLIAN static Eina_Bool _tst_activate(Eo *obj, Tst_Data *pd, int number, > > const char *string) // GENME { // GENME > > printf("activate! %i '%s'\n", number, string); > > pd->activated = EINA_TRUE; > > // strictly correct... > > eo_do(obj, eo_event_callback_call(TST_EVENT_ACTIVATED, NULL)); > > } // GENME > > > > EOLIAN static void _tst_disable(Eo *obj, Tst_Data *pd, int level) // GENME > > { // GENME > > printf("disable\n"); > > pd->disabled = EINA_TRUE; > > // this is just fine. it's a local call within an eo_do() already > > // due to eo_do handling its own stack. this works with any method > > // actually that this object inherits/supports > > eo_event_callback_call(TST_EVENT_DISABLED, NULL); > > } // GENME > > > > EOLIAN static void _tst_eo_base_destructor(Eo *obj, Tst_Data *pd) // GENME > > { // GENME > > if (pd->name) free(pd->name); > > eo_do_super(obj, TST_CLASS, eo_destructor()); // GENME > > } // GENME > > > > #include "tst.eo.c" > > > > -------------------------------- > > > > notice how much of that file is boilerplate copies from tst.eo.c or just is > > standard stuff anyway? this would make things far less mysterious and > > painful. :) > > > > -- > > ------------- Codito, ergo sum - "I code, therefore I am" -------------- > > The Rasterman (Carsten Haitzler) ras...@rasterman.com > > > > > > ------------------------------------------------------------------------------ > > Start Your Social Network Today - Download eXo Platform > > Build your Enterprise Intranet with eXo Platform Software > > Java Based Open Source Intranet - Social, Extensible, Cloud Ready > > Get Started Now And Turn Your Intranet Into A Collaboration Platform > > http://p.sf.net/sfu/ExoPlatform > > _______________________________________________ > > enlightenment-devel mailing list > > enlightenment-devel@lists.sourceforge.net > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > > > -- > Gustavo Sverzut Barbieri > -------------------------------------- > Mobile: +55 (19) 99225-2202 > Contact: http://www.gustavobarbieri.com.br/contact > > ------------------------------------------------------------------------------ > Start Your Social Network Today - Download eXo Platform > Build your Enterprise Intranet with eXo Platform Software > Java Based Open Source Intranet - Social, Extensible, Cloud Ready > Get Started Now And Turn Your Intranet Into A Collaboration Platform > http://p.sf.net/sfu/ExoPlatform > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) ras...@rasterman.com ------------------------------------------------------------------------------ Start Your Social Network Today - Download eXo Platform Build your Enterprise Intranet with eXo Platform Software Java Based Open Source Intranet - Social, Extensible, Cloud Ready Get Started Now And Turn Your Intranet Into A Collaboration Platform http://p.sf.net/sfu/ExoPlatform _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel