On Fri, 26 Jul 2013 11:26:47 +0200 Raoul Hecky <raoul.he...@gmail.com> said:

> Hi,
> 
> Le 26.07.2013 01:54, Carsten Haitzler a écrit :
> > On Thu, 25 Jul 2013 14:58:30 -0300 Gustavo Sverzut Barbieri
> > <barbi...@profusion.mobi> said:
> > 
> > On Thu, Jul 25, 2013 at 1:46 PM, Tom Hacohen <tom.haco...@samsung.com> 
> > wrote:
> > > On 24/07/13 03:09, Carsten Haitzler (The Rasterman) wrote:
> > >> On Tue, 23 Jul 2013 18:22:02 +0200 Jérémy Zurcher <jer...@asynk.ch> said:
> > >>
> > >>> just to clarify a few points:
> > >>>
> > >>> - I think the less macro we have in an eo class declaration the best,
> > >>>    actually we have nothing but that extra first parameter called eo2_o,
> > >>> wich is either an obj_ptr (devs/tasn/eo2) or a call_ctx (devs/jeyzu/eo2)
> > >>>
> > >>>    this should go away if we use a stack per thread in eo private code,
> > >>>    so we end up with a clean
> > >>>    EAPI float times(float f, float t);
> > >>>
> > >>> - since day 1 break is supported in eo2_do:
> > >>>    #define eo2_do(obj_id, ...)
> > >>>    do
> > >>>      {
> > >>>         obj_ptr_or_ctx = eo2_do_start(obj_id);
> > >>>         if(!obj_ptr_or_ctx) break;
> > >>>         do { __VA_ARGS__ ; } while (0);
> > >>>         eo2_do_end(obj_ptr_or_ctx);
> > >>>      } while (0)
> > >>
> > >> i'm worried about people doing return there. seriously - objid came in
> > >> becau se of experience that people using efl are in general inexperienced
> > >> programmers who don't take the time to do things right. they do things
> > >> quickly and take shortcuts, and they ignore warnings. they'd rather patch
> > >> out abort()s in efl code forcing them to fix their bugs, than fix their
> > >> bugs. i am fearful that they will stuff in returns quite happily and
> > >> think it mostly works most of the time... and then find subtle issues
> > >> and waste our time finding them.
> > >>
> > >> how do we protect/stop returns (or goto's for that matter) within the
> > >> while block. i looked for some pragmas - can't find any to do this. this
> > >> would be a really useful compiler feature though (to maybe disable some
> > >> constructs for a sequence of code).
> > >>
> > >
> > > Already showed you a solution, the one with the bla function. It works
> > > and it's mostly clean.
> > 
> > 
> > how so? The __VA_ARGS__ may contain a return and it will never reach
> > eo2_do_end()
> > 
> > precisely. current eo just can't do it (compiler will barf). if we 
> > could make
> > the compiler barf... that'd be great! this doesn't work, but if it 
> > could:
> > 
> > #define eo2_do(obj_id, ...) \
> > do { \
> > obj_ptr_or_ctx = eo2_do_start(obj_id); \
> > if(!obj_ptr_or_ctx) break; \
> > do { \
> > #define return DONT_USE_RETURN_HERE \
> > #define goto DONT_USE_GOTO_HERE \
> > __VA_ARGS__ ; \
> > #undef return \
> > #undef goto \
> > } while (0); \
> > eo2_do_end(obj_ptr_or_ctx); \
> > } while (0)
> > 
> > then this would be awesome. even if it only worked for gcc (and maybe 
> > clang) as
> > extensions, i'd be happy enough. some way to disallow it.
> > 
> > right now, the only thing that comes to mind is the evil "preprocessor 
> > before
> > cpp". i.e. :
> > eo_filter file.c | gcc - -o file.o
> > vs
> > gcc file.c -o file.o
> > 
> > and eo_filter is a tool we have to make that can error out and detect 
> > things
> > like the above... (bonus... it can do other fun things too that cpp/c 
> > can't and
> > expand code etc.)
> 
> 
> I did not follow the entire eo/eo2 discussion, but here are some 
> comments on the "eo_filter"
> thing.
> Qt uses a similar tool called moc which is a preprocessor (Meta Object 
> Processor) that
> takes care of handling Qt's C++ extensions (It takes a c++ files and 
> search for the Q_OBJECT
> macro in class definitions and creates a new c++ file containing the 
> meta-object code for
> those classes). It let Qt add a lot of different meta programing thing 
> that is not
> directly available with C++ through the use of specific qt keywords.
> There is a proof of concept for a rewrite of the moc tool using clang 
> directly to enhance
> the code parsing and error reporting with all the Qt'ish keywords 
> (slot/signals/...)
> http://woboq.com/blog/moc-with-clang.html
> 
> Maybe something similar for eo could be a good solution instead of 
> having a lot of
> unreadable macros that will always display incomprehensible errors when 
> not used
> correctly.
> Having an external preprocessor tool can allow to do thing that are not 
> possible using
> standard C, and most importantly it can report any wrong usage of eo 
> correctly and
> display usefull error messages.
> 
> My 2 cents here ;)

i'm with you. a moc-style preprocessor would cut out a tonne of ugliness and
arguments and boilerplate fluff. it could warn/error on all the things that are
wrong AND be portable as all it has to do is read a file, parse and output the
same text post-parse/expand.

problem is a bunch of people are just dead set against it arguing it "creates a
new language" "it's not c anymore", etc. etc. and thus we must not do it. i
personally think these arguments to be academic and purist in nature and
ultimately just cost us work and pain for nothing but an academic argument.

> 
> > --
> > ------------- Codito, ergo sum - "I code, therefore I am" 
> > --------------
> > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> > 
> > 
> > ------------------------------------------------------------------------------
> > See everything from the browser to the database with AppDynamics
> > Get end-to-end visibility with application monitoring from AppDynamics
> > Isolate bottlenecks and diagnose root cause in seconds.
> > Start your free trial of AppDynamics Pro today!
> > http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
> > _______________________________________________
> > enlightenment-devel mailing list
> > enlightenment-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> 
> -- 
> Raoul Hecky
> 
> ------------------------------------------------------------------------------
> See everything from the browser to the database with AppDynamics
> Get end-to-end visibility with application monitoring from AppDynamics
> Isolate bottlenecks and diagnose root cause in seconds.
> Start your free trial of AppDynamics Pro today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
> _______________________________________________
> 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


------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to