Thunks: Adds libxcb

This commit is contained in:
Ryan Houdek committed 2021-10-05 23:51:25 -07:00
1 parent 29debcda3d
commit 798c6772b7
4 files changed
+2671

No files matched your search

+809
View File
@@ -0,0 +1,809 @@
#!/usr/bin/python3
from ThunkHelpers import *
lib("libxcb")
# There is a paradigm inside of XCB of functions that return a pointer, a length, and an end
# The application is seemingly reading directly from some internal data structures
# This means the application doesn't have ownership of the pointers and shouldn't free them
# These are marked with ::Iterator::
# FEX
fn("void FEX_xcb_init_extension(xcb_connection_t *, xcb_extension_t *)"); no_unpack()
fn("size_t FEX_usable_size(void*)"); no_unpack()
fn("void FEX_free_on_host(void*)"); no_unpack()
fn("void FEX_GiveEvents(CrossArchEvent *, CrossArchEvent *, CBWork*)"); no_unpack()
# xcb.h
fn("int xcb_flush(xcb_connection_t *)")
fn("uint32_t xcb_get_maximum_request_length(xcb_connection_t *)")
fn("void xcb_prefetch_maximum_request_length(xcb_connection_t *)")
fn("xcb_generic_event_t * xcb_wait_for_event(xcb_connection_t *)"); no_pack()
fn("xcb_generic_event_t * xcb_poll_for_event(xcb_connection_t *)"); no_pack()
fn("xcb_generic_event_t * xcb_poll_for_queued_event(xcb_connection_t *)"); no_pack()
fn("xcb_generic_event_t * xcb_poll_for_special_event(xcb_connection_t *, xcb_special_event_t *)"); no_pack()
fn("xcb_generic_event_t * xcb_wait_for_special_event(xcb_connection_t *, xcb_special_event_t *)"); no_pack()
# Looks like unregister will free the memory of the result
fn("xcb_special_event_t * xcb_register_for_special_xge(xcb_connection_t *, xcb_extension_t *, uint32_t, uint32_t *)")
fn("void xcb_unregister_for_special_event(xcb_connection_t *, xcb_special_event_t *)")
fn("xcb_generic_error_t * xcb_request_check(xcb_connection_t *, xcb_void_cookie_t)"); no_pack()
fn("void xcb_discard_reply(xcb_connection_t *, unsigned int)")
fn("void xcb_discard_reply64(xcb_connection_t *, uint64_t)")
fn("const struct xcb_query_extension_reply_t * xcb_get_extension_data(xcb_connection_t *, xcb_extension_t *)")
fn("void xcb_prefetch_extension_data(xcb_connection_t *, xcb_extension_t *)")
# Documentation says that return must NOT be freed
fn("const struct xcb_setup_t * xcb_get_setup(xcb_connection_t *)")
fn("int xcb_get_file_descriptor(xcb_connection_t *)")
fn("int xcb_connection_has_error(xcb_connection_t *)")
# xcb_disconnect frees result
fn("xcb_connection_t * xcb_connect_to_fd(int, xcb_auth_info_t *)")
fn("void xcb_disconnect(xcb_connection_t *)"); no_pack()
# Second argument is owned by application on return
fn("int xcb_parse_display(const char *, char **, int *, int *)"); no_pack()
# xcb_disconnect frees result
fn("xcb_connection_t * xcb_connect(const char *, int *)"); no_pack()
fn("xcb_connection_t * xcb_connect_to_display_with_auth_info(const char *, xcb_auth_info_t *, int *)"); no_pack()
fn("uint32_t xcb_generate_id(xcb_connection_t *)")
fn("uint64_t xcb_total_read(xcb_connection_t *)")
fn("uint64_t xcb_total_written(xcb_connection_t *)")
# xcbext.h
fn("unsigned int xcb_send_request(xcb_connection_t *, int, struct iovec *, const xcb_protocol_request_t *)")
fn("unsigned int xcb_send_request_with_fds(xcb_connection_t *, int, struct iovec *, const xcb_protocol_request_t *, unsigned int, int *)")
fn("uint64_t xcb_send_request64(xcb_connection_t *, int, struct iovec *, const xcb_protocol_request_t *)")
fn("uint64_t xcb_send_request_with_fds64(xcb_connection_t *, int, struct iovec *, const xcb_protocol_request_t *, unsigned int, int *)")
fn("void xcb_send_fd(xcb_connection_t *, int)")
fn("int xcb_take_socket(xcb_connection_t *, CBType, void *, int, uint64_t *)"); no_thunk(); no_pack(); no_unpack(); no_tab_unpack()
#fn("int XIfEvent(Display*, XEvent*, XIfEventCBFN*, XPointer)"); no_thunk(); no_pack(); no_unpack(); no_tab_unpack()
#fn("int XIfEvent_internal(Display*, XEvent*, XIfEventCBFN*, XPointer)"); no_ldr();
#cb("int XIfEventCB(Display*, XEvent*, XPointer)")
fn("int xcb_take_socket_internal(xcb_connection_t *, CBType, void *, int, uint64_t *)"); no_ldr()
cb("void xcb_take_socket_cb(void*)"); no_cb_unpack()
fn("int xcb_writev(xcb_connection_t *, struct iovec *, int, uint64_t)")
fn("void * xcb_wait_for_reply(xcb_connection_t *, unsigned int, xcb_generic_error_t **)"); no_pack()
fn("void * xcb_wait_for_reply64(xcb_connection_t *, uint64_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_poll_for_reply(xcb_connection_t *, unsigned int, void **, xcb_generic_error_t **)"); no_pack()
fn("int xcb_poll_for_reply64(xcb_connection_t *, uint64_t, void **, xcb_generic_error_t **)"); no_pack()
# XXX: Who owns the return?
fn("int * xcb_get_reply_fds(xcb_connection_t *, void *, size_t)")
fn("int xcb_popcount(uint32_t)")
fn("int xcb_sumof(uint8_t *, int)")
# xproto.h
fn("void xcb_char2b_next(xcb_char2b_iterator_t *)")
fn("xcb_generic_iterator_t xcb_char2b_end(xcb_char2b_iterator_t)")
fn("void xcb_window_next(xcb_window_iterator_t *)")
fn("xcb_generic_iterator_t xcb_window_end(xcb_window_iterator_t)")
fn("void xcb_pixmap_next(xcb_pixmap_iterator_t *)")
fn("xcb_generic_iterator_t xcb_pixmap_end(xcb_pixmap_iterator_t)")
fn("void xcb_cursor_next(xcb_cursor_iterator_t *)")
fn("xcb_generic_iterator_t xcb_cursor_end(xcb_cursor_iterator_t)")
fn("void xcb_font_next(xcb_font_iterator_t *)")
fn("xcb_generic_iterator_t xcb_font_end(xcb_font_iterator_t)")
fn("void xcb_gcontext_next(xcb_gcontext_iterator_t *)")
fn("xcb_generic_iterator_t xcb_gcontext_end(xcb_gcontext_iterator_t)")
fn("void xcb_colormap_next(xcb_colormap_iterator_t *)")
fn("xcb_generic_iterator_t xcb_colormap_end(xcb_colormap_iterator_t)")
fn("void xcb_atom_next(xcb_atom_iterator_t *)")
fn("xcb_generic_iterator_t xcb_atom_end(xcb_atom_iterator_t)")
fn("void xcb_drawable_next(xcb_drawable_iterator_t *)")
fn("xcb_generic_iterator_t xcb_drawable_end(xcb_drawable_iterator_t)")
fn("void xcb_fontable_next(xcb_fontable_iterator_t *)")
fn("xcb_generic_iterator_t xcb_fontable_end(xcb_fontable_iterator_t)")
fn("void xcb_bool32_next(xcb_bool32_iterator_t *)")
fn("xcb_generic_iterator_t xcb_bool32_end(xcb_bool32_iterator_t)")
fn("void xcb_visualid_next(xcb_visualid_iterator_t *)")
fn("xcb_generic_iterator_t xcb_visualid_end(xcb_visualid_iterator_t)")
fn("void xcb_timestamp_next(xcb_timestamp_iterator_t *)")
fn("xcb_generic_iterator_t xcb_timestamp_end(xcb_timestamp_iterator_t)")
fn("void xcb_keysym_next(xcb_keysym_iterator_t *)")
fn("xcb_generic_iterator_t xcb_keysym_end(xcb_keysym_iterator_t)")
fn("void xcb_keycode_next(xcb_keycode_iterator_t *)")
fn("xcb_generic_iterator_t xcb_keycode_end(xcb_keycode_iterator_t)")
fn("void xcb_keycode32_next(xcb_keycode32_iterator_t *)")
fn("xcb_generic_iterator_t xcb_keycode32_end(xcb_keycode32_iterator_t)")
fn("void xcb_button_next(xcb_button_iterator_t *)")
fn("xcb_generic_iterator_t xcb_button_end(xcb_button_iterator_t)")
fn("void xcb_point_next(xcb_point_iterator_t *)")
fn("xcb_generic_iterator_t xcb_point_end(xcb_point_iterator_t)")
fn("void xcb_rectangle_next(xcb_rectangle_iterator_t *)")
fn("xcb_generic_iterator_t xcb_rectangle_end(xcb_rectangle_iterator_t)")
fn("void xcb_arc_next(xcb_arc_iterator_t *)")
fn("xcb_generic_iterator_t xcb_arc_end(xcb_arc_iterator_t)")
fn("void xcb_format_next(xcb_format_iterator_t *)")
fn("xcb_generic_iterator_t xcb_format_end(xcb_format_iterator_t)")
fn("void xcb_visualtype_next(xcb_visualtype_iterator_t *)")
fn("xcb_generic_iterator_t xcb_visualtype_end(xcb_visualtype_iterator_t)")
fn("int xcb_depth_sizeof(const void *)")
# ::Iterator::
fn("xcb_visualtype_t * xcb_depth_visuals(const xcb_depth_t *)")
fn("int xcb_depth_visuals_length(const xcb_depth_t *)")
fn("xcb_visualtype_iterator_t xcb_depth_visuals_iterator(const xcb_depth_t *)")
fn("void xcb_depth_next(xcb_depth_iterator_t *)")
fn("xcb_generic_iterator_t xcb_depth_end(xcb_depth_iterator_t)")
fn("int xcb_screen_sizeof(const void *)")
fn("int xcb_screen_allowed_depths_length(const xcb_screen_t *)")
fn("xcb_depth_iterator_t xcb_screen_allowed_depths_iterator(const xcb_screen_t *)")
fn("void xcb_screen_next(xcb_screen_iterator_t *)")
fn("xcb_generic_iterator_t xcb_screen_end(xcb_screen_iterator_t)")
fn("int xcb_setup_request_sizeof(const void *)")
# ::Iterator::
fn("char * xcb_setup_request_authorization_protocol_name(const xcb_setup_request_t *)")
fn("int xcb_setup_request_authorization_protocol_name_length(const xcb_setup_request_t *)")
fn("xcb_generic_iterator_t xcb_setup_request_authorization_protocol_name_end(const xcb_setup_request_t *)")
# ::Iterator::
fn("char * xcb_setup_request_authorization_protocol_data(const xcb_setup_request_t *)")
fn("int xcb_setup_request_authorization_protocol_data_length(const xcb_setup_request_t *)")
fn("xcb_generic_iterator_t xcb_setup_request_authorization_protocol_data_end(const xcb_setup_request_t *)")
fn("void xcb_setup_request_next(xcb_setup_request_iterator_t *)")
fn("xcb_generic_iterator_t xcb_setup_request_end(xcb_setup_request_iterator_t)")
fn("int xcb_setup_failed_sizeof(const void *)")
# XXX: Who owns result?
fn("char * xcb_setup_failed_reason(const xcb_setup_failed_t *)")
fn("int xcb_setup_failed_reason_length(const xcb_setup_failed_t *)")
fn("xcb_generic_iterator_t xcb_setup_failed_reason_end(const xcb_setup_failed_t *)")
fn("void xcb_setup_failed_next(xcb_setup_failed_iterator_t *)")
fn("xcb_generic_iterator_t xcb_setup_failed_end(xcb_setup_failed_iterator_t)")
fn("int xcb_setup_authenticate_sizeof(const void *)")
# ::Iterator::
fn("char * xcb_setup_authenticate_reason(const xcb_setup_authenticate_t *)")
fn("int xcb_setup_authenticate_reason_length(const xcb_setup_authenticate_t *)")
fn("xcb_generic_iterator_t xcb_setup_authenticate_reason_end(const xcb_setup_authenticate_t *)")
fn("void xcb_setup_authenticate_next(xcb_setup_authenticate_iterator_t *)")
fn("xcb_generic_iterator_t xcb_setup_authenticate_end(xcb_setup_authenticate_iterator_t)")
fn("int xcb_setup_sizeof(const void *)")
# ::Iterator::
fn("char * xcb_setup_vendor(const xcb_setup_t *)")
fn("int xcb_setup_vendor_length(const xcb_setup_t *)")
fn("xcb_generic_iterator_t xcb_setup_vendor_end(const xcb_setup_t *)")
# ::Iterator::
fn("xcb_format_t * xcb_setup_pixmap_formats(const xcb_setup_t *)")
fn("int xcb_setup_pixmap_formats_length(const xcb_setup_t *)")
fn("xcb_format_iterator_t xcb_setup_pixmap_formats_iterator(const xcb_setup_t *)")
fn("int xcb_setup_roots_length(const xcb_setup_t *)")
fn("xcb_screen_iterator_t xcb_setup_roots_iterator(const xcb_setup_t *)")
fn("void xcb_setup_next(xcb_setup_iterator_t *)")
fn("xcb_generic_iterator_t xcb_setup_end(xcb_setup_iterator_t)")
fn("void xcb_client_message_data_next(xcb_client_message_data_iterator_t *)")
fn("xcb_generic_iterator_t xcb_client_message_data_end(xcb_client_message_data_iterator_t)")
fn("int xcb_create_window_value_list_serialize(void **, uint32_t, const xcb_create_window_value_list_t *)")
fn("int xcb_create_window_value_list_unpack(const void *, uint32_t, xcb_create_window_value_list_t *)")
fn("int xcb_create_window_value_list_sizeof(const void *, uint32_t)")
fn("int xcb_create_window_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_create_window_checked(xcb_connection_t *, uint8_t, xcb_window_t, xcb_window_t, int16_t, int16_t, uint16_t, uint16_t, uint16_t, uint16_t, xcb_visualid_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_create_window(xcb_connection_t *, uint8_t, xcb_window_t, xcb_window_t, int16_t, int16_t, uint16_t, uint16_t, uint16_t, uint16_t, xcb_visualid_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_create_window_aux_checked(xcb_connection_t *, uint8_t, xcb_window_t, xcb_window_t, int16_t, int16_t, uint16_t, uint16_t, uint16_t, uint16_t, xcb_visualid_t, uint32_t, const xcb_create_window_value_list_t *)")
fn("xcb_void_cookie_t xcb_create_window_aux(xcb_connection_t *, uint8_t, xcb_window_t, xcb_window_t, int16_t, int16_t, uint16_t, uint16_t, uint16_t, uint16_t, xcb_visualid_t, uint32_t, const xcb_create_window_value_list_t *)")
# XXX: Who owns result?
fn("void * xcb_create_window_value_list(const xcb_create_window_request_t *)")
fn("int xcb_change_window_attributes_value_list_serialize(void **, uint32_t, const xcb_change_window_attributes_value_list_t *)")
fn("int xcb_change_window_attributes_value_list_unpack(const void *, uint32_t, xcb_change_window_attributes_value_list_t *)")
fn("int xcb_change_window_attributes_value_list_sizeof(const void *, uint32_t)")
fn("int xcb_change_window_attributes_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_change_window_attributes_checked(xcb_connection_t *, xcb_window_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_change_window_attributes(xcb_connection_t *, xcb_window_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_change_window_attributes_aux_checked(xcb_connection_t *, xcb_window_t, uint32_t, const xcb_change_window_attributes_value_list_t *)")
fn("xcb_void_cookie_t xcb_change_window_attributes_aux(xcb_connection_t *, xcb_window_t, uint32_t, const xcb_change_window_attributes_value_list_t *)")
# XXX: Who owns result?
fn("void * xcb_change_window_attributes_value_list(const xcb_change_window_attributes_request_t *)")
fn("xcb_get_window_attributes_cookie_t xcb_get_window_attributes(xcb_connection_t *, xcb_window_t)")
fn("xcb_get_window_attributes_cookie_t xcb_get_window_attributes_unchecked(xcb_connection_t *, xcb_window_t)")
fn("xcb_get_window_attributes_reply_t * xcb_get_window_attributes_reply(xcb_connection_t *, xcb_get_window_attributes_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_destroy_window_checked(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_destroy_window(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_destroy_subwindows_checked(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_destroy_subwindows(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_change_save_set_checked(xcb_connection_t *, uint8_t, xcb_window_t)")
fn("xcb_void_cookie_t xcb_change_save_set(xcb_connection_t *, uint8_t, xcb_window_t)")
fn("xcb_void_cookie_t xcb_reparent_window_checked(xcb_connection_t *, xcb_window_t, xcb_window_t, int16_t, int16_t)")
fn("xcb_void_cookie_t xcb_reparent_window(xcb_connection_t *, xcb_window_t, xcb_window_t, int16_t, int16_t)")
fn("xcb_void_cookie_t xcb_map_window_checked(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_map_window(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_map_subwindows_checked(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_map_subwindows(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_unmap_window_checked(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_unmap_window(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_unmap_subwindows_checked(xcb_connection_t *, xcb_window_t)")
fn("xcb_void_cookie_t xcb_unmap_subwindows(xcb_connection_t *, xcb_window_t)")
fn("int xcb_configure_window_value_list_serialize(void **, uint16_t, const xcb_configure_window_value_list_t *)")
fn("int xcb_configure_window_value_list_unpack(const void *, uint16_t, xcb_configure_window_value_list_t *)")
fn("int xcb_configure_window_value_list_sizeof(const void *, uint16_t)")
fn("int xcb_configure_window_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_configure_window_checked(xcb_connection_t *, xcb_window_t, uint16_t, const void *)")
fn("xcb_void_cookie_t xcb_configure_window(xcb_connection_t *, xcb_window_t, uint16_t, const void *)")
fn("xcb_void_cookie_t xcb_configure_window_aux_checked(xcb_connection_t *, xcb_window_t, uint16_t, const xcb_configure_window_value_list_t *)")
fn("xcb_void_cookie_t xcb_configure_window_aux(xcb_connection_t *, xcb_window_t, uint16_t, const xcb_configure_window_value_list_t *)")
# XXX: Who owns result?
fn("void * xcb_configure_window_value_list(const xcb_configure_window_request_t *)")
fn("xcb_void_cookie_t xcb_circulate_window_checked(xcb_connection_t *, uint8_t, xcb_window_t)")
fn("xcb_void_cookie_t xcb_circulate_window(xcb_connection_t *, uint8_t, xcb_window_t)")
fn("xcb_get_geometry_cookie_t xcb_get_geometry(xcb_connection_t *, xcb_drawable_t)")
fn("xcb_get_geometry_cookie_t xcb_get_geometry_unchecked(xcb_connection_t *, xcb_drawable_t)")
fn("xcb_get_geometry_reply_t * xcb_get_geometry_reply(xcb_connection_t *, xcb_get_geometry_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_query_tree_sizeof(const void *)")
fn("xcb_query_tree_cookie_t xcb_query_tree(xcb_connection_t *, xcb_window_t)")
fn("xcb_query_tree_cookie_t xcb_query_tree_unchecked(xcb_connection_t *, xcb_window_t)")
# ::Iterator::
fn("xcb_window_t * xcb_query_tree_children(const xcb_query_tree_reply_t *)")
fn("int xcb_query_tree_children_length(const xcb_query_tree_reply_t *)")
fn("xcb_generic_iterator_t xcb_query_tree_children_end(const xcb_query_tree_reply_t *)")
fn("xcb_query_tree_reply_t * xcb_query_tree_reply(xcb_connection_t *, xcb_query_tree_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_intern_atom_sizeof(const void *)")
fn("xcb_intern_atom_cookie_t xcb_intern_atom(xcb_connection_t *, uint8_t, uint16_t, const char *)")
fn("xcb_intern_atom_cookie_t xcb_intern_atom_unchecked(xcb_connection_t *, uint8_t, uint16_t, const char *)")
fn("xcb_intern_atom_reply_t * xcb_intern_atom_reply(xcb_connection_t *, xcb_intern_atom_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_get_atom_name_sizeof(const void *)")
fn("xcb_get_atom_name_cookie_t xcb_get_atom_name(xcb_connection_t *, xcb_atom_t)")
fn("xcb_get_atom_name_cookie_t xcb_get_atom_name_unchecked(xcb_connection_t *, xcb_atom_t)")
# ::Iterator::
fn("char * xcb_get_atom_name_name(const xcb_get_atom_name_reply_t *)")
fn("int xcb_get_atom_name_name_length(const xcb_get_atom_name_reply_t *)")
fn("xcb_generic_iterator_t xcb_get_atom_name_name_end(const xcb_get_atom_name_reply_t *)")
fn("xcb_get_atom_name_reply_t * xcb_get_atom_name_reply(xcb_connection_t *, xcb_get_atom_name_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_change_property_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_change_property_checked(xcb_connection_t *, uint8_t, xcb_window_t, xcb_atom_t, xcb_atom_t, uint8_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_change_property(xcb_connection_t *, uint8_t, xcb_window_t, xcb_atom_t, xcb_atom_t, uint8_t, uint32_t, const void *)")
# ::Iterator::
fn("void * xcb_change_property_data(const xcb_change_property_request_t *)")
fn("int xcb_change_property_data_length(const xcb_change_property_request_t *)")
fn("xcb_generic_iterator_t xcb_change_property_data_end(const xcb_change_property_request_t *)")
fn("xcb_void_cookie_t xcb_delete_property_checked(xcb_connection_t *, xcb_window_t, xcb_atom_t)")
fn("xcb_void_cookie_t xcb_delete_property(xcb_connection_t *, xcb_window_t, xcb_atom_t)")
fn("int xcb_get_property_sizeof(const void *)")
fn("xcb_get_property_cookie_t xcb_get_property(xcb_connection_t *, uint8_t, xcb_window_t, xcb_atom_t, xcb_atom_t, uint32_t, uint32_t)")
fn("xcb_get_property_cookie_t xcb_get_property_unchecked(xcb_connection_t *, uint8_t, xcb_window_t, xcb_atom_t, xcb_atom_t, uint32_t, uint32_t)")
# ::Iterator::
fn("void * xcb_get_property_value(const xcb_get_property_reply_t *)")
fn("int xcb_get_property_value_length(const xcb_get_property_reply_t *)")
fn("xcb_generic_iterator_t xcb_get_property_value_end(const xcb_get_property_reply_t *)")
fn("xcb_get_property_reply_t * xcb_get_property_reply(xcb_connection_t *, xcb_get_property_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_list_properties_sizeof(const void *)")
fn("xcb_list_properties_cookie_t xcb_list_properties(xcb_connection_t *, xcb_window_t)")
fn("xcb_list_properties_cookie_t xcb_list_properties_unchecked(xcb_connection_t *, xcb_window_t)")
# ::Iterator::
fn("xcb_atom_t * xcb_list_properties_atoms(const xcb_list_properties_reply_t *)")
fn("int xcb_list_properties_atoms_length(const xcb_list_properties_reply_t *)")
fn("xcb_generic_iterator_t xcb_list_properties_atoms_end(const xcb_list_properties_reply_t *)")
fn("xcb_list_properties_reply_t * xcb_list_properties_reply(xcb_connection_t *, xcb_list_properties_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_set_selection_owner_checked(xcb_connection_t *, xcb_window_t, xcb_atom_t, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_set_selection_owner(xcb_connection_t *, xcb_window_t, xcb_atom_t, xcb_timestamp_t)")
fn("xcb_get_selection_owner_cookie_t xcb_get_selection_owner(xcb_connection_t *, xcb_atom_t)")
fn("xcb_get_selection_owner_cookie_t xcb_get_selection_owner_unchecked(xcb_connection_t *, xcb_atom_t)")
fn("xcb_get_selection_owner_reply_t * xcb_get_selection_owner_reply(xcb_connection_t *, xcb_get_selection_owner_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_convert_selection_checked(xcb_connection_t *, xcb_window_t, xcb_atom_t, xcb_atom_t, xcb_atom_t, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_convert_selection(xcb_connection_t *, xcb_window_t, xcb_atom_t, xcb_atom_t, xcb_atom_t, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_send_event_checked(xcb_connection_t *, uint8_t, xcb_window_t, uint32_t, const char *)")
fn("xcb_void_cookie_t xcb_send_event(xcb_connection_t *, uint8_t, xcb_window_t, uint32_t, const char *)")
fn("xcb_grab_pointer_cookie_t xcb_grab_pointer(xcb_connection_t *, uint8_t, xcb_window_t, uint16_t, uint8_t, uint8_t, xcb_window_t, xcb_cursor_t, xcb_timestamp_t)")
fn("xcb_grab_pointer_cookie_t xcb_grab_pointer_unchecked(xcb_connection_t *, uint8_t, xcb_window_t, uint16_t, uint8_t, uint8_t, xcb_window_t, xcb_cursor_t, xcb_timestamp_t)")
fn("xcb_grab_pointer_reply_t * xcb_grab_pointer_reply(xcb_connection_t *, xcb_grab_pointer_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_ungrab_pointer_checked(xcb_connection_t *, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_ungrab_pointer(xcb_connection_t *, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_grab_button_checked(xcb_connection_t *, uint8_t, xcb_window_t, uint16_t, uint8_t, uint8_t, xcb_window_t, xcb_cursor_t, uint8_t, uint16_t)")
fn("xcb_void_cookie_t xcb_grab_button(xcb_connection_t *, uint8_t, xcb_window_t, uint16_t, uint8_t, uint8_t, xcb_window_t, xcb_cursor_t, uint8_t, uint16_t)")
fn("xcb_void_cookie_t xcb_ungrab_button_checked(xcb_connection_t *, uint8_t, xcb_window_t, uint16_t)")
fn("xcb_void_cookie_t xcb_ungrab_button(xcb_connection_t *, uint8_t, xcb_window_t, uint16_t)")
fn("xcb_void_cookie_t xcb_change_active_pointer_grab_checked(xcb_connection_t *, xcb_cursor_t, xcb_timestamp_t, uint16_t)")
fn("xcb_void_cookie_t xcb_change_active_pointer_grab(xcb_connection_t *, xcb_cursor_t, xcb_timestamp_t, uint16_t)")
fn("xcb_grab_keyboard_cookie_t xcb_grab_keyboard(xcb_connection_t *, uint8_t, xcb_window_t, xcb_timestamp_t, uint8_t, uint8_t)")
fn("xcb_grab_keyboard_cookie_t xcb_grab_keyboard_unchecked(xcb_connection_t *, uint8_t, xcb_window_t, xcb_timestamp_t, uint8_t, uint8_t)")
fn("xcb_grab_keyboard_reply_t * xcb_grab_keyboard_reply(xcb_connection_t *, xcb_grab_keyboard_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_ungrab_keyboard_checked(xcb_connection_t *, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_ungrab_keyboard(xcb_connection_t *, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_grab_key_checked(xcb_connection_t *, uint8_t, xcb_window_t, uint16_t, xcb_keycode_t, uint8_t, uint8_t)")
fn("xcb_void_cookie_t xcb_grab_key(xcb_connection_t *, uint8_t, xcb_window_t, uint16_t, xcb_keycode_t, uint8_t, uint8_t)")
fn("xcb_void_cookie_t xcb_ungrab_key_checked(xcb_connection_t *, xcb_keycode_t, xcb_window_t, uint16_t)")
fn("xcb_void_cookie_t xcb_ungrab_key(xcb_connection_t *, xcb_keycode_t, xcb_window_t, uint16_t)")
fn("xcb_void_cookie_t xcb_allow_events_checked(xcb_connection_t *, uint8_t, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_allow_events(xcb_connection_t *, uint8_t, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_grab_server_checked(xcb_connection_t *)")
fn("xcb_void_cookie_t xcb_grab_server(xcb_connection_t *)")
fn("xcb_void_cookie_t xcb_ungrab_server_checked(xcb_connection_t *)")
fn("xcb_void_cookie_t xcb_ungrab_server(xcb_connection_t *)")
fn("xcb_query_pointer_cookie_t xcb_query_pointer(xcb_connection_t *, xcb_window_t)")
fn("xcb_query_pointer_cookie_t xcb_query_pointer_unchecked(xcb_connection_t *, xcb_window_t)")
fn("xcb_query_pointer_reply_t * xcb_query_pointer_reply(xcb_connection_t *, xcb_query_pointer_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("void xcb_timecoord_next(xcb_timecoord_iterator_t *)")
fn("xcb_generic_iterator_t xcb_timecoord_end(xcb_timecoord_iterator_t)")
fn("int xcb_get_motion_events_sizeof(const void *)")
fn("xcb_get_motion_events_cookie_t xcb_get_motion_events(xcb_connection_t *, xcb_window_t, xcb_timestamp_t, xcb_timestamp_t)")
fn("xcb_get_motion_events_cookie_t xcb_get_motion_events_unchecked(xcb_connection_t *, xcb_window_t, xcb_timestamp_t, xcb_timestamp_t)")
# ::Iterator::
fn("xcb_timecoord_t * xcb_get_motion_events_events(const xcb_get_motion_events_reply_t *)")
fn("int xcb_get_motion_events_events_length(const xcb_get_motion_events_reply_t *)")
fn("xcb_timecoord_iterator_t xcb_get_motion_events_events_iterator(const xcb_get_motion_events_reply_t *)")
fn("xcb_get_motion_events_reply_t * xcb_get_motion_events_reply(xcb_connection_t *, xcb_get_motion_events_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_translate_coordinates_cookie_t xcb_translate_coordinates(xcb_connection_t *, xcb_window_t, xcb_window_t, int16_t, int16_t)")
fn("xcb_translate_coordinates_cookie_t xcb_translate_coordinates_unchecked(xcb_connection_t *, xcb_window_t, xcb_window_t, int16_t, int16_t)")
fn("xcb_translate_coordinates_reply_t * xcb_translate_coordinates_reply(xcb_connection_t *, xcb_translate_coordinates_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_warp_pointer_checked(xcb_connection_t *, xcb_window_t, xcb_window_t, int16_t, int16_t, uint16_t, uint16_t, int16_t, int16_t)")
fn("xcb_void_cookie_t xcb_warp_pointer(xcb_connection_t *, xcb_window_t, xcb_window_t, int16_t, int16_t, uint16_t, uint16_t, int16_t, int16_t)")
fn("xcb_void_cookie_t xcb_set_input_focus_checked(xcb_connection_t *, uint8_t, xcb_window_t, xcb_timestamp_t)")
fn("xcb_void_cookie_t xcb_set_input_focus(xcb_connection_t *, uint8_t, xcb_window_t, xcb_timestamp_t)")
fn("xcb_get_input_focus_cookie_t xcb_get_input_focus(xcb_connection_t *)")
fn("xcb_get_input_focus_cookie_t xcb_get_input_focus_unchecked(xcb_connection_t *)")
fn("xcb_get_input_focus_reply_t * xcb_get_input_focus_reply(xcb_connection_t *, xcb_get_input_focus_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_query_keymap_cookie_t xcb_query_keymap(xcb_connection_t *)")
fn("xcb_query_keymap_cookie_t xcb_query_keymap_unchecked(xcb_connection_t *)")
fn("xcb_query_keymap_reply_t * xcb_query_keymap_reply(xcb_connection_t *, xcb_query_keymap_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_open_font_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_open_font_checked(xcb_connection_t *, xcb_font_t, uint16_t, const char *)")
fn("xcb_void_cookie_t xcb_open_font(xcb_connection_t *, xcb_font_t, uint16_t, const char *)")
# ::Iterator::
fn("char * xcb_open_font_name(const xcb_open_font_request_t *)")
fn("int xcb_open_font_name_length(const xcb_open_font_request_t *)")
fn("xcb_generic_iterator_t xcb_open_font_name_end(const xcb_open_font_request_t *)")
fn("xcb_void_cookie_t xcb_close_font_checked(xcb_connection_t *, xcb_font_t)")
fn("xcb_void_cookie_t xcb_close_font(xcb_connection_t *, xcb_font_t)")
fn("void xcb_fontprop_next(xcb_fontprop_iterator_t *)")
fn("xcb_generic_iterator_t xcb_fontprop_end(xcb_fontprop_iterator_t)")
fn("void xcb_charinfo_next(xcb_charinfo_iterator_t *)")
fn("xcb_generic_iterator_t xcb_charinfo_end(xcb_charinfo_iterator_t)")
fn("int xcb_query_font_sizeof(const void *)")
fn("xcb_query_font_cookie_t xcb_query_font(xcb_connection_t *, xcb_fontable_t)")
fn("xcb_query_font_cookie_t xcb_query_font_unchecked(xcb_connection_t *, xcb_fontable_t)")
# ::Iterator::
fn("xcb_fontprop_t * xcb_query_font_properties(const xcb_query_font_reply_t *)")
fn("int xcb_query_font_properties_length(const xcb_query_font_reply_t *)")
fn("xcb_fontprop_iterator_t xcb_query_font_properties_iterator(const xcb_query_font_reply_t *)")
# ::Iterator::
fn("xcb_charinfo_t * xcb_query_font_char_infos(const xcb_query_font_reply_t *)")
fn("int xcb_query_font_char_infos_length(const xcb_query_font_reply_t *)")
fn("xcb_charinfo_iterator_t xcb_query_font_char_infos_iterator(const xcb_query_font_reply_t *)")
fn("xcb_query_font_reply_t * xcb_query_font_reply(xcb_connection_t *, xcb_query_font_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_query_text_extents_sizeof(const void *, uint32_t)")
fn("xcb_query_text_extents_cookie_t xcb_query_text_extents(xcb_connection_t *, xcb_fontable_t, uint32_t, const xcb_char2b_t *)")
fn("xcb_query_text_extents_cookie_t xcb_query_text_extents_unchecked(xcb_connection_t *, xcb_fontable_t, uint32_t, const xcb_char2b_t *)")
fn("xcb_query_text_extents_reply_t * xcb_query_text_extents_reply(xcb_connection_t *, xcb_query_text_extents_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_str_sizeof(const void *)")
# ::Iterator::
fn("char * xcb_str_name(const xcb_str_t *)")
fn("int xcb_str_name_length(const xcb_str_t *)")
fn("xcb_generic_iterator_t xcb_str_name_end(const xcb_str_t *)")
fn("void xcb_str_next(xcb_str_iterator_t *)")
fn("xcb_generic_iterator_t xcb_str_end(xcb_str_iterator_t)")
fn("int xcb_list_fonts_sizeof(const void *)")
fn("xcb_list_fonts_cookie_t xcb_list_fonts(xcb_connection_t *, uint16_t, uint16_t, const char *)")
fn("xcb_list_fonts_cookie_t xcb_list_fonts_unchecked(xcb_connection_t *, uint16_t, uint16_t, const char *)")
fn("int xcb_list_fonts_names_length(const xcb_list_fonts_reply_t *)")
fn("xcb_str_iterator_t xcb_list_fonts_names_iterator(const xcb_list_fonts_reply_t *)")
fn("xcb_list_fonts_reply_t * xcb_list_fonts_reply(xcb_connection_t *, xcb_list_fonts_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_list_fonts_with_info_sizeof(const void *)")
fn("xcb_list_fonts_with_info_cookie_t xcb_list_fonts_with_info(xcb_connection_t *, uint16_t, uint16_t, const char *)")
fn("xcb_list_fonts_with_info_cookie_t xcb_list_fonts_with_info_unchecked(xcb_connection_t *, uint16_t, uint16_t, const char *)")
# ::Iterator::
fn("xcb_fontprop_t * xcb_list_fonts_with_info_properties(const xcb_list_fonts_with_info_reply_t *)")
fn("int xcb_list_fonts_with_info_properties_length(const xcb_list_fonts_with_info_reply_t *)")
fn("xcb_fontprop_iterator_t xcb_list_fonts_with_info_properties_iterator(const xcb_list_fonts_with_info_reply_t *)")
# ::Iterator::
fn("char * xcb_list_fonts_with_info_name(const xcb_list_fonts_with_info_reply_t *)")
fn("int xcb_list_fonts_with_info_name_length(const xcb_list_fonts_with_info_reply_t *)")
fn("xcb_generic_iterator_t xcb_list_fonts_with_info_name_end(const xcb_list_fonts_with_info_reply_t *)")
fn("xcb_list_fonts_with_info_reply_t * xcb_list_fonts_with_info_reply(xcb_connection_t *, xcb_list_fonts_with_info_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_set_font_path_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_set_font_path_checked(xcb_connection_t *, uint16_t, const xcb_str_t *)")
fn("xcb_void_cookie_t xcb_set_font_path(xcb_connection_t *, uint16_t, const xcb_str_t *)")
fn("int xcb_set_font_path_font_length(const xcb_set_font_path_request_t *)")
fn("xcb_str_iterator_t xcb_set_font_path_font_iterator(const xcb_set_font_path_request_t *)")
fn("int xcb_get_font_path_sizeof(const void *)")
fn("xcb_get_font_path_cookie_t xcb_get_font_path(xcb_connection_t *)")
fn("xcb_get_font_path_cookie_t xcb_get_font_path_unchecked(xcb_connection_t *)")
fn("int xcb_get_font_path_path_length(const xcb_get_font_path_reply_t *)")
fn("xcb_str_iterator_t xcb_get_font_path_path_iterator(const xcb_get_font_path_reply_t *)")
fn("xcb_get_font_path_reply_t * xcb_get_font_path_reply(xcb_connection_t *, xcb_get_font_path_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_create_pixmap_checked(xcb_connection_t *, uint8_t, xcb_pixmap_t, xcb_drawable_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_create_pixmap(xcb_connection_t *, uint8_t, xcb_pixmap_t, xcb_drawable_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_free_pixmap_checked(xcb_connection_t *, xcb_pixmap_t)")
fn("xcb_void_cookie_t xcb_free_pixmap(xcb_connection_t *, xcb_pixmap_t)")
fn("int xcb_create_gc_value_list_serialize(void **, uint32_t, const xcb_create_gc_value_list_t *)")
fn("int xcb_create_gc_value_list_unpack(const void *, uint32_t, xcb_create_gc_value_list_t *)")
fn("int xcb_create_gc_value_list_sizeof(const void *, uint32_t)")
fn("int xcb_create_gc_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_create_gc_checked(xcb_connection_t *, xcb_gcontext_t, xcb_drawable_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_create_gc(xcb_connection_t *, xcb_gcontext_t, xcb_drawable_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_create_gc_aux_checked(xcb_connection_t *, xcb_gcontext_t, xcb_drawable_t, uint32_t, const xcb_create_gc_value_list_t *)")
fn("xcb_void_cookie_t xcb_create_gc_aux(xcb_connection_t *, xcb_gcontext_t, xcb_drawable_t, uint32_t, const xcb_create_gc_value_list_t *)")
# XXX: Who owns result?
fn("void * xcb_create_gc_value_list(const xcb_create_gc_request_t *)")
fn("int xcb_change_gc_value_list_serialize(void **, uint32_t, const xcb_change_gc_value_list_t *)")
fn("int xcb_change_gc_value_list_unpack(const void *, uint32_t, xcb_change_gc_value_list_t *)")
fn("int xcb_change_gc_value_list_sizeof(const void *, uint32_t)")
fn("int xcb_change_gc_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_change_gc_checked(xcb_connection_t *, xcb_gcontext_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_change_gc(xcb_connection_t *, xcb_gcontext_t, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_change_gc_aux_checked(xcb_connection_t *, xcb_gcontext_t, uint32_t, const xcb_change_gc_value_list_t *)")
fn("xcb_void_cookie_t xcb_change_gc_aux(xcb_connection_t *, xcb_gcontext_t, uint32_t, const xcb_change_gc_value_list_t *)")
# XXX: Who owns result?
fn("void * xcb_change_gc_value_list(const xcb_change_gc_request_t *)")
fn("xcb_void_cookie_t xcb_copy_gc_checked(xcb_connection_t *, xcb_gcontext_t, xcb_gcontext_t, uint32_t)")
fn("xcb_void_cookie_t xcb_copy_gc(xcb_connection_t *, xcb_gcontext_t, xcb_gcontext_t, uint32_t)")
fn("int xcb_set_dashes_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_set_dashes_checked(xcb_connection_t *, xcb_gcontext_t, uint16_t, uint16_t, const uint8_t *)")
fn("xcb_void_cookie_t xcb_set_dashes(xcb_connection_t *, xcb_gcontext_t, uint16_t, uint16_t, const uint8_t *)")
# ::Iterator::
fn("uint8_t * xcb_set_dashes_dashes(const xcb_set_dashes_request_t *)")
fn("int xcb_set_dashes_dashes_length(const xcb_set_dashes_request_t *)")
fn("xcb_generic_iterator_t xcb_set_dashes_dashes_end(const xcb_set_dashes_request_t *)")
fn("int xcb_set_clip_rectangles_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_set_clip_rectangles_checked(xcb_connection_t *, uint8_t, xcb_gcontext_t, int16_t, int16_t, uint32_t, const xcb_rectangle_t *)")
fn("xcb_void_cookie_t xcb_set_clip_rectangles(xcb_connection_t *, uint8_t, xcb_gcontext_t, int16_t, int16_t, uint32_t, const xcb_rectangle_t *)")
# ::Iterator::
fn("xcb_rectangle_t * xcb_set_clip_rectangles_rectangles(const xcb_set_clip_rectangles_request_t *)")
fn("int xcb_set_clip_rectangles_rectangles_length(const xcb_set_clip_rectangles_request_t *)")
fn("xcb_rectangle_iterator_t xcb_set_clip_rectangles_rectangles_iterator(const xcb_set_clip_rectangles_request_t *)")
fn("xcb_void_cookie_t xcb_free_gc_checked(xcb_connection_t *, xcb_gcontext_t)")
fn("xcb_void_cookie_t xcb_free_gc(xcb_connection_t *, xcb_gcontext_t)")
fn("xcb_void_cookie_t xcb_clear_area_checked(xcb_connection_t *, uint8_t, xcb_window_t, int16_t, int16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_clear_area(xcb_connection_t *, uint8_t, xcb_window_t, int16_t, int16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_copy_area_checked(xcb_connection_t *, xcb_drawable_t, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, int16_t, int16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_copy_area(xcb_connection_t *, xcb_drawable_t, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, int16_t, int16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_copy_plane_checked(xcb_connection_t *, xcb_drawable_t, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, int16_t, int16_t, uint16_t, uint16_t, uint32_t)")
fn("xcb_void_cookie_t xcb_copy_plane(xcb_connection_t *, xcb_drawable_t, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, int16_t, int16_t, uint16_t, uint16_t, uint32_t)")
fn("int xcb_poly_point_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_point_checked(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_point_t *)")
fn("xcb_void_cookie_t xcb_poly_point(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_point_t *)")
# ::Iterator::
fn("xcb_point_t * xcb_poly_point_points(const xcb_poly_point_request_t *)")
fn("int xcb_poly_point_points_length(const xcb_poly_point_request_t *)")
fn("xcb_point_iterator_t xcb_poly_point_points_iterator(const xcb_poly_point_request_t *)")
fn("int xcb_poly_line_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_line_checked(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_point_t *)")
fn("xcb_void_cookie_t xcb_poly_line(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_point_t *)")
# ::Iterator::
fn("xcb_point_t * xcb_poly_line_points(const xcb_poly_line_request_t *)")
fn("int xcb_poly_line_points_length(const xcb_poly_line_request_t *)")
fn("xcb_point_iterator_t xcb_poly_line_points_iterator(const xcb_poly_line_request_t *)")
fn("void xcb_segment_next(xcb_segment_iterator_t *)")
fn("xcb_generic_iterator_t xcb_segment_end(xcb_segment_iterator_t)")
fn("int xcb_poly_segment_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_segment_checked(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_segment_t *)")
fn("xcb_void_cookie_t xcb_poly_segment(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_segment_t *)")
# ::Iterator::
fn("xcb_segment_t * xcb_poly_segment_segments(const xcb_poly_segment_request_t *)")
fn("int xcb_poly_segment_segments_length(const xcb_poly_segment_request_t *)")
fn("xcb_segment_iterator_t xcb_poly_segment_segments_iterator(const xcb_poly_segment_request_t *)")
fn("int xcb_poly_rectangle_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_rectangle_checked(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_rectangle_t *)")
fn("xcb_void_cookie_t xcb_poly_rectangle(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_rectangle_t *)")
# ::Iterator::
fn("xcb_rectangle_t * xcb_poly_rectangle_rectangles(const xcb_poly_rectangle_request_t *)")
fn("int xcb_poly_rectangle_rectangles_length(const xcb_poly_rectangle_request_t *)")
fn("xcb_rectangle_iterator_t xcb_poly_rectangle_rectangles_iterator(const xcb_poly_rectangle_request_t *)")
fn("int xcb_poly_arc_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_arc_checked(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_arc_t *)")
fn("xcb_void_cookie_t xcb_poly_arc(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_arc_t *)")
# ::Iterator::
fn("xcb_arc_t * xcb_poly_arc_arcs(const xcb_poly_arc_request_t *)")
fn("int xcb_poly_arc_arcs_length(const xcb_poly_arc_request_t *)")
fn("xcb_arc_iterator_t xcb_poly_arc_arcs_iterator(const xcb_poly_arc_request_t *)")
fn("int xcb_fill_poly_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_fill_poly_checked(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint8_t, uint8_t, uint32_t, const xcb_point_t *)")
fn("xcb_void_cookie_t xcb_fill_poly(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint8_t, uint8_t, uint32_t, const xcb_point_t *)")
# ::Iterator::
fn("xcb_point_t * xcb_fill_poly_points(const xcb_fill_poly_request_t *)")
fn("int xcb_fill_poly_points_length(const xcb_fill_poly_request_t *)")
fn("xcb_point_iterator_t xcb_fill_poly_points_iterator(const xcb_fill_poly_request_t *)")
fn("int xcb_poly_fill_rectangle_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_fill_rectangle_checked(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_rectangle_t *)")
fn("xcb_void_cookie_t xcb_poly_fill_rectangle(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_rectangle_t *)")
# ::Iterator::
fn("xcb_rectangle_t * xcb_poly_fill_rectangle_rectangles(const xcb_poly_fill_rectangle_request_t *)")
fn("int xcb_poly_fill_rectangle_rectangles_length(const xcb_poly_fill_rectangle_request_t *)")
fn("xcb_rectangle_iterator_t xcb_poly_fill_rectangle_rectangles_iterator(const xcb_poly_fill_rectangle_request_t *)")
fn("int xcb_poly_fill_arc_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_fill_arc_checked(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_arc_t *)")
fn("xcb_void_cookie_t xcb_poly_fill_arc(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, uint32_t, const xcb_arc_t *)")
# ::Iterator::
fn("xcb_arc_t * xcb_poly_fill_arc_arcs(const xcb_poly_fill_arc_request_t *)")
fn("int xcb_poly_fill_arc_arcs_length(const xcb_poly_fill_arc_request_t *)")
fn("xcb_arc_iterator_t xcb_poly_fill_arc_arcs_iterator(const xcb_poly_fill_arc_request_t *)")
fn("int xcb_put_image_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_put_image_checked(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, uint16_t, uint16_t, int16_t, int16_t, uint8_t, uint8_t, uint32_t, const uint8_t *)")
fn("xcb_void_cookie_t xcb_put_image(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, uint16_t, uint16_t, int16_t, int16_t, uint8_t, uint8_t, uint32_t, const uint8_t *)")
# ::Iterator::
fn("uint8_t * xcb_put_image_data(const xcb_put_image_request_t *)")
fn("int xcb_put_image_data_length(const xcb_put_image_request_t *)")
fn("xcb_generic_iterator_t xcb_put_image_data_end(const xcb_put_image_request_t *)")
fn("int xcb_get_image_sizeof(const void *)")
fn("xcb_get_image_cookie_t xcb_get_image(xcb_connection_t *, uint8_t, xcb_drawable_t, int16_t, int16_t, uint16_t, uint16_t, uint32_t)")
fn("xcb_get_image_cookie_t xcb_get_image_unchecked(xcb_connection_t *, uint8_t, xcb_drawable_t, int16_t, int16_t, uint16_t, uint16_t, uint32_t)")
# ::Iterator::
fn("uint8_t * xcb_get_image_data(const xcb_get_image_reply_t *)")
fn("int xcb_get_image_data_length(const xcb_get_image_reply_t *)")
fn("xcb_generic_iterator_t xcb_get_image_data_end(const xcb_get_image_reply_t *)")
fn("xcb_get_image_reply_t * xcb_get_image_reply(xcb_connection_t *, xcb_get_image_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_poly_text_8_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_text_8_checked(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, uint32_t, const uint8_t *)")
fn("xcb_void_cookie_t xcb_poly_text_8(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, uint32_t, const uint8_t *)")
# ::Iterator::
fn("uint8_t * xcb_poly_text_8_items(const xcb_poly_text_8_request_t *)")
fn("int xcb_poly_text_8_items_length(const xcb_poly_text_8_request_t *)")
fn("xcb_generic_iterator_t xcb_poly_text_8_items_end(const xcb_poly_text_8_request_t *)")
fn("int xcb_poly_text_16_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_poly_text_16_checked(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, uint32_t, const uint8_t *)")
fn("xcb_void_cookie_t xcb_poly_text_16(xcb_connection_t *, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, uint32_t, const uint8_t *)")
# ::Iterator::
fn("uint8_t * xcb_poly_text_16_items(const xcb_poly_text_16_request_t *)")
fn("int xcb_poly_text_16_items_length(const xcb_poly_text_16_request_t *)")
fn("xcb_generic_iterator_t xcb_poly_text_16_items_end(const xcb_poly_text_16_request_t *)")
fn("int xcb_image_text_8_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_image_text_8_checked(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, const char *)")
fn("xcb_void_cookie_t xcb_image_text_8(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, const char *)")
# ::Iterator::
fn("char * xcb_image_text_8_string(const xcb_image_text_8_request_t *)")
fn("int xcb_image_text_8_string_length(const xcb_image_text_8_request_t *)")
fn("xcb_generic_iterator_t xcb_image_text_8_string_end(const xcb_image_text_8_request_t *)")
fn("int xcb_image_text_16_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_image_text_16_checked(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, const xcb_char2b_t *)")
fn("xcb_void_cookie_t xcb_image_text_16(xcb_connection_t *, uint8_t, xcb_drawable_t, xcb_gcontext_t, int16_t, int16_t, const xcb_char2b_t *)")
# ::Iterator::
fn("xcb_char2b_t * xcb_image_text_16_string(const xcb_image_text_16_request_t *)")
fn("int xcb_image_text_16_string_length(const xcb_image_text_16_request_t *)")
fn("xcb_char2b_iterator_t xcb_image_text_16_string_iterator(const xcb_image_text_16_request_t *)")
fn("xcb_void_cookie_t xcb_create_colormap_checked(xcb_connection_t *, uint8_t, xcb_colormap_t, xcb_window_t, xcb_visualid_t)")
fn("xcb_void_cookie_t xcb_create_colormap(xcb_connection_t *, uint8_t, xcb_colormap_t, xcb_window_t, xcb_visualid_t)")
fn("xcb_void_cookie_t xcb_free_colormap_checked(xcb_connection_t *, xcb_colormap_t)")
fn("xcb_void_cookie_t xcb_free_colormap(xcb_connection_t *, xcb_colormap_t)")
fn("xcb_void_cookie_t xcb_copy_colormap_and_free_checked(xcb_connection_t *, xcb_colormap_t, xcb_colormap_t)")
fn("xcb_void_cookie_t xcb_copy_colormap_and_free(xcb_connection_t *, xcb_colormap_t, xcb_colormap_t)")
fn("xcb_void_cookie_t xcb_install_colormap_checked(xcb_connection_t *, xcb_colormap_t)")
fn("xcb_void_cookie_t xcb_install_colormap(xcb_connection_t *, xcb_colormap_t)")
fn("xcb_void_cookie_t xcb_uninstall_colormap_checked(xcb_connection_t *, xcb_colormap_t)")
fn("xcb_void_cookie_t xcb_uninstall_colormap(xcb_connection_t *, xcb_colormap_t)")
fn("int xcb_list_installed_colormaps_sizeof(const void *)")
fn("xcb_list_installed_colormaps_cookie_t xcb_list_installed_colormaps(xcb_connection_t *, xcb_window_t)")
fn("xcb_list_installed_colormaps_cookie_t xcb_list_installed_colormaps_unchecked(xcb_connection_t *, xcb_window_t)")
# ::Iterator::
fn("xcb_colormap_t * xcb_list_installed_colormaps_cmaps(const xcb_list_installed_colormaps_reply_t *)")
fn("int xcb_list_installed_colormaps_cmaps_length(const xcb_list_installed_colormaps_reply_t *)")
fn("xcb_generic_iterator_t xcb_list_installed_colormaps_cmaps_end(const xcb_list_installed_colormaps_reply_t *)")
fn("xcb_list_installed_colormaps_reply_t * xcb_list_installed_colormaps_reply(xcb_connection_t *, xcb_list_installed_colormaps_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_alloc_color_cookie_t xcb_alloc_color(xcb_connection_t *, xcb_colormap_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_alloc_color_cookie_t xcb_alloc_color_unchecked(xcb_connection_t *, xcb_colormap_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_alloc_color_reply_t * xcb_alloc_color_reply(xcb_connection_t *, xcb_alloc_color_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_alloc_named_color_sizeof(const void *)")
fn("xcb_alloc_named_color_cookie_t xcb_alloc_named_color(xcb_connection_t *, xcb_colormap_t, uint16_t, const char *)")
fn("xcb_alloc_named_color_cookie_t xcb_alloc_named_color_unchecked(xcb_connection_t *, xcb_colormap_t, uint16_t, const char *)")
fn("xcb_alloc_named_color_reply_t * xcb_alloc_named_color_reply(xcb_connection_t *, xcb_alloc_named_color_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_alloc_color_cells_sizeof(const void *)")
fn("xcb_alloc_color_cells_cookie_t xcb_alloc_color_cells(xcb_connection_t *, uint8_t, xcb_colormap_t, uint16_t, uint16_t)")
fn("xcb_alloc_color_cells_cookie_t xcb_alloc_color_cells_unchecked(xcb_connection_t *, uint8_t, xcb_colormap_t, uint16_t, uint16_t)")
# ::Iterator::
fn("uint32_t * xcb_alloc_color_cells_pixels(const xcb_alloc_color_cells_reply_t *)")
fn("int xcb_alloc_color_cells_pixels_length(const xcb_alloc_color_cells_reply_t *)")
fn("xcb_generic_iterator_t xcb_alloc_color_cells_pixels_end(const xcb_alloc_color_cells_reply_t *)")
# ::Iterator::
fn("uint32_t * xcb_alloc_color_cells_masks(const xcb_alloc_color_cells_reply_t *)")
fn("int xcb_alloc_color_cells_masks_length(const xcb_alloc_color_cells_reply_t *)")
fn("xcb_generic_iterator_t xcb_alloc_color_cells_masks_end(const xcb_alloc_color_cells_reply_t *)")
fn("xcb_alloc_color_cells_reply_t * xcb_alloc_color_cells_reply(xcb_connection_t *, xcb_alloc_color_cells_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_alloc_color_planes_sizeof(const void *)")
fn("xcb_alloc_color_planes_cookie_t xcb_alloc_color_planes(xcb_connection_t *, uint8_t, xcb_colormap_t, uint16_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_alloc_color_planes_cookie_t xcb_alloc_color_planes_unchecked(xcb_connection_t *, uint8_t, xcb_colormap_t, uint16_t, uint16_t, uint16_t, uint16_t)")
# ::Iterator::
fn("uint32_t * xcb_alloc_color_planes_pixels(const xcb_alloc_color_planes_reply_t *)")
fn("int xcb_alloc_color_planes_pixels_length(const xcb_alloc_color_planes_reply_t *)")
fn("xcb_generic_iterator_t xcb_alloc_color_planes_pixels_end(const xcb_alloc_color_planes_reply_t *)")
fn("xcb_alloc_color_planes_reply_t * xcb_alloc_color_planes_reply(xcb_connection_t *, xcb_alloc_color_planes_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_free_colors_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_free_colors_checked(xcb_connection_t *, xcb_colormap_t, uint32_t, uint32_t, const uint32_t *)")
fn("xcb_void_cookie_t xcb_free_colors(xcb_connection_t *, xcb_colormap_t, uint32_t, uint32_t, const uint32_t *)")
# ::Iterator::
fn("uint32_t * xcb_free_colors_pixels(const xcb_free_colors_request_t *)")
fn("int xcb_free_colors_pixels_length(const xcb_free_colors_request_t *)")
fn("xcb_generic_iterator_t xcb_free_colors_pixels_end(const xcb_free_colors_request_t *)")
fn("void xcb_coloritem_next(xcb_coloritem_iterator_t *)")
fn("xcb_generic_iterator_t xcb_coloritem_end(xcb_coloritem_iterator_t)")
fn("int xcb_store_colors_sizeof(const void *, uint32_t)")
fn("xcb_void_cookie_t xcb_store_colors_checked(xcb_connection_t *, xcb_colormap_t, uint32_t, const xcb_coloritem_t *)")
fn("xcb_void_cookie_t xcb_store_colors(xcb_connection_t *, xcb_colormap_t, uint32_t, const xcb_coloritem_t *)")
# ::Iterator::
fn("xcb_coloritem_t * xcb_store_colors_items(const xcb_store_colors_request_t *)")
fn("int xcb_store_colors_items_length(const xcb_store_colors_request_t *)")
fn("xcb_coloritem_iterator_t xcb_store_colors_items_iterator(const xcb_store_colors_request_t *)")
fn("int xcb_store_named_color_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_store_named_color_checked(xcb_connection_t *, uint8_t, xcb_colormap_t, uint32_t, uint16_t, const char *)")
fn("xcb_void_cookie_t xcb_store_named_color(xcb_connection_t *, uint8_t, xcb_colormap_t, uint32_t, uint16_t, const char *)")
# XXX: Who owns result?
fn("char * xcb_store_named_color_name(const xcb_store_named_color_request_t *)")
fn("int xcb_store_named_color_name_length(const xcb_store_named_color_request_t *)")
fn("xcb_generic_iterator_t xcb_store_named_color_name_end(const xcb_store_named_color_request_t *)")
fn("void xcb_rgb_next(xcb_rgb_iterator_t *)")
fn("xcb_generic_iterator_t xcb_rgb_end(xcb_rgb_iterator_t)")
fn("int xcb_query_colors_sizeof(const void *, uint32_t)")
fn("xcb_query_colors_cookie_t xcb_query_colors(xcb_connection_t *, xcb_colormap_t, uint32_t, const uint32_t *)")
fn("xcb_query_colors_cookie_t xcb_query_colors_unchecked(xcb_connection_t *, xcb_colormap_t, uint32_t, const uint32_t *)")
# ::Iterator::
fn("xcb_rgb_t * xcb_query_colors_colors(const xcb_query_colors_reply_t *)")
fn("int xcb_query_colors_colors_length(const xcb_query_colors_reply_t *)")
fn("xcb_rgb_iterator_t xcb_query_colors_colors_iterator(const xcb_query_colors_reply_t *)")
fn("xcb_query_colors_reply_t * xcb_query_colors_reply(xcb_connection_t *, xcb_query_colors_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_lookup_color_sizeof(const void *)")
fn("xcb_lookup_color_cookie_t xcb_lookup_color(xcb_connection_t *, xcb_colormap_t, uint16_t, const char *)")
fn("xcb_lookup_color_cookie_t xcb_lookup_color_unchecked(xcb_connection_t *, xcb_colormap_t, uint16_t, const char *)")
fn("xcb_lookup_color_reply_t * xcb_lookup_color_reply(xcb_connection_t *, xcb_lookup_color_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_create_cursor_checked(xcb_connection_t *, xcb_cursor_t, xcb_pixmap_t, xcb_pixmap_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_create_cursor(xcb_connection_t *, xcb_cursor_t, xcb_pixmap_t, xcb_pixmap_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_create_glyph_cursor_checked(xcb_connection_t *, xcb_cursor_t, xcb_font_t, xcb_font_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_create_glyph_cursor(xcb_connection_t *, xcb_cursor_t, xcb_font_t, xcb_font_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_free_cursor_checked(xcb_connection_t *, xcb_cursor_t)")
fn("xcb_void_cookie_t xcb_free_cursor(xcb_connection_t *, xcb_cursor_t)")
fn("xcb_void_cookie_t xcb_recolor_cursor_checked(xcb_connection_t *, xcb_cursor_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_void_cookie_t xcb_recolor_cursor(xcb_connection_t *, xcb_cursor_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t)")
fn("xcb_query_best_size_cookie_t xcb_query_best_size(xcb_connection_t *, uint8_t, xcb_drawable_t, uint16_t, uint16_t)")
fn("xcb_query_best_size_cookie_t xcb_query_best_size_unchecked(xcb_connection_t *, uint8_t, xcb_drawable_t, uint16_t, uint16_t)")
fn("xcb_query_best_size_reply_t * xcb_query_best_size_reply(xcb_connection_t *, xcb_query_best_size_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_query_extension_sizeof(const void *)")
fn("xcb_query_extension_cookie_t xcb_query_extension(xcb_connection_t *, uint16_t, const char *)")
fn("xcb_query_extension_cookie_t xcb_query_extension_unchecked(xcb_connection_t *, uint16_t, const char *)")
fn("xcb_query_extension_reply_t * xcb_query_extension_reply(xcb_connection_t *, xcb_query_extension_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_list_extensions_sizeof(const void *)")
fn("xcb_list_extensions_cookie_t xcb_list_extensions(xcb_connection_t *)")
fn("xcb_list_extensions_cookie_t xcb_list_extensions_unchecked(xcb_connection_t *)")
fn("int xcb_list_extensions_names_length(const xcb_list_extensions_reply_t *)")
fn("xcb_str_iterator_t xcb_list_extensions_names_iterator(const xcb_list_extensions_reply_t *)")
fn("xcb_list_extensions_reply_t * xcb_list_extensions_reply(xcb_connection_t *, xcb_list_extensions_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_change_keyboard_mapping_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_change_keyboard_mapping_checked(xcb_connection_t *, uint8_t, xcb_keycode_t, uint8_t, const xcb_keysym_t *)")
fn("xcb_void_cookie_t xcb_change_keyboard_mapping(xcb_connection_t *, uint8_t, xcb_keycode_t, uint8_t, const xcb_keysym_t *)")
# ::Iterator::
fn("xcb_keysym_t * xcb_change_keyboard_mapping_keysyms(const xcb_change_keyboard_mapping_request_t *)")
fn("int xcb_change_keyboard_mapping_keysyms_length(const xcb_change_keyboard_mapping_request_t *)")
fn("xcb_generic_iterator_t xcb_change_keyboard_mapping_keysyms_end(const xcb_change_keyboard_mapping_request_t *)")
fn("int xcb_get_keyboard_mapping_sizeof(const void *)")
fn("xcb_get_keyboard_mapping_cookie_t xcb_get_keyboard_mapping(xcb_connection_t *, xcb_keycode_t, uint8_t)")
fn("xcb_get_keyboard_mapping_cookie_t xcb_get_keyboard_mapping_unchecked(xcb_connection_t *, xcb_keycode_t, uint8_t)")
# ::Iterator::
fn("xcb_keysym_t * xcb_get_keyboard_mapping_keysyms(const xcb_get_keyboard_mapping_reply_t *)")
fn("int xcb_get_keyboard_mapping_keysyms_length(const xcb_get_keyboard_mapping_reply_t *)")
fn("xcb_generic_iterator_t xcb_get_keyboard_mapping_keysyms_end(const xcb_get_keyboard_mapping_reply_t *)")
fn("xcb_get_keyboard_mapping_reply_t * xcb_get_keyboard_mapping_reply(xcb_connection_t *, xcb_get_keyboard_mapping_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_change_keyboard_control_value_list_serialize(void **, uint32_t, const xcb_change_keyboard_control_value_list_t *)")
fn("int xcb_change_keyboard_control_value_list_unpack(const void *, uint32_t, xcb_change_keyboard_control_value_list_t *)")
fn("int xcb_change_keyboard_control_value_list_sizeof(const void *, uint32_t)")
fn("int xcb_change_keyboard_control_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_change_keyboard_control_checked(xcb_connection_t *, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_change_keyboard_control(xcb_connection_t *, uint32_t, const void *)")
fn("xcb_void_cookie_t xcb_change_keyboard_control_aux_checked(xcb_connection_t *, uint32_t, const xcb_change_keyboard_control_value_list_t *)")
fn("xcb_void_cookie_t xcb_change_keyboard_control_aux(xcb_connection_t *, uint32_t, const xcb_change_keyboard_control_value_list_t *)")
# XXX: Who owns result?
fn("void * xcb_change_keyboard_control_value_list(const xcb_change_keyboard_control_request_t *)")
fn("xcb_get_keyboard_control_cookie_t xcb_get_keyboard_control(xcb_connection_t *)")
fn("xcb_get_keyboard_control_cookie_t xcb_get_keyboard_control_unchecked(xcb_connection_t *)")
fn("xcb_get_keyboard_control_reply_t * xcb_get_keyboard_control_reply(xcb_connection_t *, xcb_get_keyboard_control_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_bell_checked(xcb_connection_t *, int8_t)")
fn("xcb_void_cookie_t xcb_bell(xcb_connection_t *, int8_t)")
fn("xcb_void_cookie_t xcb_change_pointer_control_checked(xcb_connection_t *, int16_t, int16_t, int16_t, uint8_t, uint8_t)")
fn("xcb_void_cookie_t xcb_change_pointer_control(xcb_connection_t *, int16_t, int16_t, int16_t, uint8_t, uint8_t)")
fn("xcb_get_pointer_control_cookie_t xcb_get_pointer_control(xcb_connection_t *)")
fn("xcb_get_pointer_control_cookie_t xcb_get_pointer_control_unchecked(xcb_connection_t *)")
fn("xcb_get_pointer_control_reply_t * xcb_get_pointer_control_reply(xcb_connection_t *, xcb_get_pointer_control_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_set_screen_saver_checked(xcb_connection_t *, int16_t, int16_t, uint8_t, uint8_t)")
fn("xcb_void_cookie_t xcb_set_screen_saver(xcb_connection_t *, int16_t, int16_t, uint8_t, uint8_t)")
fn("xcb_get_screen_saver_cookie_t xcb_get_screen_saver(xcb_connection_t *)")
fn("xcb_get_screen_saver_cookie_t xcb_get_screen_saver_unchecked(xcb_connection_t *)")
fn("xcb_get_screen_saver_reply_t * xcb_get_screen_saver_reply(xcb_connection_t *, xcb_get_screen_saver_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_change_hosts_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_change_hosts_checked(xcb_connection_t *, uint8_t, uint8_t, uint16_t, const uint8_t *)")
fn("xcb_void_cookie_t xcb_change_hosts(xcb_connection_t *, uint8_t, uint8_t, uint16_t, const uint8_t *)")
# ::Iterator::
fn("uint8_t * xcb_change_hosts_address(const xcb_change_hosts_request_t *)")
fn("int xcb_change_hosts_address_length(const xcb_change_hosts_request_t *)")
fn("xcb_generic_iterator_t xcb_change_hosts_address_end(const xcb_change_hosts_request_t *)")
fn("int xcb_host_sizeof(const void *)")
# ::Iterator::
fn("uint8_t * xcb_host_address(const xcb_host_t *)")
fn("int xcb_host_address_length(const xcb_host_t *)")
fn("xcb_generic_iterator_t xcb_host_address_end(const xcb_host_t *)")
fn("void xcb_host_next(xcb_host_iterator_t *)")
fn("xcb_generic_iterator_t xcb_host_end(xcb_host_iterator_t)")
fn("int xcb_list_hosts_sizeof(const void *)")
fn("xcb_list_hosts_cookie_t xcb_list_hosts(xcb_connection_t *)")
fn("xcb_list_hosts_cookie_t xcb_list_hosts_unchecked(xcb_connection_t *)")
fn("int xcb_list_hosts_hosts_length(const xcb_list_hosts_reply_t *)")
fn("xcb_host_iterator_t xcb_list_hosts_hosts_iterator(const xcb_list_hosts_reply_t *)")
fn("xcb_list_hosts_reply_t * xcb_list_hosts_reply(xcb_connection_t *, xcb_list_hosts_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_set_access_control_checked(xcb_connection_t *, uint8_t)")
fn("xcb_void_cookie_t xcb_set_access_control(xcb_connection_t *, uint8_t)")
fn("xcb_void_cookie_t xcb_set_close_down_mode_checked(xcb_connection_t *, uint8_t)")
fn("xcb_void_cookie_t xcb_set_close_down_mode(xcb_connection_t *, uint8_t)")
fn("xcb_void_cookie_t xcb_kill_client_checked(xcb_connection_t *, uint32_t)")
fn("xcb_void_cookie_t xcb_kill_client(xcb_connection_t *, uint32_t)")
fn("int xcb_rotate_properties_sizeof(const void *)")
fn("xcb_void_cookie_t xcb_rotate_properties_checked(xcb_connection_t *, xcb_window_t, uint16_t, int16_t, const xcb_atom_t *)")
fn("xcb_void_cookie_t xcb_rotate_properties(xcb_connection_t *, xcb_window_t, uint16_t, int16_t, const xcb_atom_t *)")
# ::Iterator::
fn("xcb_atom_t * xcb_rotate_properties_atoms(const xcb_rotate_properties_request_t *)")
fn("int xcb_rotate_properties_atoms_length(const xcb_rotate_properties_request_t *)")
fn("xcb_generic_iterator_t xcb_rotate_properties_atoms_end(const xcb_rotate_properties_request_t *)")
fn("xcb_void_cookie_t xcb_force_screen_saver_checked(xcb_connection_t *, uint8_t)")
fn("xcb_void_cookie_t xcb_force_screen_saver(xcb_connection_t *, uint8_t)")
fn("int xcb_set_pointer_mapping_sizeof(const void *)")
fn("xcb_set_pointer_mapping_cookie_t xcb_set_pointer_mapping(xcb_connection_t *, uint8_t, const uint8_t *)")
fn("xcb_set_pointer_mapping_cookie_t xcb_set_pointer_mapping_unchecked(xcb_connection_t *, uint8_t, const uint8_t *)")
fn("xcb_set_pointer_mapping_reply_t * xcb_set_pointer_mapping_reply(xcb_connection_t *, xcb_set_pointer_mapping_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_get_pointer_mapping_sizeof(const void *)")
fn("xcb_get_pointer_mapping_cookie_t xcb_get_pointer_mapping(xcb_connection_t *)")
fn("xcb_get_pointer_mapping_cookie_t xcb_get_pointer_mapping_unchecked(xcb_connection_t *)")
# ::Iterator::
fn("uint8_t * xcb_get_pointer_mapping_map(const xcb_get_pointer_mapping_reply_t *)")
fn("int xcb_get_pointer_mapping_map_length(const xcb_get_pointer_mapping_reply_t *)")
fn("xcb_generic_iterator_t xcb_get_pointer_mapping_map_end(const xcb_get_pointer_mapping_reply_t *)")
fn("xcb_get_pointer_mapping_reply_t * xcb_get_pointer_mapping_reply(xcb_connection_t *, xcb_get_pointer_mapping_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_set_modifier_mapping_sizeof(const void *)")
fn("xcb_set_modifier_mapping_cookie_t xcb_set_modifier_mapping(xcb_connection_t *, uint8_t, const xcb_keycode_t *)")
fn("xcb_set_modifier_mapping_cookie_t xcb_set_modifier_mapping_unchecked(xcb_connection_t *, uint8_t, const xcb_keycode_t *)")
fn("xcb_set_modifier_mapping_reply_t * xcb_set_modifier_mapping_reply(xcb_connection_t *, xcb_set_modifier_mapping_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("int xcb_get_modifier_mapping_sizeof(const void *)")
fn("xcb_get_modifier_mapping_cookie_t xcb_get_modifier_mapping(xcb_connection_t *)")
fn("xcb_get_modifier_mapping_cookie_t xcb_get_modifier_mapping_unchecked(xcb_connection_t *)")
# ::Iterator::
fn("xcb_keycode_t * xcb_get_modifier_mapping_keycodes(const xcb_get_modifier_mapping_reply_t *)")
fn("int xcb_get_modifier_mapping_keycodes_length(const xcb_get_modifier_mapping_reply_t *)")
fn("xcb_generic_iterator_t xcb_get_modifier_mapping_keycodes_end(const xcb_get_modifier_mapping_reply_t *)")
fn("xcb_get_modifier_mapping_reply_t * xcb_get_modifier_mapping_reply(xcb_connection_t *, xcb_get_modifier_mapping_cookie_t, xcb_generic_error_t **)"); no_pack()
fn("xcb_void_cookie_t xcb_no_operation_checked(xcb_connection_t *)")
fn("xcb_void_cookie_t xcb_no_operation(xcb_connection_t *)")
Generate()
+117
View File
@@ -0,0 +1,117 @@
#pragma once
#include <linux/futex.h>
#include <atomic>
#include <condition_variable>
#include <mutex>
struct CrossArchEvent final {
std::atomic<uint32_t> Futex;
};
static void WaitForWorkFunc(CrossArchEvent *Event) {
// Wait for Futex value to become 1
while (true) {
// First step compare it with 1 already and see if we can early out
uint32_t One = 1;
if (Event->Futex.compare_exchange_strong(One, 0)) {
return;
}
int Op = FUTEX_WAIT | FUTEX_PRIVATE_FLAG;
int Res = syscall(SYS_futex,
&Event->Futex,
Op,
nullptr, // Timeout
nullptr, // Addr
0);
}
}
static void NotifyWorkFunc(CrossArchEvent *Event) {
uint32_t Zero = 0;
if (Event->Futex.compare_exchange_strong(Zero, 1)) {
int Op = FUTEX_WAKE | FUTEX_PRIVATE_FLAG;
syscall(SYS_futex,
&Event->Futex,
Op,
nullptr, // Timeout
nullptr, // Addr
0);
}
}
//class CrossArchEvent final {
// private:
// /**
// * @brief Literally just an atomic bool that we are using for this class
// */
// class Flag final {
// public:
// bool TestAndSet(bool SetValue = true) {
// bool Expected = !SetValue;
// return Value.compare_exchange_strong(Expected, SetValue);
// }
//
// bool TestAndClear() {
// return TestAndSet(false);
// }
//
// bool Get() {
// return Value.load();
// }
//
// private:
// std::atomic_bool Value {false};
// };
//
// public:
// ~CrossArchEvent() {
// NotifyAll();
// }
// void NotifyOne() {
// if (FlagObject.TestAndSet()) {
// std::lock_guard<std::mutex> lk(MutexObject);
// CondObject.notify_one();
// }
// }
//
// void NotifyAll() {
// if (FlagObject.TestAndSet()) {
// std::lock_guard<std::mutex> lk(MutexObject);
// CondObject.notify_all();
// }
// }
//
// void Wait() {
// // Have we signaled before we started waiting?
// if (FlagObject.TestAndClear())
// return;
//
// std::unique_lock<std::mutex> lk(MutexObject);
// CondObject.wait(lk, [this]{ return FlagObject.TestAndClear(); });
// }
//
// template<class Rep, class Period>
// bool WaitFor(std::chrono::duration<Rep, Period> const& time) {
// // Have we signaled before we started waiting?
// if (FlagObject.TestAndClear())
// return true;
//
// std::unique_lock<std::mutex> lk(MutexObject);
// bool DidSignal = CondObject.wait_for(lk, time, [this]{ return FlagObject.TestAndClear(); });
// return DidSignal;
// }
// void BusyWaitForWork() {
// while (!FlagObject.Get());
// }
//
// private:
// std::mutex MutexObject;
// std::condition_variable CondObject;
// Flag FlagObject;
//};
File diff suppressed because it is too large. Load diff
+139
View File
@@ -0,0 +1,139 @@
/*
$info$
tags: thunklibs|xcb
$end_info$
*/
#include <chrono>
#include <cstring>
#include <malloc.h>
#include <thread>
#include <stdio.h>
#include <unistd.h>
#include <syscall.h>
#include <sys/syscall.h>
#include <xcb/xcb.h>
#include <xcb/xcbext.h>
#include "common/CrossArchEvent.h"
#include "common/Host.h"
#include <dlfcn.h>
#include <unordered_map>
using CBType = void (*)(void *closure);
#include "callback_structs.inl"
#include "WorkEventData.h"
#include "callback_typedefs.inl"
struct {
#include "callback_unpacks_header.inl"
} *callback_unpacks;
#include "ldr_ptrs.inl"
#include "function_unpacks.inl"
struct xcb_take_socket_CB_args {
xcb_connection_t * conn;
CBType CBFunction;
void *closure;
};
CrossArchEvent *WaitForWork{};
CrossArchEvent *WorkDone{};
CBWork *Work{};
void fexfn_unpack_libxcb_FEX_xcb_init_extension(void *argsv);
static std::unordered_map<xcb_connection_t*, xcb_take_socket_CB_args> CBArgs{};
void fexfn_unpack_libxcb_FEX_usable_size(void *argsv){
struct arg_t {void* a_0;size_t rv;};
auto args = (arg_t*)argsv;
args->rv = malloc_usable_size(args->a_0);
}
void fexfn_unpack_libxcb_FEX_free_on_host(void *argsv){
struct arg_t {void* a_0;};
auto args = (arg_t*)argsv;
free(args->a_0);
}
void fexfn_unpack_libxcb_FEX_GiveEvents(void *argsv){
struct arg_t {
CrossArchEvent *WaitForWork;
CrossArchEvent *WorkDone;
CBWork* Work;
};
auto args = (arg_t*)argsv;
WaitForWork = args->WaitForWork;
WorkDone = args->WorkDone;
Work = args->Work;
}
static void xcb_take_socket_cb(void *closure) {
xcb_take_socket_CB_args *Args = (xcb_take_socket_CB_args *)closure;
// Signalling to the guest thread like this allows us to call the callback function from any thread without
// creating spurious thread objects inside of FEX
Work->cb = (uintptr_t)Args->CBFunction;
Work->argsv = Args->closure;
// Tell the thread it has work
NotifyWorkFunc(WaitForWork);
// Wait for the work to be done
WaitForWorkFunc(WorkDone);
}
int fexfn_impl_libxcb_xcb_take_socket_internal(xcb_connection_t * a_0, CBType a_1, void * a_2, int a_3, uint64_t * a_4){
xcb_take_socket_CB_args Args{};
Args.conn = a_0;
Args.CBFunction = a_1;
Args.closure = a_2;
auto Res = CBArgs.insert_or_assign(a_0, Args);
return fexldr_ptr_libxcb_xcb_take_socket
(a_0,
xcb_take_socket_cb,
&Res.first->second,
a_3,
a_4);
}
static ExportEntry exports[] = {
#include "tab_function_unpacks.inl"
{ nullptr, nullptr }
};
#include "ldr.inl"
void fexfn_unpack_libxcb_FEX_xcb_init_extension(void *argsv){
struct arg_t {xcb_connection_t * a_0;xcb_extension_t * a_1;};
auto args = (arg_t*)argsv;
xcb_extension_t *ext{};
if (strcmp(args->a_1->name, "BIG-REQUESTS") == 0) {
ext = (xcb_extension_t *)dlsym(fexldr_ptr_libxcb_so, "xcb_big_requests_id");
}
else if (strcmp(args->a_1->name, "XC-MISC") == 0) {
ext = (xcb_extension_t *)dlsym(fexldr_ptr_libxcb_so, "xcb_xc_misc_id");
}
else {
fprintf(stderr, "Unknown xcb extension '%s'\n", args->a_1->name);
__builtin_trap();
return;
}
if (!ext) {
fprintf(stderr, "Couldn't find extension symbol: '%s'\n", args->a_1->name);
__builtin_trap();
return;
}
auto res = fexldr_ptr_libxcb_xcb_get_extension_data(args->a_0, ext);
// Copy over the global id
args->a_1->global_id = ext->global_id;
}
EXPORTS_WITH_CALLBACKS(libxcb)