<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Sep 15, 2013 at 8:35 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"><div class="im">On 09/15/2013 11:09 AM, Aaron Faanes 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>
+ * Retrieves a pointer to the container of a given item.<br>
+ *<br>
+ * This macro allows conversion from a pointer to a contained item to its<br>
+ * container. This is useful if you have a contained item like a wl_list,<br>
+ * wl_listener, or wl_signal, and would like to retrieve the struct that<br>
+ * contains it.<br>
+ *<br>
+ * To demonstrate, given a wl_list contained by a wl_resource<br>
</blockquote>
<br></div>
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.</blockquote><div><br></div><div>Good point. I'll add that in.<br>

</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div class="im">
<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
+ *<br>
+ * \code<br>
+ * struct wl_list *some_link = ...;<br>
</blockquote>
<br></div>
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?</blockquote>

<div><br></div><div>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.<br><br>What if the example was expanded slightly, like so:<br>

</div><div><br></div><div>\code<br></div><div>struct wl_container {</div><div>    wl_list link;<br>    ...<br></div><div>};<br><br></div><div>struct wl_container container;<br></div><div>struct wl_list *item = &container.link;<br>

<br></div><div>struct wl_container *sample = NULL;<br>assert(&container == wl_container_of(item, sample, link);<br></div><div>\endcode<br></div><br></div><div class="gmail_quote">Does this make it clearer (without making it too verbose)?<br>

</div><br>-- <br>Aaron Faanes <<a href="mailto:dafrito@gmail.com" target="_blank">dafrito@gmail.com</a>>
</div></div>