<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Sep 16, 2013 at 12:57 PM, Bill Spitzak <span dir="ltr"><<a href="mailto:spitzak@gmail.com" target="_blank">spitzak@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
<div class="im"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
What if the example was expanded slightly, like so:<br>
<br>
\code<br>
struct wl_container {<br>
    wl_list link;<br>
    ...<br>
};<br>
<br>
struct wl_container container;<br>
struct wl_list *item = &container.link;<br>
<br>
struct wl_container *sample = NULL;<br>
assert(&container == wl_container_of(item, sample, link);<br>
\endcode<br>
<br>
Does this make it clearer (without making it too verbose)?<br>
</blockquote></div>
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?<br>

</blockquote><div><br></div><div>That's right. Wayland itself uses wl_container_of around ten times, with all but one using the sample = wl_container_of(item, sample, link) idiom.<br><br></div><div>How does this doc look? The first two paragraphs were edited; the remainder is provided for context.<br>

</div><div><br>/**<br> * Retrieves a pointer to the containing struct of a given member item.<br> *<br> * This macro allows conversion from a pointer to a item, in a member called<br> * link, to its containing struct. This is useful if you have a contained item<br>

 * like a wl_list, wl_listener, or wl_signal, provided via a callback or other<br> * means and would like to retrieve the struct that contains it.<br> *<br> * To demonstrate, given a wl_list contained by a wl_resource, the wl_resource<br>

 * can be retrieved as follows:<br> *<br> * \code<br> * struct wl_list *some_link = ...;<br> * struct wl_resource *resource = NULL;<br> *<br> * resource = wl_container_of(some_link, resource, link);<br> * \endcode<br></div>

</div> (the rest is unchanged)<br><br></div><div class="gmail_extra">-- <br>Aaron Faanes <<a href="mailto:dafrito@gmail.com" target="_blank">dafrito@gmail.com</a>>
</div></div>