! Do not modify this file automatically generated by cfwrapper.py using:
! gtk-fortran 4.8.0, GTK 4.18.4, GLib 2.84.1, Fedora 42 x86_64
! This file is part of the gtk-fortran library, distributed under
! GNU General Public License version 3.

module gdk
use, intrinsic :: iso_c_binding
implicit none
interface

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkmemorytexturebuilder.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_16
!GdkMemoryTextureBuilder * gdk_memory_texture_builder_new (void);
function gdk_memory_texture_builder_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_memory_texture_builder_new
end function

! GDK_AVAILABLE_IN_4_16
!GBytes * gdk_memory_texture_builder_get_bytes (GdkMemoryTextureBuilder *self) ;
function gdk_memory_texture_builder_get_bytes(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_memory_texture_builder_get_bytes
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_memory_texture_builder_set_bytes (GdkMemoryTextureBuilder *self, GBytes *bytes);
subroutine gdk_memory_texture_builder_set_bytes(self, bytes) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: bytes
end subroutine

! GDK_AVAILABLE_IN_4_16
!gsize gdk_memory_texture_builder_get_stride (GdkMemoryTextureBuilder *self) ;
function gdk_memory_texture_builder_get_stride(self) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gdk_memory_texture_builder_get_stride
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_memory_texture_builder_set_stride (GdkMemoryTextureBuilder *self, gsize stride);
subroutine gdk_memory_texture_builder_set_stride(self, stride) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr), value :: self
  integer(c_size_t), value :: stride
end subroutine

! GDK_AVAILABLE_IN_4_16
!int gdk_memory_texture_builder_get_width (GdkMemoryTextureBuilder *self) ;
function gdk_memory_texture_builder_get_width(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_memory_texture_builder_get_width
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_memory_texture_builder_set_width (GdkMemoryTextureBuilder *self, int width);
subroutine gdk_memory_texture_builder_set_width(self, width) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: width
end subroutine

! GDK_AVAILABLE_IN_4_16
!int gdk_memory_texture_builder_get_height (GdkMemoryTextureBuilder *self) ;
function gdk_memory_texture_builder_get_height(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_memory_texture_builder_get_height
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_memory_texture_builder_set_height (GdkMemoryTextureBuilder *self, int height);
subroutine gdk_memory_texture_builder_set_height(self, height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: height
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkMemoryFormat gdk_memory_texture_builder_get_format (GdkMemoryTextureBuilder *self) ;
function gdk_memory_texture_builder_get_format(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_memory_texture_builder_get_format
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_memory_texture_builder_set_format (GdkMemoryTextureBuilder *self, GdkMemoryFormat format);
subroutine gdk_memory_texture_builder_set_format(self, format) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: format
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_memory_texture_builder_get_color_state (GdkMemoryTextureBuilder *self) ;
function gdk_memory_texture_builder_get_color_state(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_memory_texture_builder_get_color_state
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_memory_texture_builder_set_color_state (GdkMemoryTextureBuilder *self, GdkColorState *color_state);
subroutine gdk_memory_texture_builder_set_color_state(self, color_state)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: color_state
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkTexture * gdk_memory_texture_builder_get_update_texture (GdkMemoryTextureBuilder *self) ;
function gdk_memory_texture_builder_get_update_texture(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_memory_texture_builder_get_update_texture
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_memory_texture_builder_set_update_texture (GdkMemoryTextureBuilder *self, GdkTexture *texture);
subroutine gdk_memory_texture_builder_set_update_texture(self, texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: texture
end subroutine

! GDK_AVAILABLE_IN_4_16
!cairo_region_t * gdk_memory_texture_builder_get_update_region (GdkMemoryTextureBuilder *self) ;
function gdk_memory_texture_builder_get_update_region(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_memory_texture_builder_get_update_region
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_memory_texture_builder_set_update_region (GdkMemoryTextureBuilder *self, cairo_region_t *region);
subroutine gdk_memory_texture_builder_set_update_region(self, region) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: region
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkTexture * gdk_memory_texture_builder_build (GdkMemoryTextureBuilder *self);
function gdk_memory_texture_builder_build(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_memory_texture_builder_build
  type(c_ptr), value :: self
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkseat.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_seat_get_type (void) ;
function gdk_seat_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_seat_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_seat_get_display (GdkSeat *seat);
function gdk_seat_get_display(seat) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_seat_get_display
  type(c_ptr), value :: seat
end function

! 
!GdkSeatCapabilities gdk_seat_get_capabilities (GdkSeat *seat);
function gdk_seat_get_capabilities(seat) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_seat_get_capabilities
  type(c_ptr), value :: seat
end function

! GDK_AVAILABLE_IN_ALL
!GList * gdk_seat_get_devices (GdkSeat *seat, GdkSeatCapabilities capabilities);
function gdk_seat_get_devices(seat, capabilities) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_seat_get_devices
  type(c_ptr), value :: seat
  integer(c_int), value :: capabilities
end function

! GDK_AVAILABLE_IN_ALL
!GList * gdk_seat_get_tools (GdkSeat *seat);
function gdk_seat_get_tools(seat) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_seat_get_tools
  type(c_ptr), value :: seat
end function

! GDK_AVAILABLE_IN_ALL
!GdkDevice * gdk_seat_get_pointer (GdkSeat *seat);
function gdk_seat_get_pointer(seat) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_seat_get_pointer
  type(c_ptr), value :: seat
end function

! GDK_AVAILABLE_IN_ALL
!GdkDevice * gdk_seat_get_keyboard (GdkSeat *seat);
function gdk_seat_get_keyboard(seat) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_seat_get_keyboard
  type(c_ptr), value :: seat
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcairo.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!void gdk_cairo_set_source_rgba (cairo_t *cr, const GdkRGBA *rgba);
subroutine gdk_cairo_set_source_rgba(cr, rgba) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: rgba
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_cairo_set_source_pixbuf (cairo_t *cr, const GdkPixbuf *pixbuf, double pixbuf_x, double pixbuf_y);
subroutine gdk_cairo_set_source_pixbuf(cr, pixbuf, pixbuf_x, pixbuf_y) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: pixbuf
  real(c_double), value :: pixbuf_x
  real(c_double), value :: pixbuf_y
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_cairo_rectangle (cairo_t *cr, const GdkRectangle *rectangle);
subroutine gdk_cairo_rectangle(cr, rectangle) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: rectangle
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_cairo_region (cairo_t *cr, const cairo_region_t *region);
subroutine gdk_cairo_region(cr, region) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: region
end subroutine

! 
!cairo_region_t * gdk_cairo_region_create_from_surface (cairo_surface_t *surface);
function gdk_cairo_region_create_from_surface(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_cairo_region_create_from_surface
  type(c_ptr), value :: surface
end function

! GDK_DEPRECATED_IN_4_6_FOR(gdk_gl_texture_new)
!void gdk_cairo_draw_from_gl (cairo_t *cr, GdkSurface *surface, int source, int source_type, int buffer_scale, int x, int y, int width, int height);
subroutine gdk_cairo_draw_from_gl(cr, surface, source, source_type,&
& buffer_scale, x, y, width, height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: cr
  type(c_ptr), value :: surface
  integer(c_int), value :: source
  integer(c_int), value :: source_type
  integer(c_int), value :: buffer_scale
  integer(c_int), value :: x
  integer(c_int), value :: y
  integer(c_int), value :: width
  integer(c_int), value :: height
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkgltexture.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_gl_texture_get_type (void) ;
function gdk_gl_texture_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_gl_texture_get_type
end function

! GDK_DEPRECATED_IN_4_12_FOR(GdkGLTextureBuilder)
!GdkTexture * gdk_gl_texture_new (GdkGLContext *context, guint id, int width, int height, GDestroyNotify destroy, gpointer data);
function gdk_gl_texture_new(context, id, width, height, destroy, data) bind(c)
  import :: c_ptr, c_int, c_funptr
  implicit none
  type(c_ptr) :: gdk_gl_texture_new
  type(c_ptr), value :: context
  integer(c_int), value :: id
  integer(c_int), value :: width
  integer(c_int), value :: height
  type(c_funptr), value :: destroy
  type(c_ptr), value :: data
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_gl_texture_release (GdkGLTexture *self);
subroutine gdk_gl_texture_release(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdksurface.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_surface_get_type (void) ;
function gdk_surface_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_surface_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_surface_new_toplevel (GdkDisplay *display);
function gdk_surface_new_toplevel(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_surface_new_toplevel
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_surface_new_popup (GdkSurface *parent, gboolean autohide);
function gdk_surface_new_popup(parent, autohide) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_surface_new_popup
  type(c_ptr), value :: parent
  integer(c_int), value :: autohide
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_surface_destroy (GdkSurface *surface);
subroutine gdk_surface_destroy(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_surface_is_destroyed (GdkSurface *surface);
function gdk_surface_is_destroyed(surface) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_surface_is_destroyed
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_surface_get_display (GdkSurface *surface);
function gdk_surface_get_display(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_surface_get_display
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_surface_hide (GdkSurface *surface);
subroutine gdk_surface_hide(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_surface_set_input_region (GdkSurface *surface, cairo_region_t *region);
subroutine gdk_surface_set_input_region(surface, region) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
  type(c_ptr), value :: region
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_surface_get_mapped (GdkSurface *surface);
function gdk_surface_get_mapped(surface) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_surface_get_mapped
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_surface_set_cursor (GdkSurface *surface, GdkCursor *cursor);
subroutine gdk_surface_set_cursor(surface, cursor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
  type(c_ptr), value :: cursor
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkCursor *gdk_surface_get_cursor (GdkSurface *surface);
function gdk_surface_get_cursor(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_surface_get_cursor
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_surface_set_device_cursor (GdkSurface *surface, GdkDevice *device, GdkCursor *cursor);
subroutine gdk_surface_set_device_cursor(surface, device, cursor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
  type(c_ptr), value :: device
  type(c_ptr), value :: cursor
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkCursor *gdk_surface_get_device_cursor (GdkSurface *surface, GdkDevice *device);
function gdk_surface_get_device_cursor(surface, device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_surface_get_device_cursor
  type(c_ptr), value :: surface
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_surface_get_width (GdkSurface *surface);
function gdk_surface_get_width(surface) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_surface_get_width
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_surface_get_height (GdkSurface *surface);
function gdk_surface_get_height(surface) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_surface_get_height
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_surface_translate_coordinates (GdkSurface *from, GdkSurface *to, double *x, double *y);
function gdk_surface_translate_coordinates(from, to, x, y) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_surface_translate_coordinates
  type(c_ptr), value :: from
  type(c_ptr), value :: to
  type(c_ptr), value :: x
  type(c_ptr), value :: y
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_surface_get_scale_factor (GdkSurface *surface);
function gdk_surface_get_scale_factor(surface) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_surface_get_scale_factor
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_4_12
!double gdk_surface_get_scale (GdkSurface *surface);
function gdk_surface_get_scale(surface) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: gdk_surface_get_scale
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_surface_get_device_position (GdkSurface *surface, GdkDevice *device, double *x, double *y, GdkModifierType *mask);
function gdk_surface_get_device_position(surface, device, x, y, mask) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_surface_get_device_position
  type(c_ptr), value :: surface
  type(c_ptr), value :: device
  type(c_ptr), value :: x
  type(c_ptr), value :: y
  type(c_ptr), value :: mask
end function

! 
!cairo_surface_t * gdk_surface_create_similar_surface (GdkSurface *surface, cairo_content_t content, int width, int height);
function gdk_surface_create_similar_surface(surface, content, width, height)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_surface_create_similar_surface
  type(c_ptr), value :: surface
  integer(c_int), value :: content
  integer(c_int), value :: width
  integer(c_int), value :: height
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_surface_beep (GdkSurface *surface);
subroutine gdk_surface_beep(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_surface_queue_render (GdkSurface *surface);
subroutine gdk_surface_queue_render(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_surface_request_layout (GdkSurface *surface);
subroutine gdk_surface_request_layout(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkFrameClock* gdk_surface_get_frame_clock (GdkSurface *surface);
function gdk_surface_get_frame_clock(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_surface_get_frame_clock
  type(c_ptr), value :: surface
end function

! GDK_DEPRECATED_IN_4_16
!void gdk_surface_set_opaque_region (GdkSurface *surface, cairo_region_t *region);
subroutine gdk_surface_set_opaque_region(surface, region) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
  type(c_ptr), value :: region
end subroutine

! GDK_DEPRECATED_IN_4_18
!GdkCairoContext *gdk_surface_create_cairo_context(GdkSurface *surface);
function gdk_surface_create_cairo_context(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_surface_create_cairo_context
  type(c_ptr), value :: surface
end function

! GDK_AVAILABLE_IN_ALL
!GdkGLContext * gdk_surface_create_gl_context (GdkSurface *surface, GError **error);
function gdk_surface_create_gl_context(surface, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_surface_create_gl_context
  type(c_ptr), value :: surface
  type(c_ptr), value :: error
end function

! 
!GdkVulkanContext * gdk_surface_create_vulkan_context(GdkSurface *surface, GError **error);
function gdk_surface_create_vulkan_context(surface, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_surface_create_vulkan_context
  type(c_ptr), value :: surface
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdisplay.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_display_get_type (void) ;
function gdk_display_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_display_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay *gdk_display_open (const char *display_name);
function gdk_display_open(display_name) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_display_open
  character(kind=c_char), dimension(*) :: display_name
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_display_get_name (GdkDisplay *display);
function gdk_display_get_name(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_name
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_device_is_grabbed (GdkDisplay *display, GdkDevice *device);
function gdk_display_device_is_grabbed(display, device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_device_is_grabbed
  type(c_ptr), value :: display
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_display_beep (GdkDisplay *display);
subroutine gdk_display_beep(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_display_sync (GdkDisplay *display);
subroutine gdk_display_sync(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_display_flush (GdkDisplay *display);
subroutine gdk_display_flush(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_display_close (GdkDisplay *display);
subroutine gdk_display_close(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_is_closed (GdkDisplay *display);
function gdk_display_is_closed(display) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_is_closed
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_is_composited (GdkDisplay *display);
function gdk_display_is_composited(display) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_is_composited
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_is_rgba (GdkDisplay *display);
function gdk_display_is_rgba(display) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_is_rgba
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gdk_display_supports_shadow_width (GdkDisplay *display);
function gdk_display_supports_shadow_width(display) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_supports_shadow_width
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_supports_input_shapes (GdkDisplay *display);
function gdk_display_supports_input_shapes(display) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_supports_input_shapes
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_4_4
!gboolean gdk_display_prepare_gl (GdkDisplay *self, GError **error);
function gdk_display_prepare_gl(self, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_prepare_gl
  type(c_ptr), value :: self
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_4_6
!GdkGLContext *gdk_display_create_gl_context(GdkDisplay *self, GError **error);
function gdk_display_create_gl_context(self, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_create_gl_context
  type(c_ptr), value :: self
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay *gdk_display_get_default (void);
function gdk_display_get_default() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_default
end function

! GDK_AVAILABLE_IN_ALL
!GdkClipboard * gdk_display_get_clipboard (GdkDisplay *display);
function gdk_display_get_clipboard(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_clipboard
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!GdkClipboard * gdk_display_get_primary_clipboard (GdkDisplay *display);
function gdk_display_get_primary_clipboard(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_primary_clipboard
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_10_FOR(gdk_toplevel_set_startup_id)
!void gdk_display_notify_startup_complete (GdkDisplay *display, const char *startup_id);
subroutine gdk_display_notify_startup_complete(display, startup_id) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: startup_id
end subroutine

! GDK_DEPRECATED_IN_4_10
!const char * gdk_display_get_startup_notification_id (GdkDisplay *display);
function gdk_display_get_startup_notification_id(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_startup_notification_id
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!GdkAppLaunchContext *gdk_display_get_app_launch_context (GdkDisplay *display);
function gdk_display_get_app_launch_context(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_app_launch_context
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!GdkSeat * gdk_display_get_default_seat (GdkDisplay *display);
function gdk_display_get_default_seat(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_default_seat
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!GList * gdk_display_list_seats (GdkDisplay *display);
function gdk_display_list_seats(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_list_seats
  type(c_ptr), value :: display
end function

! GDK_AVAILABLE_IN_ALL
!GListModel * gdk_display_get_monitors (GdkDisplay *self) ;
function gdk_display_get_monitors(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_monitors
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!GdkMonitor * gdk_display_get_monitor_at_surface (GdkDisplay *display, GdkSurface *surface);
function gdk_display_get_monitor_at_surface(display, surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_monitor_at_surface
  type(c_ptr), value :: display
  type(c_ptr), value :: surface
end function

! GDK_DEPRECATED_IN_4_10
!void gdk_display_put_event (GdkDisplay *display, GdkEvent *event);
subroutine gdk_display_put_event(display, event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
  type(c_ptr), value :: event
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_map_keyval (GdkDisplay *display, guint keyval, GdkKeymapKey **keys, int *n_keys);
function gdk_display_map_keyval(display, keyval, keys, n_keys) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_map_keyval
  type(c_ptr), value :: display
  integer(c_int), value :: keyval
  type(c_ptr), value :: keys
  type(c_ptr), value :: n_keys
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_map_keycode (GdkDisplay *display, guint keycode, GdkKeymapKey **keys, guint **keyvals, int *n_entries);
function gdk_display_map_keycode(display, keycode, keys, keyvals, n_entries)&
& bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_map_keycode
  type(c_ptr), value :: display
  integer(c_int), value :: keycode
  type(c_ptr), value :: keys
  type(c_ptr), value :: keyvals
  type(c_ptr), value :: n_entries
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_translate_key (GdkDisplay *display, guint keycode, GdkModifierType state, int group, guint *keyval, int *effective_group, int *level, GdkModifierType *consumed);
function gdk_display_translate_key(display, keycode, state, group, keyval,&
& effective_group, level, consumed) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_display_translate_key
  type(c_ptr), value :: display
  integer(c_int), value :: keycode
  integer(c_int), value :: state
  integer(c_int), value :: group
  type(c_ptr), value :: keyval
  type(c_ptr), value :: effective_group
  type(c_ptr), value :: level
  type(c_ptr), value :: consumed
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_display_get_setting (GdkDisplay *display, const char *name, GValue *value);
function gdk_display_get_setting(display, name, value) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_display_get_setting
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: name
  type(c_ptr), value :: value
end function

! 
!GdkDmabufFormats * gdk_display_get_dmabuf_formats (GdkDisplay *display);
function gdk_display_get_dmabuf_formats(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_get_dmabuf_formats
  type(c_ptr), value :: display
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdktoplevellayout.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_toplevel_layout_get_type (void);
function gdk_toplevel_layout_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_toplevel_layout_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkToplevelLayout * gdk_toplevel_layout_new (void);
function gdk_toplevel_layout_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_toplevel_layout_new
end function

! GDK_AVAILABLE_IN_ALL
!GdkToplevelLayout * gdk_toplevel_layout_ref (GdkToplevelLayout *layout);
function gdk_toplevel_layout_ref(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_toplevel_layout_ref
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_layout_unref (GdkToplevelLayout *layout);
subroutine gdk_toplevel_layout_unref(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkToplevelLayout * gdk_toplevel_layout_copy (GdkToplevelLayout *layout);
function gdk_toplevel_layout_copy(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_toplevel_layout_copy
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_toplevel_layout_equal (GdkToplevelLayout *layout, GdkToplevelLayout *other);
function gdk_toplevel_layout_equal(layout, other) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_layout_equal
  type(c_ptr), value :: layout
  type(c_ptr), value :: other
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_layout_set_maximized (GdkToplevelLayout *layout, gboolean maximized);
subroutine gdk_toplevel_layout_set_maximized(layout, maximized) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: maximized
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_layout_set_fullscreen (GdkToplevelLayout *layout, gboolean fullscreen, GdkMonitor *monitor);
subroutine gdk_toplevel_layout_set_fullscreen(layout, fullscreen, monitor)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: fullscreen
  type(c_ptr), value :: monitor
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_toplevel_layout_get_maximized (GdkToplevelLayout *layout, gboolean *maximized);
function gdk_toplevel_layout_get_maximized(layout, maximized) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_layout_get_maximized
  type(c_ptr), value :: layout
  type(c_ptr), value :: maximized
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_toplevel_layout_get_fullscreen (GdkToplevelLayout *layout, gboolean *fullscreen);
function gdk_toplevel_layout_get_fullscreen(layout, fullscreen) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_layout_get_fullscreen
  type(c_ptr), value :: layout
  type(c_ptr), value :: fullscreen
end function

! GDK_AVAILABLE_IN_ALL
!GdkMonitor * gdk_toplevel_layout_get_fullscreen_monitor (GdkToplevelLayout *layout);
function gdk_toplevel_layout_get_fullscreen_monitor(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_toplevel_layout_get_fullscreen_monitor
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_layout_set_resizable (GdkToplevelLayout *layout, gboolean resizable);
subroutine gdk_toplevel_layout_set_resizable(layout, resizable) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: resizable
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_toplevel_layout_get_resizable (GdkToplevelLayout *layout);
function gdk_toplevel_layout_get_resizable(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_layout_get_resizable
  type(c_ptr), value :: layout
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdktexture.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_6
!GQuark gdk_texture_error_quark (void);
function gdk_texture_error_quark() bind(c)
  import :: c_int32_t
  implicit none
  integer(c_int32_t) :: gdk_texture_error_quark
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_texture_get_type (void) ;
function gdk_texture_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_texture_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkTexture * gdk_texture_new_for_pixbuf (GdkPixbuf *pixbuf);
function gdk_texture_new_for_pixbuf(pixbuf) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_new_for_pixbuf
  type(c_ptr), value :: pixbuf
end function

! GDK_AVAILABLE_IN_ALL
!GdkTexture * gdk_texture_new_from_resource (const char *resource_path);
function gdk_texture_new_from_resource(resource_path) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_texture_new_from_resource
  character(kind=c_char), dimension(*) :: resource_path
end function

! GDK_AVAILABLE_IN_ALL
!GdkTexture * gdk_texture_new_from_file (GFile *file, GError **error);
function gdk_texture_new_from_file(file, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_new_from_file
  type(c_ptr), value :: file
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_4_6
!GdkTexture * gdk_texture_new_from_filename (const char *path, GError **error);
function gdk_texture_new_from_filename(path, error) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_texture_new_from_filename
  character(kind=c_char), dimension(*) :: path
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_4_6
!GdkTexture * gdk_texture_new_from_bytes (GBytes *bytes, GError **error);
function gdk_texture_new_from_bytes(bytes, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_new_from_bytes
  type(c_ptr), value :: bytes
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_texture_get_width (GdkTexture *texture) ;
function gdk_texture_get_width(texture) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_texture_get_width
  type(c_ptr), value :: texture
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_texture_get_height (GdkTexture *texture) ;
function gdk_texture_get_height(texture) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_texture_get_height
  type(c_ptr), value :: texture
end function

! GDK_AVAILABLE_IN_4_10
!GdkMemoryFormat gdk_texture_get_format (GdkTexture *self) ;
function gdk_texture_get_format(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_texture_get_format
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_texture_get_color_state (GdkTexture *self);
function gdk_texture_get_color_state(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_get_color_state
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_texture_download (GdkTexture *texture, guchar *data, gsize stride);
subroutine gdk_texture_download(texture, data, stride) bind(c)
  import :: c_ptr, c_char, c_size_t
  implicit none
  type(c_ptr), value :: texture
  character(kind=c_char), dimension(*) :: data
  integer(c_size_t), value :: stride
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_texture_save_to_png (GdkTexture *texture, const char *filename);
function gdk_texture_save_to_png(texture, filename) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_texture_save_to_png
  type(c_ptr), value :: texture
  character(kind=c_char), dimension(*) :: filename
end function

! GDK_AVAILABLE_IN_4_6
!GBytes * gdk_texture_save_to_png_bytes (GdkTexture *texture);
function gdk_texture_save_to_png_bytes(texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_save_to_png_bytes
  type(c_ptr), value :: texture
end function

! GDK_AVAILABLE_IN_4_6
!gboolean gdk_texture_save_to_tiff (GdkTexture *texture, const char *filename);
function gdk_texture_save_to_tiff(texture, filename) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_texture_save_to_tiff
  type(c_ptr), value :: texture
  character(kind=c_char), dimension(*) :: filename
end function

! GDK_AVAILABLE_IN_4_6
!GBytes * gdk_texture_save_to_tiff_bytes (GdkTexture *texture);
function gdk_texture_save_to_tiff_bytes(texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_save_to_tiff_bytes
  type(c_ptr), value :: texture
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkrectangle.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!gboolean gdk_rectangle_intersect (const GdkRectangle *src1, const GdkRectangle *src2, GdkRectangle *dest);
function gdk_rectangle_intersect(src1, src2, dest) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_rectangle_intersect
  type(c_ptr), value :: src1
  type(c_ptr), value :: src2
  type(c_ptr), value :: dest
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_rectangle_union (const GdkRectangle *src1, const GdkRectangle *src2, GdkRectangle *dest);
subroutine gdk_rectangle_union(src1, src2, dest) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: src1
  type(c_ptr), value :: src2
  type(c_ptr), value :: dest
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_rectangle_equal (const GdkRectangle *rect1, const GdkRectangle *rect2) ;
function gdk_rectangle_equal(rect1, rect2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_rectangle_equal
  type(c_ptr), value :: rect1
  type(c_ptr), value :: rect2
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_rectangle_contains_point (const GdkRectangle *rect, int x, int y) ;
function gdk_rectangle_contains_point(rect, x, y) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_rectangle_contains_point
  type(c_ptr), value :: rect
  integer(c_int), value :: x
  integer(c_int), value :: y
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_rectangle_get_type (void) ;
function gdk_rectangle_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_rectangle_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkgltexturebuilder.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_12
!GdkGLTextureBuilder * gdk_gl_texture_builder_new (void);
function gdk_gl_texture_builder_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_texture_builder_new
end function

! GDK_AVAILABLE_IN_4_12
!GdkGLContext * gdk_gl_texture_builder_get_context (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_context(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_texture_builder_get_context
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_context (GdkGLTextureBuilder *self, GdkGLContext *context);
subroutine gdk_gl_texture_builder_set_context(self, context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: context
end subroutine

! GDK_AVAILABLE_IN_4_12
!guint gdk_gl_texture_builder_get_id (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_id(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_texture_builder_get_id
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_id (GdkGLTextureBuilder *self, guint id);
subroutine gdk_gl_texture_builder_set_id(self, id) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: id
end subroutine

! GDK_AVAILABLE_IN_4_12
!int gdk_gl_texture_builder_get_width (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_width(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_texture_builder_get_width
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_width (GdkGLTextureBuilder *self, int width);
subroutine gdk_gl_texture_builder_set_width(self, width) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: width
end subroutine

! GDK_AVAILABLE_IN_4_12
!int gdk_gl_texture_builder_get_height (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_height(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_texture_builder_get_height
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_height (GdkGLTextureBuilder *self, int height);
subroutine gdk_gl_texture_builder_set_height(self, height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: height
end subroutine

! GDK_AVAILABLE_IN_4_12
!GdkMemoryFormat gdk_gl_texture_builder_get_format (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_format(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_texture_builder_get_format
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_format (GdkGLTextureBuilder *self, GdkMemoryFormat format);
subroutine gdk_gl_texture_builder_set_format(self, format) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: format
end subroutine

! GDK_AVAILABLE_IN_4_12
!gboolean gdk_gl_texture_builder_get_has_mipmap (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_has_mipmap(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_texture_builder_get_has_mipmap
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_has_mipmap (GdkGLTextureBuilder *self, gboolean has_mipmap);
subroutine gdk_gl_texture_builder_set_has_mipmap(self, has_mipmap) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: has_mipmap
end subroutine

! GDK_AVAILABLE_IN_4_12
!gpointer gdk_gl_texture_builder_get_sync (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_sync(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_texture_builder_get_sync
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_sync (GdkGLTextureBuilder *self, gpointer sync);
subroutine gdk_gl_texture_builder_set_sync(self, sync) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: sync
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_gl_texture_builder_get_color_state (GdkGLTextureBuilder *self);
function gdk_gl_texture_builder_get_color_state(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_texture_builder_get_color_state
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_gl_texture_builder_set_color_state (GdkGLTextureBuilder *self, GdkColorState *color_state);
subroutine gdk_gl_texture_builder_set_color_state(self, color_state) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: color_state
end subroutine

! GDK_AVAILABLE_IN_4_12
!GdkTexture * gdk_gl_texture_builder_get_update_texture (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_update_texture(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_texture_builder_get_update_texture
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_update_texture (GdkGLTextureBuilder *self, GdkTexture *texture);
subroutine gdk_gl_texture_builder_set_update_texture(self, texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: texture
end subroutine

! GDK_AVAILABLE_IN_4_12
!cairo_region_t * gdk_gl_texture_builder_get_update_region (GdkGLTextureBuilder *self) ;
function gdk_gl_texture_builder_get_update_region(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_texture_builder_get_update_region
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_gl_texture_builder_set_update_region (GdkGLTextureBuilder *self, cairo_region_t *region);
subroutine gdk_gl_texture_builder_set_update_region(self, region) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: region
end subroutine

! GDK_AVAILABLE_IN_4_12
!GdkTexture * gdk_gl_texture_builder_build (GdkGLTextureBuilder *self, GDestroyNotify destroy, gpointer data);
function gdk_gl_texture_builder_build(self, destroy, data) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr) :: gdk_gl_texture_builder_build
  type(c_ptr), value :: self
  type(c_funptr), value :: destroy
  type(c_ptr), value :: data
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdmabuftexture.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_14
!GType gdk_dmabuf_texture_get_type (void) ;
function gdk_dmabuf_texture_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_dmabuf_texture_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GQuark gdk_dmabuf_error_quark (void) ;
function gdk_dmabuf_error_quark() bind(c)
  import :: c_int32_t
  implicit none
  integer(c_int32_t) :: gdk_dmabuf_error_quark
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdevicepad.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_device_pad_get_type (void) ;
function gdk_device_pad_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_device_pad_get_type
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_device_pad_get_n_groups (GdkDevicePad *pad);
function gdk_device_pad_get_n_groups(pad) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_pad_get_n_groups
  type(c_ptr), value :: pad
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_device_pad_get_group_n_modes (GdkDevicePad *pad, int group_idx);
function gdk_device_pad_get_group_n_modes(pad, group_idx) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_pad_get_group_n_modes
  type(c_ptr), value :: pad
  integer(c_int), value :: group_idx
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_device_pad_get_n_features (GdkDevicePad *pad, GdkDevicePadFeature feature);
function gdk_device_pad_get_n_features(pad, feature) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_pad_get_n_features
  type(c_ptr), value :: pad
  integer(c_int), value :: feature
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_device_pad_get_feature_group (GdkDevicePad *pad, GdkDevicePadFeature feature, int feature_idx);
function gdk_device_pad_get_feature_group(pad, feature, feature_idx) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_pad_get_feature_group
  type(c_ptr), value :: pad
  integer(c_int), value :: feature
  integer(c_int), value :: feature_idx
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdrop.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_drop_get_type (void) ;
function gdk_drop_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_drop_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_drop_get_display (GdkDrop *self);
function gdk_drop_get_display(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drop_get_display
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!GdkDevice * gdk_drop_get_device (GdkDrop *self);
function gdk_drop_get_device(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drop_get_device
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_drop_get_surface (GdkDrop *self);
function gdk_drop_get_surface(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drop_get_surface
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_drop_get_formats (GdkDrop *self);
function gdk_drop_get_formats(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drop_get_formats
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!GdkDragAction gdk_drop_get_actions (GdkDrop *self);
function gdk_drop_get_actions(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_drop_get_actions
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!GdkDrag * gdk_drop_get_drag (GdkDrop *self);
function gdk_drop_get_drag(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drop_get_drag
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_drop_status (GdkDrop *self, GdkDragAction actions, GdkDragAction preferred);
subroutine gdk_drop_status(self, actions, preferred) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: actions
  integer(c_int), value :: preferred
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_drop_finish (GdkDrop *self, GdkDragAction action);
subroutine gdk_drop_finish(self, action) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: action
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_drop_read_async (GdkDrop *self, const char **mime_types, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_drop_read_async(self, mime_types, io_priority, cancellable,&
& callback, user_data) bind(c)
  import :: c_ptr, c_int, c_funptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), dimension(*) :: mime_types
  integer(c_int), value :: io_priority
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!GInputStream * gdk_drop_read_finish (GdkDrop *self, GAsyncResult *result, const char **out_mime_type, GError **error);
function gdk_drop_read_finish(self, result, out_mime_type, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drop_read_finish
  type(c_ptr), value :: self
  type(c_ptr), value :: result
  type(c_ptr), dimension(*) :: out_mime_type
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_drop_read_value_async (GdkDrop *self, GType type, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_drop_read_value_async(self, type, io_priority, cancellable,&
& callback, user_data) bind(c)
  import :: c_ptr, c_size_t, c_int, c_funptr
  implicit none
  type(c_ptr), value :: self
  integer(c_size_t), value :: type
  integer(c_int), value :: io_priority
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!const GValue * gdk_drop_read_value_finish (GdkDrop *self, GAsyncResult *result, GError **error);
function gdk_drop_read_value_finish(self, result, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drop_read_value_finish
  type(c_ptr), value :: self
  type(c_ptr), value :: result
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdragsurface.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!gboolean gdk_drag_surface_present (GdkDragSurface *drag_surface, int width, int height);
function gdk_drag_surface_present(drag_surface, width, height) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_drag_surface_present
  type(c_ptr), value :: drag_surface
  integer(c_int), value :: width
  integer(c_int), value :: height
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdktypes.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcursor.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_cursor_get_type (void) ;
function gdk_cursor_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_cursor_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkCursor* gdk_cursor_new_from_texture (GdkTexture *texture, int hotspot_x, int hotspot_y, GdkCursor *fallback);
function gdk_cursor_new_from_texture(texture, hotspot_x, hotspot_y, fallback)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_cursor_new_from_texture
  type(c_ptr), value :: texture
  integer(c_int), value :: hotspot_x
  integer(c_int), value :: hotspot_y
  type(c_ptr), value :: fallback
end function

! GDK_AVAILABLE_IN_ALL
!GdkCursor* gdk_cursor_new_from_name (const char *name, GdkCursor *fallback);
function gdk_cursor_new_from_name(name, fallback) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_cursor_new_from_name
  character(kind=c_char), dimension(*) :: name
  type(c_ptr), value :: fallback
end function

! GDK_AVAILABLE_IN_4_16
!GdkCursor * gdk_cursor_new_from_callback (GdkCursorGetTextureCallback callback, gpointer data, GDestroyNotify destroy, GdkCursor *fallback);
function gdk_cursor_new_from_callback(callback, data, destroy, fallback)&
& bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr) :: gdk_cursor_new_from_callback
  type(c_funptr), value :: callback
  type(c_ptr), value :: data
  type(c_funptr), value :: destroy
  type(c_ptr), value :: fallback
end function

! GDK_AVAILABLE_IN_ALL
!GdkCursor * gdk_cursor_get_fallback (GdkCursor *cursor);
function gdk_cursor_get_fallback(cursor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_cursor_get_fallback
  type(c_ptr), value :: cursor
end function

! GDK_AVAILABLE_IN_ALL
!const char *gdk_cursor_get_name (GdkCursor *cursor);
function gdk_cursor_get_name(cursor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_cursor_get_name
  type(c_ptr), value :: cursor
end function

! GDK_AVAILABLE_IN_ALL
!GdkTexture *gdk_cursor_get_texture (GdkCursor *cursor);
function gdk_cursor_get_texture(cursor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_cursor_get_texture
  type(c_ptr), value :: cursor
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_cursor_get_hotspot_x (GdkCursor *cursor);
function gdk_cursor_get_hotspot_x(cursor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_cursor_get_hotspot_x
  type(c_ptr), value :: cursor
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_cursor_get_hotspot_y (GdkCursor *cursor);
function gdk_cursor_get_hotspot_y(cursor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_cursor_get_hotspot_y
  type(c_ptr), value :: cursor
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdrag.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_drag_get_type (void) ;
function gdk_drag_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_drag_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_drag_get_display (GdkDrag *drag);
function gdk_drag_get_display(drag) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drag_get_display
  type(c_ptr), value :: drag
end function

! GDK_AVAILABLE_IN_ALL
!GdkDevice * gdk_drag_get_device (GdkDrag *drag);
function gdk_drag_get_device(drag) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drag_get_device
  type(c_ptr), value :: drag
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats *gdk_drag_get_formats (GdkDrag *drag);
function gdk_drag_get_formats(drag) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drag_get_formats
  type(c_ptr), value :: drag
end function

! GDK_AVAILABLE_IN_ALL
!GdkDragAction gdk_drag_get_actions (GdkDrag *drag);
function gdk_drag_get_actions(drag) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_drag_get_actions
  type(c_ptr), value :: drag
end function

! GDK_AVAILABLE_IN_ALL
!GdkDragAction gdk_drag_get_selected_action (GdkDrag *drag);
function gdk_drag_get_selected_action(drag) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_drag_get_selected_action
  type(c_ptr), value :: drag
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_drag_action_is_unique (GdkDragAction action) ;
function gdk_drag_action_is_unique(action) bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: gdk_drag_action_is_unique
  integer(c_int), value :: action
end function

! GDK_AVAILABLE_IN_ALL
!GdkDrag * gdk_drag_begin (GdkSurface *surface, GdkDevice *device, GdkContentProvider *content, GdkDragAction actions, double dx, double dy);
function gdk_drag_begin(surface, device, content, actions, dx, dy) bind(c)
  import :: c_ptr, c_int, c_double
  implicit none
  type(c_ptr) :: gdk_drag_begin
  type(c_ptr), value :: surface
  type(c_ptr), value :: device
  type(c_ptr), value :: content
  integer(c_int), value :: actions
  real(c_double), value :: dx
  real(c_double), value :: dy
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_drag_drop_done (GdkDrag *drag, gboolean success);
subroutine gdk_drag_drop_done(drag, success) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: drag
  integer(c_int), value :: success
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkSurface *gdk_drag_get_drag_surface (GdkDrag *drag);
function gdk_drag_get_drag_surface(drag) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drag_get_drag_surface
  type(c_ptr), value :: drag
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_drag_set_hotspot (GdkDrag *drag, int hot_x, int hot_y);
subroutine gdk_drag_set_hotspot(drag, hot_x, hot_y) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: drag
  integer(c_int), value :: hot_x
  integer(c_int), value :: hot_y
end subroutine

! 
!GdkContentProvider * gdk_drag_get_content (GdkDrag *drag);
function gdk_drag_get_content(drag) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drag_get_content
  type(c_ptr), value :: drag
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_drag_get_surface (GdkDrag *drag);
function gdk_drag_get_surface(drag) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_drag_get_surface
  type(c_ptr), value :: drag
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcontentdeserializer.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_content_deserializer_get_type (void) ;
function gdk_content_deserializer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_content_deserializer_get_type
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_content_deserializer_get_mime_type (GdkContentDeserializer *deserializer);
function gdk_content_deserializer_get_mime_type(deserializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_deserializer_get_mime_type
  type(c_ptr), value :: deserializer
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_content_deserializer_get_gtype (GdkContentDeserializer *deserializer);
function gdk_content_deserializer_get_gtype(deserializer) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gdk_content_deserializer_get_gtype
  type(c_ptr), value :: deserializer
end function

! GDK_AVAILABLE_IN_ALL
!GValue * gdk_content_deserializer_get_value (GdkContentDeserializer *deserializer);
function gdk_content_deserializer_get_value(deserializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_deserializer_get_value
  type(c_ptr), value :: deserializer
end function

! GDK_AVAILABLE_IN_ALL
!GInputStream * gdk_content_deserializer_get_input_stream (GdkContentDeserializer *deserializer);
function gdk_content_deserializer_get_input_stream(deserializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_deserializer_get_input_stream
  type(c_ptr), value :: deserializer
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_content_deserializer_get_priority (GdkContentDeserializer *deserializer);
function gdk_content_deserializer_get_priority(deserializer) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_content_deserializer_get_priority
  type(c_ptr), value :: deserializer
end function

! GDK_AVAILABLE_IN_ALL
!GCancellable * gdk_content_deserializer_get_cancellable (GdkContentDeserializer *deserializer);
function gdk_content_deserializer_get_cancellable(deserializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_deserializer_get_cancellable
  type(c_ptr), value :: deserializer
end function

! GDK_AVAILABLE_IN_ALL
!gpointer gdk_content_deserializer_get_user_data (GdkContentDeserializer *deserializer);
function gdk_content_deserializer_get_user_data(deserializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_deserializer_get_user_data
  type(c_ptr), value :: deserializer
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_deserializer_set_task_data (GdkContentDeserializer *deserializer, gpointer data, GDestroyNotify notify);
subroutine gdk_content_deserializer_set_task_data(deserializer, data, notify)&
& bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: deserializer
  type(c_ptr), value :: data
  type(c_funptr), value :: notify
end subroutine

! GDK_AVAILABLE_IN_ALL
!gpointer gdk_content_deserializer_get_task_data (GdkContentDeserializer *deserializer);
function gdk_content_deserializer_get_task_data(deserializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_deserializer_get_task_data
  type(c_ptr), value :: deserializer
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_deserializer_return_success (GdkContentDeserializer *deserializer);
subroutine gdk_content_deserializer_return_success(deserializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: deserializer
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_content_deserializer_return_error (GdkContentDeserializer *deserializer, GError *error);
subroutine gdk_content_deserializer_return_error(deserializer, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: deserializer
  type(c_ptr), value :: error
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_union_deserialize_gtypes (GdkContentFormats *formats);
function gdk_content_formats_union_deserialize_gtypes(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_union_deserialize_gtypes
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_union_deserialize_mime_types(GdkContentFormats *formats);
function gdk_content_formats_union_deserialize_mime_types(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_union_deserialize_mime_types
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_register_deserializer (const char *mime_type, GType type, GdkContentDeserializeFunc deserialize, gpointer data, GDestroyNotify notify);
subroutine gdk_content_register_deserializer(mime_type, type, deserialize,&
& data, notify) bind(c)
  import :: c_char, c_size_t, c_funptr, c_ptr
  implicit none
  character(kind=c_char), dimension(*) :: mime_type
  integer(c_size_t), value :: type
  type(c_funptr), value :: deserialize
  type(c_ptr), value :: data
  type(c_funptr), value :: notify
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_content_deserialize_async (GInputStream *stream, const char *mime_type, GType type, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_content_deserialize_async(stream, mime_type, type, io_priority,&
& cancellable, callback, user_data) bind(c)
  import :: c_ptr, c_char, c_size_t, c_int, c_funptr
  implicit none
  type(c_ptr), value :: stream
  character(kind=c_char), dimension(*) :: mime_type
  integer(c_size_t), value :: type
  integer(c_int), value :: io_priority
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_content_deserialize_finish (GAsyncResult *result, GValue *value, GError **error);
function gdk_content_deserialize_finish(result, value, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_content_deserialize_finish
  type(c_ptr), value :: result
  type(c_ptr), value :: value
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdisplaymanager.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_display_manager_get_type (void) ;
function gdk_display_manager_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_display_manager_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplayManager *gdk_display_manager_get (void);
function gdk_display_manager_get() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_manager_get
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_display_manager_get_default_display (GdkDisplayManager *manager);
function gdk_display_manager_get_default_display(manager) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_manager_get_default_display
  type(c_ptr), value :: manager
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_display_manager_set_default_display (GdkDisplayManager *manager, GdkDisplay *display);
subroutine gdk_display_manager_set_default_display(manager, display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: manager
  type(c_ptr), value :: display
end subroutine

! GDK_AVAILABLE_IN_ALL
!GSList * gdk_display_manager_list_displays (GdkDisplayManager *manager);
function gdk_display_manager_list_displays(manager) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_display_manager_list_displays
  type(c_ptr), value :: manager
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_display_manager_open_display (GdkDisplayManager *manager, const char *name);
function gdk_display_manager_open_display(manager, name) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_display_manager_open_display
  type(c_ptr), value :: manager
  character(kind=c_char), dimension(*) :: name
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_set_allowed_backends (const char *backends);
subroutine gdk_set_allowed_backends(backends) bind(c)
  import :: c_char
  implicit none
  character(kind=c_char), dimension(*) :: backends
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkrgba.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_rgba_get_type (void) ;
function gdk_rgba_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_rgba_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkRGBA * gdk_rgba_copy (const GdkRGBA *rgba);
function gdk_rgba_copy(rgba) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_rgba_copy
  type(c_ptr), value :: rgba
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_rgba_free (GdkRGBA *rgba);
subroutine gdk_rgba_free(rgba) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: rgba
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_rgba_is_clear (const GdkRGBA *rgba) ;
function gdk_rgba_is_clear(rgba) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_rgba_is_clear
  type(c_ptr), value :: rgba
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_rgba_is_opaque (const GdkRGBA *rgba) ;
function gdk_rgba_is_opaque(rgba) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_rgba_is_opaque
  type(c_ptr), value :: rgba
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_rgba_hash (gconstpointer p) ;
function gdk_rgba_hash(p) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_rgba_hash
  type(c_ptr), value :: p
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_rgba_equal (gconstpointer p1, gconstpointer p2) ;
function gdk_rgba_equal(p1, p2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_rgba_equal
  type(c_ptr), value :: p1
  type(c_ptr), value :: p2
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_rgba_parse (GdkRGBA *rgba, const char *spec);
function gdk_rgba_parse(rgba, spec) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_rgba_parse
  type(c_ptr), value :: rgba
  character(kind=c_char), dimension(*) :: spec
end function

! GDK_AVAILABLE_IN_ALL
!char * gdk_rgba_to_string (const GdkRGBA *rgba) ;
function gdk_rgba_to_string(rgba) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_rgba_to_string
  type(c_ptr), value :: rgba
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdk.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdrawcontext.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_draw_context_get_type (void) ;
function gdk_draw_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_draw_context_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_draw_context_get_display (GdkDrawContext *context);
function gdk_draw_context_get_display(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_draw_context_get_display
  type(c_ptr), value :: context
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_draw_context_get_surface (GdkDrawContext *context);
function gdk_draw_context_get_surface(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_draw_context_get_surface
  type(c_ptr), value :: context
end function

! GDK_DEPRECATED_IN_4_16
!void gdk_draw_context_begin_frame (GdkDrawContext *context, const cairo_region_t *region);
subroutine gdk_draw_context_begin_frame(context, region) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: region
end subroutine

! GDK_DEPRECATED_IN_4_16
!void gdk_draw_context_end_frame (GdkDrawContext *context);
subroutine gdk_draw_context_end_frame(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
end subroutine

! GDK_DEPRECATED_IN_4_16
!gboolean gdk_draw_context_is_in_frame (GdkDrawContext *context);
function gdk_draw_context_is_in_frame(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_draw_context_is_in_frame
  type(c_ptr), value :: context
end function

! GDK_DEPRECATED_IN_4_16
!const cairo_region_t * gdk_draw_context_get_frame_region (GdkDrawContext *context);
function gdk_draw_context_get_frame_region(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_draw_context_get_frame_region
  type(c_ptr), value :: context
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkevents.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_event_get_type (void) ;
function gdk_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_event_sequence_get_type (void) ;
function gdk_event_sequence_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_event_sequence_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkEvent * gdk_event_ref (GdkEvent *event);
function gdk_event_ref(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_event_ref
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_event_unref (GdkEvent *event);
subroutine gdk_event_unref(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: event
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkEventType gdk_event_get_event_type (GdkEvent *event);
function gdk_event_get_event_type(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_event_get_event_type
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_event_get_surface (GdkEvent *event);
function gdk_event_get_surface(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_event_get_surface
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkSeat * gdk_event_get_seat (GdkEvent *event);
function gdk_event_get_seat(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_event_get_seat
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkDevice * gdk_event_get_device (GdkEvent *event);
function gdk_event_get_device(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_event_get_device
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkDeviceTool * gdk_event_get_device_tool (GdkEvent *event);
function gdk_event_get_device_tool(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_event_get_device_tool
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!guint32 gdk_event_get_time (GdkEvent *event);
function gdk_event_get_time(event) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: gdk_event_get_time
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_event_get_display (GdkEvent *event);
function gdk_event_get_display(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_event_get_display
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkEventSequence * gdk_event_get_event_sequence (GdkEvent *event);
function gdk_event_get_event_sequence(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_event_get_event_sequence
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkModifierType gdk_event_get_modifier_state (GdkEvent *event);
function gdk_event_get_modifier_state(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_event_get_modifier_state
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_event_get_position (GdkEvent *event, double *x, double *y);
function gdk_event_get_position(event, x, y) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_event_get_position
  type(c_ptr), value :: event
  type(c_ptr), value :: x
  type(c_ptr), value :: y
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_event_get_axes (GdkEvent *event, double **axes, guint *n_axes);
function gdk_event_get_axes(event, axes, n_axes) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_event_get_axes
  type(c_ptr), value :: event
  type(c_ptr), value :: axes
  type(c_ptr), value :: n_axes
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_event_get_axis (GdkEvent *event, GdkAxisUse axis_use, double *value);
function gdk_event_get_axis(event, axis_use, value) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_event_get_axis
  type(c_ptr), value :: event
  integer(c_int), value :: axis_use
  type(c_ptr), value :: value
end function

! GDK_AVAILABLE_IN_ALL
!GdkTimeCoord * gdk_event_get_history (GdkEvent *event, guint *out_n_coords);
function gdk_event_get_history(event, out_n_coords) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_event_get_history
  type(c_ptr), value :: event
  type(c_ptr), value :: out_n_coords
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_event_get_pointer_emulated (GdkEvent *event);
function gdk_event_get_pointer_emulated(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_event_get_pointer_emulated
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_button_event_get_type (void) ;
function gdk_button_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_button_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_button_event_get_button (GdkEvent *event);
function gdk_button_event_get_button(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_button_event_get_button
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_scroll_event_get_type (void) ;
function gdk_scroll_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_scroll_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkScrollDirection gdk_scroll_event_get_direction (GdkEvent *event);
function gdk_scroll_event_get_direction(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_scroll_event_get_direction
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_scroll_event_get_deltas (GdkEvent *event, double *delta_x, double *delta_y);
subroutine gdk_scroll_event_get_deltas(event, delta_x, delta_y) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: event
  type(c_ptr), value :: delta_x
  type(c_ptr), value :: delta_y
end subroutine

! GDK_AVAILABLE_IN_4_8
!GdkScrollUnit gdk_scroll_event_get_unit (GdkEvent *event);
function gdk_scroll_event_get_unit(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_scroll_event_get_unit
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_scroll_event_is_stop (GdkEvent *event);
function gdk_scroll_event_is_stop(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_scroll_event_is_stop
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_key_event_get_type (void) ;
function gdk_key_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_key_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_key_event_get_keyval (GdkEvent *event);
function gdk_key_event_get_keyval(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_key_event_get_keyval
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_key_event_get_keycode (GdkEvent *event);
function gdk_key_event_get_keycode(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_key_event_get_keycode
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkModifierType gdk_key_event_get_consumed_modifiers (GdkEvent *event);
function gdk_key_event_get_consumed_modifiers(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_key_event_get_consumed_modifiers
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_key_event_get_layout (GdkEvent *event);
function gdk_key_event_get_layout(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_key_event_get_layout
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_key_event_get_level (GdkEvent *event);
function gdk_key_event_get_level(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_key_event_get_level
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_key_event_is_modifier (GdkEvent *event);
function gdk_key_event_is_modifier(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_key_event_is_modifier
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_focus_event_get_type (void) ;
function gdk_focus_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_focus_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_focus_event_get_in (GdkEvent *event);
function gdk_focus_event_get_in(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_focus_event_get_in
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_touch_event_get_type (void) ;
function gdk_touch_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_touch_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_touch_event_get_emulating_pointer (GdkEvent *event);
function gdk_touch_event_get_emulating_pointer(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_touch_event_get_emulating_pointer
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_crossing_event_get_type (void) ;
function gdk_crossing_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_crossing_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkCrossingMode gdk_crossing_event_get_mode (GdkEvent *event);
function gdk_crossing_event_get_mode(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_crossing_event_get_mode
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GdkNotifyType gdk_crossing_event_get_detail (GdkEvent *event);
function gdk_crossing_event_get_detail(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_crossing_event_get_detail
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_crossing_event_get_focus (GdkEvent *event);
function gdk_crossing_event_get_focus(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_crossing_event_get_focus
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_touchpad_event_get_type (void) ;
function gdk_touchpad_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_touchpad_event_get_type
end function

! 
!GdkTouchpadGesturePhase gdk_touchpad_event_get_gesture_phase (GdkEvent *event);
function gdk_touchpad_event_get_gesture_phase(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_touchpad_event_get_gesture_phase
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_touchpad_event_get_n_fingers (GdkEvent *event);
function gdk_touchpad_event_get_n_fingers(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_touchpad_event_get_n_fingers
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_touchpad_event_get_deltas (GdkEvent *event, double *dx, double *dy);
subroutine gdk_touchpad_event_get_deltas(event, dx, dy) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: event
  type(c_ptr), value :: dx
  type(c_ptr), value :: dy
end subroutine

! GDK_AVAILABLE_IN_ALL
!double gdk_touchpad_event_get_pinch_angle_delta (GdkEvent *event);
function gdk_touchpad_event_get_pinch_angle_delta(event) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: gdk_touchpad_event_get_pinch_angle_delta
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!double gdk_touchpad_event_get_pinch_scale (GdkEvent *event);
function gdk_touchpad_event_get_pinch_scale(event) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: gdk_touchpad_event_get_pinch_scale
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_pad_event_get_type (void) ;
function gdk_pad_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_pad_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_pad_event_get_button (GdkEvent *event);
function gdk_pad_event_get_button(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_pad_event_get_button
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_pad_event_get_axis_value (GdkEvent *event, guint *index, double *value);
subroutine gdk_pad_event_get_axis_value(event, index, value) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: event
  type(c_ptr), value :: index
  type(c_ptr), value :: value
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_pad_event_get_group_mode (GdkEvent *event, guint *group, guint *mode);
subroutine gdk_pad_event_get_group_mode(event, group, mode) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: event
  type(c_ptr), value :: group
  type(c_ptr), value :: mode
end subroutine

! GDK_AVAILABLE_IN_ALL
!GType gdk_dnd_event_get_type (void) ;
function gdk_dnd_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_dnd_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDrop * gdk_dnd_event_get_drop (GdkEvent *event);
function gdk_dnd_event_get_drop(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_dnd_event_get_drop
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_grab_broken_event_get_type (void) ;
function gdk_grab_broken_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_grab_broken_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_grab_broken_event_get_grab_surface (GdkEvent *event);
function gdk_grab_broken_event_get_grab_surface(event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_grab_broken_event_get_grab_surface
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_grab_broken_event_get_implicit (GdkEvent *event);
function gdk_grab_broken_event_get_implicit(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_grab_broken_event_get_implicit
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_motion_event_get_type (void) ;
function gdk_motion_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_motion_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_delete_event_get_type (void) ;
function gdk_delete_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_delete_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_proximity_event_get_type (void) ;
function gdk_proximity_event_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_proximity_event_get_type
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_event_triggers_context_menu (GdkEvent *event);
function gdk_event_triggers_context_menu(event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_event_triggers_context_menu
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_events_get_distance (GdkEvent *event1, GdkEvent *event2, double *distance);
function gdk_events_get_distance(event1, event2, distance) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_events_get_distance
  type(c_ptr), value :: event1
  type(c_ptr), value :: event2
  type(c_ptr), value :: distance
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_events_get_angle (GdkEvent *event1, GdkEvent *event2, double *angle);
function gdk_events_get_angle(event1, event2, angle) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_events_get_angle
  type(c_ptr), value :: event1
  type(c_ptr), value :: event2
  type(c_ptr), value :: angle
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_events_get_center (GdkEvent *event1, GdkEvent *event2, double *x, double *y);
function gdk_events_get_center(event1, event2, x, y) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_events_get_center
  type(c_ptr), value :: event1
  type(c_ptr), value :: event2
  type(c_ptr), value :: x
  type(c_ptr), value :: y
end function

! GDK_AVAILABLE_IN_ALL
!GdkKeyMatch gdk_key_event_matches (GdkEvent *event, guint keyval, GdkModifierType modifiers);
function gdk_key_event_matches(event, keyval, modifiers) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_key_event_matches
  type(c_ptr), value :: event
  integer(c_int), value :: keyval
  integer(c_int), value :: modifiers
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_key_event_get_match (GdkEvent *event, guint *keyval, GdkModifierType *modifiers);
function gdk_key_event_get_match(event, keyval, modifiers) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_key_event_get_match
  type(c_ptr), value :: event
  type(c_ptr), value :: keyval
  type(c_ptr), value :: modifiers
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkpaintable.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!void gdk_paintable_snapshot (GdkPaintable *paintable, GdkSnapshot *snapshot, double width, double height);
subroutine gdk_paintable_snapshot(paintable, snapshot, width, height) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: paintable
  type(c_ptr), value :: snapshot
  real(c_double), value :: width
  real(c_double), value :: height
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkPaintable * gdk_paintable_get_current_image (GdkPaintable *paintable);
function gdk_paintable_get_current_image(paintable) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_paintable_get_current_image
  type(c_ptr), value :: paintable
end function

! 
!GdkPaintableFlags gdk_paintable_get_flags (GdkPaintable *paintable);
function gdk_paintable_get_flags(paintable) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_paintable_get_flags
  type(c_ptr), value :: paintable
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_paintable_get_intrinsic_width (GdkPaintable *paintable);
function gdk_paintable_get_intrinsic_width(paintable) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_paintable_get_intrinsic_width
  type(c_ptr), value :: paintable
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_paintable_get_intrinsic_height (GdkPaintable *paintable);
function gdk_paintable_get_intrinsic_height(paintable) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_paintable_get_intrinsic_height
  type(c_ptr), value :: paintable
end function

! GDK_AVAILABLE_IN_ALL
!double gdk_paintable_get_intrinsic_aspect_ratio(GdkPaintable *paintable);
function gdk_paintable_get_intrinsic_aspect_ratio(paintable) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: gdk_paintable_get_intrinsic_aspect_ratio
  type(c_ptr), value :: paintable
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_paintable_compute_concrete_size (GdkPaintable *paintable, double specified_width, double specified_height, double default_width, double default_height, double *concrete_width, double *concrete_height);
subroutine gdk_paintable_compute_concrete_size(paintable, specified_width,&
& specified_height, default_width, default_height, concrete_width,&
& concrete_height) bind(c)
  import :: c_ptr, c_double
  implicit none
  type(c_ptr), value :: paintable
  real(c_double), value :: specified_width
  real(c_double), value :: specified_height
  real(c_double), value :: default_width
  real(c_double), value :: default_height
  type(c_ptr), value :: concrete_width
  type(c_ptr), value :: concrete_height
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_paintable_invalidate_contents (GdkPaintable *paintable);
subroutine gdk_paintable_invalidate_contents(paintable) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: paintable
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_paintable_invalidate_size (GdkPaintable *paintable);
subroutine gdk_paintable_invalidate_size(paintable) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: paintable
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkPaintable * gdk_paintable_new_empty (int intrinsic_width, int intrinsic_height);
function gdk_paintable_new_empty(intrinsic_width, intrinsic_height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_paintable_new_empty
  integer(c_int), value :: intrinsic_width
  integer(c_int), value :: intrinsic_height
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcolorstate.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_16
!GType gdk_color_state_get_type (void) ;
function gdk_color_state_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_color_state_get_type
end function

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_color_state_ref (GdkColorState *self);
function gdk_color_state_ref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_color_state_ref
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_color_state_unref (GdkColorState *self);
subroutine gdk_color_state_unref(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_color_state_get_srgb (void);
function gdk_color_state_get_srgb() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_color_state_get_srgb
end function

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_color_state_get_srgb_linear (void);
function gdk_color_state_get_srgb_linear() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_color_state_get_srgb_linear
end function

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_color_state_get_rec2100_pq (void);
function gdk_color_state_get_rec2100_pq() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_color_state_get_rec2100_pq
end function

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_color_state_get_rec2100_linear (void);
function gdk_color_state_get_rec2100_linear() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_color_state_get_rec2100_linear
end function

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_color_state_get_oklab (void);
function gdk_color_state_get_oklab() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_color_state_get_oklab
end function

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_color_state_get_oklch (void);
function gdk_color_state_get_oklch() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_color_state_get_oklch
end function

! GDK_AVAILABLE_IN_4_16
!gboolean gdk_color_state_equal (GdkColorState *self, GdkColorState *other);
function gdk_color_state_equal(self, other) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_color_state_equal
  type(c_ptr), value :: self
  type(c_ptr), value :: other
end function

! GDK_AVAILABLE_IN_4_16
!GdkCicpParams *gdk_color_state_create_cicp_params (GdkColorState *self);
function gdk_color_state_create_cicp_params(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_color_state_create_cicp_params
  type(c_ptr), value :: self
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkconfig.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkglcontext.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GQuark gdk_gl_error_quark (void);
function gdk_gl_error_quark() bind(c)
  import :: c_int32_t
  implicit none
  integer(c_int32_t) :: gdk_gl_error_quark
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_gl_context_get_type (void) ;
function gdk_gl_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_gl_context_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_gl_context_get_display (GdkGLContext *context);
function gdk_gl_context_get_display(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_context_get_display
  type(c_ptr), value :: context
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_gl_context_get_surface (GdkGLContext *context);
function gdk_gl_context_get_surface(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_context_get_surface
  type(c_ptr), value :: context
end function

! GDK_DEPRECATED_IN_4_4_FOR(gdk_gl_context_is_shared)
!GdkGLContext * gdk_gl_context_get_shared_context (GdkGLContext *context);
function gdk_gl_context_get_shared_context(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_context_get_shared_context
  type(c_ptr), value :: context
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_gl_context_get_version (GdkGLContext *context, int *major, int *minor);
subroutine gdk_gl_context_get_version(context, major, minor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: major
  type(c_ptr), value :: minor
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_gl_context_is_legacy (GdkGLContext *context);
function gdk_gl_context_is_legacy(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_context_is_legacy
  type(c_ptr), value :: context
end function

! GDK_AVAILABLE_IN_4_4
!gboolean gdk_gl_context_is_shared (GdkGLContext *self, GdkGLContext *other);
function gdk_gl_context_is_shared(self, other) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_context_is_shared
  type(c_ptr), value :: self
  type(c_ptr), value :: other
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_gl_context_set_required_version (GdkGLContext *context, int major, int minor);
subroutine gdk_gl_context_set_required_version(context, major, minor) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: major
  integer(c_int), value :: minor
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_gl_context_get_required_version (GdkGLContext *context, int *major, int *minor);
subroutine gdk_gl_context_get_required_version(context, major, minor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: major
  type(c_ptr), value :: minor
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_gl_context_set_debug_enabled (GdkGLContext *context, gboolean enabled);
subroutine gdk_gl_context_set_debug_enabled(context, enabled) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: enabled
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_gl_context_get_debug_enabled (GdkGLContext *context);
function gdk_gl_context_get_debug_enabled(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_context_get_debug_enabled
  type(c_ptr), value :: context
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_gl_context_set_forward_compatible (GdkGLContext *context, gboolean compatible);
subroutine gdk_gl_context_set_forward_compatible(context, compatible) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: compatible
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_gl_context_get_forward_compatible (GdkGLContext *context);
function gdk_gl_context_get_forward_compatible(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_context_get_forward_compatible
  type(c_ptr), value :: context
end function

! GDK_AVAILABLE_IN_4_6
!void gdk_gl_context_set_allowed_apis (GdkGLContext *self, GdkGLAPI apis);
subroutine gdk_gl_context_set_allowed_apis(self, apis) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: apis
end subroutine

! GDK_AVAILABLE_IN_4_6
!GdkGLAPI gdk_gl_context_get_allowed_apis (GdkGLContext *self);
function gdk_gl_context_get_allowed_apis(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_context_get_allowed_apis
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_6
!GdkGLAPI gdk_gl_context_get_api (GdkGLContext *self);
function gdk_gl_context_get_api(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_context_get_api
  type(c_ptr), value :: self
end function

! GDK_DEPRECATED_IN_4_6_FOR(gdk_gl_context_set_allowed_apis)
!void gdk_gl_context_set_use_es (GdkGLContext *context, int use_es);
subroutine gdk_gl_context_set_use_es(context, use_es) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: use_es
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_gl_context_get_use_es (GdkGLContext *context);
function gdk_gl_context_get_use_es(context) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_context_get_use_es
  type(c_ptr), value :: context
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_gl_context_realize (GdkGLContext *context, GError **error);
function gdk_gl_context_realize(context, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_gl_context_realize
  type(c_ptr), value :: context
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_gl_context_make_current (GdkGLContext *context);
subroutine gdk_gl_context_make_current(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkGLContext * gdk_gl_context_get_current (void);
function gdk_gl_context_get_current() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_gl_context_get_current
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_gl_context_clear_current (void);
subroutine gdk_gl_context_clear_current() bind(c)
  implicit none
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkkeys.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!const char *gdk_keyval_name (guint keyval) ;
function gdk_keyval_name(keyval) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_keyval_name
  integer(c_int), value :: keyval
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_keyval_from_name (const char *keyval_name);
function gdk_keyval_from_name(keyval_name) bind(c)
  import :: c_int, c_char
  implicit none
  integer(c_int) :: gdk_keyval_from_name
  character(kind=c_char), dimension(*) :: keyval_name
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_keyval_convert_case (guint symbol, guint *lower, guint *upper);
subroutine gdk_keyval_convert_case(symbol, lower, upper) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int), value :: symbol
  type(c_ptr), value :: lower
  type(c_ptr), value :: upper
end subroutine

! GDK_AVAILABLE_IN_ALL
!guint gdk_keyval_to_upper (guint keyval) ;
function gdk_keyval_to_upper(keyval) bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: gdk_keyval_to_upper
  integer(c_int), value :: keyval
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_keyval_to_lower (guint keyval) ;
function gdk_keyval_to_lower(keyval) bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: gdk_keyval_to_lower
  integer(c_int), value :: keyval
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_keyval_is_upper (guint keyval) ;
function gdk_keyval_is_upper(keyval) bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: gdk_keyval_is_upper
  integer(c_int), value :: keyval
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_keyval_is_lower (guint keyval) ;
function gdk_keyval_is_lower(keyval) bind(c)
  import :: c_int
  implicit none
  integer(c_int) :: gdk_keyval_is_lower
  integer(c_int), value :: keyval
end function

! GDK_AVAILABLE_IN_ALL
!guint32 gdk_keyval_to_unicode (guint keyval) ;
function gdk_keyval_to_unicode(keyval) bind(c)
  import :: c_int32_t, c_int
  implicit none
  integer(c_int32_t) :: gdk_keyval_to_unicode
  integer(c_int), value :: keyval
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_unicode_to_keyval (guint32 wc) ;
function gdk_unicode_to_keyval(wc) bind(c)
  import :: c_int, c_int32_t
  implicit none
  integer(c_int) :: gdk_unicode_to_keyval
  integer(c_int32_t), value :: wc
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkapplaunchcontext.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_app_launch_context_get_type (void);
function gdk_app_launch_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_app_launch_context_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_app_launch_context_get_display (GdkAppLaunchContext *context);
function gdk_app_launch_context_get_display(context) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_app_launch_context_get_display
  type(c_ptr), value :: context
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_app_launch_context_set_desktop (GdkAppLaunchContext *context, int desktop);
subroutine gdk_app_launch_context_set_desktop(context, desktop) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: context
  integer(c_int), value :: desktop
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_app_launch_context_set_timestamp (GdkAppLaunchContext *context, guint32 timestamp);
subroutine gdk_app_launch_context_set_timestamp(context, timestamp) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr), value :: context
  integer(c_int32_t), value :: timestamp
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_app_launch_context_set_icon (GdkAppLaunchContext *context, GIcon *icon);
subroutine gdk_app_launch_context_set_icon(context, icon) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: context
  type(c_ptr), value :: icon
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_app_launch_context_set_icon_name (GdkAppLaunchContext *context, const char *icon_name);
subroutine gdk_app_launch_context_set_icon_name(context, icon_name) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: context
  character(kind=c_char), dimension(*) :: icon_name
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkvulkancontext.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GQuark gdk_vulkan_error_quark (void);
function gdk_vulkan_error_quark() bind(c)
  import :: c_int32_t
  implicit none
  integer(c_int32_t) :: gdk_vulkan_error_quark
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_vulkan_context_get_type (void) ;
function gdk_vulkan_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_vulkan_context_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkmonitor.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_monitor_get_type (void) ;
function gdk_monitor_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_monitor_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_monitor_get_display (GdkMonitor *monitor);
function gdk_monitor_get_display(monitor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_monitor_get_display
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_monitor_get_geometry (GdkMonitor *monitor, GdkRectangle *geometry);
subroutine gdk_monitor_get_geometry(monitor, geometry) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: monitor
  type(c_ptr), value :: geometry
end subroutine

! GDK_AVAILABLE_IN_ALL
!int gdk_monitor_get_width_mm (GdkMonitor *monitor);
function gdk_monitor_get_width_mm(monitor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_monitor_get_width_mm
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_monitor_get_height_mm (GdkMonitor *monitor);
function gdk_monitor_get_height_mm(monitor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_monitor_get_height_mm
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_monitor_get_manufacturer (GdkMonitor *monitor);
function gdk_monitor_get_manufacturer(monitor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_monitor_get_manufacturer
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_monitor_get_model (GdkMonitor *monitor);
function gdk_monitor_get_model(monitor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_monitor_get_model
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_monitor_get_connector (GdkMonitor *monitor);
function gdk_monitor_get_connector(monitor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_monitor_get_connector
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_monitor_get_scale_factor (GdkMonitor *monitor);
function gdk_monitor_get_scale_factor(monitor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_monitor_get_scale_factor
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_4_14
!double gdk_monitor_get_scale (GdkMonitor *monitor);
function gdk_monitor_get_scale(monitor) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: gdk_monitor_get_scale
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_monitor_get_refresh_rate (GdkMonitor *monitor);
function gdk_monitor_get_refresh_rate(monitor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_monitor_get_refresh_rate
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!GdkSubpixelLayout gdk_monitor_get_subpixel_layout (GdkMonitor *monitor);
function gdk_monitor_get_subpixel_layout(monitor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_monitor_get_subpixel_layout
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_monitor_is_valid (GdkMonitor *monitor);
function gdk_monitor_is_valid(monitor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_monitor_is_valid
  type(c_ptr), value :: monitor
end function

! GDK_AVAILABLE_IN_4_10
!const char * gdk_monitor_get_description (GdkMonitor *monitor);
function gdk_monitor_get_description(monitor) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_monitor_get_description
  type(c_ptr), value :: monitor
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdevice.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_device_get_type (void) ;
function gdk_device_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_device_get_type
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_device_get_name (GdkDevice *device);
function gdk_device_get_name(device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_device_get_name
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_device_get_vendor_id (GdkDevice *device);
function gdk_device_get_vendor_id(device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_device_get_vendor_id
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_device_get_product_id (GdkDevice *device);
function gdk_device_get_product_id(device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_device_get_product_id
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_device_get_display (GdkDevice *device);
function gdk_device_get_display(device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_device_get_display
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!GdkSeat * gdk_device_get_seat (GdkDevice *device);
function gdk_device_get_seat(device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_device_get_seat
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!GdkDeviceTool * gdk_device_get_device_tool (GdkDevice *device);
function gdk_device_get_device_tool(device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_device_get_device_tool
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!GdkInputSource gdk_device_get_source (GdkDevice *device);
function gdk_device_get_source(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_source
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_device_get_has_cursor (GdkDevice *device);
function gdk_device_get_has_cursor(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_has_cursor
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!guint gdk_device_get_num_touches (GdkDevice *device);
function gdk_device_get_num_touches(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_num_touches
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!GdkModifierType gdk_device_get_modifier_state (GdkDevice *device);
function gdk_device_get_modifier_state(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_modifier_state
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!PangoDirection gdk_device_get_direction (GdkDevice *device);
function gdk_device_get_direction(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_direction
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_device_has_bidi_layouts (GdkDevice *device);
function gdk_device_has_bidi_layouts(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_has_bidi_layouts
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_device_get_caps_lock_state (GdkDevice *device);
function gdk_device_get_caps_lock_state(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_caps_lock_state
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_device_get_num_lock_state (GdkDevice *device);
function gdk_device_get_num_lock_state(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_num_lock_state
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_device_get_scroll_lock_state (GdkDevice *device);
function gdk_device_get_scroll_lock_state(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_scroll_lock_state
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_device_get_surface_at_position (GdkDevice *device, double *win_x, double *win_y);
function gdk_device_get_surface_at_position(device, win_x, win_y) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_device_get_surface_at_position
  type(c_ptr), value :: device
  type(c_ptr), value :: win_x
  type(c_ptr), value :: win_y
end function

! GDK_AVAILABLE_IN_4_2
!guint32 gdk_device_get_timestamp (GdkDevice *device);
function gdk_device_get_timestamp(device) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: gdk_device_get_timestamp
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_4_18
!gint gdk_device_get_active_layout_index (GdkDevice *device);
function gdk_device_get_active_layout_index(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_get_active_layout_index
  type(c_ptr), value :: device
end function

! GDK_AVAILABLE_IN_4_18
!gchar ** gdk_device_get_layout_names (GdkDevice *device);
function gdk_device_get_layout_names(device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_device_get_layout_names
  type(c_ptr), value :: device
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcontentprovider.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_content_provider_get_type (void) ;
function gdk_content_provider_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_content_provider_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_provider_ref_formats (GdkContentProvider *provider);
function gdk_content_provider_ref_formats(provider) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_provider_ref_formats
  type(c_ptr), value :: provider
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_provider_ref_storable_formats (GdkContentProvider *provider);
function gdk_content_provider_ref_storable_formats(provider) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_provider_ref_storable_formats
  type(c_ptr), value :: provider
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_provider_content_changed (GdkContentProvider *provider);
subroutine gdk_content_provider_content_changed(provider) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: provider
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_content_provider_write_mime_type_async (GdkContentProvider *provider, const char *mime_type, GOutputStream *stream, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_content_provider_write_mime_type_async(provider, mime_type,&
& stream, io_priority, cancellable, callback, user_data) bind(c)
  import :: c_ptr, c_char, c_int, c_funptr
  implicit none
  type(c_ptr), value :: provider
  character(kind=c_char), dimension(*) :: mime_type
  type(c_ptr), value :: stream
  integer(c_int), value :: io_priority
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_content_provider_write_mime_type_finish (GdkContentProvider *provider, GAsyncResult *result, GError **error);
function gdk_content_provider_write_mime_type_finish(provider, result, error)&
& bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_content_provider_write_mime_type_finish
  type(c_ptr), value :: provider
  type(c_ptr), value :: result
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_content_provider_get_value (GdkContentProvider *provider, GValue *value, GError **error);
function gdk_content_provider_get_value(provider, value, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_content_provider_get_value
  type(c_ptr), value :: provider
  type(c_ptr), value :: value
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdmabufformats.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_14
!GType gdk_dmabuf_formats_get_type (void) ;
function gdk_dmabuf_formats_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_dmabuf_formats_get_type
end function

! GDK_AVAILABLE_IN_4_14
!GdkDmabufFormats * gdk_dmabuf_formats_ref (GdkDmabufFormats *formats);
function gdk_dmabuf_formats_ref(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_dmabuf_formats_ref
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_formats_unref (GdkDmabufFormats *formats);
subroutine gdk_dmabuf_formats_unref(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: formats
end subroutine

! GDK_AVAILABLE_IN_4_14
!gsize gdk_dmabuf_formats_get_n_formats (GdkDmabufFormats *formats) ;
function gdk_dmabuf_formats_get_n_formats(formats) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gdk_dmabuf_formats_get_n_formats
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_formats_get_format (GdkDmabufFormats *formats, gsize idx, guint32 *fourcc, guint64 *modifier);
subroutine gdk_dmabuf_formats_get_format(formats, idx, fourcc, modifier)&
& bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr), value :: formats
  integer(c_size_t), value :: idx
  type(c_ptr), value :: fourcc
  type(c_ptr), value :: modifier
end subroutine

! GDK_AVAILABLE_IN_4_14
!gboolean gdk_dmabuf_formats_contains (GdkDmabufFormats *formats, guint32 fourcc, guint64 modifier) ;
function gdk_dmabuf_formats_contains(formats, fourcc, modifier) bind(c)
  import :: c_int, c_ptr, c_int32_t, c_int64_t
  implicit none
  integer(c_int) :: gdk_dmabuf_formats_contains
  type(c_ptr), value :: formats
  integer(c_int32_t), value :: fourcc
  integer(c_int64_t), value :: modifier
end function

! GDK_AVAILABLE_IN_4_14
!gboolean gdk_dmabuf_formats_equal (const GdkDmabufFormats *formats1, const GdkDmabufFormats *formats2);
function gdk_dmabuf_formats_equal(formats1, formats2) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_dmabuf_formats_equal
  type(c_ptr), value :: formats1
  type(c_ptr), value :: formats2
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkpopup.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!gboolean gdk_popup_present (GdkPopup *popup, int width, int height, GdkPopupLayout *layout);
function gdk_popup_present(popup, width, height, layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_present
  type(c_ptr), value :: popup
  integer(c_int), value :: width
  integer(c_int), value :: height
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!GdkGravity gdk_popup_get_surface_anchor (GdkPopup *popup);
function gdk_popup_get_surface_anchor(popup) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_get_surface_anchor
  type(c_ptr), value :: popup
end function

! GDK_AVAILABLE_IN_ALL
!GdkGravity gdk_popup_get_rect_anchor (GdkPopup *popup);
function gdk_popup_get_rect_anchor(popup) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_get_rect_anchor
  type(c_ptr), value :: popup
end function

! GDK_AVAILABLE_IN_ALL
!GdkSurface * gdk_popup_get_parent (GdkPopup *popup);
function gdk_popup_get_parent(popup) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_popup_get_parent
  type(c_ptr), value :: popup
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_popup_get_position_x (GdkPopup *popup);
function gdk_popup_get_position_x(popup) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_get_position_x
  type(c_ptr), value :: popup
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_popup_get_position_y (GdkPopup *popup);
function gdk_popup_get_position_y(popup) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_get_position_y
  type(c_ptr), value :: popup
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_popup_get_autohide (GdkPopup *popup);
function gdk_popup_get_autohide(popup) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_get_autohide
  type(c_ptr), value :: popup
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdmabuftexturebuilder.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_14
!GdkDmabufTextureBuilder *gdk_dmabuf_texture_builder_new (void);
function gdk_dmabuf_texture_builder_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_dmabuf_texture_builder_new
end function

! GDK_AVAILABLE_IN_4_14
!GdkDisplay * gdk_dmabuf_texture_builder_get_display (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_display(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_dmabuf_texture_builder_get_display
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_display (GdkDmabufTextureBuilder *self, GdkDisplay *display);
subroutine gdk_dmabuf_texture_builder_set_display(self, display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: display
end subroutine

! GDK_AVAILABLE_IN_4_14
!unsigned int gdk_dmabuf_texture_builder_get_width (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_width(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_dmabuf_texture_builder_get_width
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_width (GdkDmabufTextureBuilder *self, unsigned int width);
subroutine gdk_dmabuf_texture_builder_set_width(self, width) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: width
end subroutine

! GDK_AVAILABLE_IN_4_14
!unsigned int gdk_dmabuf_texture_builder_get_height (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_height(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_dmabuf_texture_builder_get_height
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_height (GdkDmabufTextureBuilder *self, unsigned int height);
subroutine gdk_dmabuf_texture_builder_set_height(self, height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: height
end subroutine

! GDK_AVAILABLE_IN_4_14
!guint32 gdk_dmabuf_texture_builder_get_fourcc (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_fourcc(self) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: gdk_dmabuf_texture_builder_get_fourcc
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_fourcc (GdkDmabufTextureBuilder *self, guint32 fourcc);
subroutine gdk_dmabuf_texture_builder_set_fourcc(self, fourcc) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr), value :: self
  integer(c_int32_t), value :: fourcc
end subroutine

! GDK_AVAILABLE_IN_4_14
!guint64 gdk_dmabuf_texture_builder_get_modifier (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_modifier(self) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_dmabuf_texture_builder_get_modifier
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_modifier (GdkDmabufTextureBuilder *self, guint64 modifier);
subroutine gdk_dmabuf_texture_builder_set_modifier(self, modifier) bind(c)
  import :: c_ptr, c_int64_t
  implicit none
  type(c_ptr), value :: self
  integer(c_int64_t), value :: modifier
end subroutine

! GDK_AVAILABLE_IN_4_14
!gboolean gdk_dmabuf_texture_builder_get_premultiplied (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_premultiplied(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_dmabuf_texture_builder_get_premultiplied
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_premultiplied (GdkDmabufTextureBuilder *self, gboolean premultiplied);
subroutine gdk_dmabuf_texture_builder_set_premultiplied(self, premultiplied)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: premultiplied
end subroutine

! GDK_AVAILABLE_IN_4_14
!unsigned int gdk_dmabuf_texture_builder_get_n_planes (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_n_planes(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_dmabuf_texture_builder_get_n_planes
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_n_planes (GdkDmabufTextureBuilder *self, unsigned int n_planes);
subroutine gdk_dmabuf_texture_builder_set_n_planes(self, n_planes) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: n_planes
end subroutine

! GDK_AVAILABLE_IN_4_14
!int gdk_dmabuf_texture_builder_get_fd (GdkDmabufTextureBuilder *self, unsigned int plane) ;
function gdk_dmabuf_texture_builder_get_fd(self, plane) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_dmabuf_texture_builder_get_fd
  type(c_ptr), value :: self
  integer(c_int), value :: plane
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_fd (GdkDmabufTextureBuilder *self, unsigned int plane, int fd);
subroutine gdk_dmabuf_texture_builder_set_fd(self, plane, fd) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: plane
  integer(c_int), value :: fd
end subroutine

! GDK_AVAILABLE_IN_4_14
!unsigned int gdk_dmabuf_texture_builder_get_stride (GdkDmabufTextureBuilder *self, unsigned int plane) ;
function gdk_dmabuf_texture_builder_get_stride(self, plane) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_dmabuf_texture_builder_get_stride
  type(c_ptr), value :: self
  integer(c_int), value :: plane
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_stride (GdkDmabufTextureBuilder *self, unsigned int plane, unsigned int stride);
subroutine gdk_dmabuf_texture_builder_set_stride(self, plane, stride) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: plane
  integer(c_int), value :: stride
end subroutine

! GDK_AVAILABLE_IN_4_14
!unsigned int gdk_dmabuf_texture_builder_get_offset (GdkDmabufTextureBuilder *self, unsigned int plane) ;
function gdk_dmabuf_texture_builder_get_offset(self, plane) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_dmabuf_texture_builder_get_offset
  type(c_ptr), value :: self
  integer(c_int), value :: plane
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_offset (GdkDmabufTextureBuilder *self, unsigned int plane, unsigned int offset);
subroutine gdk_dmabuf_texture_builder_set_offset(self, plane, offset) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: plane
  integer(c_int), value :: offset
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_dmabuf_texture_builder_get_color_state (GdkDmabufTextureBuilder *self);
function gdk_dmabuf_texture_builder_get_color_state(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_dmabuf_texture_builder_get_color_state
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_dmabuf_texture_builder_set_color_state (GdkDmabufTextureBuilder *self, GdkColorState *color_state);
subroutine gdk_dmabuf_texture_builder_set_color_state(self, color_state)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: color_state
end subroutine

! GDK_AVAILABLE_IN_4_14
!GdkTexture * gdk_dmabuf_texture_builder_get_update_texture (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_update_texture(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_dmabuf_texture_builder_get_update_texture
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_update_texture (GdkDmabufTextureBuilder *self, GdkTexture *texture);
subroutine gdk_dmabuf_texture_builder_set_update_texture(self, texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: texture
end subroutine

! GDK_AVAILABLE_IN_4_14
!cairo_region_t * gdk_dmabuf_texture_builder_get_update_region (GdkDmabufTextureBuilder *self) ;
function gdk_dmabuf_texture_builder_get_update_region(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_dmabuf_texture_builder_get_update_region
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_14
!void gdk_dmabuf_texture_builder_set_update_region (GdkDmabufTextureBuilder *self, cairo_region_t *region);
subroutine gdk_dmabuf_texture_builder_set_update_region(self, region) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: region
end subroutine

! GDK_AVAILABLE_IN_4_14
!GdkTexture * gdk_dmabuf_texture_builder_build (GdkDmabufTextureBuilder *self, GDestroyNotify destroy, gpointer data, GError **error);
function gdk_dmabuf_texture_builder_build(self, destroy, data, error) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr) :: gdk_dmabuf_texture_builder_build
  type(c_ptr), value :: self
  type(c_funptr), value :: destroy
  type(c_ptr), value :: data
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdktexturedownloader.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_10
!GType gdk_texture_downloader_get_type (void) ;
function gdk_texture_downloader_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_texture_downloader_get_type
end function

! GDK_AVAILABLE_IN_4_10
!GdkTextureDownloader * gdk_texture_downloader_new (GdkTexture *texture);
function gdk_texture_downloader_new(texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_downloader_new
  type(c_ptr), value :: texture
end function

! GDK_AVAILABLE_IN_4_10
!GdkTextureDownloader * gdk_texture_downloader_copy (const GdkTextureDownloader *self);
function gdk_texture_downloader_copy(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_downloader_copy
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_10
!void gdk_texture_downloader_free (GdkTextureDownloader *self);
subroutine gdk_texture_downloader_free(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
end subroutine

! GDK_AVAILABLE_IN_4_10
!void gdk_texture_downloader_set_texture (GdkTextureDownloader *self, GdkTexture *texture);
subroutine gdk_texture_downloader_set_texture(self, texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: texture
end subroutine

! GDK_AVAILABLE_IN_4_10
!GdkTexture * gdk_texture_downloader_get_texture (const GdkTextureDownloader *self);
function gdk_texture_downloader_get_texture(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_downloader_get_texture
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_10
!void gdk_texture_downloader_set_format (GdkTextureDownloader *self, GdkMemoryFormat format);
subroutine gdk_texture_downloader_set_format(self, format) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: format
end subroutine

! GDK_AVAILABLE_IN_4_10
!GdkMemoryFormat gdk_texture_downloader_get_format (const GdkTextureDownloader *self);
function gdk_texture_downloader_get_format(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_texture_downloader_get_format
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_texture_downloader_set_color_state (GdkTextureDownloader *self, GdkColorState *color_state);
subroutine gdk_texture_downloader_set_color_state(self, color_state) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: self
  type(c_ptr), value :: color_state
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_texture_downloader_get_color_state (const GdkTextureDownloader *self);
function gdk_texture_downloader_get_color_state(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_downloader_get_color_state
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_10
!void gdk_texture_downloader_download_into (const GdkTextureDownloader *self, guchar *data, gsize stride);
subroutine gdk_texture_downloader_download_into(self, data, stride) bind(c)
  import :: c_ptr, c_char, c_size_t
  implicit none
  type(c_ptr), value :: self
  character(kind=c_char), dimension(*) :: data
  integer(c_size_t), value :: stride
end subroutine

! GDK_AVAILABLE_IN_4_10
!GBytes * gdk_texture_downloader_download_bytes (const GdkTextureDownloader *self, gsize *out_stride);
function gdk_texture_downloader_download_bytes(self, out_stride) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_texture_downloader_download_bytes
  type(c_ptr), value :: self
  type(c_ptr), value :: out_stride
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkmemorytexture.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_memory_texture_get_type (void) ;
function gdk_memory_texture_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_memory_texture_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkTexture * gdk_memory_texture_new (int width, int height, GdkMemoryFormat format, GBytes *bytes, gsize stride);
function gdk_memory_texture_new(width, height, format, bytes, stride) bind(c)
  import :: c_ptr, c_int, c_size_t
  implicit none
  type(c_ptr) :: gdk_memory_texture_new
  integer(c_int), value :: width
  integer(c_int), value :: height
  integer(c_int), value :: format
  type(c_ptr), value :: bytes
  integer(c_size_t), value :: stride
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdksnapshot.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_snapshot_get_type (void) ;
function gdk_snapshot_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_snapshot_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcontentformats.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!const char * gdk_intern_mime_type (const char *string);
function gdk_intern_mime_type(string) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_intern_mime_type
  character(kind=c_char), dimension(*) :: string
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_content_formats_get_type (void) ;
function gdk_content_formats_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_content_formats_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_new (const char **mime_types, guint n_mime_types);
function gdk_content_formats_new(mime_types, n_mime_types) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_content_formats_new
  type(c_ptr), dimension(*) :: mime_types
  integer(c_int), value :: n_mime_types
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_new_for_gtype (GType type);
function gdk_content_formats_new_for_gtype(type) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr) :: gdk_content_formats_new_for_gtype
  integer(c_size_t), value :: type
end function

! GDK_AVAILABLE_IN_4_4
!GdkContentFormats * gdk_content_formats_parse (const char *string);
function gdk_content_formats_parse(string) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_content_formats_parse
  character(kind=c_char), dimension(*) :: string
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_ref (GdkContentFormats *formats);
function gdk_content_formats_ref(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_ref
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_formats_unref (GdkContentFormats *formats);
subroutine gdk_content_formats_unref(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: formats
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_content_formats_print (GdkContentFormats *formats, GString *string);
subroutine gdk_content_formats_print(formats, string) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: formats
  type(c_ptr), value :: string
end subroutine

! GDK_AVAILABLE_IN_ALL
!char * gdk_content_formats_to_string (GdkContentFormats *formats);
function gdk_content_formats_to_string(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_to_string
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_ALL
!const GType * gdk_content_formats_get_gtypes (const GdkContentFormats *formats, gsize *n_gtypes);
function gdk_content_formats_get_gtypes(formats, n_gtypes) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_get_gtypes
  type(c_ptr), value :: formats
  type(c_ptr), value :: n_gtypes
end function

! GDK_AVAILABLE_IN_ALL
!const char * const * gdk_content_formats_get_mime_types (const GdkContentFormats *formats, gsize *n_mime_types);
function gdk_content_formats_get_mime_types(formats, n_mime_types) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_get_mime_types
  type(c_ptr), value :: formats
  type(c_ptr), value :: n_mime_types
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_union (GdkContentFormats *first, const GdkContentFormats *second) ;
function gdk_content_formats_union(first, second) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_union
  type(c_ptr), value :: first
  type(c_ptr), value :: second
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_content_formats_match (const GdkContentFormats *first, const GdkContentFormats *second);
function gdk_content_formats_match(first, second) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_content_formats_match
  type(c_ptr), value :: first
  type(c_ptr), value :: second
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_content_formats_match_gtype (const GdkContentFormats *first, const GdkContentFormats *second);
function gdk_content_formats_match_gtype(first, second) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gdk_content_formats_match_gtype
  type(c_ptr), value :: first
  type(c_ptr), value :: second
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_content_formats_match_mime_type (const GdkContentFormats *first, const GdkContentFormats *second);
function gdk_content_formats_match_mime_type(first, second) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_match_mime_type
  type(c_ptr), value :: first
  type(c_ptr), value :: second
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_content_formats_contain_gtype (const GdkContentFormats *formats, GType type);
function gdk_content_formats_contain_gtype(formats, type) bind(c)
  import :: c_int, c_ptr, c_size_t
  implicit none
  integer(c_int) :: gdk_content_formats_contain_gtype
  type(c_ptr), value :: formats
  integer(c_size_t), value :: type
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_content_formats_contain_mime_type (const GdkContentFormats *formats, const char *mime_type);
function gdk_content_formats_contain_mime_type(formats, mime_type) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_content_formats_contain_mime_type
  type(c_ptr), value :: formats
  character(kind=c_char), dimension(*) :: mime_type
end function

! GDK_AVAILABLE_IN_4_18
!gboolean gdk_content_formats_is_empty (GdkContentFormats *formats);
function gdk_content_formats_is_empty(formats) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_content_formats_is_empty
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_content_formats_builder_get_type (void) ;
function gdk_content_formats_builder_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_content_formats_builder_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormatsBuilder *gdk_content_formats_builder_new (void);
function gdk_content_formats_builder_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_builder_new
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormatsBuilder *gdk_content_formats_builder_ref (GdkContentFormatsBuilder *builder);
function gdk_content_formats_builder_ref(builder) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_builder_ref
  type(c_ptr), value :: builder
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_formats_builder_unref (GdkContentFormatsBuilder *builder);
subroutine gdk_content_formats_builder_unref(builder) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: builder
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_builder_free_to_formats (GdkContentFormatsBuilder *builder) ;
function gdk_content_formats_builder_free_to_formats(builder) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_builder_free_to_formats
  type(c_ptr), value :: builder
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_builder_to_formats (GdkContentFormatsBuilder *builder) ;
function gdk_content_formats_builder_to_formats(builder) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_builder_to_formats
  type(c_ptr), value :: builder
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_formats_builder_add_formats (GdkContentFormatsBuilder *builder, const GdkContentFormats *formats);
subroutine gdk_content_formats_builder_add_formats(builder, formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: builder
  type(c_ptr), value :: formats
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_content_formats_builder_add_mime_type(GdkContentFormatsBuilder *builder, const char *mime_type);
subroutine gdk_content_formats_builder_add_mime_type(builder, mime_type)&
& bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: builder
  character(kind=c_char), dimension(*) :: mime_type
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_content_formats_builder_add_gtype (GdkContentFormatsBuilder *builder, GType type);
subroutine gdk_content_formats_builder_add_gtype(builder, type) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr), value :: builder
  integer(c_size_t), value :: type
end subroutine

! GDK_AVAILABLE_IN_ALL
!GType gdk_file_list_get_type (void) ;
function gdk_file_list_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_file_list_get_type
end function

! GDK_AVAILABLE_IN_4_6
!GSList * gdk_file_list_get_files (GdkFileList *file_list);
function gdk_file_list_get_files(file_list) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_file_list_get_files
  type(c_ptr), value :: file_list
end function

! GDK_AVAILABLE_IN_4_8
!GdkFileList * gdk_file_list_new_from_list (GSList *files);
function gdk_file_list_new_from_list(files) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_file_list_new_from_list
  type(c_ptr), value :: files
end function

! GDK_AVAILABLE_IN_4_8
!GdkFileList * gdk_file_list_new_from_array (GFile **files, gsize n_files);
function gdk_file_list_new_from_array(files, n_files) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr) :: gdk_file_list_new_from_array
  type(c_ptr), value :: files
  integer(c_size_t), value :: n_files
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkpango.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!cairo_region_t *gdk_pango_layout_line_get_clip_region (PangoLayoutLine *line, int x_origin, int y_origin, const int *index_ranges, int n_ranges);
function gdk_pango_layout_line_get_clip_region(line, x_origin, y_origin,&
& index_ranges, n_ranges) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pango_layout_line_get_clip_region
  type(c_ptr), value :: line
  integer(c_int), value :: x_origin
  integer(c_int), value :: y_origin
  type(c_ptr), value :: index_ranges
  integer(c_int), value :: n_ranges
end function

! GDK_AVAILABLE_IN_ALL
!cairo_region_t *gdk_pango_layout_get_clip_region (PangoLayout *layout, int x_origin, int y_origin, const int *index_ranges, int n_ranges);
function gdk_pango_layout_get_clip_region(layout, x_origin, y_origin,&
& index_ranges, n_ranges) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pango_layout_get_clip_region
  type(c_ptr), value :: layout
  integer(c_int), value :: x_origin
  integer(c_int), value :: y_origin
  type(c_ptr), value :: index_ranges
  integer(c_int), value :: n_ranges
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdktoplevel.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_present (GdkToplevel *toplevel, GdkToplevelLayout *layout);
subroutine gdk_toplevel_present(toplevel, layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: toplevel
  type(c_ptr), value :: layout
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_toplevel_minimize (GdkToplevel *toplevel);
function gdk_toplevel_minimize(toplevel) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_minimize
  type(c_ptr), value :: toplevel
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_toplevel_lower (GdkToplevel *toplevel);
function gdk_toplevel_lower(toplevel) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_lower
  type(c_ptr), value :: toplevel
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_focus (GdkToplevel *toplevel, guint32 timestamp);
subroutine gdk_toplevel_focus(toplevel, timestamp) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr), value :: toplevel
  integer(c_int32_t), value :: timestamp
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkToplevelState gdk_toplevel_get_state (GdkToplevel *toplevel);
function gdk_toplevel_get_state(toplevel) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_get_state
  type(c_ptr), value :: toplevel
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_set_title (GdkToplevel *toplevel, const char *title);
subroutine gdk_toplevel_set_title(toplevel, title) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: toplevel
  character(kind=c_char), dimension(*) :: title
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_set_startup_id (GdkToplevel *toplevel, const char *startup_id);
subroutine gdk_toplevel_set_startup_id(toplevel, startup_id) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: toplevel
  character(kind=c_char), dimension(*) :: startup_id
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_set_transient_for (GdkToplevel *toplevel, GdkSurface *parent);
subroutine gdk_toplevel_set_transient_for(toplevel, parent) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: toplevel
  type(c_ptr), value :: parent
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_set_modal (GdkToplevel *toplevel, gboolean modal);
subroutine gdk_toplevel_set_modal(toplevel, modal) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: toplevel
  integer(c_int), value :: modal
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_set_icon_list (GdkToplevel *toplevel, GList *surfaces);
subroutine gdk_toplevel_set_icon_list(toplevel, surfaces) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: toplevel
  type(c_ptr), value :: surfaces
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_toplevel_show_window_menu (GdkToplevel *toplevel, GdkEvent *event);
function gdk_toplevel_show_window_menu(toplevel, event) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_show_window_menu
  type(c_ptr), value :: toplevel
  type(c_ptr), value :: event
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_set_decorated (GdkToplevel *toplevel, gboolean decorated);
subroutine gdk_toplevel_set_decorated(toplevel, decorated) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: toplevel
  integer(c_int), value :: decorated
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_set_deletable (GdkToplevel *toplevel, gboolean deletable);
subroutine gdk_toplevel_set_deletable(toplevel, deletable) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: toplevel
  integer(c_int), value :: deletable
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_toplevel_supports_edge_constraints (GdkToplevel *toplevel);
function gdk_toplevel_supports_edge_constraints(toplevel) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_supports_edge_constraints
  type(c_ptr), value :: toplevel
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_inhibit_system_shortcuts (GdkToplevel *toplevel, GdkEvent *event);
subroutine gdk_toplevel_inhibit_system_shortcuts(toplevel, event) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: toplevel
  type(c_ptr), value :: event
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_restore_system_shortcuts (GdkToplevel *toplevel);
subroutine gdk_toplevel_restore_system_shortcuts(toplevel) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: toplevel
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_begin_resize (GdkToplevel *toplevel, GdkSurfaceEdge edge, GdkDevice *device, int button, double x, double y, guint32 timestamp);
subroutine gdk_toplevel_begin_resize(toplevel, edge, device, button, x, y,&
& timestamp) bind(c)
  import :: c_ptr, c_int, c_double, c_int32_t
  implicit none
  type(c_ptr), value :: toplevel
  integer(c_int), value :: edge
  type(c_ptr), value :: device
  integer(c_int), value :: button
  real(c_double), value :: x
  real(c_double), value :: y
  integer(c_int32_t), value :: timestamp
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_begin_move (GdkToplevel *toplevel, GdkDevice *device, int button, double x, double y, guint32 timestamp);
subroutine gdk_toplevel_begin_move(toplevel, device, button, x, y, timestamp)&
& bind(c)
  import :: c_ptr, c_int, c_double, c_int32_t
  implicit none
  type(c_ptr), value :: toplevel
  type(c_ptr), value :: device
  integer(c_int), value :: button
  real(c_double), value :: x
  real(c_double), value :: y
  integer(c_int32_t), value :: timestamp
end subroutine

! GDK_AVAILABLE_IN_4_4
!gboolean gdk_toplevel_titlebar_gesture (GdkToplevel *toplevel, GdkTitlebarGesture gesture);
function gdk_toplevel_titlebar_gesture(toplevel, gesture) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_toplevel_titlebar_gesture
  type(c_ptr), value :: toplevel
  integer(c_int), value :: gesture
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkclipboard.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_clipboard_get_type (void) ;
function gdk_clipboard_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_clipboard_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkDisplay * gdk_clipboard_get_display (GdkClipboard *clipboard);
function gdk_clipboard_get_display(clipboard) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_clipboard_get_display
  type(c_ptr), value :: clipboard
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_clipboard_get_formats (GdkClipboard *clipboard);
function gdk_clipboard_get_formats(clipboard) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_clipboard_get_formats
  type(c_ptr), value :: clipboard
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_clipboard_is_local (GdkClipboard *clipboard);
function gdk_clipboard_is_local(clipboard) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_clipboard_is_local
  type(c_ptr), value :: clipboard
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentProvider * gdk_clipboard_get_content (GdkClipboard *clipboard);
function gdk_clipboard_get_content(clipboard) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_clipboard_get_content
  type(c_ptr), value :: clipboard
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_store_async (GdkClipboard *clipboard, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_clipboard_store_async(clipboard, io_priority, cancellable,&
& callback, user_data) bind(c)
  import :: c_ptr, c_int, c_funptr
  implicit none
  type(c_ptr), value :: clipboard
  integer(c_int), value :: io_priority
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_clipboard_store_finish (GdkClipboard *clipboard, GAsyncResult *result, GError **error);
function gdk_clipboard_store_finish(clipboard, result, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_clipboard_store_finish
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: result
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_read_async (GdkClipboard *clipboard, const char **mime_types, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_clipboard_read_async(clipboard, mime_types, io_priority,&
& cancellable, callback, user_data) bind(c)
  import :: c_ptr, c_int, c_funptr
  implicit none
  type(c_ptr), value :: clipboard
  type(c_ptr), dimension(*) :: mime_types
  integer(c_int), value :: io_priority
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!GInputStream * gdk_clipboard_read_finish (GdkClipboard *clipboard, GAsyncResult *result, const char **out_mime_type, GError **error);
function gdk_clipboard_read_finish(clipboard, result, out_mime_type, error)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_clipboard_read_finish
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: result
  type(c_ptr), dimension(*) :: out_mime_type
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_read_value_async (GdkClipboard *clipboard, GType type, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_clipboard_read_value_async(clipboard, type, io_priority,&
& cancellable, callback, user_data) bind(c)
  import :: c_ptr, c_size_t, c_int, c_funptr
  implicit none
  type(c_ptr), value :: clipboard
  integer(c_size_t), value :: type
  integer(c_int), value :: io_priority
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!const GValue * gdk_clipboard_read_value_finish (GdkClipboard *clipboard, GAsyncResult *result, GError **error);
function gdk_clipboard_read_value_finish(clipboard, result, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_clipboard_read_value_finish
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: result
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_read_texture_async (GdkClipboard *clipboard, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_clipboard_read_texture_async(clipboard, cancellable, callback,&
& user_data) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkTexture * gdk_clipboard_read_texture_finish (GdkClipboard *clipboard, GAsyncResult *result, GError **error);
function gdk_clipboard_read_texture_finish(clipboard, result, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_clipboard_read_texture_finish
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: result
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_read_text_async (GdkClipboard *clipboard, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_clipboard_read_text_async(clipboard, cancellable, callback,&
& user_data) bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!char * gdk_clipboard_read_text_finish (GdkClipboard *clipboard, GAsyncResult *result, GError **error);
function gdk_clipboard_read_text_finish(clipboard, result, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_clipboard_read_text_finish
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: result
  type(c_ptr), value :: error
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_clipboard_set_content (GdkClipboard *clipboard, GdkContentProvider *provider);
function gdk_clipboard_set_content(clipboard, provider) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_clipboard_set_content
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: provider
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_set_valist (GdkClipboard *clipboard, GType type, va_list args);
subroutine gdk_clipboard_set_valist(clipboard, type, args) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr), value :: clipboard
  integer(c_size_t), value :: type
  type(c_ptr), value :: args
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_set_value (GdkClipboard *clipboard, const GValue *value);
subroutine gdk_clipboard_set_value(clipboard, value) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: value
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_set_text (GdkClipboard *clipboard, const char *text);
subroutine gdk_clipboard_set_text(clipboard, text) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: clipboard
  character(kind=c_char), dimension(*) :: text
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_clipboard_set_texture (GdkClipboard *clipboard, GdkTexture *texture);
subroutine gdk_clipboard_set_texture(clipboard, texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: clipboard
  type(c_ptr), value :: texture
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdragsurfacesize.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_12
!GType gdk_drag_surface_size_get_type (void);
function gdk_drag_surface_size_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_drag_surface_size_get_type
end function

! GDK_AVAILABLE_IN_4_12
!void gdk_drag_surface_size_set_size (GdkDragSurfaceSize *size, int width, int height);
subroutine gdk_drag_surface_size_set_size(size, width, height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: size
  integer(c_int), value :: width
  integer(c_int), value :: height
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdktoplevelsize.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_toplevel_size_get_type (void);
function gdk_toplevel_size_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_toplevel_size_get_type
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_size_get_bounds (GdkToplevelSize *size, int *bounds_width, int *bounds_height);
subroutine gdk_toplevel_size_get_bounds(size, bounds_width, bounds_height)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: size
  type(c_ptr), value :: bounds_width
  type(c_ptr), value :: bounds_height
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_size_set_size (GdkToplevelSize *size, int width, int height);
subroutine gdk_toplevel_size_set_size(size, width, height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: size
  integer(c_int), value :: width
  integer(c_int), value :: height
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_size_set_min_size (GdkToplevelSize *size, int min_width, int min_height);
subroutine gdk_toplevel_size_set_min_size(size, min_width, min_height) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: size
  integer(c_int), value :: min_width
  integer(c_int), value :: min_height
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_toplevel_size_set_shadow_width (GdkToplevelSize *size, int left, int right, int top, int bottom);
subroutine gdk_toplevel_size_set_shadow_width(size, left, right, top, bottom)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: size
  integer(c_int), value :: left
  integer(c_int), value :: right
  integer(c_int), value :: top
  integer(c_int), value :: bottom
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkdevicetool.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_device_tool_get_type (void) ;
function gdk_device_tool_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_device_tool_get_type
end function

! GDK_AVAILABLE_IN_ALL
!guint64 gdk_device_tool_get_serial (GdkDeviceTool *tool);
function gdk_device_tool_get_serial(tool) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_device_tool_get_serial
  type(c_ptr), value :: tool
end function

! GDK_AVAILABLE_IN_ALL
!guint64 gdk_device_tool_get_hardware_id (GdkDeviceTool *tool);
function gdk_device_tool_get_hardware_id(tool) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_device_tool_get_hardware_id
  type(c_ptr), value :: tool
end function

! GDK_AVAILABLE_IN_ALL
!GdkDeviceToolType gdk_device_tool_get_tool_type (GdkDeviceTool *tool);
function gdk_device_tool_get_tool_type(tool) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_tool_get_tool_type
  type(c_ptr), value :: tool
end function

! GDK_AVAILABLE_IN_ALL
!GdkAxisFlags gdk_device_tool_get_axes (GdkDeviceTool *tool);
function gdk_device_tool_get_axes(tool) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_device_tool_get_axes
  type(c_ptr), value :: tool
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcontentproviderimpl.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GdkContentProvider * gdk_content_provider_new_for_value (const GValue *value);
function gdk_content_provider_new_for_value(value) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_provider_new_for_value
  type(c_ptr), value :: value
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentProvider * gdk_content_provider_new_union (GdkContentProvider **providers, gsize n_providers);
function gdk_content_provider_new_union(providers, n_providers) bind(c)
  import :: c_ptr, c_size_t
  implicit none
  type(c_ptr) :: gdk_content_provider_new_union
  type(c_ptr), value :: providers
  integer(c_size_t), value :: n_providers
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentProvider * gdk_content_provider_new_for_bytes (const char *mime_type, GBytes *bytes);
function gdk_content_provider_new_for_bytes(mime_type, bytes) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_content_provider_new_for_bytes
  character(kind=c_char), dimension(*) :: mime_type
  type(c_ptr), value :: bytes
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcicpparams.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_4_16
!GdkCicpParams *gdk_cicp_params_new (void);
function gdk_cicp_params_new() bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_cicp_params_new
end function

! GDK_AVAILABLE_IN_4_16
!guint gdk_cicp_params_get_color_primaries (GdkCicpParams *self);
function gdk_cicp_params_get_color_primaries(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_cicp_params_get_color_primaries
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_cicp_params_set_color_primaries (GdkCicpParams *self, guint color_primaries);
subroutine gdk_cicp_params_set_color_primaries(self, color_primaries) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: color_primaries
end subroutine

! GDK_AVAILABLE_IN_4_16
!guint gdk_cicp_params_get_transfer_function (GdkCicpParams *self);
function gdk_cicp_params_get_transfer_function(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_cicp_params_get_transfer_function
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_cicp_params_set_transfer_function (GdkCicpParams *self, guint transfer_function);
subroutine gdk_cicp_params_set_transfer_function(self, transfer_function)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: transfer_function
end subroutine

! GDK_AVAILABLE_IN_4_16
!guint gdk_cicp_params_get_matrix_coefficients (GdkCicpParams *self);
function gdk_cicp_params_get_matrix_coefficients(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_cicp_params_get_matrix_coefficients
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_cicp_params_set_matrix_coefficients (GdkCicpParams *self, guint matrix_coefficients);
subroutine gdk_cicp_params_set_matrix_coefficients(self, matrix_coefficients)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: matrix_coefficients
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkCicpRange gdk_cicp_params_get_range (GdkCicpParams *self);
function gdk_cicp_params_get_range(self) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_cicp_params_get_range
  type(c_ptr), value :: self
end function

! GDK_AVAILABLE_IN_4_16
!void gdk_cicp_params_set_range (GdkCicpParams *self, GdkCicpRange range);
subroutine gdk_cicp_params_set_range(self, range) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: self
  integer(c_int), value :: range
end subroutine

! GDK_AVAILABLE_IN_4_16
!GdkColorState * gdk_cicp_params_build_color_state (GdkCicpParams *self, GError **error);
function gdk_cicp_params_build_color_state(self, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_cicp_params_build_color_state
  type(c_ptr), value :: self
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcairocontext.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_cairo_context_get_type (void) ;
function gdk_cairo_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_cairo_context_get_type
end function

! GDK_DEPRECATED_IN_4_18_FOR(gsk_cairo_node_get_draw_context)
!cairo_t * gdk_cairo_context_cairo_create (GdkCairoContext *self);
function gdk_cairo_context_cairo_create(self) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_cairo_context_cairo_create
  type(c_ptr), value :: self
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkframetimings.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_frame_timings_get_type (void) ;
function gdk_frame_timings_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_frame_timings_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkFrameTimings *gdk_frame_timings_ref (GdkFrameTimings *timings);
function gdk_frame_timings_ref(timings) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_frame_timings_ref
  type(c_ptr), value :: timings
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_frame_timings_unref (GdkFrameTimings *timings);
subroutine gdk_frame_timings_unref(timings) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: timings
end subroutine

! GDK_AVAILABLE_IN_ALL
!gint64 gdk_frame_timings_get_frame_counter (GdkFrameTimings *timings);
function gdk_frame_timings_get_frame_counter(timings) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_frame_timings_get_frame_counter
  type(c_ptr), value :: timings
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_frame_timings_get_complete (GdkFrameTimings *timings);
function gdk_frame_timings_get_complete(timings) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_frame_timings_get_complete
  type(c_ptr), value :: timings
end function

! GDK_AVAILABLE_IN_ALL
!gint64 gdk_frame_timings_get_frame_time (GdkFrameTimings *timings);
function gdk_frame_timings_get_frame_time(timings) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_frame_timings_get_frame_time
  type(c_ptr), value :: timings
end function

! GDK_AVAILABLE_IN_ALL
!gint64 gdk_frame_timings_get_presentation_time (GdkFrameTimings *timings);
function gdk_frame_timings_get_presentation_time(timings) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_frame_timings_get_presentation_time
  type(c_ptr), value :: timings
end function

! GDK_AVAILABLE_IN_ALL
!gint64 gdk_frame_timings_get_refresh_interval (GdkFrameTimings *timings);
function gdk_frame_timings_get_refresh_interval(timings) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_frame_timings_get_refresh_interval
  type(c_ptr), value :: timings
end function

! GDK_AVAILABLE_IN_ALL
!gint64 gdk_frame_timings_get_predicted_presentation_time (GdkFrameTimings *timings);
function gdk_frame_timings_get_predicted_presentation_time(timings) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_frame_timings_get_predicted_presentation_time
  type(c_ptr), value :: timings
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkframeclock.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_frame_clock_get_type (void) ;
function gdk_frame_clock_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_frame_clock_get_type
end function

! GDK_AVAILABLE_IN_ALL
!gint64 gdk_frame_clock_get_frame_time (GdkFrameClock *frame_clock);
function gdk_frame_clock_get_frame_time(frame_clock) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_frame_clock_get_frame_time
  type(c_ptr), value :: frame_clock
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_frame_clock_request_phase (GdkFrameClock *frame_clock, GdkFrameClockPhase phase);
subroutine gdk_frame_clock_request_phase(frame_clock, phase) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: frame_clock
  integer(c_int), value :: phase
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_frame_clock_begin_updating (GdkFrameClock *frame_clock);
subroutine gdk_frame_clock_begin_updating(frame_clock) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: frame_clock
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_frame_clock_end_updating (GdkFrameClock *frame_clock);
subroutine gdk_frame_clock_end_updating(frame_clock) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: frame_clock
end subroutine

! GDK_AVAILABLE_IN_ALL
!gint64 gdk_frame_clock_get_frame_counter (GdkFrameClock *frame_clock);
function gdk_frame_clock_get_frame_counter(frame_clock) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_frame_clock_get_frame_counter
  type(c_ptr), value :: frame_clock
end function

! GDK_AVAILABLE_IN_ALL
!gint64 gdk_frame_clock_get_history_start (GdkFrameClock *frame_clock);
function gdk_frame_clock_get_history_start(frame_clock) bind(c)
  import :: c_int64_t, c_ptr
  implicit none
  integer(c_int64_t) :: gdk_frame_clock_get_history_start
  type(c_ptr), value :: frame_clock
end function

! GDK_AVAILABLE_IN_ALL
!GdkFrameTimings *gdk_frame_clock_get_timings (GdkFrameClock *frame_clock, gint64 frame_counter);
function gdk_frame_clock_get_timings(frame_clock, frame_counter) bind(c)
  import :: c_ptr, c_int64_t
  implicit none
  type(c_ptr) :: gdk_frame_clock_get_timings
  type(c_ptr), value :: frame_clock
  integer(c_int64_t), value :: frame_counter
end function

! GDK_AVAILABLE_IN_ALL
!GdkFrameTimings *gdk_frame_clock_get_current_timings (GdkFrameClock *frame_clock);
function gdk_frame_clock_get_current_timings(frame_clock) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_frame_clock_get_current_timings
  type(c_ptr), value :: frame_clock
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_frame_clock_get_refresh_info (GdkFrameClock *frame_clock, gint64 base_time, gint64 *refresh_interval_return, gint64 *presentation_time_return);
subroutine gdk_frame_clock_get_refresh_info(frame_clock, base_time,&
& refresh_interval_return, presentation_time_return) bind(c)
  import :: c_ptr, c_int64_t
  implicit none
  type(c_ptr), value :: frame_clock
  integer(c_int64_t), value :: base_time
  type(c_ptr), value :: refresh_interval_return
  type(c_ptr), value :: presentation_time_return
end subroutine

! GDK_AVAILABLE_IN_ALL
!double gdk_frame_clock_get_fps (GdkFrameClock *frame_clock);
function gdk_frame_clock_get_fps(frame_clock) bind(c)
  import :: c_double, c_ptr
  implicit none
  real(c_double) :: gdk_frame_clock_get_fps
  type(c_ptr), value :: frame_clock
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkenums.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkenumtypes.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_cicp_range_get_type (void);
function gdk_cicp_range_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_cicp_range_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_input_source_get_type (void);
function gdk_input_source_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_input_source_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_device_pad_feature_get_type (void);
function gdk_device_pad_feature_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_device_pad_feature_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_device_tool_type_get_type (void);
function gdk_device_tool_type_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_device_tool_type_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_drag_cancel_reason_get_type (void);
function gdk_drag_cancel_reason_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_drag_cancel_reason_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_gl_api_get_type (void);
function gdk_gl_api_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_gl_api_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_gravity_get_type (void);
function gdk_gravity_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_gravity_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_modifier_type_get_type (void);
function gdk_modifier_type_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_modifier_type_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_dmabuf_error_get_type (void);
function gdk_dmabuf_error_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_dmabuf_error_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_gl_error_get_type (void);
function gdk_gl_error_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_gl_error_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_vulkan_error_get_type (void);
function gdk_vulkan_error_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_vulkan_error_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_axis_use_get_type (void);
function gdk_axis_use_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_axis_use_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_axis_flags_get_type (void);
function gdk_axis_flags_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_axis_flags_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_drag_action_get_type (void);
function gdk_drag_action_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_drag_action_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_memory_format_get_type (void);
function gdk_memory_format_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_memory_format_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_event_type_get_type (void);
function gdk_event_type_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_event_type_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_touchpad_gesture_phase_get_type (void);
function gdk_touchpad_gesture_phase_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_touchpad_gesture_phase_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_scroll_direction_get_type (void);
function gdk_scroll_direction_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_scroll_direction_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_scroll_unit_get_type (void);
function gdk_scroll_unit_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_scroll_unit_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_notify_type_get_type (void);
function gdk_notify_type_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_notify_type_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_crossing_mode_get_type (void);
function gdk_crossing_mode_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_crossing_mode_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_key_match_get_type (void);
function gdk_key_match_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_key_match_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_frame_clock_phase_get_type (void);
function gdk_frame_clock_phase_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_frame_clock_phase_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_subpixel_layout_get_type (void);
function gdk_subpixel_layout_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_subpixel_layout_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_paintable_flags_get_type (void);
function gdk_paintable_flags_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_paintable_flags_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_anchor_hints_get_type (void);
function gdk_anchor_hints_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_anchor_hints_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_seat_capabilities_get_type (void);
function gdk_seat_capabilities_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_seat_capabilities_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_texture_error_get_type (void);
function gdk_texture_error_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_texture_error_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_surface_edge_get_type (void);
function gdk_surface_edge_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_surface_edge_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_fullscreen_mode_get_type (void);
function gdk_fullscreen_mode_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_fullscreen_mode_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_toplevel_state_get_type (void);
function gdk_toplevel_state_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_toplevel_state_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_titlebar_gesture_get_type (void);
function gdk_titlebar_gesture_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_titlebar_gesture_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkkeysyms.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkcontentserializer.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_content_serializer_get_type (void) ;
function gdk_content_serializer_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_content_serializer_get_type
end function

! GDK_AVAILABLE_IN_ALL
!const char * gdk_content_serializer_get_mime_type (GdkContentSerializer *serializer);
function gdk_content_serializer_get_mime_type(serializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_serializer_get_mime_type
  type(c_ptr), value :: serializer
end function

! GDK_AVAILABLE_IN_ALL
!GType gdk_content_serializer_get_gtype (GdkContentSerializer *serializer);
function gdk_content_serializer_get_gtype(serializer) bind(c)
  import :: c_size_t, c_ptr
  implicit none
  integer(c_size_t) :: gdk_content_serializer_get_gtype
  type(c_ptr), value :: serializer
end function

! GDK_AVAILABLE_IN_ALL
!const GValue * gdk_content_serializer_get_value (GdkContentSerializer *serializer);
function gdk_content_serializer_get_value(serializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_serializer_get_value
  type(c_ptr), value :: serializer
end function

! GDK_AVAILABLE_IN_ALL
!GOutputStream * gdk_content_serializer_get_output_stream (GdkContentSerializer *serializer);
function gdk_content_serializer_get_output_stream(serializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_serializer_get_output_stream
  type(c_ptr), value :: serializer
end function

! GDK_AVAILABLE_IN_ALL
!int gdk_content_serializer_get_priority (GdkContentSerializer *serializer);
function gdk_content_serializer_get_priority(serializer) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_content_serializer_get_priority
  type(c_ptr), value :: serializer
end function

! GDK_AVAILABLE_IN_ALL
!GCancellable * gdk_content_serializer_get_cancellable (GdkContentSerializer *serializer);
function gdk_content_serializer_get_cancellable(serializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_serializer_get_cancellable
  type(c_ptr), value :: serializer
end function

! GDK_AVAILABLE_IN_ALL
!gpointer gdk_content_serializer_get_user_data (GdkContentSerializer *serializer);
function gdk_content_serializer_get_user_data(serializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_serializer_get_user_data
  type(c_ptr), value :: serializer
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_serializer_set_task_data (GdkContentSerializer *serializer, gpointer data, GDestroyNotify notify);
subroutine gdk_content_serializer_set_task_data(serializer, data, notify)&
& bind(c)
  import :: c_ptr, c_funptr
  implicit none
  type(c_ptr), value :: serializer
  type(c_ptr), value :: data
  type(c_funptr), value :: notify
end subroutine

! GDK_AVAILABLE_IN_ALL
!gpointer gdk_content_serializer_get_task_data (GdkContentSerializer *serializer);
function gdk_content_serializer_get_task_data(serializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_serializer_get_task_data
  type(c_ptr), value :: serializer
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_serializer_return_success (GdkContentSerializer *serializer);
subroutine gdk_content_serializer_return_success(serializer) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: serializer
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_content_serializer_return_error (GdkContentSerializer *serializer, GError *error);
subroutine gdk_content_serializer_return_error(serializer, error) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: serializer
  type(c_ptr), value :: error
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_union_serialize_gtypes (GdkContentFormats *formats);
function gdk_content_formats_union_serialize_gtypes(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_union_serialize_gtypes
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_ALL
!GdkContentFormats * gdk_content_formats_union_serialize_mime_types (GdkContentFormats *formats);
function gdk_content_formats_union_serialize_mime_types(formats) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_content_formats_union_serialize_mime_types
  type(c_ptr), value :: formats
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_content_register_serializer (GType type, const char *mime_type, GdkContentSerializeFunc serialize, gpointer data, GDestroyNotify notify);
subroutine gdk_content_register_serializer(type, mime_type, serialize, data,&
& notify) bind(c)
  import :: c_size_t, c_char, c_funptr, c_ptr
  implicit none
  integer(c_size_t), value :: type
  character(kind=c_char), dimension(*) :: mime_type
  type(c_funptr), value :: serialize
  type(c_ptr), value :: data
  type(c_funptr), value :: notify
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_content_serialize_async (GOutputStream *stream, const char *mime_type, const GValue *value, int io_priority, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data);
subroutine gdk_content_serialize_async(stream, mime_type, value, io_priority,&
& cancellable, callback, user_data) bind(c)
  import :: c_ptr, c_char, c_int, c_funptr
  implicit none
  type(c_ptr), value :: stream
  character(kind=c_char), dimension(*) :: mime_type
  type(c_ptr), value :: value
  integer(c_int), value :: io_priority
  type(c_ptr), value :: cancellable
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_content_serialize_finish (GAsyncResult *result, GError **error);
function gdk_content_serialize_finish(result, error) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_content_serialize_finish
  type(c_ptr), value :: result
  type(c_ptr), value :: error
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/gdkpopuplayout.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_popup_layout_get_type (void);
function gdk_popup_layout_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_popup_layout_get_type
end function

! GDK_AVAILABLE_IN_ALL
!GdkPopupLayout * gdk_popup_layout_new (const GdkRectangle *anchor_rect, GdkGravity rect_anchor, GdkGravity surface_anchor);
function gdk_popup_layout_new(anchor_rect, rect_anchor, surface_anchor) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_popup_layout_new
  type(c_ptr), value :: anchor_rect
  integer(c_int), value :: rect_anchor
  integer(c_int), value :: surface_anchor
end function

! GDK_AVAILABLE_IN_ALL
!GdkPopupLayout * gdk_popup_layout_ref (GdkPopupLayout *layout);
function gdk_popup_layout_ref(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_popup_layout_ref
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_popup_layout_unref (GdkPopupLayout *layout);
subroutine gdk_popup_layout_unref(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkPopupLayout * gdk_popup_layout_copy (GdkPopupLayout *layout);
function gdk_popup_layout_copy(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_popup_layout_copy
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_popup_layout_equal (GdkPopupLayout *layout, GdkPopupLayout *other);
function gdk_popup_layout_equal(layout, other) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_layout_equal
  type(c_ptr), value :: layout
  type(c_ptr), value :: other
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_popup_layout_set_anchor_rect (GdkPopupLayout *layout, const GdkRectangle *anchor_rect);
subroutine gdk_popup_layout_set_anchor_rect(layout, anchor_rect) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: anchor_rect
end subroutine

! GDK_AVAILABLE_IN_ALL
!const GdkRectangle * gdk_popup_layout_get_anchor_rect (GdkPopupLayout *layout);
function gdk_popup_layout_get_anchor_rect(layout) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_popup_layout_get_anchor_rect
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_popup_layout_set_rect_anchor (GdkPopupLayout *layout, GdkGravity anchor);
subroutine gdk_popup_layout_set_rect_anchor(layout, anchor) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: anchor
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkGravity gdk_popup_layout_get_rect_anchor (GdkPopupLayout *layout);
function gdk_popup_layout_get_rect_anchor(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_layout_get_rect_anchor
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_popup_layout_set_surface_anchor (GdkPopupLayout *layout, GdkGravity anchor);
subroutine gdk_popup_layout_set_surface_anchor(layout, anchor) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: anchor
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkGravity gdk_popup_layout_get_surface_anchor (GdkPopupLayout *layout);
function gdk_popup_layout_get_surface_anchor(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_layout_get_surface_anchor
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_popup_layout_set_anchor_hints (GdkPopupLayout *layout, GdkAnchorHints anchor_hints);
subroutine gdk_popup_layout_set_anchor_hints(layout, anchor_hints) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: anchor_hints
end subroutine

! GDK_AVAILABLE_IN_ALL
!GdkAnchorHints gdk_popup_layout_get_anchor_hints (GdkPopupLayout *layout);
function gdk_popup_layout_get_anchor_hints(layout) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_popup_layout_get_anchor_hints
  type(c_ptr), value :: layout
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_popup_layout_set_offset (GdkPopupLayout *layout, int dx, int dy);
subroutine gdk_popup_layout_set_offset(layout, dx, dy) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: dx
  integer(c_int), value :: dy
end subroutine

! GDK_AVAILABLE_IN_ALL
!void gdk_popup_layout_get_offset (GdkPopupLayout *layout, int *dx, int *dy);
subroutine gdk_popup_layout_get_offset(layout, dx, dy) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: dx
  type(c_ptr), value :: dy
end subroutine

! GDK_AVAILABLE_IN_4_2
!void gdk_popup_layout_set_shadow_width (GdkPopupLayout *layout, int left, int right, int top, int bottom);
subroutine gdk_popup_layout_set_shadow_width(layout, left, right, top, bottom)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: layout
  integer(c_int), value :: left
  integer(c_int), value :: right
  integer(c_int), value :: top
  integer(c_int), value :: bottom
end subroutine

! GDK_AVAILABLE_IN_4_2
!void gdk_popup_layout_get_shadow_width (GdkPopupLayout *layout, int *left, int *right, int *top, int *bottom);
subroutine gdk_popup_layout_get_shadow_width(layout, left, right, top, bottom)&
& bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: layout
  type(c_ptr), value :: left
  type(c_ptr), value :: right
  type(c_ptr), value :: top
  type(c_ptr), value :: bottom
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwaylandseat.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_wayland_seat_get_type (void) ;
function gdk_wayland_seat_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_wayland_seat_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwaylanddevice.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_wayland_device_get_type (void);
function gdk_wayland_device_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_wayland_device_get_type
end function

! GDK_AVAILABLE_IN_ALL
!const char *gdk_wayland_device_get_node_path (GdkDevice *device);
function gdk_wayland_device_get_node_path(device) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_wayland_device_get_node_path
  type(c_ptr), value :: device
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwaylandsurface.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_wayland_surface_get_type (void);
function gdk_wayland_surface_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_wayland_surface_get_type
end function

! GDK_AVAILABLE_IN_4_18
!void gdk_wayland_surface_force_next_commit (GdkSurface *surface);
subroutine gdk_wayland_surface_force_next_commit(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwaylanddisplay.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_wayland_display_get_type (void);
function gdk_wayland_display_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_wayland_display_get_type
end function

! GDK_DEPRECATED_IN_4_16
!void gdk_wayland_display_set_cursor_theme (GdkDisplay *display, const char *name, int size);
subroutine gdk_wayland_display_set_cursor_theme(display, name, size) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: name
  integer(c_int), value :: size
end subroutine

! GDK_DEPRECATED_IN_4_10
!const char * gdk_wayland_display_get_startup_notification_id (GdkDisplay *display);
function gdk_wayland_display_get_startup_notification_id(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_wayland_display_get_startup_notification_id
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_10_FOR(gdk_toplevel_set_startup_id)
!void gdk_wayland_display_set_startup_notification_id (GdkDisplay *display, const char *startup_id);
subroutine gdk_wayland_display_set_startup_notification_id(display, startup_id)&
& bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: startup_id
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_wayland_display_query_registry (GdkDisplay *display, const char *global);
function gdk_wayland_display_query_registry(display, global) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_wayland_display_query_registry
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: global
end function

! GDK_AVAILABLE_IN_4_4
!gpointer gdk_wayland_display_get_egl_display (GdkDisplay *display);
function gdk_wayland_display_get_egl_display(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_wayland_display_get_egl_display
  type(c_ptr), value :: display
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwaylandglcontext.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_wayland_gl_context_get_type (void) ;
function gdk_wayland_gl_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_wayland_gl_context_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwayland.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwaylandtoplevel.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_wayland_toplevel_get_type (void);
function gdk_wayland_toplevel_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_wayland_toplevel_get_type
end function

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_wayland_toplevel_export_handle (GdkToplevel *toplevel, GdkWaylandToplevelExported callback, gpointer user_data, GDestroyNotify destroy_func);
function gdk_wayland_toplevel_export_handle(toplevel, callback, user_data,&
& destroy_func) bind(c)
  import :: c_int, c_ptr, c_funptr
  implicit none
  integer(c_int) :: gdk_wayland_toplevel_export_handle
  type(c_ptr), value :: toplevel
  type(c_funptr), value :: callback
  type(c_ptr), value :: user_data
  type(c_funptr), value :: destroy_func
end function

! GDK_DEPRECATED_IN_4_12_FOR(gdk_wayland_toplevel_drop_exported_handle)
!void gdk_wayland_toplevel_unexport_handle (GdkToplevel *toplevel);
subroutine gdk_wayland_toplevel_unexport_handle(toplevel) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: toplevel
end subroutine

! GDK_AVAILABLE_IN_4_12
!void gdk_wayland_toplevel_drop_exported_handle (GdkToplevel *toplevel, const char *handle);
subroutine gdk_wayland_toplevel_drop_exported_handle(toplevel, handle) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: toplevel
  character(kind=c_char), dimension(*) :: handle
end subroutine

! GDK_AVAILABLE_IN_ALL
!gboolean gdk_wayland_toplevel_set_transient_for_exported (GdkToplevel *toplevel, const char *parent_handle_str);
function gdk_wayland_toplevel_set_transient_for_exported(toplevel,&
& parent_handle_str) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_wayland_toplevel_set_transient_for_exported
  type(c_ptr), value :: toplevel
  character(kind=c_char), dimension(*) :: parent_handle_str
end function

! GDK_AVAILABLE_IN_ALL
!void gdk_wayland_toplevel_set_application_id (GdkToplevel *toplevel, const char *application_id);
subroutine gdk_wayland_toplevel_set_application_id(toplevel, application_id)&
& bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: toplevel
  character(kind=c_char), dimension(*) :: application_id
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwaylandmonitor.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_wayland_monitor_get_type (void) ;
function gdk_wayland_monitor_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_wayland_monitor_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/wayland/gdkwaylandpopup.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_wayland_popup_get_type (void);
function gdk_wayland_popup_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_wayland_popup_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11device.h
!--------------------------------------------------
! GDK_DEPRECATED_IN_4_18
!int gdk_x11_device_get_id (GdkDevice *device);
function gdk_x11_device_get_id(device) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_x11_device_get_id
  type(c_ptr), value :: device
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11devicemanager.h
!--------------------------------------------------
! GDK_DEPRECATED_IN_4_18
!GdkDevice * gdk_x11_device_manager_lookup (GdkX11DeviceManagerXI2 *device_manager, int device_id);
function gdk_x11_device_manager_lookup(device_manager, device_id) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_x11_device_manager_lookup
  type(c_ptr), value :: device_manager
  integer(c_int), value :: device_id
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11applaunchcontext.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_app_launch_context_get_type (void);
function gdk_x11_app_launch_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_app_launch_context_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11property.h
!--------------------------------------------------
! GDK_DEPRECATED_IN_4_18
!Atom gdk_x11_get_xatom_by_name_for_display (GdkDisplay *display, const char *atom_name);
function gdk_x11_get_xatom_by_name_for_display(display, atom_name) bind(c)
  import :: c_long, c_ptr, c_char
  implicit none
  integer(c_long) :: gdk_x11_get_xatom_by_name_for_display
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: atom_name
end function

! GDK_DEPRECATED_IN_4_18
!const char * gdk_x11_get_xatom_name_for_display (GdkDisplay *display, Atom xatom);
function gdk_x11_get_xatom_name_for_display(display, xatom) bind(c)
  import :: c_ptr, c_long
  implicit none
  type(c_ptr) :: gdk_x11_get_xatom_name_for_display
  type(c_ptr), value :: display
  integer(c_long), value :: xatom
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11surface.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_surface_get_type (void);
function gdk_x11_surface_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_surface_get_type
end function

! GDK_DEPRECATED_IN_4_18
!Window gdk_x11_surface_get_xid (GdkSurface *surface);
function gdk_x11_surface_get_xid(surface) bind(c)
  import :: c_long, c_ptr
  implicit none
  integer(c_long) :: gdk_x11_surface_get_xid
  type(c_ptr), value :: surface
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_set_user_time (GdkSurface *surface, guint32 timestamp);
subroutine gdk_x11_surface_set_user_time(surface, timestamp) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr), value :: surface
  integer(c_int32_t), value :: timestamp
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_set_utf8_property (GdkSurface *surface, const char *name, const char *value);
subroutine gdk_x11_surface_set_utf8_property(surface, name, value) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: surface
  character(kind=c_char), dimension(*) :: name
  character(kind=c_char), dimension(*) :: value
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_set_theme_variant (GdkSurface *surface, const char *variant);
subroutine gdk_x11_surface_set_theme_variant(surface, variant) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: surface
  character(kind=c_char), dimension(*) :: variant
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_move_to_current_desktop (GdkSurface *surface);
subroutine gdk_x11_surface_move_to_current_desktop(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
end subroutine

! GDK_DEPRECATED_IN_4_18
!guint32 gdk_x11_surface_get_desktop (GdkSurface *surface);
function gdk_x11_surface_get_desktop(surface) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: gdk_x11_surface_get_desktop
  type(c_ptr), value :: surface
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_move_to_desktop (GdkSurface *surface, guint32 desktop);
subroutine gdk_x11_surface_move_to_desktop(surface, desktop) bind(c)
  import :: c_ptr, c_int32_t
  implicit none
  type(c_ptr), value :: surface
  integer(c_int32_t), value :: desktop
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_set_frame_sync_enabled (GdkSurface *surface, gboolean frame_sync_enabled);
subroutine gdk_x11_surface_set_frame_sync_enabled(surface, frame_sync_enabled)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: surface
  integer(c_int), value :: frame_sync_enabled
end subroutine

! GDK_DEPRECATED_IN_4_18
!guint32 gdk_x11_get_server_time (GdkSurface *surface);
function gdk_x11_get_server_time(surface) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: gdk_x11_get_server_time
  type(c_ptr), value :: surface
end function

! GDK_DEPRECATED_IN_4_18
!GdkSurface *gdk_x11_surface_lookup_for_display (GdkDisplay *display, Window window);
function gdk_x11_surface_lookup_for_display(display, window) bind(c)
  import :: c_ptr, c_long
  implicit none
  type(c_ptr) :: gdk_x11_surface_lookup_for_display
  type(c_ptr), value :: display
  integer(c_long), value :: window
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_set_skip_taskbar_hint (GdkSurface *surface, gboolean skips_taskbar);
subroutine gdk_x11_surface_set_skip_taskbar_hint(surface, skips_taskbar)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: surface
  integer(c_int), value :: skips_taskbar
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_set_skip_pager_hint (GdkSurface *surface, gboolean skips_pager);
subroutine gdk_x11_surface_set_skip_pager_hint(surface, skips_pager) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: surface
  integer(c_int), value :: skips_pager
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_set_urgency_hint (GdkSurface *surface, gboolean urgent);
subroutine gdk_x11_surface_set_urgency_hint(surface, urgent) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: surface
  integer(c_int), value :: urgent
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_surface_set_group (GdkSurface *surface, GdkSurface *leader);
subroutine gdk_x11_surface_set_group(surface, leader) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: surface
  type(c_ptr), value :: leader
end subroutine

! GDK_DEPRECATED_IN_4_18
!GdkSurface * gdk_x11_surface_get_group (GdkSurface *surface);
function gdk_x11_surface_get_group(surface) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_surface_get_group
  type(c_ptr), value :: surface
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11dnd.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_drag_get_type (void);
function gdk_x11_drag_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_drag_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11monitor.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_monitor_get_type (void) ;
function gdk_x11_monitor_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_monitor_get_type
end function

! GDK_DEPRECATED_IN_4_18
!XID gdk_x11_monitor_get_output (GdkMonitor *monitor);
function gdk_x11_monitor_get_output(monitor) bind(c)
  import :: c_long, c_ptr
  implicit none
  integer(c_long) :: gdk_x11_monitor_get_output
  type(c_ptr), value :: monitor
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_monitor_get_workarea (GdkMonitor *monitor, GdkRectangle *workarea);
subroutine gdk_x11_monitor_get_workarea(monitor, workarea) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: monitor
  type(c_ptr), value :: workarea
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11device-xi2.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_device_xi2_get_type (void) ;
function gdk_x11_device_xi2_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_device_xi2_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11glcontext.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_gl_context_get_type (void) ;
function gdk_x11_gl_context_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_gl_context_get_type
end function

! GDK_DEPRECATED_IN_4_18
!gboolean gdk_x11_display_get_glx_version (GdkDisplay *display, int *major, int *minor);
function gdk_x11_display_get_glx_version(display, major, minor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_x11_display_get_glx_version
  type(c_ptr), value :: display
  type(c_ptr), value :: major
  type(c_ptr), value :: minor
end function

! GDK_DEPRECATED_IN_4_18
!gboolean gdk_x11_display_get_egl_version (GdkDisplay *display, int *major, int *minor);
function gdk_x11_display_get_egl_version(display, major, minor) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_x11_display_get_egl_version
  type(c_ptr), value :: display
  type(c_ptr), value :: major
  type(c_ptr), value :: minor
end function

! GDK_DEPRECATED_IN_4_18
!gpointer gdk_x11_display_get_egl_display (GdkDisplay *display);
function gdk_x11_display_get_egl_display(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_display_get_egl_display
  type(c_ptr), value :: display
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11devicemanager-xi2.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_device_manager_xi2_get_type (void) ;
function gdk_x11_device_manager_xi2_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_device_manager_xi2_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11display.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_display_get_type (void);
function gdk_x11_display_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_display_get_type
end function

! GDK_DEPRECATED_IN_4_18
!GdkDisplay * gdk_x11_display_open (const char *display_name);
function gdk_x11_display_open(display_name) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr) :: gdk_x11_display_open
  character(kind=c_char), dimension(*) :: display_name
end function

! GDK_DEPRECATED_IN_4_18
!Display * gdk_x11_display_get_xdisplay (GdkDisplay *display);
function gdk_x11_display_get_xdisplay(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_display_get_xdisplay
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_18
!Screen * gdk_x11_display_get_xscreen (GdkDisplay *display);
function gdk_x11_display_get_xscreen(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_display_get_xscreen
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_18
!Window gdk_x11_display_get_xrootwindow (GdkDisplay *display);
function gdk_x11_display_get_xrootwindow(display) bind(c)
  import :: c_long, c_ptr
  implicit none
  integer(c_long) :: gdk_x11_display_get_xrootwindow
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_18
!Cursor gdk_x11_display_get_xcursor (GdkDisplay *display, GdkCursor *cursor);
function gdk_x11_display_get_xcursor(display, cursor) bind(c)
  import :: c_long, c_ptr
  implicit none
  integer(c_long) :: gdk_x11_display_get_xcursor
  type(c_ptr), value :: display
  type(c_ptr), value :: cursor
end function

! GDK_DEPRECATED_IN_4_18
!guint32 gdk_x11_display_get_user_time (GdkDisplay *display);
function gdk_x11_display_get_user_time(display) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: gdk_x11_display_get_user_time
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_10
!const char * gdk_x11_display_get_startup_notification_id (GdkDisplay *display);
function gdk_x11_display_get_startup_notification_id(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_display_get_startup_notification_id
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_10
!void gdk_x11_display_set_startup_notification_id (GdkDisplay *display, const char *startup_id);
subroutine gdk_x11_display_set_startup_notification_id(display, startup_id)&
& bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: startup_id
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_display_set_program_class (GdkDisplay *display, const char *program_class);
subroutine gdk_x11_display_set_program_class(display, program_class) bind(c)
  import :: c_ptr, c_char
  implicit none
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: program_class
end subroutine

! GDK_DEPRECATED_IN_4_16
!void gdk_x11_display_set_cursor_theme (GdkDisplay *display, const char *theme, const int size);
subroutine gdk_x11_display_set_cursor_theme(display, theme, size) bind(c)
  import :: c_ptr, c_char, c_int
  implicit none
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: theme
  integer(c_int), value :: size
end subroutine

! GDK_DEPRECATED_IN_4_18
!GdkDisplay *gdk_x11_lookup_xdisplay (Display *xdisplay);
function gdk_x11_lookup_xdisplay(xdisplay) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_lookup_xdisplay
  type(c_ptr), value :: xdisplay
end function

! GDK_DEPRECATED_IN_4_18
!GdkX11Screen *gdk_x11_display_get_screen (GdkDisplay *display);
function gdk_x11_display_get_screen(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_display_get_screen
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_18
!GdkMonitor * gdk_x11_display_get_primary_monitor (GdkDisplay *display);
function gdk_x11_display_get_primary_monitor(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_display_get_primary_monitor
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_display_grab (GdkDisplay *display);
subroutine gdk_x11_display_grab(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_display_ungrab (GdkDisplay *display);
subroutine gdk_x11_display_ungrab(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_display_set_surface_scale (GdkDisplay *display, int scale);
subroutine gdk_x11_display_set_surface_scale(display, scale) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: display
  integer(c_int), value :: scale
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_display_error_trap_push (GdkDisplay *display);
subroutine gdk_x11_display_error_trap_push(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_DEPRECATED_IN_4_18
!int gdk_x11_display_error_trap_pop (GdkDisplay *display);
function gdk_x11_display_error_trap_pop(display) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_x11_display_error_trap_pop
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_display_error_trap_pop_ignored (GdkDisplay *display);
subroutine gdk_x11_display_error_trap_pop_ignored(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_set_sm_client_id (const char *sm_client_id);
subroutine gdk_x11_set_sm_client_id(sm_client_id) bind(c)
  import :: c_char
  implicit none
  character(kind=c_char), dimension(*) :: sm_client_id
end subroutine

! GDK_DEPRECATED_IN_4_18
!GdkSurface * gdk_x11_display_get_default_group (GdkDisplay *display);
function gdk_x11_display_get_default_group(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_display_get_default_group
  type(c_ptr), value :: display
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11screen.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_x11_screen_get_type (void);
function gdk_x11_screen_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_x11_screen_get_type
end function

! GDK_DEPRECATED_IN_4_18
!Screen * gdk_x11_screen_get_xscreen (GdkX11Screen *screen);
function gdk_x11_screen_get_xscreen(screen) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_screen_get_xscreen
  type(c_ptr), value :: screen
end function

! GDK_DEPRECATED_IN_4_18
!int gdk_x11_screen_get_screen_number (GdkX11Screen *screen);
function gdk_x11_screen_get_screen_number(screen) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_x11_screen_get_screen_number
  type(c_ptr), value :: screen
end function

! GDK_DEPRECATED_IN_4_18
!const char* gdk_x11_screen_get_window_manager_name (GdkX11Screen *screen);
function gdk_x11_screen_get_window_manager_name(screen) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_x11_screen_get_window_manager_name
  type(c_ptr), value :: screen
end function

! GDK_DEPRECATED_IN_4_18
!gboolean gdk_x11_screen_supports_net_wm_hint (GdkX11Screen *screen, const char *property_name);
function gdk_x11_screen_supports_net_wm_hint(screen, property_name) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_x11_screen_supports_net_wm_hint
  type(c_ptr), value :: screen
  character(kind=c_char), dimension(*) :: property_name
end function

! GDK_DEPRECATED_IN_4_18
!XID gdk_x11_screen_get_monitor_output (GdkX11Screen *screen, int monitor_num);
function gdk_x11_screen_get_monitor_output(screen, monitor_num) bind(c)
  import :: c_long, c_ptr, c_int
  implicit none
  integer(c_long) :: gdk_x11_screen_get_monitor_output
  type(c_ptr), value :: screen
  integer(c_int), value :: monitor_num
end function

! GDK_DEPRECATED_IN_4_18
!guint32 gdk_x11_screen_get_number_of_desktops (GdkX11Screen *screen);
function gdk_x11_screen_get_number_of_desktops(screen) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: gdk_x11_screen_get_number_of_desktops
  type(c_ptr), value :: screen
end function

! GDK_DEPRECATED_IN_4_18
!guint32 gdk_x11_screen_get_current_desktop (GdkX11Screen *screen);
function gdk_x11_screen_get_current_desktop(screen) bind(c)
  import :: c_int32_t, c_ptr
  implicit none
  integer(c_int32_t) :: gdk_x11_screen_get_current_desktop
  type(c_ptr), value :: screen
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11utils.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx11selection.h
!--------------------------------------------------
! GDK_DEPRECATED_IN_4_18
!int gdk_x11_display_text_property_to_text_list (GdkDisplay *display, const char *encoding, int format, const guchar *text, int length, char ***list);
function gdk_x11_display_text_property_to_text_list(display, encoding, format,&
& text, length, list) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_x11_display_text_property_to_text_list
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: encoding
  integer(c_int), value :: format
  character(kind=c_char), dimension(*) :: text
  integer(c_int), value :: length
  type(c_ptr), dimension(*) :: list
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_free_text_list (char **list);
subroutine gdk_x11_free_text_list(list) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), dimension(*) :: list
end subroutine

! GDK_DEPRECATED_IN_4_18
!int gdk_x11_display_string_to_compound_text (GdkDisplay *display, const char *str, const char **encoding, int *format, guchar **ctext, int *length);
function gdk_x11_display_string_to_compound_text(display, str, encoding,&
& format, ctext, length) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_x11_display_string_to_compound_text
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: str
  type(c_ptr), dimension(*) :: encoding
  type(c_ptr), value :: format
  type(c_ptr), dimension(*) :: ctext
  type(c_ptr), value :: length
end function

! GDK_DEPRECATED_IN_4_18
!gboolean gdk_x11_display_utf8_to_compound_text (GdkDisplay *display, const char *str, const char **encoding, int *format, guchar **ctext, int *length);
function gdk_x11_display_utf8_to_compound_text(display, str, encoding, format,&
& ctext, length) bind(c)
  import :: c_int, c_ptr, c_char
  implicit none
  integer(c_int) :: gdk_x11_display_utf8_to_compound_text
  type(c_ptr), value :: display
  character(kind=c_char), dimension(*) :: str
  type(c_ptr), dimension(*) :: encoding
  type(c_ptr), value :: format
  type(c_ptr), dimension(*) :: ctext
  type(c_ptr), value :: length
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_x11_free_compound_text (guchar *ctext);
subroutine gdk_x11_free_compound_text(ctext) bind(c)
  import :: c_char
  implicit none
  character(kind=c_char), dimension(*) :: ctext
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/x11/gdkx-autocleanups.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/broadway/gdkbroadwaysurface.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_broadway_surface_get_type (void);
function gdk_broadway_surface_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_broadway_surface_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/broadway/gdkbroadwaydisplay.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_broadway_display_get_type (void);
function gdk_broadway_display_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_broadway_display_get_type
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_broadway_display_show_keyboard (GdkBroadwayDisplay *display);
subroutine gdk_broadway_display_show_keyboard(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_DEPRECATED_IN_4_18
!void gdk_broadway_display_hide_keyboard (GdkBroadwayDisplay *display);
subroutine gdk_broadway_display_hide_keyboard(display) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr), value :: display
end subroutine

! GDK_DEPRECATED_IN_4_18
!int gdk_broadway_display_get_surface_scale (GdkDisplay *display);
function gdk_broadway_display_get_surface_scale(display) bind(c)
  import :: c_int, c_ptr
  implicit none
  integer(c_int) :: gdk_broadway_display_get_surface_scale
  type(c_ptr), value :: display
end function

! GDK_DEPRECATED_IN_4_18
!void gdk_broadway_display_set_surface_scale (GdkDisplay *display, int scale);
subroutine gdk_broadway_display_set_surface_scale(display, scale) bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr), value :: display
  integer(c_int), value :: scale
end subroutine

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/broadway/gdkbroadwaycursor.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_broadway_cursor_get_type (void);
function gdk_broadway_cursor_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_broadway_cursor_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/broadway/gdkbroadwaymonitor.h
!--------------------------------------------------
! GDK_AVAILABLE_IN_ALL
!GType gdk_broadway_monitor_get_type (void) ;
function gdk_broadway_monitor_get_type() bind(c)
  import :: c_size_t
  implicit none
  integer(c_size_t) :: gdk_broadway_monitor_get_type
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/broadway/gdkbroadway.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/deprecated/gdkpixbuf.h
!--------------------------------------------------
! GDK_DEPRECATED_IN_4_12
!GdkPixbuf *gdk_pixbuf_get_from_surface (cairo_surface_t *surface, int src_x, int src_y, int width, int height);
function gdk_pixbuf_get_from_surface(surface, src_x, src_y, width, height)&
& bind(c)
  import :: c_ptr, c_int
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_from_surface
  type(c_ptr), value :: surface
  integer(c_int), value :: src_x
  integer(c_int), value :: src_y
  integer(c_int), value :: width
  integer(c_int), value :: height
end function

! GDK_DEPRECATED_IN_4_12
!GdkPixbuf *gdk_pixbuf_get_from_texture (GdkTexture *texture);
function gdk_pixbuf_get_from_texture(texture) bind(c)
  import :: c_ptr
  implicit none
  type(c_ptr) :: gdk_pixbuf_get_from_texture
  type(c_ptr), value :: texture
end function

!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/version/gdkversionmacros.h
!--------------------------------------------------
!--------------------------------------------------
! /usr/include/gtk-4.0/gdk/version/gdk-visibility.h
!--------------------------------------------------
end interface
end module gdk
