1 /* SCANNER TEST */
2 
3 /*
4  * Copyright © 2008-2011 Kristian Høgsberg
5  * Copyright © 2010-2011 Intel Corporation
6  * Copyright © 2012-2013 Collabora, Ltd.
7  *
8  * Permission is hereby granted, free of charge, to any person
9  * obtaining a copy of this software and associated documentation files
10  * (the "Software"), to deal in the Software without restriction,
11  * including without limitation the rights to use, copy, modify, merge,
12  * publish, distribute, sublicense, and/or sell copies of the Software,
13  * and to permit persons to whom the Software is furnished to do so,
14  * subject to the following conditions:
15  *
16  * The above copyright notice and this permission notice (including the
17  * next paragraph) shall be included in all copies or substantial
18  * portions of the Software.
19  *
20  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
21  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
22  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
23  * NONINFRINGEMENT.  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
24  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
25  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
26  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27  * SOFTWARE.
28  */
29 
30 #include <stdlib.h>
31 #include <stdint.h>
32 #include "wayland-util.h"
33 
34 extern const struct wl_interface wl_buffer_interface;
35 extern const struct wl_interface wl_callback_interface;
36 extern const struct wl_interface wl_data_device_interface;
37 extern const struct wl_interface wl_data_offer_interface;
38 extern const struct wl_interface wl_data_source_interface;
39 extern const struct wl_interface wl_keyboard_interface;
40 extern const struct wl_interface wl_output_interface;
41 extern const struct wl_interface wl_pointer_interface;
42 extern const struct wl_interface wl_region_interface;
43 extern const struct wl_interface wl_registry_interface;
44 extern const struct wl_interface wl_seat_interface;
45 extern const struct wl_interface wl_shell_surface_interface;
46 extern const struct wl_interface wl_shm_pool_interface;
47 extern const struct wl_interface wl_subsurface_interface;
48 extern const struct wl_interface wl_surface_interface;
49 extern const struct wl_interface wl_touch_interface;
50 
51 static const struct wl_interface *wayland_types[] = {
52 	NULL,
53 	NULL,
54 	NULL,
55 	NULL,
56 	NULL,
57 	NULL,
58 	NULL,
59 	NULL,
60 	&wl_callback_interface,
61 	&wl_registry_interface,
62 	&wl_surface_interface,
63 	&wl_region_interface,
64 	&wl_buffer_interface,
65 	NULL,
66 	NULL,
67 	NULL,
68 	NULL,
69 	NULL,
70 	&wl_shm_pool_interface,
71 	NULL,
72 	NULL,
73 	&wl_data_source_interface,
74 	&wl_surface_interface,
75 	&wl_surface_interface,
76 	NULL,
77 	&wl_data_source_interface,
78 	NULL,
79 	&wl_data_offer_interface,
80 	NULL,
81 	&wl_surface_interface,
82 	NULL,
83 	NULL,
84 	&wl_data_offer_interface,
85 	&wl_data_offer_interface,
86 	&wl_data_source_interface,
87 	&wl_data_device_interface,
88 	&wl_seat_interface,
89 	&wl_shell_surface_interface,
90 	&wl_surface_interface,
91 	&wl_seat_interface,
92 	NULL,
93 	&wl_seat_interface,
94 	NULL,
95 	NULL,
96 	&wl_surface_interface,
97 	NULL,
98 	NULL,
99 	NULL,
100 	NULL,
101 	NULL,
102 	&wl_output_interface,
103 	&wl_seat_interface,
104 	NULL,
105 	&wl_surface_interface,
106 	NULL,
107 	NULL,
108 	NULL,
109 	&wl_output_interface,
110 	&wl_buffer_interface,
111 	NULL,
112 	NULL,
113 	&wl_callback_interface,
114 	&wl_region_interface,
115 	&wl_region_interface,
116 	&wl_output_interface,
117 	&wl_output_interface,
118 	&wl_pointer_interface,
119 	&wl_keyboard_interface,
120 	&wl_touch_interface,
121 	NULL,
122 	&wl_surface_interface,
123 	NULL,
124 	NULL,
125 	NULL,
126 	&wl_surface_interface,
127 	NULL,
128 	NULL,
129 	NULL,
130 	&wl_surface_interface,
131 	NULL,
132 	&wl_surface_interface,
133 	NULL,
134 	NULL,
135 	&wl_surface_interface,
136 	NULL,
137 	NULL,
138 	&wl_surface_interface,
139 	NULL,
140 	NULL,
141 	NULL,
142 	&wl_subsurface_interface,
143 	&wl_surface_interface,
144 	&wl_surface_interface,
145 	&wl_surface_interface,
146 	&wl_surface_interface,
147 };
148 
149 static const struct wl_message wl_display_requests[] = {
150 	{ "sync", "n", wayland_types + 8 },
151 	{ "get_registry", "n", wayland_types + 9 },
152 };
153 
154 static const struct wl_message wl_display_events[] = {
155 	{ "error", "ous", wayland_types + 0 },
156 	{ "delete_id", "u", wayland_types + 0 },
157 };
158 
159 WL_EXPORT const struct wl_interface wl_display_interface = {
160 	"wl_display", 1,
161 	2, wl_display_requests,
162 	2, wl_display_events,
163 };
164 
165 static const struct wl_message wl_registry_requests[] = {
166 	{ "bind", "usun", wayland_types + 0 },
167 };
168 
169 static const struct wl_message wl_registry_events[] = {
170 	{ "global", "usu", wayland_types + 0 },
171 	{ "global_remove", "u", wayland_types + 0 },
172 };
173 
174 WL_EXPORT const struct wl_interface wl_registry_interface = {
175 	"wl_registry", 1,
176 	1, wl_registry_requests,
177 	2, wl_registry_events,
178 };
179 
180 static const struct wl_message wl_callback_events[] = {
181 	{ "done", "u", wayland_types + 0 },
182 };
183 
184 WL_EXPORT const struct wl_interface wl_callback_interface = {
185 	"wl_callback", 1,
186 	0, NULL,
187 	1, wl_callback_events,
188 };
189 
190 static const struct wl_message wl_compositor_requests[] = {
191 	{ "create_surface", "n", wayland_types + 10 },
192 	{ "create_region", "n", wayland_types + 11 },
193 };
194 
195 WL_EXPORT const struct wl_interface wl_compositor_interface = {
196 	"wl_compositor", 4,
197 	2, wl_compositor_requests,
198 	0, NULL,
199 };
200 
201 static const struct wl_message wl_shm_pool_requests[] = {
202 	{ "create_buffer", "niiiiu", wayland_types + 12 },
203 	{ "destroy", "", wayland_types + 0 },
204 	{ "resize", "i", wayland_types + 0 },
205 };
206 
207 WL_EXPORT const struct wl_interface wl_shm_pool_interface = {
208 	"wl_shm_pool", 1,
209 	3, wl_shm_pool_requests,
210 	0, NULL,
211 };
212 
213 static const struct wl_message wl_shm_requests[] = {
214 	{ "create_pool", "nhi", wayland_types + 18 },
215 };
216 
217 static const struct wl_message wl_shm_events[] = {
218 	{ "format", "u", wayland_types + 0 },
219 };
220 
221 WL_EXPORT const struct wl_interface wl_shm_interface = {
222 	"wl_shm", 1,
223 	1, wl_shm_requests,
224 	1, wl_shm_events,
225 };
226 
227 static const struct wl_message wl_buffer_requests[] = {
228 	{ "destroy", "", wayland_types + 0 },
229 };
230 
231 static const struct wl_message wl_buffer_events[] = {
232 	{ "release", "", wayland_types + 0 },
233 };
234 
235 WL_EXPORT const struct wl_interface wl_buffer_interface = {
236 	"wl_buffer", 1,
237 	1, wl_buffer_requests,
238 	1, wl_buffer_events,
239 };
240 
241 static const struct wl_message wl_data_offer_requests[] = {
242 	{ "accept", "u?s", wayland_types + 0 },
243 	{ "receive", "sh", wayland_types + 0 },
244 	{ "destroy", "", wayland_types + 0 },
245 	{ "finish", "3", wayland_types + 0 },
246 	{ "set_actions", "3uu", wayland_types + 0 },
247 };
248 
249 static const struct wl_message wl_data_offer_events[] = {
250 	{ "offer", "s", wayland_types + 0 },
251 	{ "source_actions", "3u", wayland_types + 0 },
252 	{ "action", "3u", wayland_types + 0 },
253 };
254 
255 WL_EXPORT const struct wl_interface wl_data_offer_interface = {
256 	"wl_data_offer", 3,
257 	5, wl_data_offer_requests,
258 	3, wl_data_offer_events,
259 };
260 
261 static const struct wl_message wl_data_source_requests[] = {
262 	{ "offer", "s", wayland_types + 0 },
263 	{ "destroy", "", wayland_types + 0 },
264 	{ "set_actions", "3u", wayland_types + 0 },
265 };
266 
267 static const struct wl_message wl_data_source_events[] = {
268 	{ "target", "?s", wayland_types + 0 },
269 	{ "send", "sh", wayland_types + 0 },
270 	{ "cancelled", "", wayland_types + 0 },
271 	{ "dnd_drop_performed", "3", wayland_types + 0 },
272 	{ "dnd_finished", "3", wayland_types + 0 },
273 	{ "action", "3u", wayland_types + 0 },
274 };
275 
276 WL_EXPORT const struct wl_interface wl_data_source_interface = {
277 	"wl_data_source", 3,
278 	3, wl_data_source_requests,
279 	6, wl_data_source_events,
280 };
281 
282 static const struct wl_message wl_data_device_requests[] = {
283 	{ "start_drag", "?oo?ou", wayland_types + 21 },
284 	{ "set_selection", "?ou", wayland_types + 25 },
285 	{ "release", "2", wayland_types + 0 },
286 };
287 
288 static const struct wl_message wl_data_device_events[] = {
289 	{ "data_offer", "n", wayland_types + 27 },
290 	{ "enter", "uoff?o", wayland_types + 28 },
291 	{ "leave", "", wayland_types + 0 },
292 	{ "motion", "uff", wayland_types + 0 },
293 	{ "drop", "", wayland_types + 0 },
294 	{ "selection", "?o", wayland_types + 33 },
295 };
296 
297 WL_EXPORT const struct wl_interface wl_data_device_interface = {
298 	"wl_data_device", 3,
299 	3, wl_data_device_requests,
300 	6, wl_data_device_events,
301 };
302 
303 static const struct wl_message wl_data_device_manager_requests[] = {
304 	{ "create_data_source", "n", wayland_types + 34 },
305 	{ "get_data_device", "no", wayland_types + 35 },
306 };
307 
308 WL_EXPORT const struct wl_interface wl_data_device_manager_interface = {
309 	"wl_data_device_manager", 3,
310 	2, wl_data_device_manager_requests,
311 	0, NULL,
312 };
313 
314 static const struct wl_message wl_shell_requests[] = {
315 	{ "get_shell_surface", "no", wayland_types + 37 },
316 };
317 
318 WL_EXPORT const struct wl_interface wl_shell_interface = {
319 	"wl_shell", 1,
320 	1, wl_shell_requests,
321 	0, NULL,
322 };
323 
324 static const struct wl_message wl_shell_surface_requests[] = {
325 	{ "pong", "u", wayland_types + 0 },
326 	{ "move", "ou", wayland_types + 39 },
327 	{ "resize", "ouu", wayland_types + 41 },
328 	{ "set_toplevel", "", wayland_types + 0 },
329 	{ "set_transient", "oiiu", wayland_types + 44 },
330 	{ "set_fullscreen", "uu?o", wayland_types + 48 },
331 	{ "set_popup", "ouoiiu", wayland_types + 51 },
332 	{ "set_maximized", "?o", wayland_types + 57 },
333 	{ "set_title", "s", wayland_types + 0 },
334 	{ "set_class", "s", wayland_types + 0 },
335 };
336 
337 static const struct wl_message wl_shell_surface_events[] = {
338 	{ "ping", "u", wayland_types + 0 },
339 	{ "configure", "uii", wayland_types + 0 },
340 	{ "popup_done", "", wayland_types + 0 },
341 };
342 
343 WL_EXPORT const struct wl_interface wl_shell_surface_interface = {
344 	"wl_shell_surface", 1,
345 	10, wl_shell_surface_requests,
346 	3, wl_shell_surface_events,
347 };
348 
349 static const struct wl_message wl_surface_requests[] = {
350 	{ "destroy", "", wayland_types + 0 },
351 	{ "attach", "?oii", wayland_types + 58 },
352 	{ "damage", "iiii", wayland_types + 0 },
353 	{ "frame", "n", wayland_types + 61 },
354 	{ "set_opaque_region", "?o", wayland_types + 62 },
355 	{ "set_input_region", "?o", wayland_types + 63 },
356 	{ "commit", "", wayland_types + 0 },
357 	{ "set_buffer_transform", "2i", wayland_types + 0 },
358 	{ "set_buffer_scale", "3i", wayland_types + 0 },
359 	{ "damage_buffer", "4iiii", wayland_types + 0 },
360 };
361 
362 static const struct wl_message wl_surface_events[] = {
363 	{ "enter", "o", wayland_types + 64 },
364 	{ "leave", "o", wayland_types + 65 },
365 };
366 
367 WL_EXPORT const struct wl_interface wl_surface_interface = {
368 	"wl_surface", 4,
369 	10, wl_surface_requests,
370 	2, wl_surface_events,
371 };
372 
373 static const struct wl_message wl_seat_requests[] = {
374 	{ "get_pointer", "n", wayland_types + 66 },
375 	{ "get_keyboard", "n", wayland_types + 67 },
376 	{ "get_touch", "n", wayland_types + 68 },
377 	{ "release", "5", wayland_types + 0 },
378 };
379 
380 static const struct wl_message wl_seat_events[] = {
381 	{ "capabilities", "u", wayland_types + 0 },
382 	{ "name", "2s", wayland_types + 0 },
383 };
384 
385 WL_EXPORT const struct wl_interface wl_seat_interface = {
386 	"wl_seat", 6,
387 	4, wl_seat_requests,
388 	2, wl_seat_events,
389 };
390 
391 static const struct wl_message wl_pointer_requests[] = {
392 	{ "set_cursor", "u?oii", wayland_types + 69 },
393 	{ "release", "3", wayland_types + 0 },
394 };
395 
396 static const struct wl_message wl_pointer_events[] = {
397 	{ "enter", "uoff", wayland_types + 73 },
398 	{ "leave", "uo", wayland_types + 77 },
399 	{ "motion", "uff", wayland_types + 0 },
400 	{ "button", "uuuu", wayland_types + 0 },
401 	{ "axis", "uuf", wayland_types + 0 },
402 	{ "frame", "5", wayland_types + 0 },
403 	{ "axis_source", "5u", wayland_types + 0 },
404 	{ "axis_stop", "5uu", wayland_types + 0 },
405 	{ "axis_discrete", "5ui", wayland_types + 0 },
406 };
407 
408 WL_EXPORT const struct wl_interface wl_pointer_interface = {
409 	"wl_pointer", 6,
410 	2, wl_pointer_requests,
411 	9, wl_pointer_events,
412 };
413 
414 static const struct wl_message wl_keyboard_requests[] = {
415 	{ "release", "3", wayland_types + 0 },
416 };
417 
418 static const struct wl_message wl_keyboard_events[] = {
419 	{ "keymap", "uhu", wayland_types + 0 },
420 	{ "enter", "uoa", wayland_types + 79 },
421 	{ "leave", "uo", wayland_types + 82 },
422 	{ "key", "uuuu", wayland_types + 0 },
423 	{ "modifiers", "uuuuu", wayland_types + 0 },
424 	{ "repeat_info", "4ii", wayland_types + 0 },
425 };
426 
427 WL_EXPORT const struct wl_interface wl_keyboard_interface = {
428 	"wl_keyboard", 6,
429 	1, wl_keyboard_requests,
430 	6, wl_keyboard_events,
431 };
432 
433 static const struct wl_message wl_touch_requests[] = {
434 	{ "release", "3", wayland_types + 0 },
435 };
436 
437 static const struct wl_message wl_touch_events[] = {
438 	{ "down", "uuoiff", wayland_types + 84 },
439 	{ "up", "uui", wayland_types + 0 },
440 	{ "motion", "uiff", wayland_types + 0 },
441 	{ "frame", "", wayland_types + 0 },
442 	{ "cancel", "", wayland_types + 0 },
443 	{ "shape", "6iff", wayland_types + 0 },
444 	{ "orientation", "6if", wayland_types + 0 },
445 };
446 
447 WL_EXPORT const struct wl_interface wl_touch_interface = {
448 	"wl_touch", 6,
449 	1, wl_touch_requests,
450 	7, wl_touch_events,
451 };
452 
453 static const struct wl_message wl_output_requests[] = {
454 	{ "release", "3", wayland_types + 0 },
455 };
456 
457 static const struct wl_message wl_output_events[] = {
458 	{ "geometry", "iiiiissi", wayland_types + 0 },
459 	{ "mode", "uiii", wayland_types + 0 },
460 	{ "done", "2", wayland_types + 0 },
461 	{ "scale", "2i", wayland_types + 0 },
462 };
463 
464 WL_EXPORT const struct wl_interface wl_output_interface = {
465 	"wl_output", 3,
466 	1, wl_output_requests,
467 	4, wl_output_events,
468 };
469 
470 static const struct wl_message wl_region_requests[] = {
471 	{ "destroy", "", wayland_types + 0 },
472 	{ "add", "iiii", wayland_types + 0 },
473 	{ "subtract", "iiii", wayland_types + 0 },
474 };
475 
476 WL_EXPORT const struct wl_interface wl_region_interface = {
477 	"wl_region", 1,
478 	3, wl_region_requests,
479 	0, NULL,
480 };
481 
482 static const struct wl_message wl_subcompositor_requests[] = {
483 	{ "destroy", "", wayland_types + 0 },
484 	{ "get_subsurface", "noo", wayland_types + 90 },
485 };
486 
487 WL_EXPORT const struct wl_interface wl_subcompositor_interface = {
488 	"wl_subcompositor", 1,
489 	2, wl_subcompositor_requests,
490 	0, NULL,
491 };
492 
493 static const struct wl_message wl_subsurface_requests[] = {
494 	{ "destroy", "", wayland_types + 0 },
495 	{ "set_position", "ii", wayland_types + 0 },
496 	{ "place_above", "o", wayland_types + 93 },
497 	{ "place_below", "o", wayland_types + 94 },
498 	{ "set_sync", "", wayland_types + 0 },
499 	{ "set_desync", "", wayland_types + 0 },
500 };
501 
502 WL_EXPORT const struct wl_interface wl_subsurface_interface = {
503 	"wl_subsurface", 1,
504 	6, wl_subsurface_requests,
505 	0, NULL,
506 };
507 
508