/* Generated by wayland-scanner 1.24.0 */

#ifndef EFL_AUX_HINTS_CLIENT_PROTOCOL_H
#define EFL_AUX_HINTS_CLIENT_PROTOCOL_H

#include <stdint.h>
#include <stddef.h>
#include "wayland-client.h"

#ifdef  __cplusplus
extern "C" {
#endif

/**
 * @page page_efl_aux_hints The efl_aux_hints protocol
 * @section page_ifaces_efl_aux_hints Interfaces
 * - @subpage page_iface_efl_aux_hints - 
 */
struct efl_aux_hints;
struct wl_surface;

#ifndef EFL_AUX_HINTS_INTERFACE
#define EFL_AUX_HINTS_INTERFACE
/**
 * @page page_iface_efl_aux_hints efl_aux_hints
 * @section page_iface_efl_aux_hints_api API
 * See @ref iface_efl_aux_hints.
 */
/**
 * @defgroup iface_efl_aux_hints The efl_aux_hints interface
 */
extern const struct wl_interface efl_aux_hints_interface;
#endif

/**
 * @ingroup iface_efl_aux_hints
 * @struct efl_aux_hints_listener
 */
struct efl_aux_hints_listener {
	/**
	 */
	void (*supported_aux_hints)(void *data,
				    struct efl_aux_hints *efl_aux_hints,
				    struct wl_surface *surface,
				    struct wl_array *hints,
				    uint32_t num_hints);
	/**
	 */
	void (*allowed_aux_hint)(void *data,
				 struct efl_aux_hints *efl_aux_hints,
				 struct wl_surface *surface,
				 int32_t id);
	/**
	 */
	void (*aux_message)(void *data,
			    struct efl_aux_hints *efl_aux_hints,
			    struct wl_surface *surface,
			    const char *key,
			    const char *val,
			    struct wl_array *options);
};

/**
 * @ingroup iface_efl_aux_hints
 */
static inline int
efl_aux_hints_add_listener(struct efl_aux_hints *efl_aux_hints,
			   const struct efl_aux_hints_listener *listener, void *data)
{
	return wl_proxy_add_listener((struct wl_proxy *) efl_aux_hints,
				     (void (**)(void)) listener, data);
}

#define EFL_AUX_HINTS_ADD_AUX_HINT 0
#define EFL_AUX_HINTS_CHANGE_AUX_HINT 1
#define EFL_AUX_HINTS_DEL_AUX_HINT 2
#define EFL_AUX_HINTS_GET_SUPPORTED_AUX_HINTS 3

/**
 * @ingroup iface_efl_aux_hints
 */
#define EFL_AUX_HINTS_SUPPORTED_AUX_HINTS_SINCE_VERSION 1
/**
 * @ingroup iface_efl_aux_hints
 */
#define EFL_AUX_HINTS_ALLOWED_AUX_HINT_SINCE_VERSION 1
/**
 * @ingroup iface_efl_aux_hints
 */
#define EFL_AUX_HINTS_AUX_MESSAGE_SINCE_VERSION 1

/**
 * @ingroup iface_efl_aux_hints
 */
#define EFL_AUX_HINTS_ADD_AUX_HINT_SINCE_VERSION 1
/**
 * @ingroup iface_efl_aux_hints
 */
#define EFL_AUX_HINTS_CHANGE_AUX_HINT_SINCE_VERSION 1
/**
 * @ingroup iface_efl_aux_hints
 */
#define EFL_AUX_HINTS_DEL_AUX_HINT_SINCE_VERSION 1
/**
 * @ingroup iface_efl_aux_hints
 */
#define EFL_AUX_HINTS_GET_SUPPORTED_AUX_HINTS_SINCE_VERSION 1

/** @ingroup iface_efl_aux_hints */
static inline void
efl_aux_hints_set_user_data(struct efl_aux_hints *efl_aux_hints, void *user_data)
{
	wl_proxy_set_user_data((struct wl_proxy *) efl_aux_hints, user_data);
}

/** @ingroup iface_efl_aux_hints */
static inline void *
efl_aux_hints_get_user_data(struct efl_aux_hints *efl_aux_hints)
{
	return wl_proxy_get_user_data((struct wl_proxy *) efl_aux_hints);
}

static inline uint32_t
efl_aux_hints_get_version(struct efl_aux_hints *efl_aux_hints)
{
	return wl_proxy_get_version((struct wl_proxy *) efl_aux_hints);
}

/** @ingroup iface_efl_aux_hints */
static inline void
efl_aux_hints_destroy(struct efl_aux_hints *efl_aux_hints)
{
	wl_proxy_destroy((struct wl_proxy *) efl_aux_hints);
}

/**
 * @ingroup iface_efl_aux_hints
 */
static inline void
efl_aux_hints_add_aux_hint(struct efl_aux_hints *efl_aux_hints, struct wl_surface *surface, int32_t id, const char *hint, const char *val)
{
	wl_proxy_marshal_flags((struct wl_proxy *) efl_aux_hints,
			 EFL_AUX_HINTS_ADD_AUX_HINT, NULL, wl_proxy_get_version((struct wl_proxy *) efl_aux_hints), 0, surface, id, hint, val);
}

/**
 * @ingroup iface_efl_aux_hints
 */
static inline void
efl_aux_hints_change_aux_hint(struct efl_aux_hints *efl_aux_hints, struct wl_surface *surface, int32_t id, const char *val)
{
	wl_proxy_marshal_flags((struct wl_proxy *) efl_aux_hints,
			 EFL_AUX_HINTS_CHANGE_AUX_HINT, NULL, wl_proxy_get_version((struct wl_proxy *) efl_aux_hints), 0, surface, id, val);
}

/**
 * @ingroup iface_efl_aux_hints
 */
static inline void
efl_aux_hints_del_aux_hint(struct efl_aux_hints *efl_aux_hints, struct wl_surface *surface, int32_t id)
{
	wl_proxy_marshal_flags((struct wl_proxy *) efl_aux_hints,
			 EFL_AUX_HINTS_DEL_AUX_HINT, NULL, wl_proxy_get_version((struct wl_proxy *) efl_aux_hints), 0, surface, id);
}

/**
 * @ingroup iface_efl_aux_hints
 */
static inline void
efl_aux_hints_get_supported_aux_hints(struct efl_aux_hints *efl_aux_hints, struct wl_surface *surface)
{
	wl_proxy_marshal_flags((struct wl_proxy *) efl_aux_hints,
			 EFL_AUX_HINTS_GET_SUPPORTED_AUX_HINTS, NULL, wl_proxy_get_version((struct wl_proxy *) efl_aux_hints), 0, surface);
}

#ifdef  __cplusplus
}
#endif

#endif
