struct GConfBackendVTable
struct GConfBackendVTable {
/* Set to sizeof (GConfBackendVTable) - used for future proofing */
gsize vtable_size;
void (* shutdown) (GError** err);
GConfSource* (* resolve_address) (const gchar* address,
GError** err);
/* Thread locks. If the backend is thread-safe, then these
* can be NULL. If per-source locks are needed, then these
* calls should lock a mutex stored in the GConfSource.
* If a per-backend lock is needed, then the calls can ignore
* their source argument and lock the whole backend.
*/
void (* lock) (GConfSource* source,
GError** err);
void (* unlock) (GConfSource* source,
GError** err);
/* Report whether a given key (and its subkeys) can be read/written.
* Sources may not permit reading/writing from/to /foo but forbid
* writing to /foo/bar; if a key can be read or written then its
* subkeys may also be read/written.
*
* This field allows backends to be configured so that they only
* store certain kinds of data in certain sections of the GConf
* namespace.
*
* If these functions return an error, they MUST return FALSE as
* well.
*/
gboolean (* readable) (GConfSource* source,
const gchar* key,
GError** err);
gboolean (* writable) (GConfSource* source,
const gchar* key,
GError** err);
/* schema_name filled if NULL or GCONF_VALUE_IGNORE_SUBSEQUENT returned.
if schema_name is NULL, it isn't filled */
GConfValue* (* query_value) (GConfSource* source,
const gchar* key,
const gchar** locales,
gchar** schema_name,
GError** err);
GConfMetaInfo* (* query_metainfo) (GConfSource* source,
const gchar* key,
GError** err);
void (* set_value) (GConfSource* source,
const gchar* key,
const GConfValue* value,
GError** err);
/* Returns list of GConfEntry with key set to a relative
* pathname. In the public client-side API the key
* is always absolute though.
*/
GSList* (* all_entries) (GConfSource* source,
const gchar* dir,
const gchar** locales,
GError** err);
/* Returns list of allocated strings, relative names */
GSList* (* all_subdirs) (GConfSource* source,
const gchar* dir,
GError** err);
void (* unset_value) (GConfSource* source,
const gchar* key,
const gchar* locale,
GError** err);
gboolean (* dir_exists) (GConfSource* source,
const gchar* dir,
GError** err);
void (* remove_dir) (GConfSource* source,
const gchar* dir,
GError** err);
void (* set_schema) (GConfSource* source,
const gchar* key,
const gchar* schema_key,
GError** err);
gboolean (* sync_all) (GConfSource* source,
GError** err);
void (* destroy_source) (GConfSource* source);
/* This is basically used by the test suite */
void (* clear_cache) (GConfSource* source);
/* was used by gconf-sanity-check */
void (* blow_away_locks) (const char *address);
void (* set_notify_func) (GConfSource *source,
GConfSourceNotifyFunc notify_func,
gpointer user_data);
void (* add_listener) (GConfSource *source,
guint id,
const gchar *namespace_section);
void (* remove_listener) (GConfSource *source,
guint id);
};