Anonymous structs have strange issues with scala and intellij in ea+44

Mark Hammons mark.hammons at inaf.cnrs-gif.fr
Wed Feb 20 01:59:55 UTC 2019


Thanks Maurizio,

I have been trying to reproduce this on my own and I cannot get the same 
behavior. An inner class of a struct with a name like anon$backend_h$555 
works fine. In the case of every anonymous class in this code, scala 
can't handle it, nor can intellij. I've attached the javap of the other 
anonymous struct bindings I've found as well as their host classes. I 
hope this helps determine the issue.

One thing I've noticed in the class files I've given you is they all end 
with something like this:

Signature: #3                           // 
Ljava/lang/Object;Ljava/foreign/memory/Struct<Lwlroots/backend_headers/session$anon$session_h$751;>;
RuntimeVisibleAnnotations:
   0: #8(#9=s#10,#11=I#12,#13=I#14)
     java.foreign.annotations.NativeLocation(
       file="/usr/include/wlr/backend/session.h"
       line=43
       column=2
     )
   1: #15(#16=s#17)
     java.foreign.annotations.NativeStruct(
       value="[${wl_signal}(destroy)](anon$session_h$751)"
     )

I dunno if that's the issue or not, I'm not familiar enough with 
bytecode to know that. However, I haven't been able to create an 
innerclass with the anon$backend_h$114 naming scheme that has that kind 
of ending information. I'll try some more tomorrow and see if I can't 
produce a java example that produces the same issues.

Mark

On 2/20/19 2:14 AM, Maurizio Cimadamore wrote:
> The signature attributes look in order - actually there are some 
> attributes which are not even needed, as in this case:
>
> public abstract wlroots.backend$anon$backend_h$444 events$get();
>     descriptor: ()Lwlroots/backend$anon$backend_h$444;
>     flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
>     Signature: #36                          // 
> ()Lwlroots/backend$anon$backend_h$444;
>
>
> It seems like the code generator always emits a signature...
>
> What I suspect is that the tools are confused by the '$' sign, and 
> they are tricked into thinking that "444" is an inner class of 
> "backend_h".
>
> I will do some more experiments of this though.
>
> Thanks
> Maurizio
>
>
> On 20/02/2019 00:28, Mark Hammons wrote:
>> Sure,
>>
>> I'd like to note one thing quickly. Before I was extracting the jar 
>> with an archive extracter and calling javap on the raw classfiles. 
>> Just now I tried "javap -p -v -cp wlroots.jar 
>> wlroots.backend.anon$backend_h$444" and it couldn't find the class, 
>> but "javap -p -v -cp wlroots.jar wlroots.backend.anon.backend_h.444" 
>> had it able to find the class in question. Ditto for  "javap -p -v 
>> -cp wlroots.jar wlroots.backend_headers.session.anon.session_h.751". 
>> I'm attaching my wlroots.jar along with the javap of wlr_backend.class.
>>
>> This seems to be a recurring issue with the anonymous structs 
>> generated by jextract.
>>
>> Mark
>>
>> On 2/20/19 1:04 AM, Maurizio Cimadamore wrote:
>>> Thanks,
>>> can you please also post the dump of the 'wlr_backend' struct?
>>>
>>> Maurizio
>>>
>>> On 19/02/2019 23:56, Mark Hammons wrote:
>>>> Here's the javap dump. Tell me if there's anything else I can get you.
>>>>
>>>> Mark
>>>>
>>>>
>>>> On 2/20/19 12:44 AM, Maurizio Cimadamore wrote:
>>>>>
>>>>> On 19/02/2019 23:29, Jorn Vernee wrote:
>>>>>> I tried to reproduce the problem without using jextract as well, 
>>>>>> but was not able to, so the bug seems to be up to a particularity 
>>>>>> of the classes generated by jextract. I'm not sure if the bug 
>>>>>> should be attributed to jextract or IntelliJ though. 
>>>>>
>>>>> I wonder if this could be due to some missing (or, most likely, 
>>>>> just bad) Signature attributes in the resulting classfile?
>>>>>
>>>>> Would you be able to post a 'javap -v -p' dump of the classfile, 
>>>>> so that we can take a look at it and look for anomalies?
>>>>>
>>>>> Maurizio
>>>>>
-------------- next part --------------
Classfile jar:file:///home/mhammons/Documents/MyProjects/waylandTest/lib/wlroots.jar!/wlroots/backend_headers/session$anon$session_h$751.class
  Last modified Feb 20, 2019; size 1165 bytes
  MD5 checksum 2e6cdfb7e63b6c42fb402e943bbd011e
public interface wlroots.backend_headers.session$anon$session_h$751 extends java.foreign.memory.Struct<wlroots.backend_headers.session$anon$session_h$751>
  minor version: 0
  major version: 52
  flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: #2                          // wlroots/backend_headers/session$anon$session_h$751
  super_class: #5                         // java/lang/Object
  interfaces: 1, fields: 0, methods: 3, attributes: 3
Constant pool:
   #1 = Utf8               wlroots/backend_headers/session$anon$session_h$751
   #2 = Class              #1             // wlroots/backend_headers/session$anon$session_h$751
   #3 = Utf8               Ljava/lang/Object;Ljava/foreign/memory/Struct<Lwlroots/backend_headers/session$anon$session_h$751;>;
   #4 = Utf8               java/lang/Object
   #5 = Class              #4             // java/lang/Object
   #6 = Utf8               java/foreign/memory/Struct
   #7 = Class              #6             // java/foreign/memory/Struct
   #8 = Utf8               Ljava/foreign/annotations/NativeLocation;
   #9 = Utf8               file
  #10 = Utf8               /usr/include/wlr/backend/session.h
  #11 = Utf8               line
  #12 = Integer            43
  #13 = Utf8               column
  #14 = Integer            2
  #15 = Utf8               Ljava/foreign/annotations/NativeStruct;
  #16 = Utf8               value
  #17 = Utf8               [${wl_signal}(destroy)](anon$session_h$751)
  #18 = Utf8               wlroots/backend_headers/session
  #19 = Class              #18            // wlroots/backend_headers/session
  #20 = Utf8               anon$session_h$751
  #21 = Utf8               destroy$get
  #22 = Utf8               ()Lusr/include/wayland/wayland_server_core$wl_signal;
  #23 = Integer            44
  #24 = Integer            20
  #25 = Utf8               Ljava/foreign/annotations/NativeGetter;
  #26 = Utf8               destroy
  #27 = Utf8               destroy$set
  #28 = Utf8               (Lusr/include/wayland/wayland_server_core$wl_signal;)V
  #29 = Utf8               Ljava/foreign/annotations/NativeSetter;
  #30 = Utf8               destroy$ptr
  #31 = Utf8               ()Ljava/foreign/memory/Pointer;
  #32 = Utf8               ()Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_signal;>;
  #33 = Utf8               Ljava/foreign/annotations/NativeAddressof;
  #34 = Utf8               Signature
  #35 = Utf8               RuntimeVisibleAnnotations
  #36 = Utf8               InnerClasses
{
  public abstract usr.include.wayland.wayland_server_core$wl_signal destroy$get();
    descriptor: ()Lusr/include/wayland/wayland_server_core$wl_signal;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #22                          // ()Lusr/include/wayland/wayland_server_core$wl_signal;
    RuntimeVisibleAnnotations:
      0: #8(#9=s#10,#11=I#23,#13=I#24)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/backend/session.h"
          line=44
          column=20
        )
      1: #25(#16=s#26)
        java.foreign.annotations.NativeGetter(
          value="destroy"
        )

  public abstract void destroy$set(usr.include.wayland.wayland_server_core$wl_signal);
    descriptor: (Lusr/include/wayland/wayland_server_core$wl_signal;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #28                          // (Lusr/include/wayland/wayland_server_core$wl_signal;)V
    RuntimeVisibleAnnotations:
      0: #29(#16=s#26)
        java.foreign.annotations.NativeSetter(
          value="destroy"
        )

  public abstract java.foreign.memory.Pointer<usr.include.wayland.wayland_server_core$wl_signal> destroy$ptr();
    descriptor: ()Ljava/foreign/memory/Pointer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #32                          // ()Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_signal;>;
    RuntimeVisibleAnnotations:
      0: #33(#16=s#26)
        java.foreign.annotations.NativeAddressof(
          value="destroy"
        )
}
InnerClasses:
  public static #20= #2 of #19;           // anon$session_h$751=class wlroots/backend_headers/session$anon$session_h$751 of class wlroots/backend_headers/session
Signature: #3                           // Ljava/lang/Object;Ljava/foreign/memory/Struct<Lwlroots/backend_headers/session$anon$session_h$751;>;
RuntimeVisibleAnnotations:
  0: #8(#9=s#10,#11=I#12,#13=I#14)
    java.foreign.annotations.NativeLocation(
      file="/usr/include/wlr/backend/session.h"
      line=43
      column=2
    )
  1: #15(#16=s#17)
    java.foreign.annotations.NativeStruct(
      value="[${wl_signal}(destroy)](anon$session_h$751)"
    )
-------------- next part --------------
Classfile jar:file:///home/mhammons/Documents/MyProjects/waylandTest/lib/wlroots.jar!/wlroots/backend_headers/session.class
  Last modified Feb 20, 2019; size 3086 bytes
  MD5 checksum 101bd6abff572a4df1f629ddd74f7932
public interface wlroots.backend_headers.session
  minor version: 0
  major version: 52
  flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: #2                          // wlroots/backend_headers/session
  super_class: #4                         // java/lang/Object
  interfaces: 0, fields: 0, methods: 7, attributes: 2
Constant pool:
   #1 = Utf8               wlroots/backend_headers/session
   #2 = Class              #1             // wlroots/backend_headers/session
   #3 = Utf8               java/lang/Object
   #4 = Class              #3             // java/lang/Object
   #5 = Utf8               wlroots/backend_headers/session$session_impl
   #6 = Class              #5             // wlroots/backend_headers/session$session_impl
   #7 = Utf8               session_impl
   #8 = Utf8               wlroots/backend_headers/session$wlr_device
   #9 = Class              #8             // wlroots/backend_headers/session$wlr_device
  #10 = Utf8               wlr_device
  #11 = Utf8               wlroots/backend_headers/session$anon$session_h$751
  #12 = Class              #11            // wlroots/backend_headers/session$anon$session_h$751
  #13 = Utf8               anon$session_h$751
  #14 = Utf8               wlroots/backend_headers/session$wlr_session
  #15 = Class              #14            // wlroots/backend_headers/session$wlr_session
  #16 = Utf8               wlr_session
  #17 = Utf8               wlr_session_create
  #18 = Utf8               (Ljava/foreign/memory/Pointer;)Ljava/foreign/memory/Pointer;
  #19 = Utf8               (Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_display;>;)Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;
  #20 = Utf8               disp
  #21 = Utf8               Ljava/foreign/annotations/NativeLocation;
  #22 = Utf8               file
  #23 = Utf8               /usr/include/wlr/backend/session.h
  #24 = Utf8               line
  #25 = Integer            58
  #26 = Utf8               column
  #27 = Integer            21
  #28 = Utf8               Ljava/foreign/annotations/NativeFunction;
  #29 = Utf8               value
  #30 = Utf8               (u64:${wl_display})u64:${wlr_session}
  #31 = Utf8               wlr_session_destroy
  #32 = Utf8               (Ljava/foreign/memory/Pointer;)V
  #33 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;)V
  #34 = Utf8               session
  #35 = Integer            65
  #36 = Integer            6
  #37 = Utf8               (u64:${wlr_session})v
  #38 = Utf8               wlr_session_open_file
  #39 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)I
  #40 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;Ljava/foreign/memory/Pointer<Ljava/lang/Byte;>;)I
  #41 = Utf8               path
  #42 = Integer            77
  #43 = Integer            5
  #44 = Utf8               (u64:${wlr_session}u64:u8)i32
  #45 = Utf8               wlr_session_close_file
  #46 = Utf8               (Ljava/foreign/memory/Pointer;I)V
  #47 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;I)V
  #48 = Utf8               fd
  #49 = Integer            82
  #50 = Utf8               (u64:${wlr_session}i32)v
  #51 = Utf8               wlr_session_signal_add
  #52 = Utf8               (Ljava/foreign/memory/Pointer;ILjava/foreign/memory/Pointer;)V
  #53 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;ILjava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_listener;>;)V
  #54 = Utf8               listener
  #55 = Integer            84
  #56 = Utf8               (u64:${wlr_session}i32u64:${wl_listener})v
  #57 = Utf8               wlr_session_change_vt
  #58 = Utf8               (Ljava/foreign/memory/Pointer;I)Z
  #59 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;I)Z
  #60 = Utf8               vt
  #61 = Integer            89
  #62 = Utf8               (u64:${wlr_session}u32)u8
  #63 = Utf8               wlr_session_find_gpus
  #64 = Utf8               (Ljava/foreign/memory/Pointer;JLjava/foreign/memory/Pointer;)J
  #65 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;JLjava/foreign/memory/Pointer<Ljava/lang/Integer;>;)J
  #66 = Utf8               ret_len
  #67 = Utf8               ret
  #68 = Integer            91
  #69 = Integer            8
  #70 = Utf8               (u64:${wlr_session}u64u64:i32)u64
  #71 = Utf8               Ljava/foreign/annotations/NativeHeader;
  #72 = Utf8               libraries
  #73 = Utf8               wlroots
  #74 = Utf8               libraryPaths
  #75 = Utf8               /usr/lib64/
  #76 = Utf8               resolutionContext
  #77 = Utf8               Lusr/include/libudev;
  #78 = Utf8               Lusr/include/wayland/wayland_server_core;
  #79 = Utf8               Lusr/include/wayland/wayland_util;
  #80 = Utf8               globals
  #81 = Utf8               Signature
  #82 = Utf8               RuntimeVisibleAnnotations
  #83 = Utf8               MethodParameters
  #84 = Utf8               InnerClasses
{
  public abstract java.foreign.memory.Pointer<wlroots.backend_headers.session$wlr_session> wlr_session_create(java.foreign.memory.Pointer<usr.include.wayland.wayland_server_core$wl_display>);
    descriptor: (Ljava/foreign/memory/Pointer;)Ljava/foreign/memory/Pointer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #19                          // (Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_display;>;)Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;
    RuntimeVisibleAnnotations:
      0: #21(#22=s#23,#24=I#25,#26=I#27)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/backend/session.h"
          line=58
          column=21
        )
      1: #28(#29=s#30)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wl_display})u64:${wlr_session}"
        )
    MethodParameters:
      Name                           Flags
      disp

  public abstract void wlr_session_destroy(java.foreign.memory.Pointer<wlroots.backend_headers.session$wlr_session>);
    descriptor: (Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #33                          // (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;)V
    RuntimeVisibleAnnotations:
      0: #21(#22=s#23,#24=I#35,#26=I#36)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/backend/session.h"
          line=65
          column=6
        )
      1: #28(#29=s#37)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_session})v"
        )
    MethodParameters:
      Name                           Flags
      session

  public abstract int wlr_session_open_file(java.foreign.memory.Pointer<wlroots.backend_headers.session$wlr_session>, java.foreign.memory.Pointer<java.lang.Byte>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #40                          // (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;Ljava/foreign/memory/Pointer<Ljava/lang/Byte;>;)I
    RuntimeVisibleAnnotations:
      0: #21(#22=s#23,#24=I#42,#26=I#43)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/backend/session.h"
          line=77
          column=5
        )
      1: #28(#29=s#44)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_session}u64:u8)i32"
        )
    MethodParameters:
      Name                           Flags
      session
      path

  public abstract void wlr_session_close_file(java.foreign.memory.Pointer<wlroots.backend_headers.session$wlr_session>, int);
    descriptor: (Ljava/foreign/memory/Pointer;I)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #47                          // (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;I)V
    RuntimeVisibleAnnotations:
      0: #21(#22=s#23,#24=I#49,#26=I#36)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/backend/session.h"
          line=82
          column=6
        )
      1: #28(#29=s#50)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_session}i32)v"
        )
    MethodParameters:
      Name                           Flags
      session
      fd

  public abstract void wlr_session_signal_add(java.foreign.memory.Pointer<wlroots.backend_headers.session$wlr_session>, int, java.foreign.memory.Pointer<usr.include.wayland.wayland_server_core$wl_listener>);
    descriptor: (Ljava/foreign/memory/Pointer;ILjava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #53                          // (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;ILjava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_listener;>;)V
    RuntimeVisibleAnnotations:
      0: #21(#22=s#23,#24=I#55,#26=I#36)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/backend/session.h"
          line=84
          column=6
        )
      1: #28(#29=s#56)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_session}i32u64:${wl_listener})v"
        )
    MethodParameters:
      Name                           Flags
      session
      fd
      listener

  public abstract boolean wlr_session_change_vt(java.foreign.memory.Pointer<wlroots.backend_headers.session$wlr_session>, int);
    descriptor: (Ljava/foreign/memory/Pointer;I)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #59                          // (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;I)Z
    RuntimeVisibleAnnotations:
      0: #21(#22=s#23,#24=I#61,#26=I#36)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/backend/session.h"
          line=89
          column=6
        )
      1: #28(#29=s#62)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_session}u32)u8"
        )
    MethodParameters:
      Name                           Flags
      session
      vt

  public abstract long wlr_session_find_gpus(java.foreign.memory.Pointer<wlroots.backend_headers.session$wlr_session>, long, java.foreign.memory.Pointer<java.lang.Integer>);
    descriptor: (Ljava/foreign/memory/Pointer;JLjava/foreign/memory/Pointer;)J
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #65                          // (Ljava/foreign/memory/Pointer<Lwlroots/backend_headers/session$wlr_session;>;JLjava/foreign/memory/Pointer<Ljava/lang/Integer;>;)J
    RuntimeVisibleAnnotations:
      0: #21(#22=s#23,#24=I#68,#26=I#69)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/backend/session.h"
          line=91
          column=8
        )
      1: #28(#29=s#70)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_session}u64u64:i32)u64"
        )
    MethodParameters:
      Name                           Flags
      session
      ret_len
      ret
}
InnerClasses:
  public static #7= #6 of #2;             // session_impl=class wlroots/backend_headers/session$session_impl of class wlroots/backend_headers/session
  public static #10= #9 of #2;            // wlr_device=class wlroots/backend_headers/session$wlr_device of class wlroots/backend_headers/session
  public static #13= #12 of #2;           // anon$session_h$751=class wlroots/backend_headers/session$anon$session_h$751 of class wlroots/backend_headers/session
  public static #16= #15 of #2;           // wlr_session=class wlroots/backend_headers/session$wlr_session of class wlroots/backend_headers/session
RuntimeVisibleAnnotations:
  0: #71(#41=s#23,#72=[s#73],#74=[s#75],#76=[c#77,c#78,c#79],#80=[])
    java.foreign.annotations.NativeHeader(
      path="/usr/include/wlr/backend/session.h"
      libraries=["wlroots"]
      libraryPaths=["/usr/lib64/"]
      resolutionContext=[class Lusr/include/libudev;,class Lusr/include/wayland/wayland_server_core;,class Lusr/include/wayland/wayland_util;]
      globals=[]
    )
-------------- next part --------------
Classfile jar:file:///home/mhammons/Documents/MyProjects/waylandTest/lib/wlroots.jar!/wlroots/wlr_renderer.class
  Last modified Feb 20, 2019; size 7916 bytes
  MD5 checksum 49b06a0180ba1b19baa4507bc5457a8b
public interface wlroots.wlr_renderer
  minor version: 0
  major version: 52
  flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: #2                          // wlroots/wlr_renderer
  super_class: #4                         // java/lang/Object
  interfaces: 0, fields: 0, methods: 21, attributes: 2
Constant pool:
    #1 = Utf8               wlroots/wlr_renderer
    #2 = Class              #1            // wlroots/wlr_renderer
    #3 = Utf8               java/lang/Object
    #4 = Class              #3            // java/lang/Object
    #5 = Utf8               WLR_RENDERER_READ_PIXELS_Y_INVERT
    #6 = Utf8               ()I
    #7 = Integer            1
    #8 = Utf8               wlroots/wlr_renderer$wlr_renderer_read_pixels_flags
    #9 = Class              #8            // wlroots/wlr_renderer$wlr_renderer_read_pixels_flags
   #10 = Utf8               wlr_renderer_read_pixels_flags
   #11 = Utf8               wlroots/wlr_renderer$wlr_renderer_impl
   #12 = Class              #11           // wlroots/wlr_renderer$wlr_renderer_impl
   #13 = Utf8               wlr_renderer_impl
   #14 = Utf8               wlroots/wlr_renderer$anon$wlr_renderer_h$616
   #15 = Class              #14           // wlroots/wlr_renderer$anon$wlr_renderer_h$616
   #16 = Utf8               anon$wlr_renderer_h$616
   #17 = Utf8               wlroots/wlr_renderer$wlr_renderer
   #18 = Class              #17           // wlroots/wlr_renderer$wlr_renderer
   #19 = Utf8               wlr_renderer
   #20 = Utf8               wlr_renderer_autocreate
   #21 = Utf8               (Ljava/foreign/memory/Pointer;ILjava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;I)Ljava/foreign/memory/Pointer;
   #22 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/egl$wlr_egl;>;ILjava/foreign/memory/Pointer<*>;Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;I)Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;
   #23 = Utf8               egl
   #24 = Utf8               platform
   #25 = Utf8               remote_display
   #26 = Utf8               config_attribs
   #27 = Utf8               visual_id
   #28 = Utf8               Ljava/foreign/annotations/NativeLocation;
   #29 = Utf8               file
   #30 = Utf8               /usr/include/wlr/render/wlr_renderer.h
   #31 = Utf8               line
   #32 = Integer            32
   #33 = Utf8               column
   #34 = Integer            22
   #35 = Utf8               Ljava/foreign/annotations/NativeFunction;
   #36 = Utf8               value
   #37 = Utf8               (u64:${wlr_egl}u32u64:vu64:i32i32)u64:${wlr_renderer}
   #38 = Utf8               wlr_renderer_begin
   #39 = Utf8               (Ljava/foreign/memory/Pointer;II)V
   #40 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;II)V
   #41 = Utf8               r
   #42 = Utf8               width
   #43 = Utf8               height
   #44 = Integer            35
   #45 = Integer            6
   #46 = Utf8               (u64:${wlr_renderer}i32i32)v
   #47 = Utf8               wlr_renderer_end
   #48 = Utf8               (Ljava/foreign/memory/Pointer;)V
   #49 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;)V
   #50 = Integer            36
   #51 = Utf8               (u64:${wlr_renderer})v
   #52 = Utf8               wlr_renderer_clear
   #53 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
   #54 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;)V
   #55 = Utf8               color
   #56 = Integer            37
   #57 = Utf8               (u64:${wlr_renderer}u64:f32)v
   #58 = Utf8               wlr_renderer_scissor
   #59 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/types/wlr_box$wlr_box;>;)V
   #60 = Utf8               box
   #61 = Integer            43
   #62 = Utf8               (u64:${wlr_renderer}u64:${wlr_box})v
   #63 = Utf8               wlr_render_texture
   #64 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;IIF)Z
   #65 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/wlr_texture$wlr_texture;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;IIF)Z
   #66 = Utf8               texture
   #67 = Utf8               projection
   #68 = Utf8               x
   #69 = Utf8               y
   #70 = Utf8               alpha
   #71 = Integer            47
   #72 = Utf8               (u64:${wlr_renderer}u64:${wlr_texture}u64:f32i32i32f32)u8
   #73 = Utf8               wlr_render_texture_with_matrix
   #74 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;F)Z
   #75 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/wlr_texture$wlr_texture;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;F)Z
   #76 = Utf8               matrix
   #77 = Integer            52
   #78 = Utf8               (u64:${wlr_renderer}u64:${wlr_texture}u64:f32f32)u8
   #79 = Utf8               wlr_render_rect
   #80 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
   #81 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/types/wlr_box$wlr_box;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;)V
   #82 = Integer            57
   #83 = Utf8               (u64:${wlr_renderer}u64:${wlr_box}u64:f32u64:f32)v
   #84 = Utf8               wlr_render_quad_with_matrix
   #85 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
   #86 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;)V
   #87 = Integer            62
   #88 = Utf8               (u64:${wlr_renderer}u64:f32u64:f32)v
   #89 = Utf8               wlr_render_ellipse
   #90 = Integer            67
   #91 = Utf8               wlr_render_ellipse_with_matrix
   #92 = Integer            72
   #93 = Utf8               wlr_renderer_get_formats
   #94 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)Ljava/foreign/memory/Pointer;
   #95 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Long;>;)Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;
   #96 = Utf8               len
   #97 = Integer            77
   #98 = Integer            27
   #99 = Utf8               (u64:${wlr_renderer}u64:u64)u64:i32
  #100 = Utf8               wlr_renderer_resource_is_wl_drm_buffer
  #101 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)Z
  #102 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server$wl_resource;>;)Z
  #103 = Utf8               renderer
  #104 = Utf8               buffer
  #105 = Integer            82
  #106 = Utf8               (u64:${wlr_renderer}u64:${wl_resource})u8
  #107 = Utf8               wlr_renderer_wl_drm_buffer_get_size
  #108 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server$wl_resource;>;Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;)V
  #109 = Integer            87
  #110 = Utf8               (u64:${wlr_renderer}u64:${wl_resource}u64:i32u64:i32)v
  #111 = Utf8               wlr_renderer_get_dmabuf_formats
  #112 = Utf8               (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)I
  #113 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<+Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;>;)I
  #114 = Utf8               formats
  #115 = Integer            92
  #116 = Integer            5
  #117 = Utf8               (u64:${wlr_renderer}u64:u64:i32)i32
  #118 = Utf8               wlr_renderer_get_dmabuf_modifiers
  #119 = Utf8               (Ljava/foreign/memory/Pointer;ILjava/foreign/memory/Pointer;)I
  #120 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;ILjava/foreign/memory/Pointer<+Ljava/foreign/memory/Pointer<Ljava/lang/Long;>;>;)I
  #121 = Utf8               format
  #122 = Utf8               modifiers
  #123 = Integer            97
  #124 = Utf8               (u64:${wlr_renderer}i32u64:u64:u64)i32
  #125 = Utf8               wlr_renderer_read_pixels
  #126 = Utf8               (Ljava/foreign/memory/Pointer;ILjava/foreign/memory/Pointer;IIIIIIILjava/foreign/memory/Pointer;)Z
  #127 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;ILjava/foreign/memory/Pointer<Ljava/lang/Integer;>;IIIIIIILjava/foreign/memory/Pointer<*>;)Z
  #128 = Utf8               fmt
  #129 = Utf8               flags
  #130 = Utf8               stride
  #131 = Utf8               src_x
  #132 = Utf8               src_y
  #133 = Utf8               dst_x
  #134 = Utf8               dst_y
  #135 = Utf8               data
  #136 = Integer            106
  #137 = Utf8               (u64:${wlr_renderer}i32u64:u32u32u32u32u32u32u32u32u64:v)u8
  #138 = Utf8               wlr_renderer_format_supported
  #139 = Utf8               (Ljava/foreign/memory/Pointer;I)Z
  #140 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;I)Z
  #141 = Integer            112
  #142 = Utf8               (u64:${wlr_renderer}i32)u8
  #143 = Utf8               wlr_renderer_init_wl_display
  #144 = Utf8               (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_display;>;)V
  #145 = Utf8               wl_display
  #146 = Integer            114
  #147 = Utf8               (u64:${wlr_renderer}u64:${wl_display})v
  #148 = Utf8               wlr_renderer_destroy
  #149 = Integer            119
  #150 = Utf8               Ljava/foreign/annotations/NativeHeader;
  #151 = Utf8               path
  #152 = Utf8               libraries
  #153 = Utf8               wlroots
  #154 = Utf8               libraryPaths
  #155 = Utf8               /usr/lib64/
  #156 = Utf8               resolutionContext
  #157 = Utf8               Lwlroots/types/wlr_box;
  #158 = Utf8               Lusr/include/wayland/wayland_server_core;
  #159 = Utf8               Lwlroots/wlr_texture;
  #160 = Utf8               Lusr/include/wayland/wayland_server;
  #161 = Utf8               Lwlroots/egl;
  #162 = Utf8               globals
  #163 = Utf8               Code
  #164 = Utf8               Signature
  #165 = Utf8               RuntimeVisibleAnnotations
  #166 = Utf8               MethodParameters
  #167 = Utf8               InnerClasses
{
  public int WLR_RENDERER_READ_PIXELS_Y_INVERT();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: ldc           #7                  // int 1
         2: ireturn

  public abstract java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer> wlr_renderer_autocreate(java.foreign.memory.Pointer<wlroots.egl$wlr_egl>, int, java.foreign.memory.Pointer<?>, java.foreign.memory.Pointer<java.lang.Integer>, int);
    descriptor: (Ljava/foreign/memory/Pointer;ILjava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;I)Ljava/foreign/memory/Pointer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #22                          // (Ljava/foreign/memory/Pointer<Lwlroots/egl$wlr_egl;>;ILjava/foreign/memory/Pointer<*>;Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;I)Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#32,#33=I#34)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=32
          column=22
        )
      1: #35(#36=s#37)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_egl}u32u64:vu64:i32i32)u64:${wlr_renderer}"
        )
    MethodParameters:
      Name                           Flags
      egl
      platform
      remote_display
      config_attribs
      visual_id

  public abstract void wlr_renderer_begin(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, int, int);
    descriptor: (Ljava/foreign/memory/Pointer;II)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #40                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;II)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#44,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=35
          column=6
        )
      1: #35(#36=s#46)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}i32i32)v"
        )
    MethodParameters:
      Name                           Flags
      r
      width
      height

  public abstract void wlr_renderer_end(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>);
    descriptor: (Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #49                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#50,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=36
          column=6
        )
      1: #35(#36=s#51)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer})v"
        )
    MethodParameters:
      Name                           Flags
      r

  public abstract void wlr_renderer_clear(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<java.lang.Float>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #54                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#56,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=37
          column=6
        )
      1: #35(#36=s#57)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:f32)v"
        )
    MethodParameters:
      Name                           Flags
      r
      color

  public abstract void wlr_renderer_scissor(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<wlroots.types.wlr_box$wlr_box>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #59                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/types/wlr_box$wlr_box;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#61,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=43
          column=6
        )
      1: #35(#36=s#62)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:${wlr_box})v"
        )
    MethodParameters:
      Name                           Flags
      r
      box

  public abstract boolean wlr_render_texture(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<wlroots.wlr_texture$wlr_texture>, java.foreign.memory.Pointer<java.lang.Float>, int, int, float);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;IIF)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #65                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/wlr_texture$wlr_texture;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;IIF)Z
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#71,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=47
          column=6
        )
      1: #35(#36=s#72)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:${wlr_texture}u64:f32i32i32f32)u8"
        )
    MethodParameters:
      Name                           Flags
      r
      texture
      projection
      x
      y
      alpha

  public abstract boolean wlr_render_texture_with_matrix(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<wlroots.wlr_texture$wlr_texture>, java.foreign.memory.Pointer<java.lang.Float>, float);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;F)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #75                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/wlr_texture$wlr_texture;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;F)Z
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#77,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=52
          column=6
        )
      1: #35(#36=s#78)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:${wlr_texture}u64:f32f32)u8"
        )
    MethodParameters:
      Name                           Flags
      r
      texture
      matrix
      alpha

  public abstract void wlr_render_rect(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<wlroots.types.wlr_box$wlr_box>, java.foreign.memory.Pointer<java.lang.Float>, java.foreign.memory.Pointer<java.lang.Float>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #81                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/types/wlr_box$wlr_box;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#82,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=57
          column=6
        )
      1: #35(#36=s#83)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:${wlr_box}u64:f32u64:f32)v"
        )
    MethodParameters:
      Name                           Flags
      r
      box
      color
      projection

  public abstract void wlr_render_quad_with_matrix(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<java.lang.Float>, java.foreign.memory.Pointer<java.lang.Float>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #86                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#87,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=62
          column=6
        )
      1: #35(#36=s#88)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:f32u64:f32)v"
        )
    MethodParameters:
      Name                           Flags
      r
      color
      matrix

  public abstract void wlr_render_ellipse(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<wlroots.types.wlr_box$wlr_box>, java.foreign.memory.Pointer<java.lang.Float>, java.foreign.memory.Pointer<java.lang.Float>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #81                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lwlroots/types/wlr_box$wlr_box;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#90,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=67
          column=6
        )
      1: #35(#36=s#83)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:${wlr_box}u64:f32u64:f32)v"
        )
    MethodParameters:
      Name                           Flags
      r
      box
      color
      projection

  public abstract void wlr_render_ellipse_with_matrix(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<java.lang.Float>, java.foreign.memory.Pointer<java.lang.Float>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #86                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;Ljava/foreign/memory/Pointer<Ljava/lang/Float;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#92,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=72
          column=6
        )
      1: #35(#36=s#88)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:f32u64:f32)v"
        )
    MethodParameters:
      Name                           Flags
      r
      color
      matrix

  public abstract java.foreign.memory.Pointer<java.lang.Integer> wlr_renderer_get_formats(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<java.lang.Long>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)Ljava/foreign/memory/Pointer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #95                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Long;>;)Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#97,#33=I#98)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=77
          column=27
        )
      1: #35(#36=s#99)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:u64)u64:i32"
        )
    MethodParameters:
      Name                           Flags
      r
      len

  public abstract boolean wlr_renderer_resource_is_wl_drm_buffer(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<usr.include.wayland.wayland_server$wl_resource>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #102                         // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server$wl_resource;>;)Z
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#105,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=82
          column=6
        )
      1: #35(#36=s#106)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:${wl_resource})u8"
        )
    MethodParameters:
      Name                           Flags
      renderer
      buffer

  public abstract void wlr_renderer_wl_drm_buffer_get_size(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<usr.include.wayland.wayland_server$wl_resource>, java.foreign.memory.Pointer<java.lang.Integer>, java.foreign.memory.Pointer<java.lang.Integer>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #108                         // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server$wl_resource;>;Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#109,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=87
          column=6
        )
      1: #35(#36=s#110)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:${wl_resource}u64:i32u64:i32)v"
        )
    MethodParameters:
      Name                           Flags
      renderer
      buffer
      width
      height

  public abstract int wlr_renderer_get_dmabuf_formats(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<? extends java.foreign.memory.Pointer<java.lang.Integer>>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #113                         // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<+Ljava/foreign/memory/Pointer<Ljava/lang/Integer;>;>;)I
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#115,#33=I#116)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=92
          column=5
        )
      1: #35(#36=s#117)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:u64:i32)i32"
        )
    MethodParameters:
      Name                           Flags
      renderer
      formats

  public abstract int wlr_renderer_get_dmabuf_modifiers(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, int, java.foreign.memory.Pointer<? extends java.foreign.memory.Pointer<java.lang.Long>>);
    descriptor: (Ljava/foreign/memory/Pointer;ILjava/foreign/memory/Pointer;)I
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #120                         // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;ILjava/foreign/memory/Pointer<+Ljava/foreign/memory/Pointer<Ljava/lang/Long;>;>;)I
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#123,#33=I#116)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=97
          column=5
        )
      1: #35(#36=s#124)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}i32u64:u64:u64)i32"
        )
    MethodParameters:
      Name                           Flags
      renderer
      format
      modifiers

  public abstract boolean wlr_renderer_read_pixels(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, int, java.foreign.memory.Pointer<java.lang.Integer>, int, int, int, int, int, int, int, java.foreign.memory.Pointer<?>);
    descriptor: (Ljava/foreign/memory/Pointer;ILjava/foreign/memory/Pointer;IIIIIIILjava/foreign/memory/Pointer;)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #127                         // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;ILjava/foreign/memory/Pointer<Ljava/lang/Integer;>;IIIIIIILjava/foreign/memory/Pointer<*>;)Z
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#136,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=106
          column=6
        )
      1: #35(#36=s#137)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}i32u64:u32u32u32u32u32u32u32u32u64:v)u8"
        )
    MethodParameters:
      Name                           Flags
      r
      fmt
      flags
      stride
      width
      height
      src_x
      src_y
      dst_x
      dst_y
      data

  public abstract boolean wlr_renderer_format_supported(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, int);
    descriptor: (Ljava/foreign/memory/Pointer;I)Z
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #140                         // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;I)Z
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#141,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=112
          column=6
        )
      1: #35(#36=s#142)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}i32)u8"
        )
    MethodParameters:
      Name                           Flags
      r
      fmt

  public abstract void wlr_renderer_init_wl_display(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>, java.foreign.memory.Pointer<usr.include.wayland.wayland_server_core$wl_display>);
    descriptor: (Ljava/foreign/memory/Pointer;Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #144                         // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_display;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#146,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=114
          column=6
        )
      1: #35(#36=s#147)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer}u64:${wl_display})v"
        )
    MethodParameters:
      Name                           Flags
      r
      wl_display

  public abstract void wlr_renderer_destroy(java.foreign.memory.Pointer<wlroots.wlr_renderer$wlr_renderer>);
    descriptor: (Ljava/foreign/memory/Pointer;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #49                          // (Ljava/foreign/memory/Pointer<Lwlroots/wlr_renderer$wlr_renderer;>;)V
    RuntimeVisibleAnnotations:
      0: #28(#29=s#30,#31=I#149,#33=I#45)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=119
          column=6
        )
      1: #35(#36=s#51)
        java.foreign.annotations.NativeFunction(
          value="(u64:${wlr_renderer})v"
        )
    MethodParameters:
      Name                           Flags
      renderer
}
InnerClasses:
  public static #10= #9 of #2;            // wlr_renderer_read_pixels_flags=class wlroots/wlr_renderer$wlr_renderer_read_pixels_flags of class wlroots/wlr_renderer
  public static #13= #12 of #2;           // wlr_renderer_impl=class wlroots/wlr_renderer$wlr_renderer_impl of class wlroots/wlr_renderer
  public static #16= #15 of #2;           // anon$wlr_renderer_h$616=class wlroots/wlr_renderer$anon$wlr_renderer_h$616 of class wlroots/wlr_renderer
  public static #19= #18 of #2;           // wlr_renderer=class wlroots/wlr_renderer$wlr_renderer of class wlroots/wlr_renderer
RuntimeVisibleAnnotations:
  0: #150(#151=s#30,#152=[s#153],#154=[s#155],#156=[c#157,c#158,c#159,c#160,c#161],#162=[])
    java.foreign.annotations.NativeHeader(
      path="/usr/include/wlr/render/wlr_renderer.h"
      libraries=["wlroots"]
      libraryPaths=["/usr/lib64/"]
      resolutionContext=[class Lwlroots/types/wlr_box;,class Lusr/include/wayland/wayland_server_core;,class Lwlroots/wlr_texture;,class Lusr/include/wayland/wayland_server;,class Lwlroots/egl;]
      globals=[]
    )
-------------- next part --------------
Classfile jar:file:///home/mhammons/Documents/MyProjects/waylandTest/lib/wlroots.jar!/wlroots/wlr_renderer$anon$wlr_renderer_h$616.class
  Last modified Feb 20, 2019; size 1156 bytes
  MD5 checksum 1755819c6b60d68c739edd9cc6100035
public interface wlroots.wlr_renderer$anon$wlr_renderer_h$616 extends java.foreign.memory.Struct<wlroots.wlr_renderer$anon$wlr_renderer_h$616>
  minor version: 0
  major version: 52
  flags: (0x0601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT
  this_class: #2                          // wlroots/wlr_renderer$anon$wlr_renderer_h$616
  super_class: #5                         // java/lang/Object
  interfaces: 1, fields: 0, methods: 3, attributes: 3
Constant pool:
   #1 = Utf8               wlroots/wlr_renderer$anon$wlr_renderer_h$616
   #2 = Class              #1             // wlroots/wlr_renderer$anon$wlr_renderer_h$616
   #3 = Utf8               Ljava/lang/Object;Ljava/foreign/memory/Struct<Lwlroots/wlr_renderer$anon$wlr_renderer_h$616;>;
   #4 = Utf8               java/lang/Object
   #5 = Class              #4             // java/lang/Object
   #6 = Utf8               java/foreign/memory/Struct
   #7 = Class              #6             // java/foreign/memory/Struct
   #8 = Utf8               Ljava/foreign/annotations/NativeLocation;
   #9 = Utf8               file
  #10 = Utf8               /usr/include/wlr/render/wlr_renderer.h
  #11 = Utf8               line
  #12 = Integer            27
  #13 = Utf8               column
  #14 = Integer            2
  #15 = Utf8               Ljava/foreign/annotations/NativeStruct;
  #16 = Utf8               value
  #17 = Utf8               [${wl_signal}(destroy)](anon$wlr_renderer_h$616)
  #18 = Utf8               wlroots/wlr_renderer
  #19 = Class              #18            // wlroots/wlr_renderer
  #20 = Utf8               anon$wlr_renderer_h$616
  #21 = Utf8               destroy$get
  #22 = Utf8               ()Lusr/include/wayland/wayland_server_core$wl_signal;
  #23 = Integer            28
  #24 = Integer            20
  #25 = Utf8               Ljava/foreign/annotations/NativeGetter;
  #26 = Utf8               destroy
  #27 = Utf8               destroy$set
  #28 = Utf8               (Lusr/include/wayland/wayland_server_core$wl_signal;)V
  #29 = Utf8               Ljava/foreign/annotations/NativeSetter;
  #30 = Utf8               destroy$ptr
  #31 = Utf8               ()Ljava/foreign/memory/Pointer;
  #32 = Utf8               ()Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_signal;>;
  #33 = Utf8               Ljava/foreign/annotations/NativeAddressof;
  #34 = Utf8               Signature
  #35 = Utf8               RuntimeVisibleAnnotations
  #36 = Utf8               InnerClasses
{
  public abstract usr.include.wayland.wayland_server_core$wl_signal destroy$get();
    descriptor: ()Lusr/include/wayland/wayland_server_core$wl_signal;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #22                          // ()Lusr/include/wayland/wayland_server_core$wl_signal;
    RuntimeVisibleAnnotations:
      0: #8(#9=s#10,#11=I#23,#13=I#24)
        java.foreign.annotations.NativeLocation(
          file="/usr/include/wlr/render/wlr_renderer.h"
          line=28
          column=20
        )
      1: #25(#16=s#26)
        java.foreign.annotations.NativeGetter(
          value="destroy"
        )

  public abstract void destroy$set(usr.include.wayland.wayland_server_core$wl_signal);
    descriptor: (Lusr/include/wayland/wayland_server_core$wl_signal;)V
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #28                          // (Lusr/include/wayland/wayland_server_core$wl_signal;)V
    RuntimeVisibleAnnotations:
      0: #29(#16=s#26)
        java.foreign.annotations.NativeSetter(
          value="destroy"
        )

  public abstract java.foreign.memory.Pointer<usr.include.wayland.wayland_server_core$wl_signal> destroy$ptr();
    descriptor: ()Ljava/foreign/memory/Pointer;
    flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
    Signature: #32                          // ()Ljava/foreign/memory/Pointer<Lusr/include/wayland/wayland_server_core$wl_signal;>;
    RuntimeVisibleAnnotations:
      0: #33(#16=s#26)
        java.foreign.annotations.NativeAddressof(
          value="destroy"
        )
}
InnerClasses:
  public static #20= #2 of #19;           // anon$wlr_renderer_h$616=class wlroots/wlr_renderer$anon$wlr_renderer_h$616 of class wlroots/wlr_renderer
Signature: #3                           // Ljava/lang/Object;Ljava/foreign/memory/Struct<Lwlroots/wlr_renderer$anon$wlr_renderer_h$616;>;
RuntimeVisibleAnnotations:
  0: #8(#9=s#10,#11=I#12,#13=I#14)
    java.foreign.annotations.NativeLocation(
      file="/usr/include/wlr/render/wlr_renderer.h"
      line=27
      column=2
    )
  1: #15(#16=s#17)
    java.foreign.annotations.NativeStruct(
      value="[${wl_signal}(destroy)](anon$wlr_renderer_h$616)"
    )


More information about the panama-dev mailing list