1/*
2 * Copyright © 2010 Codethink Limited
3 * Copyright © 2011 Canonical Limited
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the licence, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifndef __G_SETTINGS_SCHEMA_H__
20#define __G_SETTINGS_SCHEMA_H__
21
22#include <glib-object.h>
23
24G_BEGIN_DECLS
25
26typedef struct _GSettingsSchemaSource GSettingsSchemaSource;
27typedef struct _GSettingsSchema GSettingsSchema;
28typedef struct _GSettingsSchemaKey GSettingsSchemaKey;
29
30#define G_TYPE_SETTINGS_SCHEMA_SOURCE (g_settings_schema_source_get_type ())
31GLIB_AVAILABLE_IN_2_32
32GType g_settings_schema_source_get_type (void) G_GNUC_CONST;
33
34GLIB_AVAILABLE_IN_2_32
35GSettingsSchemaSource * g_settings_schema_source_get_default (void);
36GLIB_AVAILABLE_IN_2_32
37GSettingsSchemaSource * g_settings_schema_source_ref (GSettingsSchemaSource *source);
38GLIB_AVAILABLE_IN_2_32
39void g_settings_schema_source_unref (GSettingsSchemaSource *source);
40
41GLIB_AVAILABLE_IN_2_32
42GSettingsSchemaSource * g_settings_schema_source_new_from_directory (const gchar *directory,
43 GSettingsSchemaSource *parent,
44 gboolean trusted,
45 GError **error);
46
47GLIB_AVAILABLE_IN_2_32
48GSettingsSchema * g_settings_schema_source_lookup (GSettingsSchemaSource *source,
49 const gchar *schema_id,
50 gboolean recursive);
51
52GLIB_AVAILABLE_IN_2_40
53void g_settings_schema_source_list_schemas (GSettingsSchemaSource *source,
54 gboolean recursive,
55 gchar ***non_relocatable,
56 gchar ***relocatable);
57
58#define G_TYPE_SETTINGS_SCHEMA (g_settings_schema_get_type ())
59GLIB_AVAILABLE_IN_2_32
60GType g_settings_schema_get_type (void) G_GNUC_CONST;
61
62GLIB_AVAILABLE_IN_2_32
63GSettingsSchema * g_settings_schema_ref (GSettingsSchema *schema);
64GLIB_AVAILABLE_IN_2_32
65void g_settings_schema_unref (GSettingsSchema *schema);
66
67GLIB_AVAILABLE_IN_2_32
68const gchar * g_settings_schema_get_id (GSettingsSchema *schema);
69GLIB_AVAILABLE_IN_2_32
70const gchar * g_settings_schema_get_path (GSettingsSchema *schema);
71GLIB_AVAILABLE_IN_2_40
72GSettingsSchemaKey * g_settings_schema_get_key (GSettingsSchema *schema,
73 const gchar *name);
74GLIB_AVAILABLE_IN_2_40
75gboolean g_settings_schema_has_key (GSettingsSchema *schema,
76 const gchar *name);
77GLIB_AVAILABLE_IN_2_46
78gchar** g_settings_schema_list_keys (GSettingsSchema *schema);
79
80
81GLIB_AVAILABLE_IN_2_44
82gchar ** g_settings_schema_list_children (GSettingsSchema *schema);
83
84#define G_TYPE_SETTINGS_SCHEMA_KEY (g_settings_schema_key_get_type ())
85GLIB_AVAILABLE_IN_2_40
86GType g_settings_schema_key_get_type (void) G_GNUC_CONST;
87
88GLIB_AVAILABLE_IN_2_40
89GSettingsSchemaKey * g_settings_schema_key_ref (GSettingsSchemaKey *key);
90GLIB_AVAILABLE_IN_2_40
91void g_settings_schema_key_unref (GSettingsSchemaKey *key);
92
93GLIB_AVAILABLE_IN_2_40
94const GVariantType * g_settings_schema_key_get_value_type (GSettingsSchemaKey *key);
95GLIB_AVAILABLE_IN_2_40
96GVariant * g_settings_schema_key_get_default_value (GSettingsSchemaKey *key);
97GLIB_AVAILABLE_IN_2_40
98GVariant * g_settings_schema_key_get_range (GSettingsSchemaKey *key);
99GLIB_AVAILABLE_IN_2_40
100gboolean g_settings_schema_key_range_check (GSettingsSchemaKey *key,
101 GVariant *value);
102
103GLIB_AVAILABLE_IN_2_44
104const gchar * g_settings_schema_key_get_name (GSettingsSchemaKey *key);
105GLIB_AVAILABLE_IN_2_40
106const gchar * g_settings_schema_key_get_summary (GSettingsSchemaKey *key);
107GLIB_AVAILABLE_IN_2_40
108const gchar * g_settings_schema_key_get_description (GSettingsSchemaKey *key);
109
110G_END_DECLS
111
112#endif /* __G_SETTINGS_SCHEMA_H__ */
113