On Sat, Jun 15, 2013 at 3:01 PM, Carsten Haitzler <ras...@rasterman.com>wrote:
> On Sat, 15 Jun 2013 11:10:48 -0300 Felipe Magno de Almeida > <felipe.m.alme...@gmail.com> said: > > > On Sat, Jun 15, 2013 at 1:03 AM, Carsten Haitzler <ras...@rasterman.com> > > wrote: > > > On Fri, 14 Jun 2013 13:01:23 -0300 Felipe Magno de Almeida > > > <felipe.m.alme...@gmail.com> said: > > > > > >> On Fri, Jun 14, 2013 at 12:52 PM, Carsten Haitzler > > >> <ras...@rasterman.com>wrote: > > > > Hi Carsten, > > > > [snip] > > > > >> With macros I can't define local variables or structs, and with C++ > I'm > > >> also restricted > > > > > > well you can define local vars in macros.. but those method macros > don't do > > > that. eo uses varargs. so: > > > > > > eo_do(obj, efl_color_set(10, 20, 30, 40)); > > > > > > ACTUALLY is > > > eo_do(obj, EFL_COLOR_SET, 10, 20, 30, 40); > > > > > > the macro just makes the stream of args look function-like thus making > it > > > more convenient and pretty... > > > > I don't think you understand what I mean. What i mean is that when you > define > > a macro efl_color_set, even in C I can't do this simple thing: > > > > void foo() > > { > > int efl_color_set; > > } > > > > or even > > > > struct foo > > { > > int efl_color_set; > > }; > > > > Which means that this macro is not at all like a function, because macros > > don't obey scopes as functions do. I know, in C the scopes are quite > limited > > because of the lack of proper namespaces (there's only two free scopes, > > the global one, and the structs one). But functions only clash with the > global > > scope, and macros clash with *all scopes*. So they are not the same at > all > > in C, and are even more nightmarish in C++. Just see the problems that > > are common place from min/max and most Win32API (CreateFile et al) > > from windows.h > > i know this. this is what i said.. welcome to c... that is why it's efl_* > or > evas_* or edje_*. if your app or other lib steps on this namespace.. too > bad. > thats WHY we bother to use a namespace prefix like evas_* efl_* etc. - > regardless that it may work if you delcare inside a struct but then it > will be > problematic as ti just looks wrong as you expect that to be a function call > from efl (or evas or edje etc.)... > > this is like arguing that some kitchen utensil stops you from making a > cake out > of broccoli. it's a cake! broccoli is not for cakes!. it's another > "namespace". > fine - in THEORY someone might come up with some idea to use broccoli in a > cake... but let's be realistic... it isn't going to happen, and if it > does... > the answer is "don't do it!". :) > > there really is no acceptable solution here. if we make it all-caps then > typing > out the functions becomes even more effort (hold down shift), and you still > can't then use all-caps for something either... it's a technicality, not a > reality. :) we should talk about real problems or improvements. not > theoretical > issues like "i can't make cake with broccoli" :) > > > > it ALSO happens to so some magic to force typechecking > > > of args too (and since its a macro.. argument count as well). > > > > Yes, I've read the code, and I found it quite interesting the > typechecking. > > The only thing I'm worried about is defining lower-case keywords,because > > that's what they are since they prohibit all uses of the same identifier > > in *any context*, is what I believe to be problematic. Upper-cases are > > a de facto namespace for macros already in C and C++, and I hope that > > E uses that or finds a way to avoid lower-case macros in another way. > > Because I think it will be problematic for C code, and for C++ it will > give > > problems for sure because C++ uses *a lot* of code in headers because > > of inline functinos and templates, which raises a lot the chance of > clashing > > with keywords. > > i seriously doubt it will ever be a problem. if you make functions, (local > ones) or struct members or whatever... that starts with efl_ ... then.. > don't. > that's a reserved namespace prefix. yes - it makes keywords. this is > reality > when making libraries. it's why we choose a namespace prefix. we take > ownership > of that. :) > > > >> to member-functions, classes, free-functions, basically identifiers > in any > > >> context which would > > >> clash with efl_color_set, efl_font_set, efl_text_set, etc. And, also > all > > >> other > > >> function names used in eo but for classes defined by third-party code > to > > >> which I may > > >> want to interoperate now or in the future. > > > > > > that's why we namespace them. this is nothing new in c. yes - it > affects c+ > > > +. efl is able to be used from c+ but that comes with the cost of > avoiding > > > the namespace - just like everyone in c would have to do. there is no > way > > > around this. all the enums, macros, functions and structs - same story. > > > > See above why enums, functions and structs are not the same as macros > > at all. > > to a programmer they are keywords. if the same keyword means different > things > depending if its in a struct decl vs a local var, vs a function vs > something > else... then it gets confusing to read the code. it is less obvious what is > intended when you read the src. this is one thing that makes c a lot more > maintainable and readable that c++. it's very explicit. > > > [snip] > > > > > > > ------------- Codito, ergo sum - "I code, therefore I am" > -------------- > > > The Rasterman (Carsten Haitzler) ras...@rasterman.com > > > > Regards, > > -- > > Felipe Magno de Almeida > > > > > -- > ------------- Codito, ergo sum - "I code, therefore I am" -------------- > The Rasterman (Carsten Haitzler) ras...@rasterman.com > > > > ------------------------------------------------------------------------------ > This SF.net email is sponsored by Windows: > > Build for Windows Store. > > http://p.sf.net/sfu/windows-dev2dev > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > https://www.etsy.com/storque/media/articles/2010/09/10354-GC_Top_lg.jpg Just to illustrate the discussion, yep .. broccoli cakes looks like failure. ------------------------------------------------------------------------------ This SF.net email is sponsored by Windows: Build for Windows Store. http://p.sf.net/sfu/windows-dev2dev _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel