<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>