On Thu, Apr 30, 2009 at 10:11 AM, Albin Tonnerre <albin.tonne...@gmail.com> wrote: > Hello, > > While playing with Eina_Inlist, I noticed that given a pointer to an > Eina_Inlist, one can't easily get a pointer to the structure containing it. > The only option now is to put the Eina_Inlist first in the structure, and > then cast this structure to an Eina_Inlist, which is far from optimal. > I'd therefore like to propose that we add in eina_inlist.h a macro along the > lines of > > #define FIND_A_SENSBILE_NAME_FOR_THIS(ptr, type) ((type *) ((Eina_Inlist *) > ptr - offsetof(type, __in_list))) > > Then, we could get a pointer to the containing structure, no matter where the > Eina_Inlist is (note that I used __in_list as the member as we already have a > macro '#define EINA_INLIST Eina_Inlist __in_list', but a member argument could > be added just as well) > > Thoughts ?
As we discussed on IRC, I like this. It would help avoid casts and try to make code bit easier to get right. -- Gustavo Sverzut Barbieri http://profusion.mobi embedded systems -------------------------------------- MSN: barbi...@gmail.com Skype: gsbarbieri Mobile: +55 (19) 9225-2202 ------------------------------------------------------------------------------ Register Now & Save for Velocity, the Web Performance & Operations Conference from O'Reilly Media. Velocity features a full day of expert-led, hands-on workshops and two days of sessions from industry leaders in dedicated Performance & Operations tracks. Use code vel09scf and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel