/* Generated by wayland-scanner 1.23.90 */

#ifndef APPMENU_CLIENT_PROTOCOL_H
#define APPMENU_CLIENT_PROTOCOL_H

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

#ifdef __cplusplus
extern "C" {
#endif

/**
 * @page page_appmenu The appmenu protocol
 * @section page_ifaces_appmenu Interfaces
 * - @subpage page_iface_org_kde_kwin_appmenu_manager - appmenu dbus address
 * interface
 * - @subpage page_iface_org_kde_kwin_appmenu - appmenu dbus address interface
 * @section page_copyright_appmenu Copyright
 * <pre>
 *
 * SPDX-FileCopyrightText: 2017 David Edmundson
 *
 * SPDX-License-Identifier: MIT
 * </pre>
 */
struct org_kde_kwin_appmenu;
struct org_kde_kwin_appmenu_manager;
struct wl_surface;

#ifndef ORG_KDE_KWIN_APPMENU_MANAGER_INTERFACE
#  define ORG_KDE_KWIN_APPMENU_MANAGER_INTERFACE
/**
 * @page page_iface_org_kde_kwin_appmenu_manager org_kde_kwin_appmenu_manager
 * @section page_iface_org_kde_kwin_appmenu_manager_desc Description
 *
 * This interface allows a client to link a window (or wl_surface) to an
 * com.canonical.dbusmenu interface registered on DBus.
 * @section page_iface_org_kde_kwin_appmenu_manager_api API
 * See @ref iface_org_kde_kwin_appmenu_manager.
 */
/**
 * @defgroup iface_org_kde_kwin_appmenu_manager The org_kde_kwin_appmenu_manager
 * interface
 *
 * This interface allows a client to link a window (or wl_surface) to an
 * com.canonical.dbusmenu interface registered on DBus.
 */
extern const struct wl_interface org_kde_kwin_appmenu_manager_interface;
#endif
#ifndef ORG_KDE_KWIN_APPMENU_INTERFACE
#  define ORG_KDE_KWIN_APPMENU_INTERFACE
/**
 * @page page_iface_org_kde_kwin_appmenu org_kde_kwin_appmenu
 * @section page_iface_org_kde_kwin_appmenu_desc Description
 *
 * The DBus service name and object path where the appmenu interface is present
 * The object should be registered on the session bus before sending this
 * request. If not applicable, clients should remove this object.
 * @section page_iface_org_kde_kwin_appmenu_api API
 * See @ref iface_org_kde_kwin_appmenu.
 */
/**
 * @defgroup iface_org_kde_kwin_appmenu The org_kde_kwin_appmenu interface
 *
 * The DBus service name and object path where the appmenu interface is present
 * The object should be registered on the session bus before sending this
 * request. If not applicable, clients should remove this object.
 */
extern const struct wl_interface org_kde_kwin_appmenu_interface;
#endif

#define ORG_KDE_KWIN_APPMENU_MANAGER_CREATE 0
#define ORG_KDE_KWIN_APPMENU_MANAGER_RELEASE 1

/**
 * @ingroup iface_org_kde_kwin_appmenu_manager
 */
#define ORG_KDE_KWIN_APPMENU_MANAGER_CREATE_SINCE_VERSION 1
/**
 * @ingroup iface_org_kde_kwin_appmenu_manager
 */
#define ORG_KDE_KWIN_APPMENU_MANAGER_RELEASE_SINCE_VERSION 2

/** @ingroup iface_org_kde_kwin_appmenu_manager */
static inline void org_kde_kwin_appmenu_manager_set_user_data(
    struct org_kde_kwin_appmenu_manager* org_kde_kwin_appmenu_manager,
    void* user_data) {
  wl_proxy_set_user_data((struct wl_proxy*)org_kde_kwin_appmenu_manager,
                         user_data);
}

/** @ingroup iface_org_kde_kwin_appmenu_manager */
static inline void* org_kde_kwin_appmenu_manager_get_user_data(
    struct org_kde_kwin_appmenu_manager* org_kde_kwin_appmenu_manager) {
  return wl_proxy_get_user_data((struct wl_proxy*)org_kde_kwin_appmenu_manager);
}

static inline uint32_t org_kde_kwin_appmenu_manager_get_version(
    struct org_kde_kwin_appmenu_manager* org_kde_kwin_appmenu_manager) {
  return wl_proxy_get_version((struct wl_proxy*)org_kde_kwin_appmenu_manager);
}

/** @ingroup iface_org_kde_kwin_appmenu_manager */
static inline void org_kde_kwin_appmenu_manager_destroy(
    struct org_kde_kwin_appmenu_manager* org_kde_kwin_appmenu_manager) {
  wl_proxy_destroy((struct wl_proxy*)org_kde_kwin_appmenu_manager);
}

/**
 * @ingroup iface_org_kde_kwin_appmenu_manager
 */
static inline struct org_kde_kwin_appmenu* org_kde_kwin_appmenu_manager_create(
    struct org_kde_kwin_appmenu_manager* org_kde_kwin_appmenu_manager,
    struct wl_surface* surface) {
  struct wl_proxy* id;

  id = wl_proxy_marshal_flags(
      (struct wl_proxy*)org_kde_kwin_appmenu_manager,
      ORG_KDE_KWIN_APPMENU_MANAGER_CREATE, &org_kde_kwin_appmenu_interface,
      wl_proxy_get_version((struct wl_proxy*)org_kde_kwin_appmenu_manager), 0,
      NULL, surface);

  return (struct org_kde_kwin_appmenu*)id;
}

/**
 * @ingroup iface_org_kde_kwin_appmenu_manager
 */
static inline void org_kde_kwin_appmenu_manager_release(
    struct org_kde_kwin_appmenu_manager* org_kde_kwin_appmenu_manager) {
  wl_proxy_marshal_flags(
      (struct wl_proxy*)org_kde_kwin_appmenu_manager,
      ORG_KDE_KWIN_APPMENU_MANAGER_RELEASE, NULL,
      wl_proxy_get_version((struct wl_proxy*)org_kde_kwin_appmenu_manager),
      WL_MARSHAL_FLAG_DESTROY);
}

#define ORG_KDE_KWIN_APPMENU_SET_ADDRESS 0
#define ORG_KDE_KWIN_APPMENU_RELEASE 1

/**
 * @ingroup iface_org_kde_kwin_appmenu
 */
#define ORG_KDE_KWIN_APPMENU_SET_ADDRESS_SINCE_VERSION 1
/**
 * @ingroup iface_org_kde_kwin_appmenu
 */
#define ORG_KDE_KWIN_APPMENU_RELEASE_SINCE_VERSION 1

/** @ingroup iface_org_kde_kwin_appmenu */
static inline void org_kde_kwin_appmenu_set_user_data(
    struct org_kde_kwin_appmenu* org_kde_kwin_appmenu, void* user_data) {
  wl_proxy_set_user_data((struct wl_proxy*)org_kde_kwin_appmenu, user_data);
}

/** @ingroup iface_org_kde_kwin_appmenu */
static inline void* org_kde_kwin_appmenu_get_user_data(
    struct org_kde_kwin_appmenu* org_kde_kwin_appmenu) {
  return wl_proxy_get_user_data((struct wl_proxy*)org_kde_kwin_appmenu);
}

static inline uint32_t org_kde_kwin_appmenu_get_version(
    struct org_kde_kwin_appmenu* org_kde_kwin_appmenu) {
  return wl_proxy_get_version((struct wl_proxy*)org_kde_kwin_appmenu);
}

/** @ingroup iface_org_kde_kwin_appmenu */
static inline void org_kde_kwin_appmenu_destroy(
    struct org_kde_kwin_appmenu* org_kde_kwin_appmenu) {
  wl_proxy_destroy((struct wl_proxy*)org_kde_kwin_appmenu);
}

/**
 * @ingroup iface_org_kde_kwin_appmenu
 *
 * Set or update the service name and object path.
 * Strings should be formatted in Latin-1 matching the relevant DBus
 * specifications.
 */
static inline void org_kde_kwin_appmenu_set_address(
    struct org_kde_kwin_appmenu* org_kde_kwin_appmenu, const char* service_name,
    const char* object_path) {
  wl_proxy_marshal_flags(
      (struct wl_proxy*)org_kde_kwin_appmenu, ORG_KDE_KWIN_APPMENU_SET_ADDRESS,
      NULL, wl_proxy_get_version((struct wl_proxy*)org_kde_kwin_appmenu), 0,
      service_name, object_path);
}

/**
 * @ingroup iface_org_kde_kwin_appmenu
 */
static inline void org_kde_kwin_appmenu_release(
    struct org_kde_kwin_appmenu* org_kde_kwin_appmenu) {
  wl_proxy_marshal_flags(
      (struct wl_proxy*)org_kde_kwin_appmenu, ORG_KDE_KWIN_APPMENU_RELEASE,
      NULL, wl_proxy_get_version((struct wl_proxy*)org_kde_kwin_appmenu),
      WL_MARSHAL_FLAG_DESTROY);
}

#ifdef __cplusplus
}
#endif

#endif
