xref: /netbsd/external/mit/xorg/lib/libxcb/files/record.c (revision 6550d01e)
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 
11 xcb_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 
23 void
24 xcb_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 
41 xcb_generic_iterator_t
42 xcb_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 
61 void
62 xcb_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 
79 xcb_generic_iterator_t
80 xcb_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 
99 void
100 xcb_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 
117 xcb_generic_iterator_t
118 xcb_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 
137 void
138 xcb_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 
155 xcb_generic_iterator_t
156 xcb_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 
175 void
176 xcb_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 
193 xcb_generic_iterator_t
194 xcb_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 
213 void
214 xcb_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 
231 xcb_generic_iterator_t
232 xcb_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 
251 void
252 xcb_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 
269 xcb_generic_iterator_t
270 xcb_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 
289 xcb_record_range_t *
290 xcb_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 
305 int
306 xcb_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 
321 xcb_record_range_iterator_t
322 xcb_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 
341 void
342 xcb_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 
361 xcb_generic_iterator_t
362 xcb_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 
385 xcb_record_query_version_cookie_t
386 xcb_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 
424 xcb_record_query_version_cookie_t
425 xcb_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 
463 xcb_record_query_version_reply_t *
464 xcb_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 
487 xcb_void_cookie_t
488 xcb_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 
545 xcb_void_cookie_t
546 xcb_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 
603 xcb_void_cookie_t
604 xcb_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 
661 xcb_void_cookie_t
662 xcb_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 
716 xcb_void_cookie_t
717 xcb_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 
761 xcb_void_cookie_t
762 xcb_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 
804 xcb_record_get_context_cookie_t
805 xcb_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 
840 xcb_record_get_context_cookie_t
841 xcb_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 
875 int
876 xcb_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 
891 xcb_record_client_info_iterator_t
892 xcb_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 
913 xcb_record_get_context_reply_t *
914 xcb_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 
932 xcb_record_enable_context_cookie_t
933 xcb_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 
968 xcb_record_enable_context_cookie_t
969 xcb_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 
1003 uint8_t *
1004 xcb_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 
1019 int
1020 xcb_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 
1035 xcb_generic_iterator_t
1036 xcb_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 
1057 xcb_record_enable_context_reply_t *
1058 xcb_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 
1076 xcb_void_cookie_t
1077 xcb_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 
1112 xcb_void_cookie_t
1113 xcb_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 
1148 xcb_void_cookie_t
1149 xcb_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 
1184 xcb_void_cookie_t
1185 xcb_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