1 module glfw3.wayland;
2 
3 extern(C): nothrow: @nogc:
4 
5 // extensions
6 
7 struct zxdg_toplevel_decoration_v1_listener {
8 extern(C): nothrow: @nogc:
9 	void function(void* data, zxdg_toplevel_decoration_v1* decoration, uint mode) configure;
10 }
11 
12 struct xdg_toplevel_listener {
13 extern(C): nothrow: @nogc:
14 	void function(void* data, xdg_toplevel* toplevel, int width, int height, wl_array* states) configure;
15 	void function(void* data, xdg_toplevel* toplevel) close;
16 }
17 
18 struct xdg_surface_listener {
19 extern(C): nothrow: @nogc:
20 	void function(void* data, xdg_surface* surface, uint serial) configure;
21 }
22 
23 struct zwp_relative_pointer_v1_listener {
24 extern(C): nothrow: @nogc:
25 	void function(void* data, zwp_relative_pointer_v1* pointer, uint timeHi, uint timeLo, wl_fixed_t dx, wl_fixed_t dy, wl_fixed_t dxUnaccel, wl_fixed_t dyUnaccel) relativeMotion;
26 }
27 
28 struct zwp_locked_pointer_v1_listener {
29 extern(C): nothrow: @nogc:
30 	void function(void* data, zwp_locked_pointer_v1* lockedPointer) locked;
31 	void function(void* data, zwp_locked_pointer_v1* lockedPointer) unlocked;
32 }
33 
34 //
35 struct wl_buffer;
36 struct wl_callback;
37 struct wl_compositor;
38 struct wl_cursor_theme;
39 struct wl_data_device_manager;
40 struct wl_data_device;
41 struct wl_data_offer;
42 struct wl_data_source;
43 struct wl_display;
44 struct wl_egl_window;
45 struct wl_keyboard;
46 struct wl_output;
47 struct wl_pointer;
48 struct wl_region;
49 struct wl_registry;
50 struct wl_seat;
51 struct wl_shell_surface;
52 struct wl_shell;
53 struct wl_shm_pool;
54 struct wl_shm;
55 struct wl_subcompositor;
56 struct wl_subsurface;
57 struct wl_surface;
58 struct wl_touch;
59 struct wp_viewport;
60 struct wp_viewporter;
61 struct xdg_surface;
62 struct xdg_toplevel;
63 struct xdg_wm_base;
64 struct zwp_idle_inhibit_manager_v1;
65 struct zwp_idle_inhibitor_v1;
66 struct zwp_locked_pointer_v1;
67 struct zwp_pointer_constraints_v1;
68 struct zwp_relative_pointer_manager_v1;
69 struct zwp_relative_pointer_v1;
70 struct zxdg_decoration_manager_v1;
71 struct zxdg_toplevel_decoration_v1;
72 
73 alias wl_fixed_t = uint;
74 
75 pure @safe nothrow @nogc
76 pragma(inline, true) double wl_fixed_to_double(wl_fixed_t f) {
77 	static union U {
78 		double d;
79 		ulong i;
80 	}
81 	U u;
82 	u.i = ((1023L + 44L) << 52) + (1L << 51) + f;
83 	return u.d - (3L << 43);
84 }
85 
86 struct wl_array {
87 	size_t size;
88 	size_t alloc;
89 	void *data;
90 }
91 
92 enum wl_seat_capability {
93 	WL_SEAT_CAPABILITY_POINTER = 1,
94 	WL_SEAT_CAPABILITY_KEYBOARD = 2,
95 	WL_SEAT_CAPABILITY_TOUCH = 4,
96 }
97 enum WL_SEAT_CAPABILITY_POINTER = wl_seat_capability.WL_SEAT_CAPABILITY_POINTER;
98 enum WL_SEAT_CAPABILITY_KEYBOARD = wl_seat_capability.WL_SEAT_CAPABILITY_KEYBOARD;
99 enum WL_SEAT_CAPABILITY_TOUCH = wl_seat_capability.WL_SEAT_CAPABILITY_TOUCH;
100 
101 enum wl_output_mode {
102 	WL_OUTPUT_MODE_CURRENT = 0x1,
103 	WL_OUTPUT_MODE_PREFERRED = 0x2,
104 }
105 enum WL_OUTPUT_MODE_CURRENT = wl_output_mode.WL_OUTPUT_MODE_CURRENT;
106 enum WL_OUTPUT_MODE_PREFERRED = wl_output_mode.WL_OUTPUT_MODE_PREFERRED;
107 
108 enum wl_pointer_button_state {
109 	WL_POINTER_BUTTON_STATE_RELEASED = 0,
110 	WL_POINTER_BUTTON_STATE_PRESSED = 1,
111 }
112 enum WL_POINTER_BUTTON_STATE_RELEASED = wl_pointer_button_state.WL_POINTER_BUTTON_STATE_RELEASED;
113 enum WL_POINTER_BUTTON_STATE_PRESSED = wl_pointer_button_state.WL_POINTER_BUTTON_STATE_PRESSED;
114 
115 enum wl_keyboard_key_state {
116 	WL_KEYBOARD_KEY_STATE_RELEASED = 0,
117 	WL_KEYBOARD_KEY_STATE_PRESSED = 1,
118 }
119 enum WL_KEYBOARD_KEY_STATE_RELEASED = wl_keyboard_key_state.WL_KEYBOARD_KEY_STATE_RELEASED;
120 enum WL_KEYBOARD_KEY_STATE_PRESSED = wl_keyboard_key_state.WL_KEYBOARD_KEY_STATE_PRESSED;
121 
122 enum wl_pointer_axis {
123 	WL_POINTER_AXIS_VERTICAL_SCROLL = 0,
124 	WL_POINTER_AXIS_HORIZONTAL_SCROLL = 1,
125 }
126 enum WL_POINTER_AXIS_VERTICAL_SCROLL = wl_pointer_axis.WL_POINTER_AXIS_VERTICAL_SCROLL;
127 enum WL_POINTER_AXIS_HORIZONTAL_SCROLL = wl_pointer_axis.WL_POINTER_AXIS_HORIZONTAL_SCROLL;
128 
129 enum wl_keyboard_keymap_format {
130 	WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP = 0,
131 	WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1 = 1,
132 }
133 enum WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP = wl_keyboard_keymap_format.WL_KEYBOARD_KEYMAP_FORMAT_NO_KEYMAP;
134 enum WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1 = wl_keyboard_keymap_format.WL_KEYBOARD_KEYMAP_FORMAT_XKB_V1;
135 
136 struct wl_message {
137 	const(char)* name;
138 	const(char)* signature;
139 	const(wl_interface)** types;
140 }
141 
142 struct wl_interface {
143 	const char *name;
144 	int version_;
145 	int method_count;
146 	const(wl_message)* methods;
147 	int event_count;
148 	const(wl_message)* events;
149 }
150 
151 /*
152 wl_array_for_each(pos, array)
153 	for (pos = (array)->data;
154 	     (const char *) pos < ((const char *) (array)->data + (array)->size);
155 	     (pos)++)
156 */
157 
158 struct wl_pointer_listener {
159 	extern(C): @nogc: nothrow:
160 	void function(void* data, wl_pointer* wl_pointer, uint serial, wl_surface* surface, wl_fixed_t surface_x, wl_fixed_t surface_y) enter;
161 	void function(void* data, wl_pointer* wl_pointer, uint serial, wl_surface* surface) leave;
162 	void function(void* data, wl_pointer* wl_pointer, uint time, wl_fixed_t surface_x, wl_fixed_t surface_y) motion;
163 	void function(void* data, wl_pointer* wl_pointer, uint serial, uint time, uint button, uint state) button;
164 	void function(void* data, wl_pointer* wl_pointer, uint time, uint axis, wl_fixed_t value) axis;
165 	void function(void* data, wl_pointer* wl_pointer) frame;
166 	void function(void* data, wl_pointer* wl_pointer, uint axis_source) axis_source;
167 	void function(void* data, wl_pointer* wl_pointer, uint time, uint axis) axis_stop;
168 	void function(void* data, wl_pointer* wl_pointer, uint axis, int discrete) axis_discrete;
169 }
170 
171 struct wl_keyboard_listener {
172 	extern(C): @nogc: nothrow:
173 	void function(void* data, wl_keyboard* wl_keyboard, uint format, int fd, uint size) keymap;
174 	void function(void* data, wl_keyboard* wl_keyboard, uint serial, wl_surface* surface, wl_array* keys) enter;
175 	void function(void* data, wl_keyboard* wl_keyboard, uint serial, wl_surface* surface) leave;
176 	void function(void* data, wl_keyboard* wl_keyboard, uint serial, uint time, uint key, uint state) key;
177 	void function(void* data, wl_keyboard* wl_keyboard, uint serial, uint mods_depressed, uint mods_latched, uint mods_locked, uint group) modifiers;
178 	void function(void* data, wl_keyboard* wl_keyboard, int rate, int delay) repeat_info;
179 }
180 
181 struct wl_seat_listener {
182 	extern(C): @nogc: nothrow:
183 	void function(void* data, wl_seat* wl_seat, uint capabilities) capabilities;
184 	void function(void* data, wl_seat* wl_seat, const(char)* name) name;
185 }
186 struct wl_data_offer_listener {
187 	extern(C): @nogc: nothrow:
188 	void function(void* data, wl_data_offer* wl_data_offer, const(char)* mime_type) offer;
189 	void function(void* data, wl_data_offer* wl_data_offer, uint source_actions) source_actions;
190 	void function(void* data, wl_data_offer* wl_data_offer, uint dnd_action) action;
191 }
192 
193 struct wl_surface_listener {
194 	extern(C): @nogc: nothrow:
195 	void function(void* data, wl_surface* wl_surface, wl_output* output) enter;
196 	void function(void* data, wl_surface* wl_surface, wl_output* output) leave;
197 }
198 
199 struct wl_data_device_listener {
200 	extern(C): @nogc: nothrow:
201 	void function(void* data, wl_data_device* wl_data_device, wl_data_offer* id) data_offer;
202 	void function(void* data, wl_data_device* wl_data_device, uint serial, wl_surface* surface, wl_fixed_t x, wl_fixed_t y, wl_data_offer* id) enter;
203 	void function(void* data, wl_data_device* wl_data_device) leave;
204 	void function(void* data, wl_data_device* wl_data_device, uint time, wl_fixed_t x, wl_fixed_t y) motion;
205 	void function(void* data, wl_data_device* wl_data_device) drop;
206 	void function(void* data, wl_data_device* wl_data_device, wl_data_offer* id) selection;
207 }
208 
209 struct wl_registry_listener {
210 	extern(C): @nogc: nothrow:
211 	void function(void* data, wl_registry* wl_registry, uint name, const(char)* interface_, uint version_) global;
212 	void function(void* data, wl_registry* wl_registry, uint name) global_remove;
213 }
214 
215 struct wl_output_listener {
216 	extern(C): @nogc: nothrow:
217 	void function(void* data, wl_output* wl_output, int x, int y, int physical_width, int physical_height, int subpixel, const(char)* make, const(char)* model, int transform) geometry;
218 	void function(void* data, wl_output* wl_output, uint flags, int width, int height, int refresh) mode;
219 	void function(void* data, wl_output* wl_output) done;
220 	void function(void* data, wl_output* wl_output, int factor) scale;
221 }
222 struct wl_data_source_listener {
223 	extern(C): @nogc: nothrow:
224 	void function(void* data, wl_data_source* wl_data_source, const(char)* mime_type) target;
225 	void function(void* data, wl_data_source* wl_data_source, const(char)* mime_type, int fd) send;
226 	void function(void* data, wl_data_source* wl_data_source) cancelled;
227 	void function(void* data, wl_data_source* wl_data_source) dnd_drop_performed;
228 	void function(void* data, wl_data_source* wl_data_source) dnd_finished;
229 	void function(void* data, wl_data_source* wl_data_source, uint dnd_action) action;
230 }
231 
232 // note: I have no idea where this is defined in C headers, but this is how it's used in GLFW
233 struct xdg_wm_base_listener {
234 	extern(C): @nogc: nothrow:
235 	void function(void* data, xdg_wm_base* wmBase, uint serial) ping;
236 }
237 
238 struct wl_shell_surface_listener {
239 	extern(C): @nogc: nothrow:
240 	void function(void* data, wl_shell_surface* wl_shell_surface, uint serial) ping;
241 	void function(void* data, wl_shell_surface* wl_shell_surface, uint edges, int width, int height) configure;
242 	void function(void* data, wl_shell_surface* wl_shell_surface) popup_done;
243 }
244 
245 pragma(inline, true) static void* wl_registry_bind(wl_registry* wl_registry, uint name, const(wl_interface)* interface_, uint version_) {
246 	wl_proxy* id;
247 	id = wl_proxy_marshal_constructor_versioned(cast(wl_proxy*) wl_registry,
248 			 WL_REGISTRY_BIND, interface_, version_, name, interface_.name, version_, null);
249 
250 	return cast(void*) id;
251 }
252 
253 pragma(inline, true) static int wl_output_add_listener(wl_output* wl_output, const(wl_output_listener)* listener, void* data) {
254 	return wl_proxy_add_listener(cast(wl_proxy*) wl_output,
255 				     cast(void function()) listener, data);
256 }
257 
258 pragma(inline, true) static void wl_output_destroy(wl_output* wl_output) {
259 	wl_proxy_destroy(cast(wl_proxy*) wl_output);
260 }
261 
262 extern const wl_interface wl_display_interface;
263 extern const wl_interface wl_registry_interface;
264 extern const wl_interface wl_callback_interface;
265 extern const wl_interface wl_compositor_interface;
266 extern const wl_interface wl_shm_pool_interface;
267 extern const wl_interface wl_shm_interface;
268 extern const wl_interface wl_buffer_interface;
269 extern const wl_interface wl_data_offer_interface;
270 extern const wl_interface wl_data_source_interface;
271 extern const wl_interface wl_data_device_interface;
272 extern const wl_interface wl_data_device_manager_interface;
273 extern const wl_interface wl_shell_interface;
274 extern const wl_interface wl_shell_surface_interface;
275 extern const wl_interface wl_surface_interface;
276 extern const wl_interface wl_seat_interface;
277 extern const wl_interface wl_pointer_interface;
278 extern const wl_interface wl_keyboard_interface;
279 extern const wl_interface wl_touch_interface;
280 extern const wl_interface wl_output_interface;
281 extern const wl_interface wl_region_interface;
282 extern const wl_interface wl_subcompositor_interface;
283 extern const wl_interface wl_subsurface_interface;
284 
285 enum /*wl_shell_surface_resize*/ {
286 	WL_SHELL_SURFACE_RESIZE_NONE = 0,
287 	WL_SHELL_SURFACE_RESIZE_TOP = 1,
288 	WL_SHELL_SURFACE_RESIZE_BOTTOM = 2,
289 	WL_SHELL_SURFACE_RESIZE_LEFT = 4,
290 	WL_SHELL_SURFACE_RESIZE_TOP_LEFT = 5,
291 	WL_SHELL_SURFACE_RESIZE_BOTTOM_LEFT = 6,
292 	WL_SHELL_SURFACE_RESIZE_RIGHT = 8,
293 	WL_SHELL_SURFACE_RESIZE_TOP_RIGHT = 9,
294 	WL_SHELL_SURFACE_RESIZE_BOTTOM_RIGHT = 10,
295 }
296 
297 // Bulk
298 enum wl_display_error {
299 	WL_DISPLAY_ERROR_INVALID_OBJECT = 0,
300 	WL_DISPLAY_ERROR_INVALID_METHOD = 1,
301 	WL_DISPLAY_ERROR_NO_MEMORY = 2,
302 }
303 struct wl_display_listener {
304 	void function(void* data, wl_display* wl_display, void* object_id, uint code, const(char)* message) error;
305 	void function(void* data, wl_display* wl_display, uint id) delete_id;
306 }
307 pragma(inline, true) static int wl_display_add_listener(wl_display* wl_display, const(wl_display_listener)* listener, void* data) {
308 	return wl_proxy_add_listener(cast(wl_proxy*) wl_display,
309 				     cast(void function()) listener, data);
310 }
311 enum WL_DISPLAY_SYNC = 0;
312 enum WL_DISPLAY_GET_REGISTRY = 1;
313 enum WL_DISPLAY_ERROR_SINCE_VERSION = 1;
314 enum WL_DISPLAY_DELETE_ID_SINCE_VERSION = 1;
315 enum WL_DISPLAY_SYNC_SINCE_VERSION = 1;
316 enum WL_DISPLAY_GET_REGISTRY_SINCE_VERSION = 1;
317 
318 pragma(inline, true) static void wl_display_set_user_data(wl_display* wl_display, void* user_data) {
319 	wl_proxy_set_user_data(cast(wl_proxy*) wl_display, user_data);
320 }
321 pragma(inline, true) static void* wl_display_get_user_data(wl_display* wl_display) {
322 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_display);
323 }
324 pragma(inline, true) static uint wl_display_get_version(wl_display* wl_display) {
325 	return wl_proxy_get_version(cast(wl_proxy*) wl_display);
326 }
327 pragma(inline, true) static wl_callback* wl_display_sync(wl_display* wl_display) {
328 	wl_proxy* callback;
329 	callback = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_display,
330 			 WL_DISPLAY_SYNC, &wl_callback_interface, null);
331 	return cast(wl_callback*) callback;
332 }
333 pragma(inline, true) static wl_registry* wl_display_get_registry(wl_display* wl_display) {
334 	wl_proxy* registry;
335 	registry = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_display,
336 			 WL_DISPLAY_GET_REGISTRY, &wl_registry_interface, null);
337 	return cast(wl_registry*) registry;
338 }
339 pragma(inline, true) static int wl_registry_add_listener(wl_registry* wl_registry, const(wl_registry_listener)* listener, void* data) {
340 	return wl_proxy_add_listener(cast(wl_proxy*) wl_registry,
341 				     cast(void function()) listener, data);
342 }
343 enum WL_REGISTRY_BIND = 0;
344 enum WL_REGISTRY_GLOBAL_SINCE_VERSION = 1;
345 enum WL_REGISTRY_GLOBAL_REMOVE_SINCE_VERSION = 1;
346 enum WL_REGISTRY_BIND_SINCE_VERSION = 1;
347 
348 pragma(inline, true) static void wl_registry_set_user_data(wl_registry* wl_registry, void* user_data) {
349 	wl_proxy_set_user_data(cast(wl_proxy*) wl_registry, user_data);
350 }
351 pragma(inline, true) static void* wl_registry_get_user_data(wl_registry* wl_registry) {
352 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_registry);
353 }
354 pragma(inline, true) static uint wl_registry_get_version(wl_registry* wl_registry) {
355 	return wl_proxy_get_version(cast(wl_proxy*) wl_registry);
356 }
357 
358 pragma(inline, true) static void wl_registry_destroy(wl_registry* wl_registry) {
359 	wl_proxy_destroy(cast(wl_proxy*) wl_registry);
360 }
361 struct wl_callback_listener {
362 	void function(void* data, wl_callback* wl_callback, uint callback_data) done;
363 }
364 pragma(inline, true) static int wl_callback_add_listener(wl_callback* wl_callback, const(wl_callback_listener)* listener, void* data) {
365 	return wl_proxy_add_listener(cast(wl_proxy*) wl_callback,
366 				     cast(void function()) listener, data);
367 }
368 enum WL_CALLBACK_DONE_SINCE_VERSION = 1;
369 
370 pragma(inline, true) static void wl_callback_set_user_data(wl_callback* wl_callback, void* user_data) {
371 	wl_proxy_set_user_data(cast(wl_proxy*) wl_callback, user_data);
372 }
373 pragma(inline, true) static void* wl_callback_get_user_data(wl_callback* wl_callback) {
374 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_callback);
375 }
376 pragma(inline, true) static uint wl_callback_get_version(wl_callback* wl_callback) {
377 	return wl_proxy_get_version(cast(wl_proxy*) wl_callback);
378 }
379 pragma(inline, true) static void wl_callback_destroy(wl_callback* wl_callback) {
380 	wl_proxy_destroy(cast(wl_proxy*) wl_callback);
381 }
382 enum WL_COMPOSITOR_CREATE_SURFACE = 0;
383 enum WL_COMPOSITOR_CREATE_REGION = 1;
384 enum WL_COMPOSITOR_CREATE_SURFACE_SINCE_VERSION = 1;
385 enum WL_COMPOSITOR_CREATE_REGION_SINCE_VERSION = 1;
386 
387 pragma(inline, true) static void wl_compositor_set_user_data(wl_compositor* wl_compositor, void* user_data) {
388 	wl_proxy_set_user_data(cast(wl_proxy*) wl_compositor, user_data);
389 }
390 pragma(inline, true) static void* wl_compositor_get_user_data(wl_compositor* wl_compositor) {
391 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_compositor);
392 }
393 pragma(inline, true) static uint wl_compositor_get_version(wl_compositor* wl_compositor) {
394 	return wl_proxy_get_version(cast(wl_proxy*) wl_compositor);
395 }
396 pragma(inline, true) static void wl_compositor_destroy(wl_compositor* wl_compositor) {
397 	wl_proxy_destroy(cast(wl_proxy*) wl_compositor);
398 }
399 pragma(inline, true) static wl_surface* wl_compositor_create_surface(wl_compositor* wl_compositor) {
400 	wl_proxy* id;
401 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_compositor,
402 			 WL_COMPOSITOR_CREATE_SURFACE, &wl_surface_interface, null);
403 	return cast(wl_surface*) id;
404 }
405 pragma(inline, true) static wl_region* wl_compositor_create_region(wl_compositor* wl_compositor) {
406 	wl_proxy* id;
407 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_compositor,
408 			 WL_COMPOSITOR_CREATE_REGION, &wl_region_interface, null);
409 	return cast(wl_region*) id;
410 }
411 enum WL_SHM_POOL_CREATE_BUFFER = 0;
412 enum WL_SHM_POOL_DESTROY = 1;
413 enum WL_SHM_POOL_RESIZE = 2;
414 enum WL_SHM_POOL_CREATE_BUFFER_SINCE_VERSION = 1;
415 enum WL_SHM_POOL_DESTROY_SINCE_VERSION = 1;
416 enum WL_SHM_POOL_RESIZE_SINCE_VERSION = 1;
417 
418 pragma(inline, true) static void wl_shm_pool_set_user_data(wl_shm_pool* wl_shm_pool, void* user_data) {
419 	wl_proxy_set_user_data(cast(wl_proxy*) wl_shm_pool, user_data);
420 }
421 pragma(inline, true) static void* wl_shm_pool_get_user_data(wl_shm_pool* wl_shm_pool) {
422 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_shm_pool);
423 }
424 pragma(inline, true) static uint wl_shm_pool_get_version(wl_shm_pool* wl_shm_pool) {
425 	return wl_proxy_get_version(cast(wl_proxy*) wl_shm_pool);
426 }
427 pragma(inline, true) static wl_buffer* wl_shm_pool_create_buffer(wl_shm_pool* wl_shm_pool, int offset, int width, int height, int stride, uint format) {
428 	wl_proxy* id;
429 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_shm_pool,
430 			 WL_SHM_POOL_CREATE_BUFFER, &wl_buffer_interface, null, offset, width, height, stride, format);
431 	return cast(wl_buffer*) id;
432 }
433 pragma(inline, true) static void wl_shm_pool_destroy(wl_shm_pool* wl_shm_pool) {
434 	wl_proxy_marshal(cast(wl_proxy*) wl_shm_pool,
435 			 WL_SHM_POOL_DESTROY);
436 	wl_proxy_destroy(cast(wl_proxy*) wl_shm_pool);
437 }
438 pragma(inline, true) static void wl_shm_pool_resize(wl_shm_pool* wl_shm_pool, int size) {
439 	wl_proxy_marshal(cast(wl_proxy*) wl_shm_pool, WL_SHM_POOL_RESIZE, size);
440 }
441 enum wl_shm_error {
442 	WL_SHM_ERROR_INVALID_FORMAT = 0,
443 	WL_SHM_ERROR_INVALID_STRIDE = 1,
444 	WL_SHM_ERROR_INVALID_FD = 2,
445 }
446 enum wl_shm_format {
447 	WL_SHM_FORMAT_ARGB8888 = 0,
448 	WL_SHM_FORMAT_XRGB8888 = 1,
449 	WL_SHM_FORMAT_C8 = 0x20203843,
450 	WL_SHM_FORMAT_RGB332 = 0x38424752,
451 	WL_SHM_FORMAT_BGR233 = 0x38524742,
452 	WL_SHM_FORMAT_XRGB4444 = 0x32315258,
453 	WL_SHM_FORMAT_XBGR4444 = 0x32314258,
454 	WL_SHM_FORMAT_RGBX4444 = 0x32315852,
455 	WL_SHM_FORMAT_BGRX4444 = 0x32315842,
456 	WL_SHM_FORMAT_ARGB4444 = 0x32315241,
457 	WL_SHM_FORMAT_ABGR4444 = 0x32314241,
458 	WL_SHM_FORMAT_RGBA4444 = 0x32314152,
459 	WL_SHM_FORMAT_BGRA4444 = 0x32314142,
460 	WL_SHM_FORMAT_XRGB1555 = 0x35315258,
461 	WL_SHM_FORMAT_XBGR1555 = 0x35314258,
462 	WL_SHM_FORMAT_RGBX5551 = 0x35315852,
463 	WL_SHM_FORMAT_BGRX5551 = 0x35315842,
464 	WL_SHM_FORMAT_ARGB1555 = 0x35315241,
465 	WL_SHM_FORMAT_ABGR1555 = 0x35314241,
466 	WL_SHM_FORMAT_RGBA5551 = 0x35314152,
467 	WL_SHM_FORMAT_BGRA5551 = 0x35314142,
468 	WL_SHM_FORMAT_RGB565 = 0x36314752,
469 	WL_SHM_FORMAT_BGR565 = 0x36314742,
470 	WL_SHM_FORMAT_RGB888 = 0x34324752,
471 	WL_SHM_FORMAT_BGR888 = 0x34324742,
472 	WL_SHM_FORMAT_XBGR8888 = 0x34324258,
473 	WL_SHM_FORMAT_RGBX8888 = 0x34325852,
474 	WL_SHM_FORMAT_BGRX8888 = 0x34325842,
475 	WL_SHM_FORMAT_ABGR8888 = 0x34324241,
476 	WL_SHM_FORMAT_RGBA8888 = 0x34324152,
477 	WL_SHM_FORMAT_BGRA8888 = 0x34324142,
478 	WL_SHM_FORMAT_XRGB2101010 = 0x30335258,
479 	WL_SHM_FORMAT_XBGR2101010 = 0x30334258,
480 	WL_SHM_FORMAT_RGBX1010102 = 0x30335852,
481 	WL_SHM_FORMAT_BGRX1010102 = 0x30335842,
482 	WL_SHM_FORMAT_ARGB2101010 = 0x30335241,
483 	WL_SHM_FORMAT_ABGR2101010 = 0x30334241,
484 	WL_SHM_FORMAT_RGBA1010102 = 0x30334152,
485 	WL_SHM_FORMAT_BGRA1010102 = 0x30334142,
486 	WL_SHM_FORMAT_YUYV = 0x56595559,
487 	WL_SHM_FORMAT_YVYU = 0x55595659,
488 	WL_SHM_FORMAT_UYVY = 0x59565955,
489 	WL_SHM_FORMAT_VYUY = 0x59555956,
490 	WL_SHM_FORMAT_AYUV = 0x56555941,
491 	WL_SHM_FORMAT_NV12 = 0x3231564e,
492 	WL_SHM_FORMAT_NV21 = 0x3132564e,
493 	WL_SHM_FORMAT_NV16 = 0x3631564e,
494 	WL_SHM_FORMAT_NV61 = 0x3136564e,
495 	WL_SHM_FORMAT_YUV410 = 0x39565559,
496 	WL_SHM_FORMAT_YVU410 = 0x39555659,
497 	WL_SHM_FORMAT_YUV411 = 0x31315559,
498 	WL_SHM_FORMAT_YVU411 = 0x31315659,
499 	WL_SHM_FORMAT_YUV420 = 0x32315559,
500 	WL_SHM_FORMAT_YVU420 = 0x32315659,
501 	WL_SHM_FORMAT_YUV422 = 0x36315559,
502 	WL_SHM_FORMAT_YVU422 = 0x36315659,
503 	WL_SHM_FORMAT_YUV444 = 0x34325559,
504 	WL_SHM_FORMAT_YVU444 = 0x34325659,
505 }
506 struct wl_shm_listener {
507 	void function(void* data, wl_shm* wl_shm, uint format) format;
508 };
509 pragma(inline, true) static int wl_shm_add_listener(wl_shm* wl_shm, const(wl_shm_listener)* listener, void* data) {
510 	return wl_proxy_add_listener(cast(wl_proxy*) wl_shm, cast(void function()) listener, data);
511 }
512 enum WL_SHM_CREATE_POOL = 0;
513 enum WL_SHM_FORMAT_SINCE_VERSION = 1;
514 enum WL_SHM_CREATE_POOL_SINCE_VERSION = 1;
515 
516 pragma(inline, true) static void wl_shm_set_user_data(wl_shm* wl_shm, void* user_data) {
517 	wl_proxy_set_user_data(cast(wl_proxy*) wl_shm, user_data);
518 }
519 pragma(inline, true) static void* wl_shm_get_user_data(wl_shm* wl_shm) {
520 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_shm);
521 }
522 pragma(inline, true) static uint wl_shm_get_version(wl_shm* wl_shm) {
523 	return wl_proxy_get_version(cast(wl_proxy*) wl_shm);
524 }
525 pragma(inline, true) static void wl_shm_destroy(wl_shm* wl_shm) {
526 	wl_proxy_destroy(cast(wl_proxy*) wl_shm);
527 }
528 pragma(inline, true) static wl_shm_pool* wl_shm_create_pool(wl_shm* wl_shm, int fd, int size) {
529 	wl_proxy* id;
530 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_shm,
531 			 WL_SHM_CREATE_POOL, &wl_shm_pool_interface, null, fd, size);
532 	return cast(wl_shm_pool*) id;
533 }
534 struct wl_buffer_listener {
535 	void function(void* data, wl_buffer* wl_buffer) release;
536 };
537 pragma(inline, true) static int wl_buffer_add_listener(wl_buffer* wl_buffer, const(wl_buffer_listener)* listener, void* data) {
538 	return wl_proxy_add_listener(cast(wl_proxy*) wl_buffer,
539 				     cast(void function()) listener, data);
540 }
541 enum WL_BUFFER_DESTROY = 0;
542 enum WL_BUFFER_RELEASE_SINCE_VERSION = 1;
543 enum WL_BUFFER_DESTROY_SINCE_VERSION = 1;
544 pragma(inline, true) static void wl_buffer_set_user_data(wl_buffer* wl_buffer, void* user_data) {
545 	wl_proxy_set_user_data(cast(wl_proxy*) wl_buffer, user_data);
546 }
547 pragma(inline, true) static void* wl_buffer_get_user_data(wl_buffer* wl_buffer) {
548 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_buffer);
549 }
550 pragma(inline, true) static uint wl_buffer_get_version(wl_buffer* wl_buffer) {
551 	return wl_proxy_get_version(cast(wl_proxy*) wl_buffer);
552 }
553 pragma(inline, true) static void wl_buffer_destroy(wl_buffer* wl_buffer) {
554 	wl_proxy_marshal(cast(wl_proxy*) wl_buffer,
555 			 WL_BUFFER_DESTROY);
556 	wl_proxy_destroy(cast(wl_proxy*) wl_buffer);
557 }
558 enum wl_data_offer_error {
559 	WL_DATA_OFFER_ERROR_INVALID_FINISH = 0,
560 	WL_DATA_OFFER_ERROR_INVALID_ACTION_MASK = 1,
561 	WL_DATA_OFFER_ERROR_INVALID_ACTION = 2,
562 	WL_DATA_OFFER_ERROR_INVALID_OFFER = 3,
563 }
564 pragma(inline, true) static int wl_data_offer_add_listener(wl_data_offer* wl_data_offer, const(wl_data_offer_listener)* listener, void* data) {
565 	return wl_proxy_add_listener(cast(wl_proxy*) wl_data_offer,
566 				     cast(void function()) listener, data);
567 }
568 enum WL_DATA_OFFER_ACCEPT = 0;
569 enum WL_DATA_OFFER_RECEIVE = 1;
570 enum WL_DATA_OFFER_DESTROY = 2;
571 enum WL_DATA_OFFER_FINISH = 3;
572 enum WL_DATA_OFFER_SET_ACTIONS = 4;
573 enum WL_DATA_OFFER_OFFER_SINCE_VERSION = 1;
574 enum WL_DATA_OFFER_SOURCE_ACTIONS_SINCE_VERSION = 3;
575 enum WL_DATA_OFFER_ACTION_SINCE_VERSION = 3;
576 enum WL_DATA_OFFER_ACCEPT_SINCE_VERSION = 1;
577 enum WL_DATA_OFFER_RECEIVE_SINCE_VERSION = 1;
578 enum WL_DATA_OFFER_DESTROY_SINCE_VERSION = 1;
579 enum WL_DATA_OFFER_FINISH_SINCE_VERSION = 3;
580 enum WL_DATA_OFFER_SET_ACTIONS_SINCE_VERSION = 3;
581 pragma(inline, true) static void wl_data_offer_set_user_data(wl_data_offer* wl_data_offer, void* user_data) {
582 	wl_proxy_set_user_data(cast(wl_proxy*) wl_data_offer, user_data);
583 }
584 pragma(inline, true) static void* wl_data_offer_get_user_data(wl_data_offer* wl_data_offer) {
585 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_data_offer);
586 }
587 pragma(inline, true) static uint wl_data_offer_get_version(wl_data_offer* wl_data_offer) {
588 	return wl_proxy_get_version(cast(wl_proxy*) wl_data_offer);
589 }
590 pragma(inline, true) static void wl_data_offer_accept(wl_data_offer* wl_data_offer, uint serial, const(char)* mime_type) {
591 	wl_proxy_marshal(cast(wl_proxy*) wl_data_offer,
592 			 WL_DATA_OFFER_ACCEPT, serial, mime_type);
593 }
594 pragma(inline, true) static void wl_data_offer_receive(wl_data_offer* wl_data_offer, const(char)* mime_type, int fd) {
595 	wl_proxy_marshal(cast(wl_proxy*) wl_data_offer,
596 			 WL_DATA_OFFER_RECEIVE, mime_type, fd);
597 }
598 pragma(inline, true) static void wl_data_offer_destroy(wl_data_offer* wl_data_offer) {
599 	wl_proxy_marshal(cast(wl_proxy*) wl_data_offer,
600 			 WL_DATA_OFFER_DESTROY);
601 	wl_proxy_destroy(cast(wl_proxy*) wl_data_offer);
602 }
603 pragma(inline, true) static void wl_data_offer_finish(wl_data_offer* wl_data_offer) {
604 	wl_proxy_marshal(cast(wl_proxy*) wl_data_offer,
605 			 WL_DATA_OFFER_FINISH);
606 }
607 pragma(inline, true) static void wl_data_offer_set_actions(wl_data_offer* wl_data_offer, uint dnd_actions, uint preferred_action) {
608 	wl_proxy_marshal(cast(wl_proxy*) wl_data_offer,
609 			 WL_DATA_OFFER_SET_ACTIONS, dnd_actions, preferred_action);
610 }
611 enum wl_data_source_error {
612 	WL_DATA_SOURCE_ERROR_INVALID_ACTION_MASK = 0,
613 	WL_DATA_SOURCE_ERROR_INVALID_SOURCE = 1,
614 }
615 pragma(inline, true) static int wl_data_source_add_listener(wl_data_source* wl_data_source, const(wl_data_source_listener)* listener, void* data) {
616 	return wl_proxy_add_listener(cast(wl_proxy*) wl_data_source,
617 				     cast(void function()) listener, data);
618 }
619 enum WL_DATA_SOURCE_OFFER = 0;
620 enum WL_DATA_SOURCE_DESTROY = 1;
621 enum WL_DATA_SOURCE_SET_ACTIONS = 2;
622 enum WL_DATA_SOURCE_TARGET_SINCE_VERSION = 1;
623 enum WL_DATA_SOURCE_SEND_SINCE_VERSION = 1;
624 enum WL_DATA_SOURCE_CANCELLED_SINCE_VERSION = 1;
625 enum WL_DATA_SOURCE_DND_DROP_PERFORMED_SINCE_VERSION = 3;
626 enum WL_DATA_SOURCE_DND_FINISHED_SINCE_VERSION = 3;
627 enum WL_DATA_SOURCE_ACTION_SINCE_VERSION = 3;
628 enum WL_DATA_SOURCE_OFFER_SINCE_VERSION = 1;
629 enum WL_DATA_SOURCE_DESTROY_SINCE_VERSION = 1;
630 enum WL_DATA_SOURCE_SET_ACTIONS_SINCE_VERSION = 3;
631 pragma(inline, true) static void wl_data_source_set_user_data(wl_data_source* wl_data_source, void* user_data) {
632 	wl_proxy_set_user_data(cast(wl_proxy*) wl_data_source, user_data);
633 }
634 pragma(inline, true) static void* wl_data_source_get_user_data(wl_data_source* wl_data_source) {
635 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_data_source);
636 }
637 pragma(inline, true) static uint wl_data_source_get_version(wl_data_source* wl_data_source) {
638 	return wl_proxy_get_version(cast(wl_proxy*) wl_data_source);
639 }
640 pragma(inline, true) static void wl_data_source_offer(wl_data_source* wl_data_source, const(char)* mime_type) {
641 	wl_proxy_marshal(cast(wl_proxy*) wl_data_source,
642 			 WL_DATA_SOURCE_OFFER, mime_type);
643 }
644 pragma(inline, true) static void wl_data_source_destroy(wl_data_source* wl_data_source) {
645 	wl_proxy_marshal(cast(wl_proxy*) wl_data_source,
646 			 WL_DATA_SOURCE_DESTROY);
647 	wl_proxy_destroy(cast(wl_proxy*) wl_data_source);
648 }
649 pragma(inline, true) static void wl_data_source_set_actions(wl_data_source* wl_data_source, uint dnd_actions) {
650 	wl_proxy_marshal(cast(wl_proxy*) wl_data_source,
651 			 WL_DATA_SOURCE_SET_ACTIONS, dnd_actions);
652 }
653 enum wl_data_device_error {
654 	WL_DATA_DEVICE_ERROR_ROLE = 0,
655 }
656 pragma(inline, true) static int wl_data_device_add_listener(wl_data_device* wl_data_device, const(wl_data_device_listener)* listener, void* data) {
657 	return wl_proxy_add_listener(cast(wl_proxy*) wl_data_device,
658 				     cast(void function()) listener, data);
659 }
660 enum WL_DATA_DEVICE_START_DRAG = 0;
661 enum WL_DATA_DEVICE_SET_SELECTION = 1;
662 enum WL_DATA_DEVICE_RELEASE = 2;
663 enum WL_DATA_DEVICE_DATA_OFFER_SINCE_VERSION = 1;
664 enum WL_DATA_DEVICE_ENTER_SINCE_VERSION = 1;
665 enum WL_DATA_DEVICE_LEAVE_SINCE_VERSION = 1;
666 enum WL_DATA_DEVICE_MOTION_SINCE_VERSION = 1;
667 enum WL_DATA_DEVICE_DROP_SINCE_VERSION = 1;
668 enum WL_DATA_DEVICE_SELECTION_SINCE_VERSION = 1;
669 enum WL_DATA_DEVICE_START_DRAG_SINCE_VERSION = 1;
670 enum WL_DATA_DEVICE_SET_SELECTION_SINCE_VERSION = 1;
671 enum WL_DATA_DEVICE_RELEASE_SINCE_VERSION = 2;
672 pragma(inline, true) static void wl_data_device_set_user_data(wl_data_device* wl_data_device, void* user_data) {
673 	wl_proxy_set_user_data(cast(wl_proxy*) wl_data_device, user_data);
674 }
675 pragma(inline, true) static void* wl_data_device_get_user_data(wl_data_device* wl_data_device) {
676 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_data_device);
677 }
678 pragma(inline, true) static uint wl_data_device_get_version(wl_data_device* wl_data_device) {
679 	return wl_proxy_get_version(cast(wl_proxy*) wl_data_device);
680 }
681 pragma(inline, true) static void wl_data_device_destroy(wl_data_device* wl_data_device) {
682 	wl_proxy_destroy(cast(wl_proxy*) wl_data_device);
683 }
684 pragma(inline, true) static void wl_data_device_start_drag(wl_data_device* wl_data_device, wl_data_source* source, wl_surface* origin, wl_surface* icon, uint serial) {
685 	wl_proxy_marshal(cast(wl_proxy*) wl_data_device,
686 			 WL_DATA_DEVICE_START_DRAG, source, origin, icon, serial);
687 }
688 pragma(inline, true) static void wl_data_device_set_selection(wl_data_device* wl_data_device, wl_data_source* source, uint serial) {
689 	wl_proxy_marshal(cast(wl_proxy*) wl_data_device,
690 			 WL_DATA_DEVICE_SET_SELECTION, source, serial);
691 }
692 pragma(inline, true) static void wl_data_device_release(wl_data_device* wl_data_device) {
693 	wl_proxy_marshal(cast(wl_proxy*) wl_data_device,
694 			 WL_DATA_DEVICE_RELEASE);
695 	wl_proxy_destroy(cast(wl_proxy*) wl_data_device);
696 }
697 enum wl_data_device_manager_dnd_action {
698 	WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE = 0,
699 	WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY = 1,
700 	WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE = 2,
701 	WL_DATA_DEVICE_MANAGER_DND_ACTION_ASK = 4,
702 }
703 enum WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE = 0;
704 enum WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE = 1;
705 enum WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE_SINCE_VERSION = 1;
706 enum WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE_SINCE_VERSION = 1;
707 pragma(inline, true) static void wl_data_device_manager_set_user_data(wl_data_device_manager* wl_data_device_manager, void* user_data) {
708 	wl_proxy_set_user_data(cast(wl_proxy*) wl_data_device_manager, user_data);
709 }
710 pragma(inline, true) static void* wl_data_device_manager_get_user_data(wl_data_device_manager* wl_data_device_manager) {
711 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_data_device_manager);
712 }
713 pragma(inline, true) static uint wl_data_device_manager_get_version(wl_data_device_manager* wl_data_device_manager) {
714 	return wl_proxy_get_version(cast(wl_proxy*) wl_data_device_manager);
715 }
716 pragma(inline, true) static void wl_data_device_manager_destroy(wl_data_device_manager* wl_data_device_manager) {
717 	wl_proxy_destroy(cast(wl_proxy*) wl_data_device_manager);
718 }
719 pragma(inline, true) static wl_data_source* wl_data_device_manager_create_data_source(wl_data_device_manager* wl_data_device_manager) {
720 	wl_proxy* id;
721 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_data_device_manager,
722 			 WL_DATA_DEVICE_MANAGER_CREATE_DATA_SOURCE, &wl_data_source_interface, null);
723 	return cast(wl_data_source*) id;
724 }
725 pragma(inline, true) static wl_data_device* wl_data_device_manager_get_data_device(wl_data_device_manager* wl_data_device_manager, wl_seat* seat) {
726 	wl_proxy* id;
727 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_data_device_manager,
728 			 WL_DATA_DEVICE_MANAGER_GET_DATA_DEVICE, &wl_data_device_interface, null, seat);
729 	return cast(wl_data_device*) id;
730 }
731 enum wl_shell_error {
732 	WL_SHELL_ERROR_ROLE = 0,
733 }
734 enum WL_SHELL_GET_SHELL_SURFACE = 0;
735 enum WL_SHELL_GET_SHELL_SURFACE_SINCE_VERSION = 1;
736 pragma(inline, true) static void wl_shell_set_user_data(wl_shell* wl_shell, void* user_data) {
737 	wl_proxy_set_user_data(cast(wl_proxy*) wl_shell, user_data);
738 }
739 pragma(inline, true) static void* wl_shell_get_user_data(wl_shell* wl_shell) {
740 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_shell);
741 }
742 pragma(inline, true) static uint wl_shell_get_version(wl_shell* wl_shell) {
743 	return wl_proxy_get_version(cast(wl_proxy*) wl_shell);
744 }
745 pragma(inline, true) static void wl_shell_destroy(wl_shell* wl_shell) {
746 	wl_proxy_destroy(cast(wl_proxy*) wl_shell);
747 }
748 pragma(inline, true) static wl_shell_surface* wl_shell_get_shell_surface(wl_shell* wl_shell, wl_surface* surface) {
749 	wl_proxy* id;
750 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_shell,
751 			 WL_SHELL_GET_SHELL_SURFACE, &wl_shell_surface_interface, null, surface);
752 	return cast(wl_shell_surface*) id;
753 }
754 enum /*wl_shell_surface_transient*/ {
755 	WL_SHELL_SURFACE_TRANSIENT_INACTIVE = 0x1,
756 }
757 enum wl_shell_surface_fullscreen_method {
758 	WL_SHELL_SURFACE_FULLSCREEN_METHOD_DEFAULT = 0,
759 	WL_SHELL_SURFACE_FULLSCREEN_METHOD_SCALE = 1,
760 	WL_SHELL_SURFACE_FULLSCREEN_METHOD_DRIVER = 2,
761 	WL_SHELL_SURFACE_FULLSCREEN_METHOD_FILL = 3,
762 }
763 pragma(inline, true) static int wl_shell_surface_add_listener(wl_shell_surface* wl_shell_surface, const(wl_shell_surface_listener)* listener, void* data) {
764 	return wl_proxy_add_listener(cast(wl_proxy*) wl_shell_surface, cast(void function()) listener, data);
765 }
766 enum WL_SHELL_SURFACE_PONG = 0;
767 enum WL_SHELL_SURFACE_MOVE = 1;
768 enum WL_SHELL_SURFACE_RESIZE = 2;
769 enum WL_SHELL_SURFACE_SET_TOPLEVEL = 3;
770 enum WL_SHELL_SURFACE_SET_TRANSIENT = 4;
771 enum WL_SHELL_SURFACE_SET_FULLSCREEN = 5;
772 enum WL_SHELL_SURFACE_SET_POPUP = 6;
773 enum WL_SHELL_SURFACE_SET_MAXIMIZED = 7;
774 enum WL_SHELL_SURFACE_SET_TITLE = 8;
775 enum WL_SHELL_SURFACE_SET_CLASS = 9;
776 enum WL_SHELL_SURFACE_PING_SINCE_VERSION = 1;
777 enum WL_SHELL_SURFACE_CONFIGURE_SINCE_VERSION = 1;
778 enum WL_SHELL_SURFACE_POPUP_DONE_SINCE_VERSION = 1;
779 enum WL_SHELL_SURFACE_PONG_SINCE_VERSION = 1;
780 enum WL_SHELL_SURFACE_MOVE_SINCE_VERSION = 1;
781 enum WL_SHELL_SURFACE_RESIZE_SINCE_VERSION = 1;
782 enum WL_SHELL_SURFACE_SET_TOPLEVEL_SINCE_VERSION = 1;
783 enum WL_SHELL_SURFACE_SET_TRANSIENT_SINCE_VERSION = 1;
784 enum WL_SHELL_SURFACE_SET_FULLSCREEN_SINCE_VERSION = 1;
785 enum WL_SHELL_SURFACE_SET_POPUP_SINCE_VERSION = 1;
786 enum WL_SHELL_SURFACE_SET_MAXIMIZED_SINCE_VERSION = 1;
787 enum WL_SHELL_SURFACE_SET_TITLE_SINCE_VERSION = 1;
788 enum WL_SHELL_SURFACE_SET_CLASS_SINCE_VERSION = 1;
789 
790 pragma(inline, true) static void wl_shell_surface_set_user_data(wl_shell_surface* wl_shell_surface, void* user_data) {
791 	wl_proxy_set_user_data(cast(wl_proxy*) wl_shell_surface, user_data);
792 }
793 pragma(inline, true) static void* wl_shell_surface_get_user_data(wl_shell_surface* wl_shell_surface) {
794 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_shell_surface);
795 }
796 pragma(inline, true) static uint wl_shell_surface_get_version(wl_shell_surface* wl_shell_surface) {
797 	return wl_proxy_get_version(cast(wl_proxy*) wl_shell_surface);
798 }
799 pragma(inline, true) static void wl_shell_surface_destroy(wl_shell_surface* wl_shell_surface) {
800 	wl_proxy_destroy(cast(wl_proxy*) wl_shell_surface);
801 }
802 pragma(inline, true) static void wl_shell_surface_pong(wl_shell_surface* wl_shell_surface, uint serial) {
803 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface,
804 			 WL_SHELL_SURFACE_PONG, serial);
805 }
806 pragma(inline, true) static void wl_shell_surface_move(wl_shell_surface* wl_shell_surface, wl_seat* seat, uint serial) {
807 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface,
808 			 WL_SHELL_SURFACE_MOVE, seat, serial);
809 }
810 pragma(inline, true) static void wl_shell_surface_resize(wl_shell_surface* wl_shell_surface, wl_seat* seat, uint serial, uint edges) {
811 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface,
812 			 WL_SHELL_SURFACE_RESIZE, seat, serial, edges);
813 }
814 pragma(inline, true) static void wl_shell_surface_set_toplevel(wl_shell_surface* wl_shell_surface) {
815 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface, WL_SHELL_SURFACE_SET_TOPLEVEL);
816 }
817 pragma(inline, true) static void wl_shell_surface_set_transient(wl_shell_surface* wl_shell_surface, wl_surface* parent, int x, int y, uint flags) {
818 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface,
819 			 WL_SHELL_SURFACE_SET_TRANSIENT, parent, x, y, flags);
820 }
821 pragma(inline, true) static void wl_shell_surface_set_fullscreen(wl_shell_surface* wl_shell_surface, uint method, uint framerate, wl_output* output) {
822 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface,
823 			 WL_SHELL_SURFACE_SET_FULLSCREEN, method, framerate, output);
824 }
825 pragma(inline, true) static void wl_shell_surface_set_popup(wl_shell_surface* wl_shell_surface, wl_seat* seat, uint serial, wl_surface* parent, int x, int y, uint flags) {
826 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface,
827 			 WL_SHELL_SURFACE_SET_POPUP, seat, serial, parent, x, y, flags);
828 }
829 pragma(inline, true) static void wl_shell_surface_set_maximized(wl_shell_surface* wl_shell_surface, wl_output* output) {
830 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface, WL_SHELL_SURFACE_SET_MAXIMIZED, output);
831 }
832 pragma(inline, true) static void wl_shell_surface_set_title(wl_shell_surface* wl_shell_surface, const(char)* title) {
833 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface, WL_SHELL_SURFACE_SET_TITLE, title);
834 }
835 pragma(inline, true) static void wl_shell_surface_set_class(wl_shell_surface* wl_shell_surface, const(char)* class_) {
836 	wl_proxy_marshal(cast(wl_proxy*) wl_shell_surface,
837 			 WL_SHELL_SURFACE_SET_CLASS, class_);
838 }
839 enum wl_surface_error {
840 	WL_SURFACE_ERROR_INVALID_SCALE = 0,
841 	WL_SURFACE_ERROR_INVALID_TRANSFORM = 1,
842 }
843 pragma(inline, true) static int wl_surface_add_listener(wl_surface* wl_surface, const(wl_surface_listener)* listener, void* data) {
844 	return wl_proxy_add_listener(cast(wl_proxy*) wl_surface, cast(void function()) listener, data);
845 }
846 enum WL_SURFACE_DESTROY = 0;
847 enum WL_SURFACE_ATTACH = 1;
848 enum WL_SURFACE_DAMAGE = 2;
849 enum WL_SURFACE_FRAME = 3;
850 enum WL_SURFACE_SET_OPAQUE_REGION = 4;
851 enum WL_SURFACE_SET_INPUT_REGION = 5;
852 enum WL_SURFACE_COMMIT = 6;
853 enum WL_SURFACE_SET_BUFFER_TRANSFORM = 7;
854 enum WL_SURFACE_SET_BUFFER_SCALE = 8;
855 enum WL_SURFACE_DAMAGE_BUFFER = 9;
856 enum WL_SURFACE_ENTER_SINCE_VERSION = 1;
857 enum WL_SURFACE_LEAVE_SINCE_VERSION = 1;
858 enum WL_SURFACE_DESTROY_SINCE_VERSION = 1;
859 enum WL_SURFACE_ATTACH_SINCE_VERSION = 1;
860 enum WL_SURFACE_DAMAGE_SINCE_VERSION = 1;
861 enum WL_SURFACE_FRAME_SINCE_VERSION = 1;
862 enum WL_SURFACE_SET_OPAQUE_REGION_SINCE_VERSION = 1;
863 enum WL_SURFACE_SET_INPUT_REGION_SINCE_VERSION = 1;
864 enum WL_SURFACE_COMMIT_SINCE_VERSION = 1;
865 enum WL_SURFACE_SET_BUFFER_TRANSFORM_SINCE_VERSION = 2;
866 enum WL_SURFACE_SET_BUFFER_SCALE_SINCE_VERSION = 3;
867 enum WL_SURFACE_DAMAGE_BUFFER_SINCE_VERSION = 4;
868 
869 pragma(inline, true) static void wl_surface_set_user_data(wl_surface* wl_surface, void* user_data) {
870 	wl_proxy_set_user_data(cast(wl_proxy*) wl_surface, user_data);
871 }
872 pragma(inline, true) static void* wl_surface_get_user_data(wl_surface* wl_surface) {
873 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_surface);
874 }
875 pragma(inline, true) static uint wl_surface_get_version(wl_surface* wl_surface) {
876 	return wl_proxy_get_version(cast(wl_proxy*) wl_surface);
877 }
878 pragma(inline, true) static void wl_surface_destroy(wl_surface* wl_surface) {
879 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
880 			 WL_SURFACE_DESTROY);
881 	wl_proxy_destroy(cast(wl_proxy*) wl_surface);
882 }
883 pragma(inline, true) static void wl_surface_attach(wl_surface* wl_surface, wl_buffer* buffer, int x, int y) {
884 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
885 			 WL_SURFACE_ATTACH, buffer, x, y);
886 }
887 pragma(inline, true) static void wl_surface_damage(wl_surface* wl_surface, int x, int y, int width, int height) {
888 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
889 			 WL_SURFACE_DAMAGE, x, y, width, height);
890 }
891 pragma(inline, true) static wl_callback* wl_surface_frame(wl_surface* wl_surface) {
892 	wl_proxy* callback;
893 	callback = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_surface,
894 			 WL_SURFACE_FRAME, &wl_callback_interface, null);
895 	return cast(wl_callback*) callback;
896 }
897 pragma(inline, true) static void wl_surface_set_opaque_region(wl_surface* wl_surface, wl_region* region) {
898 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
899 			 WL_SURFACE_SET_OPAQUE_REGION, region);
900 }
901 pragma(inline, true) static void wl_surface_set_input_region(wl_surface* wl_surface, wl_region* region) {
902 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
903 			 WL_SURFACE_SET_INPUT_REGION, region);
904 }
905 pragma(inline, true) static void wl_surface_commit(wl_surface* wl_surface) {
906 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
907 			 WL_SURFACE_COMMIT);
908 }
909 pragma(inline, true) static void wl_surface_set_buffer_transform(wl_surface* wl_surface, int transform) {
910 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
911 			 WL_SURFACE_SET_BUFFER_TRANSFORM, transform);
912 }
913 pragma(inline, true) static void wl_surface_set_buffer_scale(wl_surface* wl_surface, int scale) {
914 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
915 			 WL_SURFACE_SET_BUFFER_SCALE, scale);
916 }
917 pragma(inline, true) static void wl_surface_damage_buffer(wl_surface* wl_surface, int x, int y, int width, int height) {
918 	wl_proxy_marshal(cast(wl_proxy*) wl_surface,
919 			 WL_SURFACE_DAMAGE_BUFFER, x, y, width, height);
920 }
921 pragma(inline, true) static int wl_seat_add_listener(wl_seat* wl_seat, const(wl_seat_listener)* listener, void* data) {
922 	return wl_proxy_add_listener(cast(wl_proxy*) wl_seat,
923 				     cast(void function()) listener, data);
924 }
925 enum WL_SEAT_GET_POINTER = 0;
926 enum WL_SEAT_GET_KEYBOARD = 1;
927 enum WL_SEAT_GET_TOUCH = 2;
928 enum WL_SEAT_RELEASE = 3;
929 enum WL_SEAT_CAPABILITIES_SINCE_VERSION = 1;
930 enum WL_SEAT_NAME_SINCE_VERSION = 2;
931 enum WL_SEAT_GET_POINTER_SINCE_VERSION = 1;
932 enum WL_SEAT_GET_KEYBOARD_SINCE_VERSION = 1;
933 enum WL_SEAT_GET_TOUCH_SINCE_VERSION = 1;
934 enum WL_SEAT_RELEASE_SINCE_VERSION = 5;
935 
936 pragma(inline, true) static void wl_seat_set_user_data(wl_seat* wl_seat, void* user_data) {
937 	wl_proxy_set_user_data(cast(wl_proxy*) wl_seat, user_data);
938 }
939 pragma(inline, true) static void* wl_seat_get_user_data(wl_seat* wl_seat) {
940 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_seat);
941 }
942 pragma(inline, true) static uint wl_seat_get_version(wl_seat* wl_seat) {
943 	return wl_proxy_get_version(cast(wl_proxy*) wl_seat);
944 }
945 
946 pragma(inline, true) static void wl_seat_destroy(wl_seat* wl_seat) {
947 	wl_proxy_destroy(cast(wl_proxy*) wl_seat);
948 }
949 pragma(inline, true) static wl_pointer* wl_seat_get_pointer(wl_seat* wl_seat) {
950 	wl_proxy* id;
951 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_seat,
952 			 WL_SEAT_GET_POINTER, &wl_pointer_interface, null);
953 	return cast(wl_pointer*) id;
954 }
955 pragma(inline, true) static wl_keyboard* wl_seat_get_keyboard(wl_seat* wl_seat) {
956 	wl_proxy* id;
957 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_seat,
958 			 WL_SEAT_GET_KEYBOARD, &wl_keyboard_interface, null);
959 	return cast(wl_keyboard*) id;
960 }
961 pragma(inline, true) static wl_touch* wl_seat_get_touch(wl_seat* wl_seat) {
962 	wl_proxy* id;
963 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_seat, WL_SEAT_GET_TOUCH, &wl_touch_interface, null);
964 	return cast(wl_touch*) id;
965 }
966 pragma(inline, true) static void wl_seat_release(wl_seat* wl_seat) {
967 	wl_proxy_marshal(cast(wl_proxy*) wl_seat, WL_SEAT_RELEASE);
968 	wl_proxy_destroy(cast(wl_proxy*) wl_seat);
969 }
970 enum wl_pointer_error {
971 	WL_POINTER_ERROR_ROLE = 0,
972 }
973 enum wl_pointer_axis_source {
974 	WL_POINTER_AXIS_SOURCE_WHEEL = 0,
975 	WL_POINTER_AXIS_SOURCE_FINGER = 1,
976 	WL_POINTER_AXIS_SOURCE_CONTINUOUS = 2,
977 }
978 pragma(inline, true) static int wl_pointer_add_listener(wl_pointer* wl_pointer, const(wl_pointer_listener)* listener, void* data) {
979 	return wl_proxy_add_listener(cast(wl_proxy*) wl_pointer, cast(void function()) listener, data);
980 }
981 enum WL_POINTER_SET_CURSOR = 0;
982 enum WL_POINTER_RELEASE = 1;
983 enum WL_POINTER_ENTER_SINCE_VERSION = 1;
984 enum WL_POINTER_LEAVE_SINCE_VERSION = 1;
985 enum WL_POINTER_MOTION_SINCE_VERSION = 1;
986 enum WL_POINTER_BUTTON_SINCE_VERSION = 1;
987 enum WL_POINTER_AXIS_SINCE_VERSION = 1;
988 enum WL_POINTER_FRAME_SINCE_VERSION = 5;
989 enum WL_POINTER_AXIS_SOURCE_SINCE_VERSION = 5;
990 enum WL_POINTER_AXIS_STOP_SINCE_VERSION = 5;
991 enum WL_POINTER_AXIS_DISCRETE_SINCE_VERSION = 5;
992 enum WL_POINTER_SET_CURSOR_SINCE_VERSION = 1;
993 enum WL_POINTER_RELEASE_SINCE_VERSION = 3;
994 
995 pragma(inline, true) static void wl_pointer_set_user_data(wl_pointer* wl_pointer, void* user_data) {
996 	wl_proxy_set_user_data(cast(wl_proxy*) wl_pointer, user_data);
997 }
998 pragma(inline, true) static void* wl_pointer_get_user_data(wl_pointer* wl_pointer) {
999 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_pointer);
1000 }
1001 pragma(inline, true) static uint wl_pointer_get_version(wl_pointer* wl_pointer) {
1002 	return wl_proxy_get_version(cast(wl_proxy*) wl_pointer);
1003 }
1004 pragma(inline, true) static void wl_pointer_destroy(wl_pointer* wl_pointer) {
1005 	wl_proxy_destroy(cast(wl_proxy*) wl_pointer);
1006 }
1007 pragma(inline, true) static void wl_pointer_set_cursor(wl_pointer* wl_pointer, uint serial, wl_surface* surface, int hotspot_x, int hotspot_y) {
1008 	wl_proxy_marshal(cast(wl_proxy*) wl_pointer,
1009 			 WL_POINTER_SET_CURSOR, serial, surface, hotspot_x, hotspot_y);
1010 }
1011 pragma(inline, true) static void wl_pointer_release(wl_pointer* wl_pointer) {
1012 	wl_proxy_marshal(cast(wl_proxy*) wl_pointer,
1013 			 WL_POINTER_RELEASE);
1014 	wl_proxy_destroy(cast(wl_proxy*) wl_pointer);
1015 }
1016 pragma(inline, true) static int wl_keyboard_add_listener(wl_keyboard* wl_keyboard, const(wl_keyboard_listener)* listener, void* data) {
1017 	return wl_proxy_add_listener(cast(wl_proxy*) wl_keyboard,
1018 				     cast(void function()) listener, data);
1019 }
1020 enum WL_KEYBOARD_RELEASE = 0;
1021 enum WL_KEYBOARD_KEYMAP_SINCE_VERSION = 1;
1022 enum WL_KEYBOARD_ENTER_SINCE_VERSION = 1;
1023 enum WL_KEYBOARD_LEAVE_SINCE_VERSION = 1;
1024 enum WL_KEYBOARD_KEY_SINCE_VERSION = 1;
1025 enum WL_KEYBOARD_MODIFIERS_SINCE_VERSION = 1;
1026 enum WL_KEYBOARD_REPEAT_INFO_SINCE_VERSION = 4;
1027 enum WL_KEYBOARD_RELEASE_SINCE_VERSION = 3;
1028 
1029 pragma(inline, true) static void wl_keyboard_set_user_data(wl_keyboard* wl_keyboard, void* user_data) {
1030 	wl_proxy_set_user_data(cast(wl_proxy*) wl_keyboard, user_data);
1031 }
1032 
1033 pragma(inline, true) static void* wl_keyboard_get_user_data(wl_keyboard* wl_keyboard) {
1034 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_keyboard);
1035 }
1036 pragma(inline, true) static uint wl_keyboard_get_version(wl_keyboard* wl_keyboard) {
1037 	return wl_proxy_get_version(cast(wl_proxy*) wl_keyboard);
1038 }
1039 
1040 pragma(inline, true) static void wl_keyboard_destroy(wl_keyboard* wl_keyboard) {
1041 	wl_proxy_destroy(cast(wl_proxy*) wl_keyboard);
1042 }
1043 pragma(inline, true) static void wl_keyboard_release(wl_keyboard* wl_keyboard) {
1044 	wl_proxy_marshal(cast(wl_proxy*) wl_keyboard,
1045 			 WL_KEYBOARD_RELEASE);
1046 	wl_proxy_destroy(cast(wl_proxy*) wl_keyboard);
1047 }
1048 struct wl_touch_listener {
1049 	void function(void* data, wl_touch* wl_touch, uint serial, uint time, wl_surface* surface, int id, wl_fixed_t x, wl_fixed_t y) down;
1050 	void function(void* data, wl_touch* wl_touch, uint serial, uint time, int id) up;
1051 	void function(void* data, wl_touch* wl_touch, uint time, int id, wl_fixed_t x, wl_fixed_t y) motion;
1052 	void function(void* data, wl_touch* wl_touch) frame;
1053 	void function(void* data, wl_touch* wl_touch) cancel;
1054 };
1055 pragma(inline, true) static int wl_touch_add_listener(wl_touch* wl_touch, const(wl_touch_listener)* listener, void* data) {
1056 	return wl_proxy_add_listener(cast(wl_proxy*) wl_touch, cast(void function()) listener, data);
1057 }
1058 enum WL_TOUCH_RELEASE = 0;
1059 enum WL_TOUCH_DOWN_SINCE_VERSION = 1;
1060 enum WL_TOUCH_UP_SINCE_VERSION = 1;
1061 enum WL_TOUCH_MOTION_SINCE_VERSION = 1;
1062 enum WL_TOUCH_FRAME_SINCE_VERSION = 1;
1063 enum WL_TOUCH_CANCEL_SINCE_VERSION = 1;
1064 enum WL_TOUCH_RELEASE_SINCE_VERSION = 3;
1065 
1066 pragma(inline, true) static void wl_touch_set_user_data(wl_touch* wl_touch, void* user_data) {
1067 	wl_proxy_set_user_data(cast(wl_proxy*) wl_touch, user_data);
1068 }
1069 
1070 pragma(inline, true) static void* wl_touch_get_user_data(wl_touch* wl_touch) {
1071 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_touch);
1072 }
1073 pragma(inline, true) static uint wl_touch_get_version(wl_touch* wl_touch) {
1074 	return wl_proxy_get_version(cast(wl_proxy*) wl_touch);
1075 }
1076 
1077 pragma(inline, true) static void wl_touch_destroy(wl_touch* wl_touch) {
1078 	wl_proxy_destroy(cast(wl_proxy*) wl_touch);
1079 }
1080 pragma(inline, true) static void wl_touch_release(wl_touch* wl_touch) {
1081 	wl_proxy_marshal(cast(wl_proxy*) wl_touch, WL_TOUCH_RELEASE);
1082 	wl_proxy_destroy(cast(wl_proxy*) wl_touch);
1083 }
1084 enum wl_output_subpixel {
1085 	WL_OUTPUT_SUBPIXEL_UNKNOWN = 0,
1086 	WL_OUTPUT_SUBPIXEL_NONE = 1,
1087 	WL_OUTPUT_SUBPIXEL_HORIZONTAL_RGB = 2,
1088 	WL_OUTPUT_SUBPIXEL_HORIZONTAL_BGR = 3,
1089 	WL_OUTPUT_SUBPIXEL_VERTICAL_RGB = 4,
1090 	WL_OUTPUT_SUBPIXEL_VERTICAL_BGR = 5,
1091 }
1092 enum wl_output_transform {
1093 	WL_OUTPUT_TRANSFORM_NORMAL = 0,
1094 	WL_OUTPUT_TRANSFORM_90 = 1,
1095 	WL_OUTPUT_TRANSFORM_180 = 2,
1096 	WL_OUTPUT_TRANSFORM_270 = 3,
1097 	WL_OUTPUT_TRANSFORM_FLIPPED = 4,
1098 	WL_OUTPUT_TRANSFORM_FLIPPED_90 = 5,
1099 	WL_OUTPUT_TRANSFORM_FLIPPED_180 = 6,
1100 	WL_OUTPUT_TRANSFORM_FLIPPED_270 = 7,
1101 }
1102 enum WL_OUTPUT_RELEASE = 0;
1103 enum WL_OUTPUT_GEOMETRY_SINCE_VERSION = 1;
1104 enum WL_OUTPUT_MODE_SINCE_VERSION = 1;
1105 enum WL_OUTPUT_DONE_SINCE_VERSION = 2;
1106 enum WL_OUTPUT_SCALE_SINCE_VERSION = 2;
1107 enum WL_OUTPUT_RELEASE_SINCE_VERSION = 3;
1108 
1109 pragma(inline, true) static void wl_output_set_user_data(wl_output* wl_output, void* user_data) {
1110 	wl_proxy_set_user_data(cast(wl_proxy*) wl_output, user_data);
1111 }
1112 pragma(inline, true) static void* wl_output_get_user_data(wl_output* wl_output) {
1113 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_output);
1114 }
1115 pragma(inline, true) static uint wl_output_get_version(wl_output* wl_output) {
1116 	return wl_proxy_get_version(cast(wl_proxy*) wl_output);
1117 }
1118 pragma(inline, true) static void wl_output_release(wl_output* wl_output) {
1119 	wl_proxy_marshal(cast(wl_proxy*) wl_output, WL_OUTPUT_RELEASE);
1120 	wl_proxy_destroy(cast(wl_proxy*) wl_output);
1121 }
1122 enum WL_REGION_DESTROY = 0;
1123 enum WL_REGION_ADD = 1;
1124 enum WL_REGION_SUBTRACT = 2;
1125 enum WL_REGION_DESTROY_SINCE_VERSION = 1;
1126 enum WL_REGION_ADD_SINCE_VERSION = 1;
1127 enum WL_REGION_SUBTRACT_SINCE_VERSION = 1;
1128 
1129 pragma(inline, true) static void wl_region_set_user_data(wl_region* wl_region, void* user_data) {
1130 	wl_proxy_set_user_data(cast(wl_proxy*) wl_region, user_data);
1131 }
1132 
1133 pragma(inline, true) static void* wl_region_get_user_data(wl_region* wl_region) {
1134 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_region);
1135 }
1136 pragma(inline, true) static uint wl_region_get_version(wl_region* wl_region) {
1137 	return wl_proxy_get_version(cast(wl_proxy*) wl_region);
1138 }
1139 pragma(inline, true) static void wl_region_destroy(wl_region* wl_region) {
1140 	wl_proxy_marshal(cast(wl_proxy*) wl_region,
1141 			 WL_REGION_DESTROY);
1142 	wl_proxy_destroy(cast(wl_proxy*) wl_region);
1143 }
1144 pragma(inline, true) static void wl_region_add(wl_region* wl_region, int x, int y, int width, int height) {
1145 	wl_proxy_marshal(cast(wl_proxy*) wl_region,
1146 			 WL_REGION_ADD, x, y, width, height);
1147 }
1148 pragma(inline, true) static void wl_region_subtract(wl_region* wl_region, int x, int y, int width, int height) {
1149 	wl_proxy_marshal(cast(wl_proxy*) wl_region,
1150 			 WL_REGION_SUBTRACT, x, y, width, height);
1151 }
1152 enum wl_subcompositor_error {
1153 	WL_SUBCOMPOSITOR_ERROR_BAD_SURFACE = 0,
1154 }
1155 enum WL_SUBCOMPOSITOR_DESTROY = 0;
1156 enum WL_SUBCOMPOSITOR_GET_SUBSURFACE = 1;
1157 enum WL_SUBCOMPOSITOR_DESTROY_SINCE_VERSION = 1;
1158 enum WL_SUBCOMPOSITOR_GET_SUBSURFACE_SINCE_VERSION = 1;
1159 
1160 
1161 pragma(inline, true) static void wl_subcompositor_set_user_data(wl_subcompositor* wl_subcompositor, void* user_data) {
1162 	wl_proxy_set_user_data(cast(wl_proxy*) wl_subcompositor, user_data);
1163 }
1164 
1165 
1166 pragma(inline, true) static void* wl_subcompositor_get_user_data(wl_subcompositor* wl_subcompositor) {
1167 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_subcompositor);
1168 }
1169 pragma(inline, true) static uint wl_subcompositor_get_version(wl_subcompositor* wl_subcompositor) {
1170 	return wl_proxy_get_version(cast(wl_proxy*) wl_subcompositor);
1171 }
1172 pragma(inline, true) static void wl_subcompositor_destroy(wl_subcompositor* wl_subcompositor) {
1173 	wl_proxy_marshal(cast(wl_proxy*) wl_subcompositor,
1174 			 WL_SUBCOMPOSITOR_DESTROY);
1175 	wl_proxy_destroy(cast(wl_proxy*) wl_subcompositor);
1176 }
1177 pragma(inline, true) static wl_subsurface* wl_subcompositor_get_subsurface(wl_subcompositor* wl_subcompositor, wl_surface* surface, wl_surface* parent) {
1178 	wl_proxy* id;
1179 	id = wl_proxy_marshal_constructor(cast(wl_proxy*) wl_subcompositor,
1180 			 WL_SUBCOMPOSITOR_GET_SUBSURFACE, &wl_subsurface_interface, null, surface, parent);
1181 	return cast(wl_subsurface*) id;
1182 }
1183 enum wl_subsurface_error {
1184 	WL_SUBSURFACE_ERROR_BAD_SURFACE = 0,
1185 }
1186 enum WL_SUBSURFACE_DESTROY = 0;
1187 enum WL_SUBSURFACE_SET_POSITION = 1;
1188 enum WL_SUBSURFACE_PLACE_ABOVE = 2;
1189 enum WL_SUBSURFACE_PLACE_BELOW = 3;
1190 enum WL_SUBSURFACE_SET_SYNC = 4;
1191 enum WL_SUBSURFACE_SET_DESYNC = 5;
1192 enum WL_SUBSURFACE_DESTROY_SINCE_VERSION = 1;
1193 enum WL_SUBSURFACE_SET_POSITION_SINCE_VERSION = 1;
1194 enum WL_SUBSURFACE_PLACE_ABOVE_SINCE_VERSION = 1;
1195 enum WL_SUBSURFACE_PLACE_BELOW_SINCE_VERSION = 1;
1196 enum WL_SUBSURFACE_SET_SYNC_SINCE_VERSION = 1;
1197 enum WL_SUBSURFACE_SET_DESYNC_SINCE_VERSION = 1;
1198 
1199 pragma(inline, true) static void wl_subsurface_set_user_data(wl_subsurface* wl_subsurface, void* user_data) {
1200 	wl_proxy_set_user_data(cast(wl_proxy*) wl_subsurface, user_data);
1201 }
1202 pragma(inline, true) static void* wl_subsurface_get_user_data(wl_subsurface* wl_subsurface) {
1203 	return wl_proxy_get_user_data(cast(wl_proxy*) wl_subsurface);
1204 }
1205 pragma(inline, true) static uint wl_subsurface_get_version(wl_subsurface* wl_subsurface) {
1206 	return wl_proxy_get_version(cast(wl_proxy*) wl_subsurface);
1207 }
1208 pragma(inline, true) static void wl_subsurface_destroy(wl_subsurface* wl_subsurface) {
1209 	wl_proxy_marshal(cast(wl_proxy*) wl_subsurface, WL_SUBSURFACE_DESTROY);
1210 	wl_proxy_destroy(cast(wl_proxy*) wl_subsurface);
1211 }
1212 pragma(inline, true) static void wl_subsurface_set_position(wl_subsurface* wl_subsurface, int x, int y) {
1213 	wl_proxy_marshal(cast(wl_proxy*) wl_subsurface,
1214 			 WL_SUBSURFACE_SET_POSITION, x, y);
1215 }
1216 pragma(inline, true) static void wl_subsurface_place_above(wl_subsurface* wl_subsurface, wl_surface* sibling) {
1217 	wl_proxy_marshal(cast(wl_proxy*) wl_subsurface,
1218 			 WL_SUBSURFACE_PLACE_ABOVE, sibling);
1219 }
1220 pragma(inline, true) static void wl_subsurface_place_below(wl_subsurface* wl_subsurface, wl_surface* sibling) {
1221 	wl_proxy_marshal(cast(wl_proxy*) wl_subsurface,
1222 			 WL_SUBSURFACE_PLACE_BELOW, sibling);
1223 }
1224 pragma(inline, true) static void wl_subsurface_set_sync(wl_subsurface* wl_subsurface) {
1225 	wl_proxy_marshal(cast(wl_proxy*) wl_subsurface,
1226 			 WL_SUBSURFACE_SET_SYNC);
1227 }
1228 pragma(inline, true) static void wl_subsurface_set_desync(wl_subsurface* wl_subsurface) {
1229 	wl_proxy_marshal(cast(wl_proxy*) wl_subsurface,
1230 			 WL_SUBSURFACE_SET_DESYNC);
1231 }