glib/gio/gsettingsschema.h
Xavier Claessens dcfc9f689e Fix symbol visibility macros on Windows
There is currently no `dllimport` attribute on any of our function,
which prevents MSVC to optimize function calls.

To fix that issue, we need to redeclare all our visibility macros for
each of our libraries, because when compiling e.g. GIO code, we need
dllimport in GLIB headers and dllexport in GIO headers. That means they
cannot use the same GLIB_AVAILABLE_* macro.

Since that's a lot of boilerplate to copy/paste after each version bump,
this MR generate all those macros using a python script.

Also simplify the meson side by using `gnu_symbol_visibility : 'hidden'`
keyword argument instead of passing the cflag manually.

This leaves only API index to add manually into glib-docs.xml when
bumping GLib version. That file cannot be generated because Meson does
not allow passing a buit file to gnome.gtkdoc()'s main_xml kwarg
unfortunately.
2022-10-13 20:53:56 -04:00

116 lines
5.9 KiB
C

/*
* Copyright © 2010 Codethink Limited
* Copyright © 2011 Canonical Limited
*
* SPDX-License-Identifier: LGPL-2.1-or-later
*
* 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.1 of the License, 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, see <http://www.gnu.org/licenses/>.
*/
#ifndef __G_SETTINGS_SCHEMA_H__
#define __G_SETTINGS_SCHEMA_H__
#include <glib-object.h>
#include <gio/gio-visibility.h>
G_BEGIN_DECLS
typedef struct _GSettingsSchemaSource GSettingsSchemaSource;
typedef struct _GSettingsSchema GSettingsSchema;
typedef struct _GSettingsSchemaKey GSettingsSchemaKey;
#define G_TYPE_SETTINGS_SCHEMA_SOURCE (g_settings_schema_source_get_type ())
GLIB_AVAILABLE_IN_2_32
GType g_settings_schema_source_get_type (void) G_GNUC_CONST;
GLIB_AVAILABLE_IN_2_32
GSettingsSchemaSource * g_settings_schema_source_get_default (void);
GLIB_AVAILABLE_IN_2_32
GSettingsSchemaSource * g_settings_schema_source_ref (GSettingsSchemaSource *source);
GLIB_AVAILABLE_IN_2_32
void g_settings_schema_source_unref (GSettingsSchemaSource *source);
GLIB_AVAILABLE_IN_2_32
GSettingsSchemaSource * g_settings_schema_source_new_from_directory (const gchar *directory,
GSettingsSchemaSource *parent,
gboolean trusted,
GError **error);
GLIB_AVAILABLE_IN_2_32
GSettingsSchema * g_settings_schema_source_lookup (GSettingsSchemaSource *source,
const gchar *schema_id,
gboolean recursive);
GLIB_AVAILABLE_IN_2_40
void g_settings_schema_source_list_schemas (GSettingsSchemaSource *source,
gboolean recursive,
gchar ***non_relocatable,
gchar ***relocatable);
#define G_TYPE_SETTINGS_SCHEMA (g_settings_schema_get_type ())
GLIB_AVAILABLE_IN_2_32
GType g_settings_schema_get_type (void) G_GNUC_CONST;
GLIB_AVAILABLE_IN_2_32
GSettingsSchema * g_settings_schema_ref (GSettingsSchema *schema);
GLIB_AVAILABLE_IN_2_32
void g_settings_schema_unref (GSettingsSchema *schema);
GLIB_AVAILABLE_IN_2_32
const gchar * g_settings_schema_get_id (GSettingsSchema *schema);
GLIB_AVAILABLE_IN_2_32
const gchar * g_settings_schema_get_path (GSettingsSchema *schema);
GLIB_AVAILABLE_IN_2_40
GSettingsSchemaKey * g_settings_schema_get_key (GSettingsSchema *schema,
const gchar *name);
GLIB_AVAILABLE_IN_2_40
gboolean g_settings_schema_has_key (GSettingsSchema *schema,
const gchar *name);
GLIB_AVAILABLE_IN_2_46
gchar** g_settings_schema_list_keys (GSettingsSchema *schema);
GLIB_AVAILABLE_IN_2_44
gchar ** g_settings_schema_list_children (GSettingsSchema *schema);
#define G_TYPE_SETTINGS_SCHEMA_KEY (g_settings_schema_key_get_type ())
GLIB_AVAILABLE_IN_2_40
GType g_settings_schema_key_get_type (void) G_GNUC_CONST;
GLIB_AVAILABLE_IN_2_40
GSettingsSchemaKey * g_settings_schema_key_ref (GSettingsSchemaKey *key);
GLIB_AVAILABLE_IN_2_40
void g_settings_schema_key_unref (GSettingsSchemaKey *key);
GLIB_AVAILABLE_IN_2_40
const GVariantType * g_settings_schema_key_get_value_type (GSettingsSchemaKey *key);
GLIB_AVAILABLE_IN_2_40
GVariant * g_settings_schema_key_get_default_value (GSettingsSchemaKey *key);
GLIB_AVAILABLE_IN_2_40
GVariant * g_settings_schema_key_get_range (GSettingsSchemaKey *key);
GLIB_AVAILABLE_IN_2_40
gboolean g_settings_schema_key_range_check (GSettingsSchemaKey *key,
GVariant *value);
GLIB_AVAILABLE_IN_2_44
const gchar * g_settings_schema_key_get_name (GSettingsSchemaKey *key);
GLIB_AVAILABLE_IN_2_40
const gchar * g_settings_schema_key_get_summary (GSettingsSchemaKey *key);
GLIB_AVAILABLE_IN_2_40
const gchar * g_settings_schema_key_get_description (GSettingsSchemaKey *key);
G_END_DECLS
#endif /* __G_SETTINGS_SCHEMA_H__ */