add get_permission API to GSettingsBackend
[platform/upstream/glib.git] / gio / gsettingsbackend.h
index ecdf51b..7fdd4e4 100644 (file)
@@ -28,7 +28,9 @@
 #error "You must define G_SETTINGS_ENABLE_BACKEND before including <gio/gsettingsbackend.h>."
 #endif
 
-#include <glib-object.h>
+#define __GIO_GIO_H_INSIDE__
+#include <gio/giotypes.h>
+#undef __GIO_GIO_H_INSIDE__
 
 G_BEGIN_DECLS
 
@@ -65,27 +67,42 @@ struct _GSettingsBackendClass
 {
   GObjectClass parent_class;
 
-  gboolean    (*supports_context) (const gchar         *context);
-
-  GVariant *  (*read)             (GSettingsBackend    *backend,
-                                   const gchar         *key,
-                                   const GVariantType  *expected_type);
-  void        (*write)            (GSettingsBackend    *backend,
-                                   const gchar         *key,
-                                   GVariant            *value,
-                                   gpointer             origin_tag);
-  void        (*write_keys)       (GSettingsBackend    *backend,
-                                   GTree               *tree,
-                                   gpointer             origin_tag);
-  void        (*reset)            (GSettingsBackend    *backend,
-                                   const gchar         *name,
-                                   gpointer             origin_tag);
-  gboolean    (*get_writable)     (GSettingsBackend    *backend,
-                                   const gchar         *name);
-  void        (*subscribe)        (GSettingsBackend    *backend,
-                                   const gchar         *name);
-  void        (*unsubscribe)      (GSettingsBackend    *backend,
-                                   const gchar         *name);
+  gboolean      (*supports_context) (const gchar         *context);
+
+  GVariant *    (*read)             (GSettingsBackend    *backend,
+                                     const gchar         *key,
+                                     const GVariantType  *expected_type,
+                                     gboolean             default_value);
+  gchar **      (*list)             (GSettingsBackend    *backend,
+                                     const gchar         *path,
+                                     gchar              **resets,
+                                     gsize                n_resets,
+                                     gsize               *length);
+  gboolean      (*write)            (GSettingsBackend    *backend,
+                                     const gchar         *key,
+                                     GVariant            *value,
+                                     gpointer             origin_tag);
+  gboolean      (*write_keys)       (GSettingsBackend    *backend,
+                                     GTree               *tree,
+                                     gpointer             origin_tag);
+  void          (*reset)            (GSettingsBackend    *backend,
+                                     const gchar         *key,
+                                     gpointer             origin_tag);
+  void          (*reset_path)       (GSettingsBackend    *backend,
+                                     const gchar         *path,
+                                     gpointer             origin_tag);
+  gboolean      (*get_writable)     (GSettingsBackend    *backend,
+                                     const gchar         *key);
+  void          (*subscribe)        (GSettingsBackend    *backend,
+                                     const gchar         *name);
+  void          (*unsubscribe)      (GSettingsBackend    *backend,
+                                     const gchar         *name);
+  void          (*sync)             (GSettingsBackend    *backend);
+
+  GPermission * (*get_permission)   (GSettingsBackend    *backend,
+                                     const gchar         *path);
+
+  gpointer padding[7];
 };
 
 struct _GSettingsBackend
@@ -98,12 +115,21 @@ struct _GSettingsBackend
 
 GType                           g_settings_backend_get_type             (void);
 
+void                            g_settings_backend_setup                (const gchar         *context,
+                                                                         GSettingsBackend    *backend);
+void                            g_settings_backend_setup_keyfile        (const gchar         *context,
+                                                                         const gchar         *filename);
+
 void                            g_settings_backend_changed              (GSettingsBackend    *backend,
                                                                          const gchar         *key,
                                                                          gpointer             origin_tag);
 void                            g_settings_backend_path_changed         (GSettingsBackend    *backend,
                                                                          const gchar         *path,
                                                                          gpointer             origin_tag);
+void                            g_settings_backend_flatten_tree         (GTree               *tree,
+                                                                         gchar              **path,
+                                                                         const gchar       ***keys,
+                                                                         GVariant          ***values);
 void                            g_settings_backend_keys_changed         (GSettingsBackend    *backend,
                                                                          const gchar         *path,
                                                                          gchar const * const *items,