/* Generated by wayland-scanner 1.24.0 */

#ifndef XDG_SESSION_MANAGEMENT_V1_CLIENT_PROTOCOL_H
#define XDG_SESSION_MANAGEMENT_V1_CLIENT_PROTOCOL_H

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

#ifdef __cplusplus
extern "C" {
#endif

struct xdg_session_manager_v1;
struct xdg_session_v1;
struct xdg_toplevel;
struct xdg_toplevel_session_v1;

#ifndef XDG_SESSION_MANAGER_V1_INTERFACE
#  define XDG_SESSION_MANAGER_V1_INTERFACE
extern const struct wl_interface xdg_session_manager_v1_interface;
#endif
#ifndef XDG_SESSION_V1_INTERFACE
#  define XDG_SESSION_V1_INTERFACE
extern const struct wl_interface xdg_session_v1_interface;
#endif
#ifndef XDG_TOPLEVEL_SESSION_V1_INTERFACE
#  define XDG_TOPLEVEL_SESSION_V1_INTERFACE
extern const struct wl_interface xdg_toplevel_session_v1_interface;
#endif

#ifndef XDG_SESSION_MANAGER_V1_ERROR_ENUM
#  define XDG_SESSION_MANAGER_V1_ERROR_ENUM
enum xdg_session_manager_v1_error {
  XDG_SESSION_MANAGER_V1_ERROR_IN_USE = 1,
  XDG_SESSION_MANAGER_V1_ERROR_INVALID_SESSION_ID = 2,
};
#endif /* XDG_SESSION_MANAGER_V1_ERROR_ENUM */

#ifndef XDG_SESSION_MANAGER_V1_REASON_ENUM
#  define XDG_SESSION_MANAGER_V1_REASON_ENUM
enum xdg_session_manager_v1_reason {
  XDG_SESSION_MANAGER_V1_REASON_LAUNCH = 1,
  XDG_SESSION_MANAGER_V1_REASON_RECOVER = 2,
  XDG_SESSION_MANAGER_V1_REASON_SESSION_RESTORE = 3,
};
#endif /* XDG_SESSION_MANAGER_V1_REASON_ENUM */

#define XDG_SESSION_MANAGER_V1_DESTROY 0
#define XDG_SESSION_MANAGER_V1_GET_SESSION 1

#define XDG_SESSION_MANAGER_V1_DESTROY_SINCE_VERSION 1
#define XDG_SESSION_MANAGER_V1_GET_SESSION_SINCE_VERSION 1

/** @ingroup iface_xdg_session_manager_v1 */
static inline void xdg_session_manager_v1_set_user_data(
    struct xdg_session_manager_v1* xdg_session_manager_v1, void* user_data) {
  wl_proxy_set_user_data((struct wl_proxy*)xdg_session_manager_v1, user_data);
}

/** @ingroup iface_xdg_session_manager_v1 */
static inline void* xdg_session_manager_v1_get_user_data(
    struct xdg_session_manager_v1* xdg_session_manager_v1) {
  return wl_proxy_get_user_data((struct wl_proxy*)xdg_session_manager_v1);
}

static inline uint32_t xdg_session_manager_v1_get_version(
    struct xdg_session_manager_v1* xdg_session_manager_v1) {
  return wl_proxy_get_version((struct wl_proxy*)xdg_session_manager_v1);
}

static inline void xdg_session_manager_v1_destroy(
    struct xdg_session_manager_v1* xdg_session_manager_v1) {
  wl_proxy_marshal_flags(
      (struct wl_proxy*)xdg_session_manager_v1, XDG_SESSION_MANAGER_V1_DESTROY,
      NULL, wl_proxy_get_version((struct wl_proxy*)xdg_session_manager_v1),
      WL_MARSHAL_FLAG_DESTROY);
}

static inline struct xdg_session_v1* xdg_session_manager_v1_get_session(
    struct xdg_session_manager_v1* xdg_session_manager_v1, uint32_t reason,
    const char* session_id) {
  struct wl_proxy* id;

  id = wl_proxy_marshal_flags(
      (struct wl_proxy*)xdg_session_manager_v1,
      XDG_SESSION_MANAGER_V1_GET_SESSION, &xdg_session_v1_interface,
      wl_proxy_get_version((struct wl_proxy*)xdg_session_manager_v1), 0, NULL,
      reason, session_id);

  return (struct xdg_session_v1*)id;
}

/* xdg_session_v1 */

#ifndef XDG_SESSION_V1_ERROR_ENUM
#  define XDG_SESSION_V1_ERROR_ENUM
enum xdg_session_v1_error {
  XDG_SESSION_V1_ERROR_NAME_IN_USE = 1,
  XDG_SESSION_V1_ERROR_ALREADY_MAPPED = 2,
  XDG_SESSION_V1_ERROR_INVALID_NAME = 3,
};
#endif /* XDG_SESSION_V1_ERROR_ENUM */

struct xdg_session_v1_listener {
  void (*created)(void* data, struct xdg_session_v1* xdg_session_v1,
                  const char* session_id);
  void (*restored)(void* data, struct xdg_session_v1* xdg_session_v1);
  void (*replaced)(void* data, struct xdg_session_v1* xdg_session_v1);
};

static inline int xdg_session_v1_add_listener(
    struct xdg_session_v1* xdg_session_v1,
    const struct xdg_session_v1_listener* listener, void* data) {
  return wl_proxy_add_listener((struct wl_proxy*)xdg_session_v1,
                               (void (**)(void))listener, data);
}

#define XDG_SESSION_V1_DESTROY 0
#define XDG_SESSION_V1_REMOVE 1
#define XDG_SESSION_V1_ADD_TOPLEVEL 2
#define XDG_SESSION_V1_RESTORE_TOPLEVEL 3
#define XDG_SESSION_V1_REMOVE_TOPLEVEL 4

#define XDG_SESSION_V1_CREATED_SINCE_VERSION 1
#define XDG_SESSION_V1_RESTORED_SINCE_VERSION 1
#define XDG_SESSION_V1_REPLACED_SINCE_VERSION 1

#define XDG_SESSION_V1_DESTROY_SINCE_VERSION 1
#define XDG_SESSION_V1_REMOVE_SINCE_VERSION 1
#define XDG_SESSION_V1_ADD_TOPLEVEL_SINCE_VERSION 1
#define XDG_SESSION_V1_RESTORE_TOPLEVEL_SINCE_VERSION 1
#define XDG_SESSION_V1_REMOVE_TOPLEVEL_SINCE_VERSION 1

/** @ingroup iface_xdg_session_v1 */
static inline void xdg_session_v1_set_user_data(
    struct xdg_session_v1* xdg_session_v1, void* user_data) {
  wl_proxy_set_user_data((struct wl_proxy*)xdg_session_v1, user_data);
}

/** @ingroup iface_xdg_session_v1 */
static inline void* xdg_session_v1_get_user_data(
    struct xdg_session_v1* xdg_session_v1) {
  return wl_proxy_get_user_data((struct wl_proxy*)xdg_session_v1);
}

static inline uint32_t xdg_session_v1_get_version(
    struct xdg_session_v1* xdg_session_v1) {
  return wl_proxy_get_version((struct wl_proxy*)xdg_session_v1);
}

static inline void xdg_session_v1_destroy(
    struct xdg_session_v1* xdg_session_v1) {
  wl_proxy_marshal_flags((struct wl_proxy*)xdg_session_v1,
                         XDG_SESSION_V1_DESTROY, NULL,
                         wl_proxy_get_version((struct wl_proxy*)xdg_session_v1),
                         WL_MARSHAL_FLAG_DESTROY);
}

static inline void xdg_session_v1_remove(
    struct xdg_session_v1* xdg_session_v1) {
  wl_proxy_marshal_flags((struct wl_proxy*)xdg_session_v1,
                         XDG_SESSION_V1_REMOVE, NULL,
                         wl_proxy_get_version((struct wl_proxy*)xdg_session_v1),
                         WL_MARSHAL_FLAG_DESTROY);
}

static inline struct xdg_toplevel_session_v1* xdg_session_v1_add_toplevel(
    struct xdg_session_v1* xdg_session_v1, struct xdg_toplevel* toplevel,
    const char* name) {
  struct wl_proxy* id;

  id = wl_proxy_marshal_flags(
      (struct wl_proxy*)xdg_session_v1, XDG_SESSION_V1_ADD_TOPLEVEL,
      &xdg_toplevel_session_v1_interface,
      wl_proxy_get_version((struct wl_proxy*)xdg_session_v1), 0, NULL, toplevel,
      name);

  return (struct xdg_toplevel_session_v1*)id;
}

static inline struct xdg_toplevel_session_v1* xdg_session_v1_restore_toplevel(
    struct xdg_session_v1* xdg_session_v1, struct xdg_toplevel* toplevel,
    const char* name) {
  struct wl_proxy* id;

  id = wl_proxy_marshal_flags(
      (struct wl_proxy*)xdg_session_v1, XDG_SESSION_V1_RESTORE_TOPLEVEL,
      &xdg_toplevel_session_v1_interface,
      wl_proxy_get_version((struct wl_proxy*)xdg_session_v1), 0, NULL, toplevel,
      name);

  return (struct xdg_toplevel_session_v1*)id;
}

static inline void xdg_session_v1_remove_toplevel(
    struct xdg_session_v1* xdg_session_v1, const char* name) {
  wl_proxy_marshal_flags(
      (struct wl_proxy*)xdg_session_v1, XDG_SESSION_V1_REMOVE_TOPLEVEL, NULL,
      wl_proxy_get_version((struct wl_proxy*)xdg_session_v1), 0, name);
}

/* xdg_toplevel_session_v1 */

struct xdg_toplevel_session_v1_listener {
  void (*restored)(void* data,
                   struct xdg_toplevel_session_v1* xdg_toplevel_session_v1);
};

static inline int xdg_toplevel_session_v1_add_listener(
    struct xdg_toplevel_session_v1* xdg_toplevel_session_v1,
    const struct xdg_toplevel_session_v1_listener* listener, void* data) {
  return wl_proxy_add_listener((struct wl_proxy*)xdg_toplevel_session_v1,
                               (void (**)(void))listener, data);
}

#define XDG_TOPLEVEL_SESSION_V1_DESTROY 0
#define XDG_TOPLEVEL_SESSION_V1_RENAME 1

#define XDG_TOPLEVEL_SESSION_V1_RESTORED_SINCE_VERSION 1

#define XDG_TOPLEVEL_SESSION_V1_DESTROY_SINCE_VERSION 1
#define XDG_TOPLEVEL_SESSION_V1_RENAME_SINCE_VERSION 1

/** @ingroup iface_xdg_toplevel_session_v1 */
static inline void xdg_toplevel_session_v1_set_user_data(
    struct xdg_toplevel_session_v1* xdg_toplevel_session_v1, void* user_data) {
  wl_proxy_set_user_data((struct wl_proxy*)xdg_toplevel_session_v1, user_data);
}

/** @ingroup iface_xdg_toplevel_session_v1 */
static inline void* xdg_toplevel_session_v1_get_user_data(
    struct xdg_toplevel_session_v1* xdg_toplevel_session_v1) {
  return wl_proxy_get_user_data((struct wl_proxy*)xdg_toplevel_session_v1);
}

static inline uint32_t xdg_toplevel_session_v1_get_version(
    struct xdg_toplevel_session_v1* xdg_toplevel_session_v1) {
  return wl_proxy_get_version((struct wl_proxy*)xdg_toplevel_session_v1);
}

static inline void xdg_toplevel_session_v1_destroy(
    struct xdg_toplevel_session_v1* xdg_toplevel_session_v1) {
  wl_proxy_marshal_flags(
      (struct wl_proxy*)xdg_toplevel_session_v1,
      XDG_TOPLEVEL_SESSION_V1_DESTROY, NULL,
      wl_proxy_get_version((struct wl_proxy*)xdg_toplevel_session_v1),
      WL_MARSHAL_FLAG_DESTROY);
}

static inline void xdg_toplevel_session_v1_rename(
    struct xdg_toplevel_session_v1* xdg_toplevel_session_v1, const char* name) {
  wl_proxy_marshal_flags(
      (struct wl_proxy*)xdg_toplevel_session_v1, XDG_TOPLEVEL_SESSION_V1_RENAME,
      NULL, wl_proxy_get_version((struct wl_proxy*)xdg_toplevel_session_v1), 0,
      name);
}

#ifdef __cplusplus
}
#endif

#endif
