diff options
author | Michael Catanzaro <mcatanzaro@posteo.net> | 2018-11-21 16:48:01 +0000 |
---|---|---|
committer | Michael Catanzaro <mcatanzaro@posteo.net> | 2018-11-21 16:48:01 +0000 |
commit | 1fb31a16c306e3101c04074070ae1a154801d260 (patch) | |
tree | 27dbd4d2f6cf88dd0f91511c5e5713b7192c8316 /gvdb-reader.h | |
parent | 2d462bf661d768a157eb2f4ac6a28f7ee9e26c89 (diff) | |
parent | e1bcd7529e534f4f33b1564243fb5fe56a2ba13c (diff) | |
download | dconf-1fb31a16c306e3101c04074070ae1a154801d260.tar.gz |
Merge branch 'wip/lantw/use-weak-symbols-in-gvdb' into 'master'
build: Use weak bindings in gvdb to fix linking with LLD
Closes dconf#47
See merge request GNOME/gvdb!2
Diffstat (limited to 'gvdb-reader.h')
-rw-r--r-- | gvdb-reader.h | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/gvdb-reader.h b/gvdb-reader.h index 9bf627f..79a97d3 100644 --- a/gvdb-reader.h +++ b/gvdb-reader.h @@ -22,40 +22,55 @@ #include <glib.h> +/* We cannot enable the weak attribute unconditionally here because both + * gvdb/gvdb-reader.c and tests/dconf-mock-gvdb.c include this file. The + * intention of using weak symbols here is to allow the latter to override + * functions defined in the former, so functions in tests/dconf-mock-gvdb.c + * must have strong bindings. */ +#ifdef GVDB_USE_WEAK_SYMBOLS +# ifdef __GNUC__ +# define GVDB_GNUC_WEAK __attribute__((weak)) +# else +# define GVDB_GNUC_WEAK +# endif +#else +# define GVDB_GNUC_WEAK +#endif + typedef struct _GvdbTable GvdbTable; G_BEGIN_DECLS -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK GvdbTable * gvdb_table_new_from_bytes (GBytes *bytes, gboolean trusted, GError **error); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK GvdbTable * gvdb_table_new (const gchar *filename, gboolean trusted, GError **error); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK void gvdb_table_free (GvdbTable *table); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK gchar ** gvdb_table_get_names (GvdbTable *table, gsize *length); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK gchar ** gvdb_table_list (GvdbTable *table, const gchar *key); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK GvdbTable * gvdb_table_get_table (GvdbTable *table, const gchar *key); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK GVariant * gvdb_table_get_raw_value (GvdbTable *table, const gchar *key); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK GVariant * gvdb_table_get_value (GvdbTable *table, const gchar *key); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK gboolean gvdb_table_has_value (GvdbTable *table, const gchar *key); -G_GNUC_INTERNAL +G_GNUC_INTERNAL GVDB_GNUC_WEAK gboolean gvdb_table_is_valid (GvdbTable *table); G_END_DECLS |