[PATCH 1/2] utils: Document wl_container_of
Bill Spitzak
spitzak at gmail.com
Mon Sep 16 10:57:48 PDT 2013
Aaron Faanes wrote:
> On Sun, Sep 15, 2013 at 8:35 PM, Bill Spitzak <spitzak at gmail.com
> <mailto:spitzak at gmail.com>> wrote:
>
> On 09/15/2013 11:09 AM, Aaron Faanes wrote:
>
> +/**
> + * Retrieves a pointer to the container of a given item.
> + *
> + * This macro allows conversion from a pointer to a contained
> item to its
> + * container. This is useful if you have a contained item
> like a wl_list,
> + * wl_listener, or wl_signal, and would like to retrieve the
> struct that
> + * contains it.
> + *
> + * To demonstrate, given a wl_list contained by a wl_resource
>
>
> I think you might want to add "in a member called 'link'" Without
> this information it took a bit of puzzling to figure out exactly
> what was going on.
>
>
> Good point. I'll add that in.
>
>
>
> + *
> + * \code
> + * struct wl_list *some_link = ...;
>
>
> I don't know if there are any real examples with a simpler object
> but the doc is a little confusing by making the inner object a
> complex one like wl_list. Is there an example where the member is
> something simple like an int?
>
>
> An int could certainly be used, though I'm not certain if there's any
> real examples in the code, which is why I hesitate to use a primitive.
I thought that might be a problem. Using a real example is probably a
good idea.
> What if the example was expanded slightly, like so:
>
> \code
> struct wl_container {
> wl_list link;
> ...
> };
>
> struct wl_container container;
> struct wl_list *item = &container.link;
>
> struct wl_container *sample = NULL;
> assert(&container == wl_container_of(item, sample, link);
> \endcode
>
> Does this make it clearer (without making it too verbose)?
No I think it iwas ok as long as the member name is given. Also I would
perfer an actual example of usage rather than an assert. I would guess
that most/all users pass the same pointer they are assigning to the
macro as the pointer-type argument?
ie keep "sample = wl_container_of(item, sample, link)"
More information about the wayland-devel
mailing list