> > On 09/16/2016 06:06 PM, Frediano Ziglio wrote: > > Noting that coding by hand these loop introduced some regression > > I'm trying to introduce back from macros. > > Before trying something harder to make possible to bind the type of > > the content I'm trying some simple macro as were before. > > I added the type to avoid some blindly void* casts. > > Also the GListIter is introduced to avoid the possibility to exchange > > easily some parameters. > > > > Signed-off-by: Frediano Ziglio <fziglio@xxxxxxxxxx> > > --- > > server/red-common.h | 18 ++++++++++++++ > > server/reds-private.h | 3 +++ > > server/reds.c | 66 > > +++++++++++++++++++++++++-------------------------- > > 3 files changed, 53 insertions(+), 34 deletions(-) > > > > diff --git a/server/red-common.h b/server/red-common.h > > index 7ab7e15..190fd9c 100644 > > --- a/server/red-common.h > > +++ b/server/red-common.h > > @@ -62,4 +62,22 @@ extern const SpiceCoreInterfaceInternal event_loop_core; > > > > typedef struct RedsState RedsState; > > > > +typedef struct GListIter { > > + GList *link; > > + GList *next; > > +} GListIter; > > + > > +#define GLIST_FOREACH_GENERIC(_list, _iter, _type, _data, _dir) \ > > + for (_iter.link = _list; \ > > + (_data = (_type *) (_iter.link ? _iter.link->data : NULL), \ > > + _iter.next = (_iter.link ? _iter.link->_dir : NULL), \ > > + _iter.link) != NULL; \ > > + _iter.link = _iter.next) > > + > > +#define GLIST_FOREACH(_list, _iter, _type, _data) \ > > + GLIST_FOREACH_GENERIC(_list, _iter, _type, _data, next) > > + > > +#define GLIST_FOREACH_REVERSED(_list, _iter, _type, _data) \ > > + GLIST_FOREACH_GENERIC(_list, _iter, _type, _data, prev) > > + > > #endif > > > Hi Frediano, > > Looks good. > > GLIST_FOREACH_REVERSED is not used. > It will. > In the future it would be nice to set _type > according to typeof _data, or compare _type with it. > It's the reason of the cast. The compiler will give warning that with -Werror become an error. Would be worth attaching type inside GList to GList field but would require some hacks. > Regards, > Uri. > Frediano _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel