<div dir="ltr"><div dir="ltr">Humm, <div><br></div><div>It an inline function:<br><div><br></div><div><div style="background-color:rgb(30,31,34);color:rgb(188,190,196)"><pre style="font-family:"JetBrains Mono",monospace;font-size:9.8pt"><span style="color:rgb(207,142,109)">static </span><span style="color:rgb(199,125,187)">inline </span><span style="color:rgb(207,142,109)">struct </span>wl_registry *<br>wl_display_get_registry(<span style="color:rgb(207,142,109)">struct </span>wl_display *wl_display)<br>{<br>        <span style="color:rgb(207,142,109)">struct </span>wl_proxy *registry;<br><br>        registry = wl_proxy_marshal_flags((<span style="color:rgb(207,142,109)">struct </span>wl_proxy *) wl_display,<br>                         WL_DISPLAY_GET_REGISTRY, &wl_registry_interface, wl_proxy_get_version((<span style="color:rgb(207,142,109)">struct </span>wl_proxy *) wl_display), <span style="color:rgb(42,172,184)">0</span>, NULL);<br><br>        <span style="color:rgb(207,142,109)">return </span>(<span style="color:rgb(207,142,109)">struct </span>wl_registry *) registry;<br>}<br></pre></div></div></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em dom., 21 de abr. de 2024 às 20:25, Jorn Vernee <<a href="mailto:jorn.vernee@oracle.com">jorn.vernee@oracle.com</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><u></u>

  
  <div>
    <p>A pointer type is always supported, so it should not prevent a
      function that uses such a type from being generated.</p>
    <p>Are you seeing any warnings about `wl_display_get_registry` being
      skipped because of an unsupported type?</p>
    <p>Could you shared the header file declaration of
      wl_display_get_registry?<br>
    </p>
    <p>Jorn<br>
    </p>
    <div>On 22/04/2024 00:51, Thiago Milczarek
      Sayão wrote:<br>
    </div>
    <blockquote type="cite">
      
      <div dir="ltr">Hello Jorn,
        <div><br>
        </div>
        <div>Thanks for replying.</div>
        <div><br>
        </div>
        <div>I think it's by design - those fields of wl_registry are
          private and only accessible through wl_registry functions;<br>
        </div>
        <div><br>
        </div>
        <div>The problem is that it does not generate the functions that
          uses it, for example wl_display_get_registry<br>
        </div>
        <div><br>
        </div>
        <div>I did:</div>
        <div>
          <div style="background-color:rgb(30,31,34);color:rgb(188,190,196)">
            <pre style="font-family:"JetBrains Mono",monospace;font-size:9.8pt"><span style="color:rgb(197,118,51)">jextract </span>--output src/main/java -t org.freedesktop.wayland.client \
  --header-class-name WlClientProto <span style="color:rgb(197,118,51)">`pkg-config </span>--cflags-only-I wayland-client<span style="color:rgb(197,118,51)">`</span> \
  <span style="color:rgb(197,118,51)">`pkg-config </span>--libs wayland-client<span style="color:rgb(197,118,51)">`</span>  \
  /usr/include/wayland-client-protocol.h</pre>
          </div>
        </div>
        <div><br>
        </div>
        <div>The clarified message looks good.</div>
      </div>
      <br>
      <div class="gmail_quote">
        <div dir="ltr" class="gmail_attr">Em dom., 21 de abr. de 2024 às
          18:30, Jorn Vernee <<a href="mailto:jorn.vernee@oracle.com" target="_blank">jorn.vernee@oracle.com</a>>
          escreveu:<br>
        </div>
        <blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
          <div>
            <p>Hello Thiago,</p>
            <p>It looks like the library you are using uses opaque
              types. Or, in other words, a type that is declared but not
              defined, such as:</p>
            <p>    <font face="monospace">struct Foo;</font></p>
            <p>These types are not supported by jextract in the sense
              that the header file does not contain any definition for
              these types, so jextract also can't generate any code to
              access the fields of such a struct. This is not a current
              limitation of jextract, but a limitation imposed by the
              wayland library.<br>
            </p>
            <p>This is known as the 'opaque pointer idiom' [1]. It is a
              way of encapsulating the internals of a type, while still
              allowing a client to use it. It looks like the wayland
              library uses types like these in a lot of places. It
              doesn't mean that the library is unusable, it just means
              that the contents of these structs is not exposed by the
              library (and therefore <i>cannot</i> be exposed by
              jextract). i.e. this is by design. You should still be
              able to use the library through the generated bindings.<br>
            </p>
            <p>I think for clarity we could perhaps change the warning
              message that jextract prints to something like:    </p>
            <p><font face="monospace">    WARNING: Skipping wl_registry
                (type Declared(wl_registry) is declared but not defined)</font></p>
            <p>HTH,<br>
              Jorn<br>
            </p>
            <p>[1]: <a href="https://urldefense.com/v3/__https://en.wikipedia.org/wiki/Opaque_pointer__;!!ACWV5N9M2RV99hQ!J7UcZ_pVCMYJLfWJp9TZNELYAFrerMmP-yIjI1X6pBl6Zfx8gKLGiEb8ESgd_FTELrMqKd0F8pBF_Zs6zquT91c$" target="_blank">https://en.wikipedia.org/wiki/Opaque_pointer</a></p>
            <div>On 21/04/2024 18:58, Thiago Milczarek Sayão wrote:<br>
            </div>
            <blockquote type="cite">
              <div dir="ltr">Hi,
                <div><br>
                </div>
                <div>I'm trying to make a java wayland client (currently
                  as a proof of concept).</div>
                <div><br>
                </div>
                <div>I've attempted to generate the bindings like this:</div>
                <div><br>
                </div>
                <div>jextract --output src -t
                  org.freedesktop.wayland.client --header-class-name
                  WlClient -lwayland-client
                   /usr/include/wayland-client.h</div>
                <div><br>
                </div>
                <div>But the wl_xxx types seem to not be supported as it
                  outputs:</div>
                <div><br>
                </div>
                <div>WARNING: Skipping wl_registry (type
                  Declared(wl_registry) is not supported)<br>
                </div>
                <div><br>
                </div>
                <div>I've probably hit a current limitation. Is it
                  expected to work in the future?</div>
                <div><br>
                </div>
                <div>Thanks.</div>
                <div>-- Thiago.</div>
              </div>
            </blockquote>
          </div>
        </blockquote>
      </div>
    </blockquote>
  </div>

</blockquote></div></div>