On 16/08/16 15:38, Tom Hacohen wrote: > On 16/08/16 15:27, Tom Hacohen wrote: >> On 16/08/16 15:19, Gustavo Sverzut Barbieri wrote: >>> On Tue, Aug 16, 2016 at 11:09 AM, Tom Hacohen <t...@osg.samsung.com> >>> wrote: >>>> On 16/08/16 14:48, Gustavo Sverzut Barbieri wrote: >>>>> On Tue, Aug 16, 2016 at 7:08 AM, Tom Hacohen <t...@osg.samsung.com> >>>>> wrote: >>>>>> On 16/08/16 04:38, Gustavo Sverzut Barbieri wrote: >>>>>>> it seems at the end was a missing "#define ..._PROTECTED" in the .c >>>>>>> file that includes the generated .eo.c. >>>>>>> >>>>>>> I wonder: shouldn't the generated .eo.c write: >>>>>>> #ifndef ..._PROTECTED >>>>>>> #define ..._PROTECTED >>>>>>> #endif >>>>>>> >>>>>> >>>>>> No. The .eo.c should be included at the end of the .c file and the >>>>>> .eo.h >>>>>> is at the beginning. You need to define the protected before the .h. >>>>> >>>>> what about one of these in the .eo.c: >>>>> >>>>> 1 - define the methods and maybe warn the user (would help me) >>>>> #ifndef .._PROTECTED >>>>> // replicate all methods locally to avoid issues >>>>> #warning "you should define ..._PROTECTED before including .eo.c" >>>>> EAPI ... methods...() >>>>> #endif >>>>> >>>>> >>>>> 2 - fail >>>>> #ifndef ..._PROTECTED >>>>> #error "Your class/interface/mixin declares @protected methods, you >>>>> must define ..._PROTECTED before including .eo.c otherwise it won't >>>>> work" >>>>> #endif >>>> >>>> Maybe we should just get rid of this define altogether... If your code >>>> works without the define, then there's nothing in the .eo.c that should >>>> require it. So I guess this is just extraneous and should be removed. >>>> >>>> Daniel? >>> >>> AFAIU the symbol won't be exported and will result in NULL being used. >>> >>> If you remove the PROTECT define, then you either need to generate >>> another file (ie: .eo.protected.h) or it will always be accessible to >>> wider public. >>> >>> I'm not sure there is any blocker from external users calling >>> protected stuff other than hiding the symbol. >>> >>> >> >> No, you got me wrong, I meant remove the define from the .eo.c and keep >> it in the .eo.h. >> >> I don't see a case where you would want to not have this piece of code >> included in the .eo.c. > > According to Daniel there are no ifdefs in the .eo.c... So I don't > understand the problem...
Actually, I can see why there would still be a problem because of the weak symbols thing. I guess the best way then, as you suggested is to do the ifndef. We can probably do an error, not a warning. -- Tom. ------------------------------------------------------------------------------ _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel