1/*
2 * This file generated automatically from record.xml by c_client.py.
3 * Edit at your peril.
4 */
5
6#include <string.h>
7#include <assert.h>
8#include "xcbext.h"
9#include "record.h"
10
11xcb_extension_t xcb_record_id = { "RECORD", 0 };
12
13
14/*****************************************************************************
15 **
16 ** void xcb_record_context_next
17 **
18 ** @param xcb_record_context_iterator_t *i
19 ** @returns void
20 **
21 *****************************************************************************/
22
23void
24xcb_record_context_next (xcb_record_context_iterator_t *i  /**< */)
25{
26    --i->rem;
27    ++i->data;
28    i->index += sizeof(xcb_record_context_t);
29}
30
31
32/*****************************************************************************
33 **
34 ** xcb_generic_iterator_t xcb_record_context_end
35 **
36 ** @param xcb_record_context_iterator_t i
37 ** @returns xcb_generic_iterator_t
38 **
39 *****************************************************************************/
40
41xcb_generic_iterator_t
42xcb_record_context_end (xcb_record_context_iterator_t i  /**< */)
43{
44    xcb_generic_iterator_t ret;
45    ret.data = i.data + i.rem;
46    ret.index = i.index + ((char *) ret.data - (char *) i.data);
47    ret.rem = 0;
48    return ret;
49}
50
51
52/*****************************************************************************
53 **
54 ** void xcb_record_range_8_next
55 **
56 ** @param xcb_record_range_8_iterator_t *i
57 ** @returns void
58 **
59 *****************************************************************************/
60
61void
62xcb_record_range_8_next (xcb_record_range_8_iterator_t *i  /**< */)
63{
64    --i->rem;
65    ++i->data;
66    i->index += sizeof(xcb_record_range_8_t);
67}
68
69
70/*****************************************************************************
71 **
72 ** xcb_generic_iterator_t xcb_record_range_8_end
73 **
74 ** @param xcb_record_range_8_iterator_t i
75 ** @returns xcb_generic_iterator_t
76 **
77 *****************************************************************************/
78
79xcb_generic_iterator_t
80xcb_record_range_8_end (xcb_record_range_8_iterator_t i  /**< */)
81{
82    xcb_generic_iterator_t ret;
83    ret.data = i.data + i.rem;
84    ret.index = i.index + ((char *) ret.data - (char *) i.data);
85    ret.rem = 0;
86    return ret;
87}
88
89
90/*****************************************************************************
91 **
92 ** void xcb_record_range_16_next
93 **
94 ** @param xcb_record_range_16_iterator_t *i
95 ** @returns void
96 **
97 *****************************************************************************/
98
99void
100xcb_record_range_16_next (xcb_record_range_16_iterator_t *i  /**< */)
101{
102    --i->rem;
103    ++i->data;
104    i->index += sizeof(xcb_record_range_16_t);
105}
106
107
108/*****************************************************************************
109 **
110 ** xcb_generic_iterator_t xcb_record_range_16_end
111 **
112 ** @param xcb_record_range_16_iterator_t i
113 ** @returns xcb_generic_iterator_t
114 **
115 *****************************************************************************/
116
117xcb_generic_iterator_t
118xcb_record_range_16_end (xcb_record_range_16_iterator_t i  /**< */)
119{
120    xcb_generic_iterator_t ret;
121    ret.data = i.data + i.rem;
122    ret.index = i.index + ((char *) ret.data - (char *) i.data);
123    ret.rem = 0;
124    return ret;
125}
126
127
128/*****************************************************************************
129 **
130 ** void xcb_record_ext_range_next
131 **
132 ** @param xcb_record_ext_range_iterator_t *i
133 ** @returns void
134 **
135 *****************************************************************************/
136
137void
138xcb_record_ext_range_next (xcb_record_ext_range_iterator_t *i  /**< */)
139{
140    --i->rem;
141    ++i->data;
142    i->index += sizeof(xcb_record_ext_range_t);
143}
144
145
146/*****************************************************************************
147 **
148 ** xcb_generic_iterator_t xcb_record_ext_range_end
149 **
150 ** @param xcb_record_ext_range_iterator_t i
151 ** @returns xcb_generic_iterator_t
152 **
153 *****************************************************************************/
154
155xcb_generic_iterator_t
156xcb_record_ext_range_end (xcb_record_ext_range_iterator_t i  /**< */)
157{
158    xcb_generic_iterator_t ret;
159    ret.data = i.data + i.rem;
160    ret.index = i.index + ((char *) ret.data - (char *) i.data);
161    ret.rem = 0;
162    return ret;
163}
164
165
166/*****************************************************************************
167 **
168 ** void xcb_record_range_next
169 **
170 ** @param xcb_record_range_iterator_t *i
171 ** @returns void
172 **
173 *****************************************************************************/
174
175void
176xcb_record_range_next (xcb_record_range_iterator_t *i  /**< */)
177{
178    --i->rem;
179    ++i->data;
180    i->index += sizeof(xcb_record_range_t);
181}
182
183
184/*****************************************************************************
185 **
186 ** xcb_generic_iterator_t xcb_record_range_end
187 **
188 ** @param xcb_record_range_iterator_t i
189 ** @returns xcb_generic_iterator_t
190 **
191 *****************************************************************************/
192
193xcb_generic_iterator_t
194xcb_record_range_end (xcb_record_range_iterator_t i  /**< */)
195{
196    xcb_generic_iterator_t ret;
197    ret.data = i.data + i.rem;
198    ret.index = i.index + ((char *) ret.data - (char *) i.data);
199    ret.rem = 0;
200    return ret;
201}
202
203
204/*****************************************************************************
205 **
206 ** void xcb_record_element_header_next
207 **
208 ** @param xcb_record_element_header_iterator_t *i
209 ** @returns void
210 **
211 *****************************************************************************/
212
213void
214xcb_record_element_header_next (xcb_record_element_header_iterator_t *i  /**< */)
215{
216    --i->rem;
217    ++i->data;
218    i->index += sizeof(xcb_record_element_header_t);
219}
220
221
222/*****************************************************************************
223 **
224 ** xcb_generic_iterator_t xcb_record_element_header_end
225 **
226 ** @param xcb_record_element_header_iterator_t i
227 ** @returns xcb_generic_iterator_t
228 **
229 *****************************************************************************/
230
231xcb_generic_iterator_t
232xcb_record_element_header_end (xcb_record_element_header_iterator_t i  /**< */)
233{
234    xcb_generic_iterator_t ret;
235    ret.data = i.data + i.rem;
236    ret.index = i.index + ((char *) ret.data - (char *) i.data);
237    ret.rem = 0;
238    return ret;
239}
240
241
242/*****************************************************************************
243 **
244 ** void xcb_record_client_spec_next
245 **
246 ** @param xcb_record_client_spec_iterator_t *i
247 ** @returns void
248 **
249 *****************************************************************************/
250
251void
252xcb_record_client_spec_next (xcb_record_client_spec_iterator_t *i  /**< */)
253{
254    --i->rem;
255    ++i->data;
256    i->index += sizeof(xcb_record_client_spec_t);
257}
258
259
260/*****************************************************************************
261 **
262 ** xcb_generic_iterator_t xcb_record_client_spec_end
263 **
264 ** @param xcb_record_client_spec_iterator_t i
265 ** @returns xcb_generic_iterator_t
266 **
267 *****************************************************************************/
268
269xcb_generic_iterator_t
270xcb_record_client_spec_end (xcb_record_client_spec_iterator_t i  /**< */)
271{
272    xcb_generic_iterator_t ret;
273    ret.data = i.data + i.rem;
274    ret.index = i.index + ((char *) ret.data - (char *) i.data);
275    ret.rem = 0;
276    return ret;
277}
278
279
280/*****************************************************************************
281 **
282 ** xcb_record_range_t * xcb_record_client_info_ranges
283 **
284 ** @param const xcb_record_client_info_t *R
285 ** @returns xcb_record_range_t *
286 **
287 *****************************************************************************/
288
289xcb_record_range_t *
290xcb_record_client_info_ranges (const xcb_record_client_info_t *R  /**< */)
291{
292    return (xcb_record_range_t *) (R + 1);
293}
294
295
296/*****************************************************************************
297 **
298 ** int xcb_record_client_info_ranges_length
299 **
300 ** @param const xcb_record_client_info_t *R
301 ** @returns int
302 **
303 *****************************************************************************/
304
305int
306xcb_record_client_info_ranges_length (const xcb_record_client_info_t *R  /**< */)
307{
308    return R->num_ranges;
309}
310
311
312/*****************************************************************************
313 **
314 ** xcb_record_range_iterator_t xcb_record_client_info_ranges_iterator
315 **
316 ** @param const xcb_record_client_info_t *R
317 ** @returns xcb_record_range_iterator_t
318 **
319 *****************************************************************************/
320
321xcb_record_range_iterator_t
322xcb_record_client_info_ranges_iterator (const xcb_record_client_info_t *R  /**< */)
323{
324    xcb_record_range_iterator_t i;
325    i.data = (xcb_record_range_t *) (R + 1);
326    i.rem = R->num_ranges;
327    i.index = (char *) i.data - (char *) R;
328    return i;
329}
330
331
332/*****************************************************************************
333 **
334 ** void xcb_record_client_info_next
335 **
336 ** @param xcb_record_client_info_iterator_t *i
337 ** @returns void
338 **
339 *****************************************************************************/
340
341void
342xcb_record_client_info_next (xcb_record_client_info_iterator_t *i  /**< */)
343{
344    xcb_record_client_info_t *R = i->data;
345    xcb_generic_iterator_t child = xcb_record_range_end(xcb_record_client_info_ranges_iterator(R));
346    --i->rem;
347    i->data = (xcb_record_client_info_t *) child.data;
348    i->index = child.index;
349}
350
351
352/*****************************************************************************
353 **
354 ** xcb_generic_iterator_t xcb_record_client_info_end
355 **
356 ** @param xcb_record_client_info_iterator_t i
357 ** @returns xcb_generic_iterator_t
358 **
359 *****************************************************************************/
360
361xcb_generic_iterator_t
362xcb_record_client_info_end (xcb_record_client_info_iterator_t i  /**< */)
363{
364    xcb_generic_iterator_t ret;
365    while(i.rem > 0)
366        xcb_record_client_info_next(&i);
367    ret.data = i.data;
368    ret.rem = i.rem;
369    ret.index = i.index;
370    return ret;
371}
372
373
374/*****************************************************************************
375 **
376 ** xcb_record_query_version_cookie_t xcb_record_query_version
377 **
378 ** @param xcb_connection_t *c
379 ** @param uint16_t          major_version
380 ** @param uint16_t          minor_version
381 ** @returns xcb_record_query_version_cookie_t
382 **
383 *****************************************************************************/
384
385xcb_record_query_version_cookie_t
386xcb_record_query_version (xcb_connection_t *c  /**< */,
387                          uint16_t          major_version  /**< */,
388                          uint16_t          minor_version  /**< */)
389{
390    static const xcb_protocol_request_t xcb_req = {
391        /* count */ 2,
392        /* ext */ &xcb_record_id,
393        /* opcode */ XCB_RECORD_QUERY_VERSION,
394        /* isvoid */ 0
395    };
396
397    struct iovec xcb_parts[4];
398    xcb_record_query_version_cookie_t xcb_ret;
399    xcb_record_query_version_request_t xcb_out;
400
401    xcb_out.major_version = major_version;
402    xcb_out.minor_version = minor_version;
403
404    xcb_parts[2].iov_base = (char *) &xcb_out;
405    xcb_parts[2].iov_len = sizeof(xcb_out);
406    xcb_parts[3].iov_base = 0;
407    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
408    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
409    return xcb_ret;
410}
411
412
413/*****************************************************************************
414 **
415 ** xcb_record_query_version_cookie_t xcb_record_query_version_unchecked
416 **
417 ** @param xcb_connection_t *c
418 ** @param uint16_t          major_version
419 ** @param uint16_t          minor_version
420 ** @returns xcb_record_query_version_cookie_t
421 **
422 *****************************************************************************/
423
424xcb_record_query_version_cookie_t
425xcb_record_query_version_unchecked (xcb_connection_t *c  /**< */,
426                                    uint16_t          major_version  /**< */,
427                                    uint16_t          minor_version  /**< */)
428{
429    static const xcb_protocol_request_t xcb_req = {
430        /* count */ 2,
431        /* ext */ &xcb_record_id,
432        /* opcode */ XCB_RECORD_QUERY_VERSION,
433        /* isvoid */ 0
434    };
435
436    struct iovec xcb_parts[4];
437    xcb_record_query_version_cookie_t xcb_ret;
438    xcb_record_query_version_request_t xcb_out;
439
440    xcb_out.major_version = major_version;
441    xcb_out.minor_version = minor_version;
442
443    xcb_parts[2].iov_base = (char *) &xcb_out;
444    xcb_parts[2].iov_len = sizeof(xcb_out);
445    xcb_parts[3].iov_base = 0;
446    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
447    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
448    return xcb_ret;
449}
450
451
452/*****************************************************************************
453 **
454 ** xcb_record_query_version_reply_t * xcb_record_query_version_reply
455 **
456 ** @param xcb_connection_t                   *c
457 ** @param xcb_record_query_version_cookie_t   cookie
458 ** @param xcb_generic_error_t               **e
459 ** @returns xcb_record_query_version_reply_t *
460 **
461 *****************************************************************************/
462
463xcb_record_query_version_reply_t *
464xcb_record_query_version_reply (xcb_connection_t                   *c  /**< */,
465                                xcb_record_query_version_cookie_t   cookie  /**< */,
466                                xcb_generic_error_t               **e  /**< */)
467{
468    return (xcb_record_query_version_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
469}
470
471
472/*****************************************************************************
473 **
474 ** xcb_void_cookie_t xcb_record_create_context_checked
475 **
476 ** @param xcb_connection_t               *c
477 ** @param xcb_record_context_t            context
478 ** @param xcb_record_element_header_t     element_header
479 ** @param uint32_t                        num_client_specs
480 ** @param uint32_t                        num_ranges
481 ** @param const xcb_record_client_spec_t *client_specs
482 ** @param const xcb_record_range_t       *ranges
483 ** @returns xcb_void_cookie_t
484 **
485 *****************************************************************************/
486
487xcb_void_cookie_t
488xcb_record_create_context_checked (xcb_connection_t               *c  /**< */,
489                                   xcb_record_context_t            context  /**< */,
490                                   xcb_record_element_header_t     element_header  /**< */,
491                                   uint32_t                        num_client_specs  /**< */,
492                                   uint32_t                        num_ranges  /**< */,
493                                   const xcb_record_client_spec_t *client_specs  /**< */,
494                                   const xcb_record_range_t       *ranges  /**< */)
495{
496    static const xcb_protocol_request_t xcb_req = {
497        /* count */ 6,
498        /* ext */ &xcb_record_id,
499        /* opcode */ XCB_RECORD_CREATE_CONTEXT,
500        /* isvoid */ 1
501    };
502
503    struct iovec xcb_parts[8];
504    xcb_void_cookie_t xcb_ret;
505    xcb_record_create_context_request_t xcb_out;
506
507    xcb_out.context = context;
508    xcb_out.element_header = element_header;
509    memset(xcb_out.pad0, 0, 3);
510    xcb_out.num_client_specs = num_client_specs;
511    xcb_out.num_ranges = num_ranges;
512
513    xcb_parts[2].iov_base = (char *) &xcb_out;
514    xcb_parts[2].iov_len = sizeof(xcb_out);
515    xcb_parts[3].iov_base = 0;
516    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
517    xcb_parts[4].iov_base = (char *) client_specs;
518    xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t);
519    xcb_parts[5].iov_base = 0;
520    xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
521    xcb_parts[6].iov_base = (char *) ranges;
522    xcb_parts[6].iov_len = num_ranges * sizeof(xcb_record_range_t);
523    xcb_parts[7].iov_base = 0;
524    xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
525    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
526    return xcb_ret;
527}
528
529
530/*****************************************************************************
531 **
532 ** xcb_void_cookie_t xcb_record_create_context
533 **
534 ** @param xcb_connection_t               *c
535 ** @param xcb_record_context_t            context
536 ** @param xcb_record_element_header_t     element_header
537 ** @param uint32_t                        num_client_specs
538 ** @param uint32_t                        num_ranges
539 ** @param const xcb_record_client_spec_t *client_specs
540 ** @param const xcb_record_range_t       *ranges
541 ** @returns xcb_void_cookie_t
542 **
543 *****************************************************************************/
544
545xcb_void_cookie_t
546xcb_record_create_context (xcb_connection_t               *c  /**< */,
547                           xcb_record_context_t            context  /**< */,
548                           xcb_record_element_header_t     element_header  /**< */,
549                           uint32_t                        num_client_specs  /**< */,
550                           uint32_t                        num_ranges  /**< */,
551                           const xcb_record_client_spec_t *client_specs  /**< */,
552                           const xcb_record_range_t       *ranges  /**< */)
553{
554    static const xcb_protocol_request_t xcb_req = {
555        /* count */ 6,
556        /* ext */ &xcb_record_id,
557        /* opcode */ XCB_RECORD_CREATE_CONTEXT,
558        /* isvoid */ 1
559    };
560
561    struct iovec xcb_parts[8];
562    xcb_void_cookie_t xcb_ret;
563    xcb_record_create_context_request_t xcb_out;
564
565    xcb_out.context = context;
566    xcb_out.element_header = element_header;
567    memset(xcb_out.pad0, 0, 3);
568    xcb_out.num_client_specs = num_client_specs;
569    xcb_out.num_ranges = num_ranges;
570
571    xcb_parts[2].iov_base = (char *) &xcb_out;
572    xcb_parts[2].iov_len = sizeof(xcb_out);
573    xcb_parts[3].iov_base = 0;
574    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
575    xcb_parts[4].iov_base = (char *) client_specs;
576    xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t);
577    xcb_parts[5].iov_base = 0;
578    xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
579    xcb_parts[6].iov_base = (char *) ranges;
580    xcb_parts[6].iov_len = num_ranges * sizeof(xcb_record_range_t);
581    xcb_parts[7].iov_base = 0;
582    xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
583    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
584    return xcb_ret;
585}
586
587
588/*****************************************************************************
589 **
590 ** xcb_void_cookie_t xcb_record_register_clients_checked
591 **
592 ** @param xcb_connection_t               *c
593 ** @param xcb_record_context_t            context
594 ** @param xcb_record_element_header_t     element_header
595 ** @param uint32_t                        num_client_specs
596 ** @param uint32_t                        num_ranges
597 ** @param const xcb_record_client_spec_t *client_specs
598 ** @param const xcb_record_range_t       *ranges
599 ** @returns xcb_void_cookie_t
600 **
601 *****************************************************************************/
602
603xcb_void_cookie_t
604xcb_record_register_clients_checked (xcb_connection_t               *c  /**< */,
605                                     xcb_record_context_t            context  /**< */,
606                                     xcb_record_element_header_t     element_header  /**< */,
607                                     uint32_t                        num_client_specs  /**< */,
608                                     uint32_t                        num_ranges  /**< */,
609                                     const xcb_record_client_spec_t *client_specs  /**< */,
610                                     const xcb_record_range_t       *ranges  /**< */)
611{
612    static const xcb_protocol_request_t xcb_req = {
613        /* count */ 6,
614        /* ext */ &xcb_record_id,
615        /* opcode */ XCB_RECORD_REGISTER_CLIENTS,
616        /* isvoid */ 1
617    };
618
619    struct iovec xcb_parts[8];
620    xcb_void_cookie_t xcb_ret;
621    xcb_record_register_clients_request_t xcb_out;
622
623    xcb_out.context = context;
624    xcb_out.element_header = element_header;
625    memset(xcb_out.pad0, 0, 3);
626    xcb_out.num_client_specs = num_client_specs;
627    xcb_out.num_ranges = num_ranges;
628
629    xcb_parts[2].iov_base = (char *) &xcb_out;
630    xcb_parts[2].iov_len = sizeof(xcb_out);
631    xcb_parts[3].iov_base = 0;
632    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
633    xcb_parts[4].iov_base = (char *) client_specs;
634    xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t);
635    xcb_parts[5].iov_base = 0;
636    xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
637    xcb_parts[6].iov_base = (char *) ranges;
638    xcb_parts[6].iov_len = num_ranges * sizeof(xcb_record_range_t);
639    xcb_parts[7].iov_base = 0;
640    xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
641    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
642    return xcb_ret;
643}
644
645
646/*****************************************************************************
647 **
648 ** xcb_void_cookie_t xcb_record_register_clients
649 **
650 ** @param xcb_connection_t               *c
651 ** @param xcb_record_context_t            context
652 ** @param xcb_record_element_header_t     element_header
653 ** @param uint32_t                        num_client_specs
654 ** @param uint32_t                        num_ranges
655 ** @param const xcb_record_client_spec_t *client_specs
656 ** @param const xcb_record_range_t       *ranges
657 ** @returns xcb_void_cookie_t
658 **
659 *****************************************************************************/
660
661xcb_void_cookie_t
662xcb_record_register_clients (xcb_connection_t               *c  /**< */,
663                             xcb_record_context_t            context  /**< */,
664                             xcb_record_element_header_t     element_header  /**< */,
665                             uint32_t                        num_client_specs  /**< */,
666                             uint32_t                        num_ranges  /**< */,
667                             const xcb_record_client_spec_t *client_specs  /**< */,
668                             const xcb_record_range_t       *ranges  /**< */)
669{
670    static const xcb_protocol_request_t xcb_req = {
671        /* count */ 6,
672        /* ext */ &xcb_record_id,
673        /* opcode */ XCB_RECORD_REGISTER_CLIENTS,
674        /* isvoid */ 1
675    };
676
677    struct iovec xcb_parts[8];
678    xcb_void_cookie_t xcb_ret;
679    xcb_record_register_clients_request_t xcb_out;
680
681    xcb_out.context = context;
682    xcb_out.element_header = element_header;
683    memset(xcb_out.pad0, 0, 3);
684    xcb_out.num_client_specs = num_client_specs;
685    xcb_out.num_ranges = num_ranges;
686
687    xcb_parts[2].iov_base = (char *) &xcb_out;
688    xcb_parts[2].iov_len = sizeof(xcb_out);
689    xcb_parts[3].iov_base = 0;
690    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
691    xcb_parts[4].iov_base = (char *) client_specs;
692    xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t);
693    xcb_parts[5].iov_base = 0;
694    xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
695    xcb_parts[6].iov_base = (char *) ranges;
696    xcb_parts[6].iov_len = num_ranges * sizeof(xcb_record_range_t);
697    xcb_parts[7].iov_base = 0;
698    xcb_parts[7].iov_len = -xcb_parts[6].iov_len & 3;
699    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
700    return xcb_ret;
701}
702
703
704/*****************************************************************************
705 **
706 ** xcb_void_cookie_t xcb_record_unregister_clients_checked
707 **
708 ** @param xcb_connection_t               *c
709 ** @param xcb_record_context_t            context
710 ** @param uint32_t                        num_client_specs
711 ** @param const xcb_record_client_spec_t *client_specs
712 ** @returns xcb_void_cookie_t
713 **
714 *****************************************************************************/
715
716xcb_void_cookie_t
717xcb_record_unregister_clients_checked (xcb_connection_t               *c  /**< */,
718                                       xcb_record_context_t            context  /**< */,
719                                       uint32_t                        num_client_specs  /**< */,
720                                       const xcb_record_client_spec_t *client_specs  /**< */)
721{
722    static const xcb_protocol_request_t xcb_req = {
723        /* count */ 4,
724        /* ext */ &xcb_record_id,
725        /* opcode */ XCB_RECORD_UNREGISTER_CLIENTS,
726        /* isvoid */ 1
727    };
728
729    struct iovec xcb_parts[6];
730    xcb_void_cookie_t xcb_ret;
731    xcb_record_unregister_clients_request_t xcb_out;
732
733    xcb_out.context = context;
734    xcb_out.num_client_specs = num_client_specs;
735
736    xcb_parts[2].iov_base = (char *) &xcb_out;
737    xcb_parts[2].iov_len = sizeof(xcb_out);
738    xcb_parts[3].iov_base = 0;
739    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
740    xcb_parts[4].iov_base = (char *) client_specs;
741    xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t);
742    xcb_parts[5].iov_base = 0;
743    xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
744    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
745    return xcb_ret;
746}
747
748
749/*****************************************************************************
750 **
751 ** xcb_void_cookie_t xcb_record_unregister_clients
752 **
753 ** @param xcb_connection_t               *c
754 ** @param xcb_record_context_t            context
755 ** @param uint32_t                        num_client_specs
756 ** @param const xcb_record_client_spec_t *client_specs
757 ** @returns xcb_void_cookie_t
758 **
759 *****************************************************************************/
760
761xcb_void_cookie_t
762xcb_record_unregister_clients (xcb_connection_t               *c  /**< */,
763                               xcb_record_context_t            context  /**< */,
764                               uint32_t                        num_client_specs  /**< */,
765                               const xcb_record_client_spec_t *client_specs  /**< */)
766{
767    static const xcb_protocol_request_t xcb_req = {
768        /* count */ 4,
769        /* ext */ &xcb_record_id,
770        /* opcode */ XCB_RECORD_UNREGISTER_CLIENTS,
771        /* isvoid */ 1
772    };
773
774    struct iovec xcb_parts[6];
775    xcb_void_cookie_t xcb_ret;
776    xcb_record_unregister_clients_request_t xcb_out;
777
778    xcb_out.context = context;
779    xcb_out.num_client_specs = num_client_specs;
780
781    xcb_parts[2].iov_base = (char *) &xcb_out;
782    xcb_parts[2].iov_len = sizeof(xcb_out);
783    xcb_parts[3].iov_base = 0;
784    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
785    xcb_parts[4].iov_base = (char *) client_specs;
786    xcb_parts[4].iov_len = num_client_specs * sizeof(xcb_record_client_spec_t);
787    xcb_parts[5].iov_base = 0;
788    xcb_parts[5].iov_len = -xcb_parts[4].iov_len & 3;
789    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
790    return xcb_ret;
791}
792
793
794/*****************************************************************************
795 **
796 ** xcb_record_get_context_cookie_t xcb_record_get_context
797 **
798 ** @param xcb_connection_t     *c
799 ** @param xcb_record_context_t  context
800 ** @returns xcb_record_get_context_cookie_t
801 **
802 *****************************************************************************/
803
804xcb_record_get_context_cookie_t
805xcb_record_get_context (xcb_connection_t     *c  /**< */,
806                        xcb_record_context_t  context  /**< */)
807{
808    static const xcb_protocol_request_t xcb_req = {
809        /* count */ 2,
810        /* ext */ &xcb_record_id,
811        /* opcode */ XCB_RECORD_GET_CONTEXT,
812        /* isvoid */ 0
813    };
814
815    struct iovec xcb_parts[4];
816    xcb_record_get_context_cookie_t xcb_ret;
817    xcb_record_get_context_request_t xcb_out;
818
819    xcb_out.context = context;
820
821    xcb_parts[2].iov_base = (char *) &xcb_out;
822    xcb_parts[2].iov_len = sizeof(xcb_out);
823    xcb_parts[3].iov_base = 0;
824    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
825    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
826    return xcb_ret;
827}
828
829
830/*****************************************************************************
831 **
832 ** xcb_record_get_context_cookie_t xcb_record_get_context_unchecked
833 **
834 ** @param xcb_connection_t     *c
835 ** @param xcb_record_context_t  context
836 ** @returns xcb_record_get_context_cookie_t
837 **
838 *****************************************************************************/
839
840xcb_record_get_context_cookie_t
841xcb_record_get_context_unchecked (xcb_connection_t     *c  /**< */,
842                                  xcb_record_context_t  context  /**< */)
843{
844    static const xcb_protocol_request_t xcb_req = {
845        /* count */ 2,
846        /* ext */ &xcb_record_id,
847        /* opcode */ XCB_RECORD_GET_CONTEXT,
848        /* isvoid */ 0
849    };
850
851    struct iovec xcb_parts[4];
852    xcb_record_get_context_cookie_t xcb_ret;
853    xcb_record_get_context_request_t xcb_out;
854
855    xcb_out.context = context;
856
857    xcb_parts[2].iov_base = (char *) &xcb_out;
858    xcb_parts[2].iov_len = sizeof(xcb_out);
859    xcb_parts[3].iov_base = 0;
860    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
861    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
862    return xcb_ret;
863}
864
865
866/*****************************************************************************
867 **
868 ** int xcb_record_get_context_intercepted_clients_length
869 **
870 ** @param const xcb_record_get_context_reply_t *R
871 ** @returns int
872 **
873 *****************************************************************************/
874
875int
876xcb_record_get_context_intercepted_clients_length (const xcb_record_get_context_reply_t *R  /**< */)
877{
878    return R->num_intercepted_clients;
879}
880
881
882/*****************************************************************************
883 **
884 ** xcb_record_client_info_iterator_t xcb_record_get_context_intercepted_clients_iterator
885 **
886 ** @param const xcb_record_get_context_reply_t *R
887 ** @returns xcb_record_client_info_iterator_t
888 **
889 *****************************************************************************/
890
891xcb_record_client_info_iterator_t
892xcb_record_get_context_intercepted_clients_iterator (const xcb_record_get_context_reply_t *R  /**< */)
893{
894    xcb_record_client_info_iterator_t i;
895    i.data = (xcb_record_client_info_t *) (R + 1);
896    i.rem = R->num_intercepted_clients;
897    i.index = (char *) i.data - (char *) R;
898    return i;
899}
900
901
902/*****************************************************************************
903 **
904 ** xcb_record_get_context_reply_t * xcb_record_get_context_reply
905 **
906 ** @param xcb_connection_t                 *c
907 ** @param xcb_record_get_context_cookie_t   cookie
908 ** @param xcb_generic_error_t             **e
909 ** @returns xcb_record_get_context_reply_t *
910 **
911 *****************************************************************************/
912
913xcb_record_get_context_reply_t *
914xcb_record_get_context_reply (xcb_connection_t                 *c  /**< */,
915                              xcb_record_get_context_cookie_t   cookie  /**< */,
916                              xcb_generic_error_t             **e  /**< */)
917{
918    return (xcb_record_get_context_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
919}
920
921
922/*****************************************************************************
923 **
924 ** xcb_record_enable_context_cookie_t xcb_record_enable_context
925 **
926 ** @param xcb_connection_t     *c
927 ** @param xcb_record_context_t  context
928 ** @returns xcb_record_enable_context_cookie_t
929 **
930 *****************************************************************************/
931
932xcb_record_enable_context_cookie_t
933xcb_record_enable_context (xcb_connection_t     *c  /**< */,
934                           xcb_record_context_t  context  /**< */)
935{
936    static const xcb_protocol_request_t xcb_req = {
937        /* count */ 2,
938        /* ext */ &xcb_record_id,
939        /* opcode */ XCB_RECORD_ENABLE_CONTEXT,
940        /* isvoid */ 0
941    };
942
943    struct iovec xcb_parts[4];
944    xcb_record_enable_context_cookie_t xcb_ret;
945    xcb_record_enable_context_request_t xcb_out;
946
947    xcb_out.context = context;
948
949    xcb_parts[2].iov_base = (char *) &xcb_out;
950    xcb_parts[2].iov_len = sizeof(xcb_out);
951    xcb_parts[3].iov_base = 0;
952    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
953    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
954    return xcb_ret;
955}
956
957
958/*****************************************************************************
959 **
960 ** xcb_record_enable_context_cookie_t xcb_record_enable_context_unchecked
961 **
962 ** @param xcb_connection_t     *c
963 ** @param xcb_record_context_t  context
964 ** @returns xcb_record_enable_context_cookie_t
965 **
966 *****************************************************************************/
967
968xcb_record_enable_context_cookie_t
969xcb_record_enable_context_unchecked (xcb_connection_t     *c  /**< */,
970                                     xcb_record_context_t  context  /**< */)
971{
972    static const xcb_protocol_request_t xcb_req = {
973        /* count */ 2,
974        /* ext */ &xcb_record_id,
975        /* opcode */ XCB_RECORD_ENABLE_CONTEXT,
976        /* isvoid */ 0
977    };
978
979    struct iovec xcb_parts[4];
980    xcb_record_enable_context_cookie_t xcb_ret;
981    xcb_record_enable_context_request_t xcb_out;
982
983    xcb_out.context = context;
984
985    xcb_parts[2].iov_base = (char *) &xcb_out;
986    xcb_parts[2].iov_len = sizeof(xcb_out);
987    xcb_parts[3].iov_base = 0;
988    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
989    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
990    return xcb_ret;
991}
992
993
994/*****************************************************************************
995 **
996 ** uint8_t * xcb_record_enable_context_data
997 **
998 ** @param const xcb_record_enable_context_reply_t *R
999 ** @returns uint8_t *
1000 **
1001 *****************************************************************************/
1002
1003uint8_t *
1004xcb_record_enable_context_data (const xcb_record_enable_context_reply_t *R  /**< */)
1005{
1006    return (uint8_t *) (R + 1);
1007}
1008
1009
1010/*****************************************************************************
1011 **
1012 ** int xcb_record_enable_context_data_length
1013 **
1014 ** @param const xcb_record_enable_context_reply_t *R
1015 ** @returns int
1016 **
1017 *****************************************************************************/
1018
1019int
1020xcb_record_enable_context_data_length (const xcb_record_enable_context_reply_t *R  /**< */)
1021{
1022    return (R->length * 4);
1023}
1024
1025
1026/*****************************************************************************
1027 **
1028 ** xcb_generic_iterator_t xcb_record_enable_context_data_end
1029 **
1030 ** @param const xcb_record_enable_context_reply_t *R
1031 ** @returns xcb_generic_iterator_t
1032 **
1033 *****************************************************************************/
1034
1035xcb_generic_iterator_t
1036xcb_record_enable_context_data_end (const xcb_record_enable_context_reply_t *R  /**< */)
1037{
1038    xcb_generic_iterator_t i;
1039    i.data = ((uint8_t *) (R + 1)) + ((R->length * 4));
1040    i.rem = 0;
1041    i.index = (char *) i.data - (char *) R;
1042    return i;
1043}
1044
1045
1046/*****************************************************************************
1047 **
1048 ** xcb_record_enable_context_reply_t * xcb_record_enable_context_reply
1049 **
1050 ** @param xcb_connection_t                    *c
1051 ** @param xcb_record_enable_context_cookie_t   cookie
1052 ** @param xcb_generic_error_t                **e
1053 ** @returns xcb_record_enable_context_reply_t *
1054 **
1055 *****************************************************************************/
1056
1057xcb_record_enable_context_reply_t *
1058xcb_record_enable_context_reply (xcb_connection_t                    *c  /**< */,
1059                                 xcb_record_enable_context_cookie_t   cookie  /**< */,
1060                                 xcb_generic_error_t                **e  /**< */)
1061{
1062    return (xcb_record_enable_context_reply_t *) xcb_wait_for_reply(c, cookie.sequence, e);
1063}
1064
1065
1066/*****************************************************************************
1067 **
1068 ** xcb_void_cookie_t xcb_record_disable_context_checked
1069 **
1070 ** @param xcb_connection_t     *c
1071 ** @param xcb_record_context_t  context
1072 ** @returns xcb_void_cookie_t
1073 **
1074 *****************************************************************************/
1075
1076xcb_void_cookie_t
1077xcb_record_disable_context_checked (xcb_connection_t     *c  /**< */,
1078                                    xcb_record_context_t  context  /**< */)
1079{
1080    static const xcb_protocol_request_t xcb_req = {
1081        /* count */ 2,
1082        /* ext */ &xcb_record_id,
1083        /* opcode */ XCB_RECORD_DISABLE_CONTEXT,
1084        /* isvoid */ 1
1085    };
1086
1087    struct iovec xcb_parts[4];
1088    xcb_void_cookie_t xcb_ret;
1089    xcb_record_disable_context_request_t xcb_out;
1090
1091    xcb_out.context = context;
1092
1093    xcb_parts[2].iov_base = (char *) &xcb_out;
1094    xcb_parts[2].iov_len = sizeof(xcb_out);
1095    xcb_parts[3].iov_base = 0;
1096    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1097    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1098    return xcb_ret;
1099}
1100
1101
1102/*****************************************************************************
1103 **
1104 ** xcb_void_cookie_t xcb_record_disable_context
1105 **
1106 ** @param xcb_connection_t     *c
1107 ** @param xcb_record_context_t  context
1108 ** @returns xcb_void_cookie_t
1109 **
1110 *****************************************************************************/
1111
1112xcb_void_cookie_t
1113xcb_record_disable_context (xcb_connection_t     *c  /**< */,
1114                            xcb_record_context_t  context  /**< */)
1115{
1116    static const xcb_protocol_request_t xcb_req = {
1117        /* count */ 2,
1118        /* ext */ &xcb_record_id,
1119        /* opcode */ XCB_RECORD_DISABLE_CONTEXT,
1120        /* isvoid */ 1
1121    };
1122
1123    struct iovec xcb_parts[4];
1124    xcb_void_cookie_t xcb_ret;
1125    xcb_record_disable_context_request_t xcb_out;
1126
1127    xcb_out.context = context;
1128
1129    xcb_parts[2].iov_base = (char *) &xcb_out;
1130    xcb_parts[2].iov_len = sizeof(xcb_out);
1131    xcb_parts[3].iov_base = 0;
1132    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1133    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1134    return xcb_ret;
1135}
1136
1137
1138/*****************************************************************************
1139 **
1140 ** xcb_void_cookie_t xcb_record_free_context_checked
1141 **
1142 ** @param xcb_connection_t     *c
1143 ** @param xcb_record_context_t  context
1144 ** @returns xcb_void_cookie_t
1145 **
1146 *****************************************************************************/
1147
1148xcb_void_cookie_t
1149xcb_record_free_context_checked (xcb_connection_t     *c  /**< */,
1150                                 xcb_record_context_t  context  /**< */)
1151{
1152    static const xcb_protocol_request_t xcb_req = {
1153        /* count */ 2,
1154        /* ext */ &xcb_record_id,
1155        /* opcode */ XCB_RECORD_FREE_CONTEXT,
1156        /* isvoid */ 1
1157    };
1158
1159    struct iovec xcb_parts[4];
1160    xcb_void_cookie_t xcb_ret;
1161    xcb_record_free_context_request_t xcb_out;
1162
1163    xcb_out.context = context;
1164
1165    xcb_parts[2].iov_base = (char *) &xcb_out;
1166    xcb_parts[2].iov_len = sizeof(xcb_out);
1167    xcb_parts[3].iov_base = 0;
1168    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1169    xcb_ret.sequence = xcb_send_request(c, XCB_REQUEST_CHECKED, xcb_parts + 2, &xcb_req);
1170    return xcb_ret;
1171}
1172
1173
1174/*****************************************************************************
1175 **
1176 ** xcb_void_cookie_t xcb_record_free_context
1177 **
1178 ** @param xcb_connection_t     *c
1179 ** @param xcb_record_context_t  context
1180 ** @returns xcb_void_cookie_t
1181 **
1182 *****************************************************************************/
1183
1184xcb_void_cookie_t
1185xcb_record_free_context (xcb_connection_t     *c  /**< */,
1186                         xcb_record_context_t  context  /**< */)
1187{
1188    static const xcb_protocol_request_t xcb_req = {
1189        /* count */ 2,
1190        /* ext */ &xcb_record_id,
1191        /* opcode */ XCB_RECORD_FREE_CONTEXT,
1192        /* isvoid */ 1
1193    };
1194
1195    struct iovec xcb_parts[4];
1196    xcb_void_cookie_t xcb_ret;
1197    xcb_record_free_context_request_t xcb_out;
1198
1199    xcb_out.context = context;
1200
1201    xcb_parts[2].iov_base = (char *) &xcb_out;
1202    xcb_parts[2].iov_len = sizeof(xcb_out);
1203    xcb_parts[3].iov_base = 0;
1204    xcb_parts[3].iov_len = -xcb_parts[2].iov_len & 3;
1205    xcb_ret.sequence = xcb_send_request(c, 0, xcb_parts + 2, &xcb_req);
1206    return xcb_ret;
1207}
1208
1209