1/*
2 * This file generated automatically from record.xml by c_client.py.
3 * Edit at your peril.
4 */
5
6/**
7 * @defgroup XCB_Record_API XCB Record API
8 * @brief Record XCB Protocol Implementation.
9 * @{
10 **/
11
12#ifndef __RECORD_H
13#define __RECORD_H
14
15#include "xcb.h"
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
21#define XCB_RECORD_MAJOR_VERSION 1
22#define XCB_RECORD_MINOR_VERSION 13
23
24extern xcb_extension_t xcb_record_id;
25
26typedef uint32_t xcb_record_context_t;
27
28/**
29 * @brief xcb_record_context_iterator_t
30 **/
31typedef struct xcb_record_context_iterator_t {
32    xcb_record_context_t *data;
33    int                   rem;
34    int                   index;
35} xcb_record_context_iterator_t;
36
37/**
38 * @brief xcb_record_range_8_t
39 **/
40typedef struct xcb_record_range_8_t {
41    uint8_t first;
42    uint8_t last;
43} xcb_record_range_8_t;
44
45/**
46 * @brief xcb_record_range_8_iterator_t
47 **/
48typedef struct xcb_record_range_8_iterator_t {
49    xcb_record_range_8_t *data;
50    int                   rem;
51    int                   index;
52} xcb_record_range_8_iterator_t;
53
54/**
55 * @brief xcb_record_range_16_t
56 **/
57typedef struct xcb_record_range_16_t {
58    uint16_t first;
59    uint16_t last;
60} xcb_record_range_16_t;
61
62/**
63 * @brief xcb_record_range_16_iterator_t
64 **/
65typedef struct xcb_record_range_16_iterator_t {
66    xcb_record_range_16_t *data;
67    int                    rem;
68    int                    index;
69} xcb_record_range_16_iterator_t;
70
71/**
72 * @brief xcb_record_ext_range_t
73 **/
74typedef struct xcb_record_ext_range_t {
75    xcb_record_range_8_t  major;
76    xcb_record_range_16_t minor;
77} xcb_record_ext_range_t;
78
79/**
80 * @brief xcb_record_ext_range_iterator_t
81 **/
82typedef struct xcb_record_ext_range_iterator_t {
83    xcb_record_ext_range_t *data;
84    int                     rem;
85    int                     index;
86} xcb_record_ext_range_iterator_t;
87
88/**
89 * @brief xcb_record_range_t
90 **/
91typedef struct xcb_record_range_t {
92    xcb_record_range_8_t   core_requests;
93    xcb_record_range_8_t   core_replies;
94    xcb_record_ext_range_t ext_requests;
95    xcb_record_ext_range_t ext_replies;
96    xcb_record_range_8_t   delivered_events;
97    xcb_record_range_8_t   device_events;
98    xcb_record_range_8_t   errors;
99    uint8_t                client_started;
100    uint8_t                client_died;
101} xcb_record_range_t;
102
103/**
104 * @brief xcb_record_range_iterator_t
105 **/
106typedef struct xcb_record_range_iterator_t {
107    xcb_record_range_t *data;
108    int                 rem;
109    int                 index;
110} xcb_record_range_iterator_t;
111
112typedef uint8_t xcb_record_element_header_t;
113
114/**
115 * @brief xcb_record_element_header_iterator_t
116 **/
117typedef struct xcb_record_element_header_iterator_t {
118    xcb_record_element_header_t *data;
119    int                          rem;
120    int                          index;
121} xcb_record_element_header_iterator_t;
122
123typedef enum xcb_record_h_type_t {
124    XCB_RECORD_H_TYPE_FROM_SERVER_TIME = 1,
125    XCB_RECORD_H_TYPE_FROM_CLIENT_TIME = 2,
126    XCB_RECORD_H_TYPE_FROM_CLIENT_SEQUENCE = 4
127} xcb_record_h_type_t;
128
129typedef uint32_t xcb_record_client_spec_t;
130
131/**
132 * @brief xcb_record_client_spec_iterator_t
133 **/
134typedef struct xcb_record_client_spec_iterator_t {
135    xcb_record_client_spec_t *data;
136    int                       rem;
137    int                       index;
138} xcb_record_client_spec_iterator_t;
139
140typedef enum xcb_record_cs_t {
141    XCB_RECORD_CS_CURRENT_CLIENTS = 1,
142    XCB_RECORD_CS_FUTURE_CLIENTS = 2,
143    XCB_RECORD_CS_ALL_CLIENTS = 3
144} xcb_record_cs_t;
145
146/**
147 * @brief xcb_record_client_info_t
148 **/
149typedef struct xcb_record_client_info_t {
150    xcb_record_client_spec_t client_resource;
151    uint32_t                 num_ranges;
152} xcb_record_client_info_t;
153
154/**
155 * @brief xcb_record_client_info_iterator_t
156 **/
157typedef struct xcb_record_client_info_iterator_t {
158    xcb_record_client_info_t *data;
159    int                       rem;
160    int                       index;
161} xcb_record_client_info_iterator_t;
162
163/** Opcode for xcb_record_bad_context. */
164#define XCB_RECORD_BAD_CONTEXT 0
165
166/**
167 * @brief xcb_record_bad_context_error_t
168 **/
169typedef struct xcb_record_bad_context_error_t {
170    uint8_t  response_type;
171    uint8_t  error_code;
172    uint16_t sequence;
173    uint32_t invalid_record;
174    uint16_t minor_opcode;
175    uint8_t  major_opcode;
176} xcb_record_bad_context_error_t;
177
178/**
179 * @brief xcb_record_query_version_cookie_t
180 **/
181typedef struct xcb_record_query_version_cookie_t {
182    unsigned int sequence;
183} xcb_record_query_version_cookie_t;
184
185/** Opcode for xcb_record_query_version. */
186#define XCB_RECORD_QUERY_VERSION 0
187
188/**
189 * @brief xcb_record_query_version_request_t
190 **/
191typedef struct xcb_record_query_version_request_t {
192    uint8_t  major_opcode;
193    uint8_t  minor_opcode;
194    uint16_t length;
195    uint16_t major_version;
196    uint16_t minor_version;
197} xcb_record_query_version_request_t;
198
199/**
200 * @brief xcb_record_query_version_reply_t
201 **/
202typedef struct xcb_record_query_version_reply_t {
203    uint8_t  response_type;
204    uint8_t  pad0;
205    uint16_t sequence;
206    uint32_t length;
207    uint16_t major_version;
208    uint16_t minor_version;
209} xcb_record_query_version_reply_t;
210
211/** Opcode for xcb_record_create_context. */
212#define XCB_RECORD_CREATE_CONTEXT 1
213
214/**
215 * @brief xcb_record_create_context_request_t
216 **/
217typedef struct xcb_record_create_context_request_t {
218    uint8_t                     major_opcode;
219    uint8_t                     minor_opcode;
220    uint16_t                    length;
221    xcb_record_context_t        context;
222    xcb_record_element_header_t element_header;
223    uint8_t                     pad0[3];
224    uint32_t                    num_client_specs;
225    uint32_t                    num_ranges;
226} xcb_record_create_context_request_t;
227
228/** Opcode for xcb_record_register_clients. */
229#define XCB_RECORD_REGISTER_CLIENTS 2
230
231/**
232 * @brief xcb_record_register_clients_request_t
233 **/
234typedef struct xcb_record_register_clients_request_t {
235    uint8_t                     major_opcode;
236    uint8_t                     minor_opcode;
237    uint16_t                    length;
238    xcb_record_context_t        context;
239    xcb_record_element_header_t element_header;
240    uint8_t                     pad0[3];
241    uint32_t                    num_client_specs;
242    uint32_t                    num_ranges;
243} xcb_record_register_clients_request_t;
244
245/** Opcode for xcb_record_unregister_clients. */
246#define XCB_RECORD_UNREGISTER_CLIENTS 3
247
248/**
249 * @brief xcb_record_unregister_clients_request_t
250 **/
251typedef struct xcb_record_unregister_clients_request_t {
252    uint8_t              major_opcode;
253    uint8_t              minor_opcode;
254    uint16_t             length;
255    xcb_record_context_t context;
256    uint32_t             num_client_specs;
257} xcb_record_unregister_clients_request_t;
258
259/**
260 * @brief xcb_record_get_context_cookie_t
261 **/
262typedef struct xcb_record_get_context_cookie_t {
263    unsigned int sequence;
264} xcb_record_get_context_cookie_t;
265
266/** Opcode for xcb_record_get_context. */
267#define XCB_RECORD_GET_CONTEXT 4
268
269/**
270 * @brief xcb_record_get_context_request_t
271 **/
272typedef struct xcb_record_get_context_request_t {
273    uint8_t              major_opcode;
274    uint8_t              minor_opcode;
275    uint16_t             length;
276    xcb_record_context_t context;
277} xcb_record_get_context_request_t;
278
279/**
280 * @brief xcb_record_get_context_reply_t
281 **/
282typedef struct xcb_record_get_context_reply_t {
283    uint8_t                     response_type;
284    uint8_t                     enabled;
285    uint16_t                    sequence;
286    uint32_t                    length;
287    xcb_record_element_header_t element_header;
288    uint8_t                     pad0[3];
289    uint32_t                    num_intercepted_clients;
290    uint8_t                     pad1[16];
291} xcb_record_get_context_reply_t;
292
293/**
294 * @brief xcb_record_enable_context_cookie_t
295 **/
296typedef struct xcb_record_enable_context_cookie_t {
297    unsigned int sequence;
298} xcb_record_enable_context_cookie_t;
299
300/** Opcode for xcb_record_enable_context. */
301#define XCB_RECORD_ENABLE_CONTEXT 5
302
303/**
304 * @brief xcb_record_enable_context_request_t
305 **/
306typedef struct xcb_record_enable_context_request_t {
307    uint8_t              major_opcode;
308    uint8_t              minor_opcode;
309    uint16_t             length;
310    xcb_record_context_t context;
311} xcb_record_enable_context_request_t;
312
313/**
314 * @brief xcb_record_enable_context_reply_t
315 **/
316typedef struct xcb_record_enable_context_reply_t {
317    uint8_t                     response_type;
318    uint8_t                     category;
319    uint16_t                    sequence;
320    uint32_t                    length;
321    xcb_record_element_header_t element_header;
322    uint8_t                     client_swapped;
323    uint8_t                     pad0[2];
324    uint32_t                    xid_base;
325    uint32_t                    server_time;
326    uint32_t                    rec_sequence_num;
327    uint8_t                     pad1[8];
328} xcb_record_enable_context_reply_t;
329
330/** Opcode for xcb_record_disable_context. */
331#define XCB_RECORD_DISABLE_CONTEXT 6
332
333/**
334 * @brief xcb_record_disable_context_request_t
335 **/
336typedef struct xcb_record_disable_context_request_t {
337    uint8_t              major_opcode;
338    uint8_t              minor_opcode;
339    uint16_t             length;
340    xcb_record_context_t context;
341} xcb_record_disable_context_request_t;
342
343/** Opcode for xcb_record_free_context. */
344#define XCB_RECORD_FREE_CONTEXT 7
345
346/**
347 * @brief xcb_record_free_context_request_t
348 **/
349typedef struct xcb_record_free_context_request_t {
350    uint8_t              major_opcode;
351    uint8_t              minor_opcode;
352    uint16_t             length;
353    xcb_record_context_t context;
354} xcb_record_free_context_request_t;
355
356/**
357 * Get the next element of the iterator
358 * @param i Pointer to a xcb_record_context_iterator_t
359 *
360 * Get the next element in the iterator. The member rem is
361 * decreased by one. The member data points to the next
362 * element. The member index is increased by sizeof(xcb_record_context_t)
363 */
364void
365xcb_record_context_next (xcb_record_context_iterator_t *i);
366
367/**
368 * Return the iterator pointing to the last element
369 * @param i An xcb_record_context_iterator_t
370 * @return  The iterator pointing to the last element
371 *
372 * Set the current element in the iterator to the last element.
373 * The member rem is set to 0. The member data points to the
374 * last element.
375 */
376xcb_generic_iterator_t
377xcb_record_context_end (xcb_record_context_iterator_t i);
378
379/**
380 * Get the next element of the iterator
381 * @param i Pointer to a xcb_record_range_8_iterator_t
382 *
383 * Get the next element in the iterator. The member rem is
384 * decreased by one. The member data points to the next
385 * element. The member index is increased by sizeof(xcb_record_range_8_t)
386 */
387void
388xcb_record_range_8_next (xcb_record_range_8_iterator_t *i);
389
390/**
391 * Return the iterator pointing to the last element
392 * @param i An xcb_record_range_8_iterator_t
393 * @return  The iterator pointing to the last element
394 *
395 * Set the current element in the iterator to the last element.
396 * The member rem is set to 0. The member data points to the
397 * last element.
398 */
399xcb_generic_iterator_t
400xcb_record_range_8_end (xcb_record_range_8_iterator_t i);
401
402/**
403 * Get the next element of the iterator
404 * @param i Pointer to a xcb_record_range_16_iterator_t
405 *
406 * Get the next element in the iterator. The member rem is
407 * decreased by one. The member data points to the next
408 * element. The member index is increased by sizeof(xcb_record_range_16_t)
409 */
410void
411xcb_record_range_16_next (xcb_record_range_16_iterator_t *i);
412
413/**
414 * Return the iterator pointing to the last element
415 * @param i An xcb_record_range_16_iterator_t
416 * @return  The iterator pointing to the last element
417 *
418 * Set the current element in the iterator to the last element.
419 * The member rem is set to 0. The member data points to the
420 * last element.
421 */
422xcb_generic_iterator_t
423xcb_record_range_16_end (xcb_record_range_16_iterator_t i);
424
425/**
426 * Get the next element of the iterator
427 * @param i Pointer to a xcb_record_ext_range_iterator_t
428 *
429 * Get the next element in the iterator. The member rem is
430 * decreased by one. The member data points to the next
431 * element. The member index is increased by sizeof(xcb_record_ext_range_t)
432 */
433void
434xcb_record_ext_range_next (xcb_record_ext_range_iterator_t *i);
435
436/**
437 * Return the iterator pointing to the last element
438 * @param i An xcb_record_ext_range_iterator_t
439 * @return  The iterator pointing to the last element
440 *
441 * Set the current element in the iterator to the last element.
442 * The member rem is set to 0. The member data points to the
443 * last element.
444 */
445xcb_generic_iterator_t
446xcb_record_ext_range_end (xcb_record_ext_range_iterator_t i);
447
448/**
449 * Get the next element of the iterator
450 * @param i Pointer to a xcb_record_range_iterator_t
451 *
452 * Get the next element in the iterator. The member rem is
453 * decreased by one. The member data points to the next
454 * element. The member index is increased by sizeof(xcb_record_range_t)
455 */
456void
457xcb_record_range_next (xcb_record_range_iterator_t *i);
458
459/**
460 * Return the iterator pointing to the last element
461 * @param i An xcb_record_range_iterator_t
462 * @return  The iterator pointing to the last element
463 *
464 * Set the current element in the iterator to the last element.
465 * The member rem is set to 0. The member data points to the
466 * last element.
467 */
468xcb_generic_iterator_t
469xcb_record_range_end (xcb_record_range_iterator_t i);
470
471/**
472 * Get the next element of the iterator
473 * @param i Pointer to a xcb_record_element_header_iterator_t
474 *
475 * Get the next element in the iterator. The member rem is
476 * decreased by one. The member data points to the next
477 * element. The member index is increased by sizeof(xcb_record_element_header_t)
478 */
479void
480xcb_record_element_header_next (xcb_record_element_header_iterator_t *i);
481
482/**
483 * Return the iterator pointing to the last element
484 * @param i An xcb_record_element_header_iterator_t
485 * @return  The iterator pointing to the last element
486 *
487 * Set the current element in the iterator to the last element.
488 * The member rem is set to 0. The member data points to the
489 * last element.
490 */
491xcb_generic_iterator_t
492xcb_record_element_header_end (xcb_record_element_header_iterator_t i);
493
494/**
495 * Get the next element of the iterator
496 * @param i Pointer to a xcb_record_client_spec_iterator_t
497 *
498 * Get the next element in the iterator. The member rem is
499 * decreased by one. The member data points to the next
500 * element. The member index is increased by sizeof(xcb_record_client_spec_t)
501 */
502void
503xcb_record_client_spec_next (xcb_record_client_spec_iterator_t *i);
504
505/**
506 * Return the iterator pointing to the last element
507 * @param i An xcb_record_client_spec_iterator_t
508 * @return  The iterator pointing to the last element
509 *
510 * Set the current element in the iterator to the last element.
511 * The member rem is set to 0. The member data points to the
512 * last element.
513 */
514xcb_generic_iterator_t
515xcb_record_client_spec_end (xcb_record_client_spec_iterator_t i);
516
517int
518xcb_record_client_info_sizeof (const void  *_buffer);
519
520xcb_record_range_t *
521xcb_record_client_info_ranges (const xcb_record_client_info_t *R);
522
523int
524xcb_record_client_info_ranges_length (const xcb_record_client_info_t *R);
525
526xcb_record_range_iterator_t
527xcb_record_client_info_ranges_iterator (const xcb_record_client_info_t *R);
528
529/**
530 * Get the next element of the iterator
531 * @param i Pointer to a xcb_record_client_info_iterator_t
532 *
533 * Get the next element in the iterator. The member rem is
534 * decreased by one. The member data points to the next
535 * element. The member index is increased by sizeof(xcb_record_client_info_t)
536 */
537void
538xcb_record_client_info_next (xcb_record_client_info_iterator_t *i);
539
540/**
541 * Return the iterator pointing to the last element
542 * @param i An xcb_record_client_info_iterator_t
543 * @return  The iterator pointing to the last element
544 *
545 * Set the current element in the iterator to the last element.
546 * The member rem is set to 0. The member data points to the
547 * last element.
548 */
549xcb_generic_iterator_t
550xcb_record_client_info_end (xcb_record_client_info_iterator_t i);
551
552/**
553 *
554 * @param c The connection
555 * @return A cookie
556 *
557 * Delivers a request to the X server.
558 *
559 */
560xcb_record_query_version_cookie_t
561xcb_record_query_version (xcb_connection_t *c,
562                          uint16_t          major_version,
563                          uint16_t          minor_version);
564
565/**
566 *
567 * @param c The connection
568 * @return A cookie
569 *
570 * Delivers a request to the X server.
571 *
572 * This form can be used only if the request will cause
573 * a reply to be generated. Any returned error will be
574 * placed in the event queue.
575 */
576xcb_record_query_version_cookie_t
577xcb_record_query_version_unchecked (xcb_connection_t *c,
578                                    uint16_t          major_version,
579                                    uint16_t          minor_version);
580
581/**
582 * Return the reply
583 * @param c      The connection
584 * @param cookie The cookie
585 * @param e      The xcb_generic_error_t supplied
586 *
587 * Returns the reply of the request asked by
588 *
589 * The parameter @p e supplied to this function must be NULL if
590 * xcb_record_query_version_unchecked(). is used.
591 * Otherwise, it stores the error if any.
592 *
593 * The returned value must be freed by the caller using free().
594 */
595xcb_record_query_version_reply_t *
596xcb_record_query_version_reply (xcb_connection_t                   *c,
597                                xcb_record_query_version_cookie_t   cookie  /**< */,
598                                xcb_generic_error_t               **e);
599
600int
601xcb_record_create_context_sizeof (const void  *_buffer);
602
603/**
604 *
605 * @param c The connection
606 * @return A cookie
607 *
608 * Delivers a request to the X server.
609 *
610 * This form can be used only if the request will not cause
611 * a reply to be generated. Any returned error will be
612 * saved for handling by xcb_request_check().
613 */
614xcb_void_cookie_t
615xcb_record_create_context_checked (xcb_connection_t               *c,
616                                   xcb_record_context_t            context,
617                                   xcb_record_element_header_t     element_header,
618                                   uint32_t                        num_client_specs,
619                                   uint32_t                        num_ranges,
620                                   const xcb_record_client_spec_t *client_specs,
621                                   const xcb_record_range_t       *ranges);
622
623/**
624 *
625 * @param c The connection
626 * @return A cookie
627 *
628 * Delivers a request to the X server.
629 *
630 */
631xcb_void_cookie_t
632xcb_record_create_context (xcb_connection_t               *c,
633                           xcb_record_context_t            context,
634                           xcb_record_element_header_t     element_header,
635                           uint32_t                        num_client_specs,
636                           uint32_t                        num_ranges,
637                           const xcb_record_client_spec_t *client_specs,
638                           const xcb_record_range_t       *ranges);
639
640xcb_record_client_spec_t *
641xcb_record_create_context_client_specs (const xcb_record_create_context_request_t *R);
642
643int
644xcb_record_create_context_client_specs_length (const xcb_record_create_context_request_t *R);
645
646xcb_generic_iterator_t
647xcb_record_create_context_client_specs_end (const xcb_record_create_context_request_t *R);
648
649xcb_record_range_t *
650xcb_record_create_context_ranges (const xcb_record_create_context_request_t *R);
651
652int
653xcb_record_create_context_ranges_length (const xcb_record_create_context_request_t *R);
654
655xcb_record_range_iterator_t
656xcb_record_create_context_ranges_iterator (const xcb_record_create_context_request_t *R);
657
658int
659xcb_record_register_clients_sizeof (const void  *_buffer);
660
661/**
662 *
663 * @param c The connection
664 * @return A cookie
665 *
666 * Delivers a request to the X server.
667 *
668 * This form can be used only if the request will not cause
669 * a reply to be generated. Any returned error will be
670 * saved for handling by xcb_request_check().
671 */
672xcb_void_cookie_t
673xcb_record_register_clients_checked (xcb_connection_t               *c,
674                                     xcb_record_context_t            context,
675                                     xcb_record_element_header_t     element_header,
676                                     uint32_t                        num_client_specs,
677                                     uint32_t                        num_ranges,
678                                     const xcb_record_client_spec_t *client_specs,
679                                     const xcb_record_range_t       *ranges);
680
681/**
682 *
683 * @param c The connection
684 * @return A cookie
685 *
686 * Delivers a request to the X server.
687 *
688 */
689xcb_void_cookie_t
690xcb_record_register_clients (xcb_connection_t               *c,
691                             xcb_record_context_t            context,
692                             xcb_record_element_header_t     element_header,
693                             uint32_t                        num_client_specs,
694                             uint32_t                        num_ranges,
695                             const xcb_record_client_spec_t *client_specs,
696                             const xcb_record_range_t       *ranges);
697
698xcb_record_client_spec_t *
699xcb_record_register_clients_client_specs (const xcb_record_register_clients_request_t *R);
700
701int
702xcb_record_register_clients_client_specs_length (const xcb_record_register_clients_request_t *R);
703
704xcb_generic_iterator_t
705xcb_record_register_clients_client_specs_end (const xcb_record_register_clients_request_t *R);
706
707xcb_record_range_t *
708xcb_record_register_clients_ranges (const xcb_record_register_clients_request_t *R);
709
710int
711xcb_record_register_clients_ranges_length (const xcb_record_register_clients_request_t *R);
712
713xcb_record_range_iterator_t
714xcb_record_register_clients_ranges_iterator (const xcb_record_register_clients_request_t *R);
715
716int
717xcb_record_unregister_clients_sizeof (const void  *_buffer);
718
719/**
720 *
721 * @param c The connection
722 * @return A cookie
723 *
724 * Delivers a request to the X server.
725 *
726 * This form can be used only if the request will not cause
727 * a reply to be generated. Any returned error will be
728 * saved for handling by xcb_request_check().
729 */
730xcb_void_cookie_t
731xcb_record_unregister_clients_checked (xcb_connection_t               *c,
732                                       xcb_record_context_t            context,
733                                       uint32_t                        num_client_specs,
734                                       const xcb_record_client_spec_t *client_specs);
735
736/**
737 *
738 * @param c The connection
739 * @return A cookie
740 *
741 * Delivers a request to the X server.
742 *
743 */
744xcb_void_cookie_t
745xcb_record_unregister_clients (xcb_connection_t               *c,
746                               xcb_record_context_t            context,
747                               uint32_t                        num_client_specs,
748                               const xcb_record_client_spec_t *client_specs);
749
750xcb_record_client_spec_t *
751xcb_record_unregister_clients_client_specs (const xcb_record_unregister_clients_request_t *R);
752
753int
754xcb_record_unregister_clients_client_specs_length (const xcb_record_unregister_clients_request_t *R);
755
756xcb_generic_iterator_t
757xcb_record_unregister_clients_client_specs_end (const xcb_record_unregister_clients_request_t *R);
758
759int
760xcb_record_get_context_sizeof (const void  *_buffer);
761
762/**
763 *
764 * @param c The connection
765 * @return A cookie
766 *
767 * Delivers a request to the X server.
768 *
769 */
770xcb_record_get_context_cookie_t
771xcb_record_get_context (xcb_connection_t     *c,
772                        xcb_record_context_t  context);
773
774/**
775 *
776 * @param c The connection
777 * @return A cookie
778 *
779 * Delivers a request to the X server.
780 *
781 * This form can be used only if the request will cause
782 * a reply to be generated. Any returned error will be
783 * placed in the event queue.
784 */
785xcb_record_get_context_cookie_t
786xcb_record_get_context_unchecked (xcb_connection_t     *c,
787                                  xcb_record_context_t  context);
788
789int
790xcb_record_get_context_intercepted_clients_length (const xcb_record_get_context_reply_t *R);
791
792xcb_record_client_info_iterator_t
793xcb_record_get_context_intercepted_clients_iterator (const xcb_record_get_context_reply_t *R);
794
795/**
796 * Return the reply
797 * @param c      The connection
798 * @param cookie The cookie
799 * @param e      The xcb_generic_error_t supplied
800 *
801 * Returns the reply of the request asked by
802 *
803 * The parameter @p e supplied to this function must be NULL if
804 * xcb_record_get_context_unchecked(). is used.
805 * Otherwise, it stores the error if any.
806 *
807 * The returned value must be freed by the caller using free().
808 */
809xcb_record_get_context_reply_t *
810xcb_record_get_context_reply (xcb_connection_t                 *c,
811                              xcb_record_get_context_cookie_t   cookie  /**< */,
812                              xcb_generic_error_t             **e);
813
814int
815xcb_record_enable_context_sizeof (const void  *_buffer);
816
817/**
818 *
819 * @param c The connection
820 * @return A cookie
821 *
822 * Delivers a request to the X server.
823 *
824 */
825xcb_record_enable_context_cookie_t
826xcb_record_enable_context (xcb_connection_t     *c,
827                           xcb_record_context_t  context);
828
829/**
830 *
831 * @param c The connection
832 * @return A cookie
833 *
834 * Delivers a request to the X server.
835 *
836 * This form can be used only if the request will cause
837 * a reply to be generated. Any returned error will be
838 * placed in the event queue.
839 */
840xcb_record_enable_context_cookie_t
841xcb_record_enable_context_unchecked (xcb_connection_t     *c,
842                                     xcb_record_context_t  context);
843
844uint8_t *
845xcb_record_enable_context_data (const xcb_record_enable_context_reply_t *R);
846
847int
848xcb_record_enable_context_data_length (const xcb_record_enable_context_reply_t *R);
849
850xcb_generic_iterator_t
851xcb_record_enable_context_data_end (const xcb_record_enable_context_reply_t *R);
852
853/**
854 * Return the reply
855 * @param c      The connection
856 * @param cookie The cookie
857 * @param e      The xcb_generic_error_t supplied
858 *
859 * Returns the reply of the request asked by
860 *
861 * The parameter @p e supplied to this function must be NULL if
862 * xcb_record_enable_context_unchecked(). is used.
863 * Otherwise, it stores the error if any.
864 *
865 * The returned value must be freed by the caller using free().
866 */
867xcb_record_enable_context_reply_t *
868xcb_record_enable_context_reply (xcb_connection_t                    *c,
869                                 xcb_record_enable_context_cookie_t   cookie  /**< */,
870                                 xcb_generic_error_t                **e);
871
872/**
873 *
874 * @param c The connection
875 * @return A cookie
876 *
877 * Delivers a request to the X server.
878 *
879 * This form can be used only if the request will not cause
880 * a reply to be generated. Any returned error will be
881 * saved for handling by xcb_request_check().
882 */
883xcb_void_cookie_t
884xcb_record_disable_context_checked (xcb_connection_t     *c,
885                                    xcb_record_context_t  context);
886
887/**
888 *
889 * @param c The connection
890 * @return A cookie
891 *
892 * Delivers a request to the X server.
893 *
894 */
895xcb_void_cookie_t
896xcb_record_disable_context (xcb_connection_t     *c,
897                            xcb_record_context_t  context);
898
899/**
900 *
901 * @param c The connection
902 * @return A cookie
903 *
904 * Delivers a request to the X server.
905 *
906 * This form can be used only if the request will not cause
907 * a reply to be generated. Any returned error will be
908 * saved for handling by xcb_request_check().
909 */
910xcb_void_cookie_t
911xcb_record_free_context_checked (xcb_connection_t     *c,
912                                 xcb_record_context_t  context);
913
914/**
915 *
916 * @param c The connection
917 * @return A cookie
918 *
919 * Delivers a request to the X server.
920 *
921 */
922xcb_void_cookie_t
923xcb_record_free_context (xcb_connection_t     *c,
924                         xcb_record_context_t  context);
925
926
927#ifdef __cplusplus
928}
929#endif
930
931#endif
932
933/**
934 * @}
935 */
936