+/* ------------------------------------------------------------------------
+ * Code for Object, ObjectProxy and ObjectSkeleton
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:timedatedObject
+ * @title: timedatedObject
+ * @short_description: Specialized GDBusObject types
+ *
+ * This section contains the #timedatedObject, #timedatedObjectProxy, and #timedatedObjectSkeleton types which make it easier to work with objects implementing generated types for D-Bus interfaces.
+ */
+
+/**
+ * timedatedObject:
+ *
+ * The #timedatedObject type is a specialized container of interfaces.
+ */
+
+/**
+ * timedatedObjectIface:
+ * @parent_iface: The parent interface.
+ *
+ * Virtual table for the #timedatedObject interface.
+ */
+
+typedef timedatedObjectIface timedatedObjectInterface;
+G_DEFINE_INTERFACE_WITH_CODE (timedatedObject, timedated_object, G_TYPE_OBJECT, g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_DBUS_OBJECT));
+
+static void
+timedated_object_default_init (timedatedObjectIface *iface)
+{
+ /**
+ * timedatedObject:timedate1:
+ *
+ * The #timedatedTimedate1 instance corresponding to the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-timedate1.top_of_page">org.freedesktop.timedate1</link>, if any.
+ *
+ * Connect to the #GObject::notify signal to get informed of property changes.
+ */
+ g_object_interface_install_property (iface, g_param_spec_object ("timedate1", "timedate1", "timedate1", TIMEDATED_TYPE_TIMEDATE1, G_PARAM_READWRITE|G_PARAM_STATIC_STRINGS));
+
+}
+
+/**
+ * timedated_object_get_timedate1:
+ * @object: A #timedatedObject.
+ *
+ * Gets the #timedatedTimedate1 instance for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-timedate1.top_of_page">org.freedesktop.timedate1</link> on @object, if any.
+ *
+ * Returns: (transfer full): A #timedatedTimedate1 that must be freed with g_object_unref() or %NULL if @object does not implement the interface.
+ */
+timedatedTimedate1 *timedated_object_get_timedate1 (timedatedObject *object)
+{
+ GDBusInterface *ret;
+ ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.timedate1");
+ if (ret == NULL)
+ return NULL;
+ return TIMEDATED_TIMEDATE1 (ret);
+}
+
+
+/**
+ * timedated_object_peek_timedate1: (skip)
+ * @object: A #timedatedObject.
+ *
+ * Like timedated_object_get_timedate1() but doesn't increase the reference count on the returned object.
+ *
+ * <warning>It is not safe to use the returned object if you are on another thread than the one where the #GDBusObjectManagerClient or #GDBusObjectManagerServer for @object is running.</warning>
+ *
+ * Returns: (transfer none): A #timedatedTimedate1 or %NULL if @object does not implement the interface. Do not free the returned object, it is owned by @object.
+ */
+timedatedTimedate1 *timedated_object_peek_timedate1 (timedatedObject *object)
+{
+ GDBusInterface *ret;
+ ret = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.timedate1");
+ if (ret == NULL)
+ return NULL;
+ g_object_unref (ret);
+ return TIMEDATED_TIMEDATE1 (ret);
+}
+
+
+static void
+timedated_object_notify (GDBusObject *object, GDBusInterface *interface)
+{
+ _ExtendedGDBusInterfaceInfo *info = (_ExtendedGDBusInterfaceInfo *) g_dbus_interface_get_info (interface);
+ /* info can be NULL if the other end is using a D-Bus interface we don't know
+ * anything about, for example old generated code in this process talking to
+ * newer generated code in the other process. */
+ if (info != NULL)
+ g_object_notify (G_OBJECT (object), info->hyphen_name);
+}
+
+/**
+ * timedatedObjectProxy:
+ *
+ * The #timedatedObjectProxy structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * timedatedObjectProxyClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #timedatedObjectProxy.
+ */
+
+static void
+timedated_object_proxy__timedated_object_iface_init (timedatedObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+static void
+timedated_object_proxy__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+ iface->interface_added = timedated_object_notify;
+ iface->interface_removed = timedated_object_notify;
+}
+
+
+G_DEFINE_TYPE_WITH_CODE (timedatedObjectProxy, timedated_object_proxy, G_TYPE_DBUS_OBJECT_PROXY,
+ G_IMPLEMENT_INTERFACE (TIMEDATED_TYPE_OBJECT, timedated_object_proxy__timedated_object_iface_init)
+ G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, timedated_object_proxy__g_dbus_object_iface_init));
+
+static void
+timedated_object_proxy_init (timedatedObjectProxy *object G_GNUC_UNUSED)
+{
+}
+
+static void
+timedated_object_proxy_set_property (GObject *gobject,
+ guint prop_id,
+ const GValue *value G_GNUC_UNUSED,
+ GParamSpec *pspec)
+{
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+}
+
+static void
+timedated_object_proxy_get_property (GObject *gobject,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ timedatedObjectProxy *object = TIMEDATED_OBJECT_PROXY (gobject);
+ GDBusInterface *interface;
+
+ switch (prop_id)
+ {
+ case 1:
+ interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.timedate1");
+ g_value_take_object (value, interface);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+timedated_object_proxy_class_init (timedatedObjectProxyClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class->set_property = timedated_object_proxy_set_property;
+ gobject_class->get_property = timedated_object_proxy_get_property;
+
+ g_object_class_override_property (gobject_class, 1, "timedate1");
+}
+
+/**
+ * timedated_object_proxy_new:
+ * @connection: A #GDBusConnection.
+ * @object_path: An object path.
+ *
+ * Creates a new proxy object.
+ *
+ * Returns: (transfer full): The proxy object.
+ */
+timedatedObjectProxy *
+timedated_object_proxy_new (GDBusConnection *connection,
+ const gchar *object_path)
+{
+ g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL);
+ g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+ return TIMEDATED_OBJECT_PROXY (g_object_new (TIMEDATED_TYPE_OBJECT_PROXY, "g-connection", connection, "g-object-path", object_path, NULL));
+}
+
+/**
+ * timedatedObjectSkeleton:
+ *
+ * The #timedatedObjectSkeleton structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * timedatedObjectSkeletonClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #timedatedObjectSkeleton.
+ */
+
+static void
+timedated_object_skeleton__timedated_object_iface_init (timedatedObjectIface *iface G_GNUC_UNUSED)
+{
+}
+
+
+static void
+timedated_object_skeleton__g_dbus_object_iface_init (GDBusObjectIface *iface)
+{
+ iface->interface_added = timedated_object_notify;
+ iface->interface_removed = timedated_object_notify;
+}
+
+G_DEFINE_TYPE_WITH_CODE (timedatedObjectSkeleton, timedated_object_skeleton, G_TYPE_DBUS_OBJECT_SKELETON,
+ G_IMPLEMENT_INTERFACE (TIMEDATED_TYPE_OBJECT, timedated_object_skeleton__timedated_object_iface_init)
+ G_IMPLEMENT_INTERFACE (G_TYPE_DBUS_OBJECT, timedated_object_skeleton__g_dbus_object_iface_init));
+
+static void
+timedated_object_skeleton_init (timedatedObjectSkeleton *object G_GNUC_UNUSED)
+{
+}
+
+static void
+timedated_object_skeleton_set_property (GObject *gobject,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ timedatedObjectSkeleton *object = TIMEDATED_OBJECT_SKELETON (gobject);
+ GDBusInterfaceSkeleton *interface;
+
+ switch (prop_id)
+ {
+ case 1:
+ interface = g_value_get_object (value);
+ if (interface != NULL)
+ {
+ g_warn_if_fail (TIMEDATED_IS_TIMEDATE1 (interface));
+ g_dbus_object_skeleton_add_interface (G_DBUS_OBJECT_SKELETON (object), interface);
+ }
+ else
+ {
+ g_dbus_object_skeleton_remove_interface_by_name (G_DBUS_OBJECT_SKELETON (object), "org.freedesktop.timedate1");
+ }
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+timedated_object_skeleton_get_property (GObject *gobject,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ timedatedObjectSkeleton *object = TIMEDATED_OBJECT_SKELETON (gobject);
+ GDBusInterface *interface;
+
+ switch (prop_id)
+ {
+ case 1:
+ interface = g_dbus_object_get_interface (G_DBUS_OBJECT (object), "org.freedesktop.timedate1");
+ g_value_take_object (value, interface);
+ break;
+
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+timedated_object_skeleton_class_init (timedatedObjectSkeletonClass *klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+ gobject_class->set_property = timedated_object_skeleton_set_property;
+ gobject_class->get_property = timedated_object_skeleton_get_property;
+
+ g_object_class_override_property (gobject_class, 1, "timedate1");
+}
+
+/**
+ * timedated_object_skeleton_new:
+ * @object_path: An object path.
+ *
+ * Creates a new skeleton object.
+ *
+ * Returns: (transfer full): The skeleton object.
+ */
+timedatedObjectSkeleton *
+timedated_object_skeleton_new (const gchar *object_path)
+{
+ g_return_val_if_fail (g_variant_is_object_path (object_path), NULL);
+ return TIMEDATED_OBJECT_SKELETON (g_object_new (TIMEDATED_TYPE_OBJECT_SKELETON, "g-object-path", object_path, NULL));
+}
+
+/**
+ * timedated_object_skeleton_set_timedate1:
+ * @object: A #timedatedObjectSkeleton.
+ * @interface_: (allow-none): A #timedatedTimedate1 or %NULL to clear the interface.
+ *
+ * Sets the #timedatedTimedate1 instance for the D-Bus interface <link linkend="gdbus-interface-org-freedesktop-timedate1.top_of_page">org.freedesktop.timedate1</link> on @object.
+ */
+void timedated_object_skeleton_set_timedate1 (timedatedObjectSkeleton *object, timedatedTimedate1 *interface_)
+{
+ g_object_set (G_OBJECT (object), "timedate1", interface_, NULL);
+}
+
+
+/* ------------------------------------------------------------------------
+ * Code for ObjectManager client
+ * ------------------------------------------------------------------------
+ */
+
+/**
+ * SECTION:timedatedObjectManagerClient
+ * @title: timedatedObjectManagerClient
+ * @short_description: Generated GDBusObjectManagerClient type
+ *
+ * This section contains a #GDBusObjectManagerClient that uses timedated_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc.
+ */
+
+/**
+ * timedatedObjectManagerClient:
+ *
+ * The #timedatedObjectManagerClient structure contains only private data and should only be accessed using the provided API.
+ */
+
+/**
+ * timedatedObjectManagerClientClass:
+ * @parent_class: The parent class.
+ *
+ * Class structure for #timedatedObjectManagerClient.
+ */
+
+G_DEFINE_TYPE (timedatedObjectManagerClient, timedated_object_manager_client, G_TYPE_DBUS_OBJECT_MANAGER_CLIENT);
+
+static void
+timedated_object_manager_client_init (timedatedObjectManagerClient *manager G_GNUC_UNUSED)
+{
+}
+
+static void
+timedated_object_manager_client_class_init (timedatedObjectManagerClientClass *klass G_GNUC_UNUSED)
+{
+}
+
+/**
+ * timedated_object_manager_client_get_proxy_type:
+ * @manager: A #GDBusObjectManagerClient.
+ * @object_path: The object path of the remote object (unused).
+ * @interface_name: (allow-none): Interface name of the remote object or %NULL to get the object proxy #GType.
+ * @user_data: User data (unused).
+ *
+ * A #GDBusProxyTypeFunc that maps @interface_name to the generated #GDBusObjectProxy<!-- -->- and #GDBusProxy<!-- -->-derived types.
+ *
+ * Returns: A #GDBusProxy<!-- -->-derived #GType if @interface_name is not %NULL, otherwise the #GType for #timedatedObjectProxy.
+ */
+GType
+timedated_object_manager_client_get_proxy_type (GDBusObjectManagerClient *manager G_GNUC_UNUSED, const gchar *object_path G_GNUC_UNUSED, const gchar *interface_name, gpointer user_data G_GNUC_UNUSED)
+{
+ static gsize once_init_value = 0;
+ static GHashTable *lookup_hash;
+ GType ret;
+
+ if (interface_name == NULL)
+ return TIMEDATED_TYPE_OBJECT_PROXY;
+ if (g_once_init_enter (&once_init_value))
+ {
+ lookup_hash = g_hash_table_new (g_str_hash, g_str_equal);
+ g_hash_table_insert (lookup_hash, (gpointer) "org.freedesktop.timedate1", GSIZE_TO_POINTER (TIMEDATED_TYPE_TIMEDATE1_PROXY));
+ g_once_init_leave (&once_init_value, 1);
+ }
+ ret = (GType) GPOINTER_TO_SIZE (g_hash_table_lookup (lookup_hash, interface_name));
+ if (ret == (GType) 0)
+ ret = G_TYPE_DBUS_PROXY;
+ return ret;
+}
+
+/**
+ * timedated_object_manager_client_new:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Asynchronously creates #GDBusObjectManagerClient using timedated_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new() for more details.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call timedated_object_manager_client_new_finish() to get the result of the operation.
+ *
+ * See timedated_object_manager_client_new_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+timedated_object_manager_client_new (
+ GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TIMEDATED_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", timedated_object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * timedated_object_manager_client_new_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to timedated_object_manager_client_new().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with timedated_object_manager_client_new().
+ *
+ * Returns: (transfer full) (type timedatedObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+timedated_object_manager_client_new_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return G_DBUS_OBJECT_MANAGER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * timedated_object_manager_client_new_sync:
+ * @connection: A #GDBusConnection.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: (allow-none): A bus name (well-known or unique) or %NULL if @connection is not a message bus connection.
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Synchronously creates #GDBusObjectManagerClient using timedated_object_manager_client_get_proxy_type() as the #GDBusProxyTypeFunc. See g_dbus_object_manager_client_new_sync() for more details.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See timedated_object_manager_client_new() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type timedatedObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+timedated_object_manager_client_new_sync (
+ GDBusConnection *connection,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TIMEDATED_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "connection", connection, "object-path", object_path, "get-proxy-type-func", timedated_object_manager_client_get_proxy_type, NULL);
+ if (ret != NULL)
+ return G_DBUS_OBJECT_MANAGER (ret);
+ else
+ return NULL;
+}
+
+
+/**
+ * timedated_object_manager_client_new_for_bus:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @callback: A #GAsyncReadyCallback to call when the request is satisfied.
+ * @user_data: User data to pass to @callback.
+ *
+ * Like timedated_object_manager_client_new() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * When the operation is finished, @callback will be invoked in the <link linkend="g-main-context-push-thread-default">thread-default main loop</link> of the thread you are calling this method from.
+ * You can then call timedated_object_manager_client_new_for_bus_finish() to get the result of the operation.
+ *
+ * See timedated_object_manager_client_new_for_bus_sync() for the synchronous, blocking version of this constructor.
+ */
+void
+timedated_object_manager_client_new_for_bus (
+ GBusType bus_type,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GAsyncReadyCallback callback,
+ gpointer user_data)
+{
+ g_async_initable_new_async (TIMEDATED_TYPE_OBJECT_MANAGER_CLIENT, G_PRIORITY_DEFAULT, cancellable, callback, user_data, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", timedated_object_manager_client_get_proxy_type, NULL);
+}
+
+/**
+ * timedated_object_manager_client_new_for_bus_finish:
+ * @res: The #GAsyncResult obtained from the #GAsyncReadyCallback passed to timedated_object_manager_client_new_for_bus().
+ * @error: Return location for error or %NULL
+ *
+ * Finishes an operation started with timedated_object_manager_client_new_for_bus().
+ *
+ * Returns: (transfer full) (type timedatedObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+timedated_object_manager_client_new_for_bus_finish (
+ GAsyncResult *res,
+ GError **error)
+{
+ GObject *ret;
+ GObject *source_object;
+ source_object = g_async_result_get_source_object (res);
+ ret = g_async_initable_new_finish (G_ASYNC_INITABLE (source_object), res, error);
+ g_object_unref (source_object);
+ if (ret != NULL)
+ return G_DBUS_OBJECT_MANAGER (ret);
+ else
+ return NULL;
+}
+
+/**
+ * timedated_object_manager_client_new_for_bus_sync:
+ * @bus_type: A #GBusType.
+ * @flags: Flags from the #GDBusObjectManagerClientFlags enumeration.
+ * @name: A bus name (well-known or unique).
+ * @object_path: An object path.
+ * @cancellable: (allow-none): A #GCancellable or %NULL.
+ * @error: Return location for error or %NULL
+ *
+ * Like timedated_object_manager_client_new_sync() but takes a #GBusType instead of a #GDBusConnection.
+ *
+ * The calling thread is blocked until a reply is received.
+ *
+ * See timedated_object_manager_client_new_for_bus() for the asynchronous version of this constructor.
+ *
+ * Returns: (transfer full) (type timedatedObjectManagerClient): The constructed object manager client or %NULL if @error is set.
+ */
+GDBusObjectManager *
+timedated_object_manager_client_new_for_bus_sync (
+ GBusType bus_type,
+ GDBusObjectManagerClientFlags flags,
+ const gchar *name,
+ const gchar *object_path,
+ GCancellable *cancellable,
+ GError **error)
+{
+ GInitable *ret;
+ ret = g_initable_new (TIMEDATED_TYPE_OBJECT_MANAGER_CLIENT, cancellable, error, "flags", flags, "name", name, "bus-type", bus_type, "object-path", object_path, "get-proxy-type-func", timedated_object_manager_client_get_proxy_type, NULL);
+ if (ret != NULL)
+ return G_DBUS_OBJECT_MANAGER (ret);
+ else
+ return NULL;
+}
+
+