These functions are expected to be useful only to X protocol extension implementations built on XCB. They are declared in xcbext.h. Care is required when calling these functions, as they generally do not have the type-safety properties of the public API functions. [[!toc levels="6"]] ## `struct xcb_extension_t` struct xcb_extension_t { const char *name; // the X name of this extension, stored as a null-terminated string int global_id; // a small integer unique across all extensions in the current process }; ## `xcb_protocol_request_t` typedef struct { size_t count; // number of elements in the iovec array xcb_extension_t *ext; // extension identifier, or null for the core protocol uint8_t opcode; // major opcode of the request for the core protocol, or minor opcode for an extension uint8_t isvoid; // zero if this request will return a reply; non-zero otherwise } xcb_protocol_request_t; Values for a particular request that are always constant. ## `xcb_send_request` (`xcb_out.c`) int xcb_send_request (xcb_connection *c, int flags, // a combination of the flags `XCB_REQUEST_CHECKED`, `XCB_REQUEST_RAW`, and `XCB_REQUEST_DISCARD_REPLY` unsigned int *sequence, struct iovec *vector, const xcb_protocol_request_t *request ); ## `xcb_wait_for_reply` (`xcb_in.c`) void * xcb_wait_for_reply (xcb_connection *c, unsigned int request, xcb_generic_error_t **e ); ## `xcb_poll_for_reply` (`xcb_in.c`) int xcb_poll_for_reply (xcb_connection *c, unsigned int request, void **reply, xcb_generic_error_t **e ); Returns: 1 if the reply was recieved (reply or error is filled in), 0 if the reply has not yet arrived. ## `xcb_popcount` (`xcb_util.c`) int xcb_popcount (uint32_t mask); Returns the number of bits in the binary representation of `mask` that are equal to 1. This is also called a "population count".