<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Thank you very much, I will start using the members of the structs for edge cases like these, apologies for so many messages sent in such a short period of time.</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>De:</b> Xcb <xcb-bounces@lists.freedesktop.org> em nome de Uli Schlachter <psychon@znc.in><br>
<b>Enviado:</b> segunda-feira, 8 de março de 2021 12:53<br>
<b>Para:</b> Lucas Augusto Valentim Dantas <lucasvalentim@outlook.com.br>; xcb@lists.freedesktop.org <xcb@lists.freedesktop.org><br>
<b>Assunto:</b> Re: [Xcb] Are there any naming conventions for XCB?</font>
<div> </div>
</div>
<div class="BodyFragment"><font size="2"><span style="font-size:11pt;">
<div class="PlainText">By fixing the compiler warnings, I got the following working version<br>
(sorry for line wrapping, but you'll manage):<br>
<br>
#include <stdio.h><br>
#include <stdlib.h><br>
<br>
#include <xcb/xcb.h><br>
<br>
int main(void)<br>
{<br>
    xcb_connection_t *connection = xcb_connect(NULL, NULL);<br>
    xcb_list_extensions_cookie_t cookie = xcb_list_extensions(connection);<br>
    const xcb_list_extensions_reply_t *reply =<br>
xcb_list_extensions_reply(connection, cookie, 0);<br>
    /*const*/ xcb_str_iterator_t str_iterator =<br>
xcb_list_extensions_names_iterator(reply);<br>
    while(str_iterator.rem) {<br>
        int length = xcb_str_name_length(str_iterator.data);<br>
        char *name = xcb_str_name(str_iterator.data);<br>
        fwrite(name, sizeof(*name), length, stdout);<br>
        putchar('\n');<br>
        xcb_str_next(&str_iterator);<br>
    }<br>
    xcb_disconnect(connection);<br>
    exit(EXIT_SUCCESS);<br>
}<br>
<br>
<br>
Cheers,<br>
Uli<br>
<br>
Am 08.03.21 um 16:50 schrieb Lucas Augusto Valentim Dantas:<br>
> #include <stdio.h><br>
> #include <stdlib.h><br>
> <br>
> #include <xcb/xcb.h><br>
> Yeah the program doesn't work like I thought it would.<br>
> <br>
> int main(void)<br>
> {<br>
>     xcb_connection_t *connection = xcb_connect(NULL, NULL);<br>
>     xcb_list_extensions_cookie_t cookie = xcb_list_extensions(connection);<br>
>     const xcb_list_extensions_reply_t *reply = xcb_list_extensions_reply(connection, cookie, 0);<br>
>     const xcb_str_iterator_t str_iterator = xcb_list_extensions_names_iterator(reply);<br>
>     while(str_iterator.rem) {<br>
>         int length = xcb_str_name_length(&str_iterator); // doesn't work<br>
>         char *name = xcb_str_name(&str_iterator); // doesn't work<br>
>         fwrite(name, sizeof(*name), length, stdout);<br>
>         putchar('\n');<br>
>         xcb_str_next(&str_iterator);<br>
>     }<br>
>     xcb_disconnect(connection);<br>
>     exit(EXIT_SUCCESS);<br>
> }<br>
> <br>
> <br>
> ________________________________<br>
> De: Xcb <xcb-bounces@lists.freedesktop.org> em nome de Lucas Augusto Valentim Dantas <lucasvalentim@outlook.com.br><br>
> Enviado: segunda-feira, 8 de março de 2021 11:20<br>
> Para: xcb@lists.freedesktop.org <xcb@lists.freedesktop.org><br>
> Assunto: Re: [Xcb] Are there any naming conventions for XCB?<br>
> <br>
> <br>
> I wasn't aware that the pointer value of the first member of a struct equals to the pointer value of the struct itself.<br>
> <br>
> From the C89 draft: "A pointer to a structure object, suitably<br>
> cast, points to its initial member (or if that member is a bit-field,<br>
> then to the unit in which it resides), and vice versa.  There may<br>
> therefore be unnamed holes within a structure object, but not at its<br>
> beginning, as necessary to achieve the appropriate alignment."<br>
> <br>
> xcb_str_name() covers that necessity then.<br>
> <br>
> ________________________________<br>
> De: Xcb <xcb-bounces@lists.freedesktop.org> em nome de Lucas Augusto Valentim Dantas <lucasvalentim@outlook.com.br><br>
> Enviado: segunda-feira, 8 de março de 2021 08:11<br>
> Para: xcb@lists.freedesktop.org <xcb@lists.freedesktop.org><br>
> Assunto: Re: [Xcb] Are there any naming conventions for XCB?<br>
> <br>
> I am resending this e-mail to the list, I didn't notice I was replying to Uli directly, apologies.<br>
> <br>
> ===========================================================<br>
> <br>
> The function is supposed to return the pointer to the current element in that iterator, I have found no function that does that in libxcb. Consider the program below:<br>
> <br>
> #include <stdio.h><br>
> #include <stdlib.h><br>
> <br>
> #include <xcb/xcb.h><br>
> <br>
> int main(void)<br>
> {<br>
>     xcb_connection_t *connection = xcb_connect(NULL, NULL);<br>
>     xcb_list_extensions_cookie_t cookie = xcb_list_extensions(connection);<br>
>     const xcb_list_extensions_reply_t *reply = xcb_list_extensions_reply(connection, cookie, 0);<br>
>     xcb_str_iterator_t str_iterator = xcb_list_extensions_names_iterator(reply);<br>
> <br>
>     while(str_iterator.rem) { // verify if there are any elements left<br>
>         xcb_str_t *name = str_iterator.data; // gather the current element in the iterator<br>
>         int length = xcb_str_name_length(name);<br>
>         char *str = xcb_str_name(name);<br>
>         fwrite(str, sizeof(*str), length, stdout);<br>
>         putchar('\n');<br>
>         xcb_str_next(&str_iterator);<br>
>     }<br>
>     xcb_disconnect(connection);<br>
>     exit(EXIT_SUCCESS);<br>
> }<br>
> <br>
> I don't know how useful this program is outside of an educational purpose, but notice that the members rem and data from the iterator has to be accessed by the user in order to finally convert it to a stringm then send that to stdout. If the members rem and
 data aren't supposed to be accessed by the user, I suggest creating a function to access them, or modify xcb_str_next to return a pointer to xcb_str_t for the current element, then have it iterate to the next element.<br>
> If the members of the struct xcb_str_iterator_t are supposed to be accessed by the user, then there is no reason to add said function.<br>
> ________________________________<br>
> De: Xcb <xcb-bounces@lists.freedesktop.org> em nome de Uli Schlachter <psychon@znc.in><br>
> Enviado: domingo, 7 de março de 2021 05:35<br>
> Para: Lucas <lucasvalentim@outlook.com.br>; xcb@lists.freedesktop.org <xcb@lists.freedesktop.org><br>
> Assunto: Re: [Xcb] Are there any naming conventions for XCB?<br>
> <br>
> Hi,<br>
> <br>
> Am 14.02.21 um 23:37 schrieb Lucas:<br>
>> I want to introduce one function (another one might be needed) to return<br>
>> a xcb_str_t pointer from an iterator because I could not find a function<br>
>> to do just that, but I have noticed a pattern in the names of the<br>
>> function, hence the question. Here is the function:<br>
>><br>
>> xcb_str_t *xcb_str_iterator_name(xcb_str_iterator_t *iterator)<br>
>> {<br>
>>     return iterator->data;<br>
>> }<br>
> <br>
> Uhm, sorry, but *why*? Can't you just put this function into your own<br>
> code with a name of your liking? Why do you think this needs to be in<br>
> libxcb?<br>
> <br>
> Also, are you sure the function above really does what you want it to<br>
> do? Aren't you instead looking for the already existing xcb_str_name()?<br>
> <br>
> And for the question about naming conventions: Well... kind of. Since<br>
> most of the code is automatically generated from an XML description, I<br>
> guess "what the code generator does" is the naming convention. It all<br>
> maps pretty mechanical to the XML, I think.<br>
> <br>
> Cheers,<br>
> Uli<br>
> --<br>
> This can be a, a little complicated. Listen, my advice is... ask<br>
> somebody else for advice, at least someone who's... got more experience<br>
> at...  giving advice.<br>
> _______________________________________________<br>
> Xcb mailing list<br>
> Xcb@lists.freedesktop.org<br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/xcb">https://lists.freedesktop.org/mailman/listinfo/xcb</a><br>
> <br>
> <br>
> _______________________________________________<br>
> Xcb mailing list<br>
> Xcb@lists.freedesktop.org<br>
> <a href="https://lists.freedesktop.org/mailman/listinfo/xcb">https://lists.freedesktop.org/mailman/listinfo/xcb</a><br>
> <br>
<br>
<br>
-- <br>
This can be a, a little complicated. Listen, my advice is... ask<br>
somebody else for advice, at least someone who's... got more experience<br>
at...  giving advice.<br>
_______________________________________________<br>
Xcb mailing list<br>
Xcb@lists.freedesktop.org<br>
<a href="https://lists.freedesktop.org/mailman/listinfo/xcb">https://lists.freedesktop.org/mailman/listinfo/xcb</a><br>
</div>
</span></font></div>
</body>
</html>