From 3e36ee34269273df6a8d56fee7e7ee10eb913379 Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Thu, 15 Apr 2010 18:22:14 -0400 Subject: [PATCH] add 'null' GSettings backend --- gio/Makefile.am | 2 + gio/gnullsettingsbackend.c | 107 +++++++++++++++++++++++++++++++++++++++++++++ gio/gnullsettingsbackend.h | 30 +++++++++++++ 3 files changed, 139 insertions(+) create mode 100644 gio/gnullsettingsbackend.c create mode 100644 gio/gnullsettingsbackend.h diff --git a/gio/Makefile.am b/gio/Makefile.am index e0c2090..2bd0bec 100644 --- a/gio/Makefile.am +++ b/gio/Makefile.am @@ -81,6 +81,8 @@ gio-marshal.c: gio-marshal.h gio-marshal.list settings_sources = \ gsettingsbackendinternal.h \ + gnullsettingsbackend.h \ + gnullsettingsbackend.c \ gsettingsbackend.c settings_headers = \ diff --git a/gio/gnullsettingsbackend.c b/gio/gnullsettingsbackend.c new file mode 100644 index 0000000..e09ed9f --- /dev/null +++ b/gio/gnullsettingsbackend.c @@ -0,0 +1,107 @@ +/* + * Copyright © 2010 Codethink Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the licence, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Ryan Lortie + */ + +#include "config.h" + +#include "gnullsettingsbackend.h" + +#define G_TYPE_NULL_SETTINGS_BACKEND (g_null_settings_backend_get_type ()) +#define G_NULL_SETTINGS_BACKEND(inst) (G_TYPE_CHECK_INSTANCE_CAST ((inst), \ + G_TYPE_NULL_SETTINGS_BACKEND, \ + GNullSettingsBackend)) + + +typedef GSettingsBackendClass GNullSettingsBackendClass; +typedef GSettingsBackend GNullSettingsBackend; + +G_DEFINE_TYPE (GNullSettingsBackend, + g_null_settings_backend, + G_TYPE_SETTINGS_BACKEND) + +static GVariant * +g_null_settings_backend_read (GSettingsBackend *backend, + const gchar *key, + const GVariantType *expected_type) +{ + return NULL; +} + +static gboolean +g_null_settings_backend_write (GSettingsBackend *backend, + const gchar *key, + GVariant *value, + gpointer origin_tag) +{ + return FALSE; +} + +static gboolean +g_null_settings_backend_write_keys (GSettingsBackend *backend, + GTree *tree, + gpointer origin_tag) +{ + return FALSE; +} + +static void +g_null_settings_backend_reset (GSettingsBackend *backend, + const gchar *key, + gpointer origin_tag) +{ +} + +static void +g_null_settings_backend_reset_path (GSettingsBackend *backend, + const gchar *path, + gpointer origin_tag) +{ +} + +static gboolean +g_null_settings_backend_get_writable (GSettingsBackend *backend, + const gchar *name) +{ + return FALSE; +} + +static void +g_null_settings_backend_init (GNullSettingsBackend *memory) +{ +} + +static void +g_null_settings_backend_class_init (GNullSettingsBackendClass *class) +{ + GSettingsBackendClass *backend_class = G_SETTINGS_BACKEND_CLASS (class); + + backend_class->read = g_null_settings_backend_read; + backend_class->write = g_null_settings_backend_write; + backend_class->write_keys = g_null_settings_backend_write_keys; + backend_class->reset = g_null_settings_backend_reset; + backend_class->reset_path = g_null_settings_backend_reset_path; + backend_class->get_writable = g_null_settings_backend_get_writable; +} + +GSettingsBackend * +g_null_settings_backend_new (void) +{ + return g_object_new (G_TYPE_NULL_SETTINGS_BACKEND, NULL); +} diff --git a/gio/gnullsettingsbackend.h b/gio/gnullsettingsbackend.h new file mode 100644 index 0000000..ea07f52 --- /dev/null +++ b/gio/gnullsettingsbackend.h @@ -0,0 +1,30 @@ +/* + * Copyright © 2010 Codethink Limited + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the licence, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + * + * Author: Ryan Lortie + */ + +#ifndef __G_NULL_SETTINGS_BACKEND_H__ +#define __G_NULL_SETTINGS_BACKEND_H__ + +#include + +G_GNUC_INTERNAL +GSettingsBackend * g_null_settings_backend_new (void); + +#endif /* __G_NULL_SETTINGS_BACKEND_H__ */ -- 2.7.4