
/* File: eggdbusintrospectable.h
 *
 * Generated by eggdbus-binding-tool 0.6. Do not edit.
 */

#ifndef __EGG_DBUS_INTROSPECTABLE_H
#define __EGG_DBUS_INTROSPECTABLE_H

#include <glib-object.h>
#include <gio/gio.h>
#include <eggdbus/eggdbustypes.h>
#include <eggdbus/eggdbusinterface.h>
#include <eggdbus/eggdbusinterfaceproxy.h>
#include <eggdbus/eggdbusrequestnameflags.h>
#include <eggdbus/eggdbusrequestnamereply.h>
#include <eggdbus/eggdbusreleasenamereply.h>
#include <eggdbus/eggdbusstartservicebynamereply.h>

G_BEGIN_DECLS

#define EGG_DBUS_TYPE_INTROSPECTABLE         (egg_dbus_introspectable_get_type())
#define EGG_DBUS_INTROSPECTABLE(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), EGG_DBUS_TYPE_INTROSPECTABLE, EggDBusIntrospectable))
#define EGG_DBUS_IS_INTROSPECTABLE(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), EGG_DBUS_TYPE_INTROSPECTABLE))
#define EGG_DBUS_INTROSPECTABLE_GET_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE((o), EGG_DBUS_TYPE_INTROSPECTABLE, EggDBusIntrospectableIface))

#if 0
typedef struct _EggDBusIntrospectable EggDBusIntrospectable; /* Dummy typedef */
#endif
typedef struct _EggDBusIntrospectableIface EggDBusIntrospectableIface;

/**
 * EGG_DBUS_QUERY_INTERFACE_INTROSPECTABLE:
 * @object_proxy: A #EggDBusObjectProxy.
 *
 * Convenience macro to get an interface proxy for the remote object represented
 * by @object_proxy. See egg_dbus_object_proxy_query_interface() for details.
 *
 * Returns: An instance derived from #EggDBusInterfaceProxy that implements the
 *          #EggDBusIntrospectable interface. This instance can be used to access the
 *          <link linkend="eggdbus-interface-org.freedesktop.DBus.Introspectable">org.freedesktop.DBus.Introspectable</link> D-Bus interface on the remote
 *          object represented by @object_proxy. Do not ref or unref the returned instance,
 *          it is owned by @object_proxy.
 */
#define EGG_DBUS_QUERY_INTERFACE_INTROSPECTABLE(object_proxy) (EGG_DBUS_INTROSPECTABLE (egg_dbus_object_proxy_query_interface (object_proxy, EGG_DBUS_TYPE_INTROSPECTABLE)))

/**
 * EggDBusIntrospectableIface:
 * @g_iface: The parent interface.
 * @handle_introspect: Object instances may implement this method which returns an XML description of the object, including its interfaces (with signals, methods and properties) and objects below it in the object path tree. See the D-Bus specification for the exact format of D-Bus Introspection XML.
 *
 * Interface VTable for implementing the <link linkend="eggdbus-interface-org.freedesktop.DBus.Introspectable">org.freedesktop.DBus.Introspectable</link> D-Bus interface.
 */
struct _EggDBusIntrospectableIface
{
  EggDBusInterfaceIface g_iface;

  void (* handle_introspect) (
      EggDBusIntrospectable *instance,
      EggDBusMethodInvocation *method_invocation);
};

GType egg_dbus_introspectable_get_type (void) G_GNUC_CONST;

gboolean egg_dbus_introspectable_introspect_sync (
    EggDBusIntrospectable *instance,
    EggDBusCallFlags call_flags,
    gchar **out_xml_data,
    GCancellable *cancellable,
    GError **error);

guint egg_dbus_introspectable_introspect (
    EggDBusIntrospectable *instance,
    EggDBusCallFlags call_flags,
    GCancellable *cancellable,
    GAsyncReadyCallback callback,
    gpointer user_data);

gboolean egg_dbus_introspectable_introspect_finish (
    EggDBusIntrospectable *instance,
    gchar **out_xml_data,
    GAsyncResult *res,
    GError **error);

void egg_dbus_introspectable_handle_introspect_finish (
    EggDBusMethodInvocation *method_invocation,
    const gchar *out_xml_data);

G_END_DECLS

#endif /* __EGG_DBUS_INTROSPECTABLE_H */
