From cb24bcc61301c2099289e684edb93becb2a01c39 Mon Sep 17 00:00:00 2001 From: Tor Lillqvist Date: Wed, 8 Sep 2010 17:36:10 +0300 Subject: [PATCH] Turn the gtk version and age variables into functions Having variables exported from a DLL is slightly painful and potentially error-prone on Windows, so let's try get rid of them now when we can. Starting with these. --- demos/gtk-demo/appwindow.c | 6 +- docs/reference/gtk/tmpl/gtkfeatures.sgml | 58 -------------- gtk/gtk.symbols | 10 +-- gtk/gtkmain.c | 97 ++++++++++++++++++++++-- gtk/gtkmain.h | 19 ++--- tests/testgtk.c | 10 +-- 6 files changed, 111 insertions(+), 89 deletions(-) diff --git a/demos/gtk-demo/appwindow.c b/demos/gtk-demo/appwindow.c index 57cb0cea49..2953bb8a01 100644 --- a/demos/gtk-demo/appwindow.c +++ b/demos/gtk-demo/appwindow.c @@ -124,7 +124,11 @@ about_cb (GtkAction *action, gtk_about_dialog_set_url_hook (activate_url, NULL, NULL); gtk_show_about_dialog (GTK_WINDOW (window), "program-name", "GTK+ Code Demos", - "version", PACKAGE_VERSION, + "version", g_strdup_printf ("%s,\nRunning against GTK+ %d.%d.%d", + PACKAGE_VERSION, + gtk_major_version (), + gtk_minor_version (), + gtk_micro_version ()), "copyright", "(C) 1997-2009 The GTK+ Team", "license-type", GTK_LICENSE_LGPL_2_1, "website", "http://www.gtk.org", diff --git a/docs/reference/gtk/tmpl/gtkfeatures.sgml b/docs/reference/gtk/tmpl/gtkfeatures.sgml index 16e0adddc5..f6f7d95d0e 100644 --- a/docs/reference/gtk/tmpl/gtkfeatures.sgml +++ b/docs/reference/gtk/tmpl/gtkfeatures.sgml @@ -22,64 +22,6 @@ typically use the features described here. - - -The major version number of the GTK+ library. (e.g. in GTK+ version -1.2.5 this is 1.) - - - -This variable is in the library, so represents the -GTK+ library you have linked against. Contrast with the -#GTK_MAJOR_VERSION macro, which represents the major version of the -GTK+ headers you have included. - - - - - -The minor version number of the GTK+ library. -(e.g. in GTK+ version 1.2.5 this is 2.) - - - -This variable is in the library, so represents the -GTK+ library you have linked against. Contrast with the -#GTK_MINOR_VERSION macro, which represents the minor version of the -GTK+ headers you have included. - - - - - -The micro version number of the GTK+ library. -(e.g. in GTK+ version 1.2.5 this is 5.) - - - - -This variable is in the library, so represents the GTK+ library you -have linked against. Contrast with the #GTK_MICRO_VERSION macro, which -represents the micro version of the GTK+ headers you have included. - - - - - -This is the binary age passed to libtool. If -libtool means nothing to you, don't worry -about it. ;-) - - - - - -This is the interface age passed to libtool. If -libtool means nothing to you, don't worry -about it. ;-) - - - diff --git a/gtk/gtk.symbols b/gtk/gtk.symbols index 3ba5bb8d4e..64792c91bd 100644 --- a/gtk/gtk.symbols +++ b/gtk/gtk.symbols @@ -1860,6 +1860,11 @@ gtk_events_pending gtk_disable_setlocale gtk_distribute_natural_allocation gtk_set_locale +gtk_binary_age +gtk_interface_age +gtk_major_version +gtk_minor_version +gtk_micro_version gtk_check_version gtk_get_default_language gtk_get_event_widget @@ -4535,11 +4540,6 @@ gtk_info_bar_get_message_type #endif #ifdef INCLUDE_VARIABLES -gtk_binary_age -gtk_interface_age -gtk_major_version -gtk_minor_version -gtk_micro_version gtk_debug_flags gtk_text_attr_appearance_type gtk_text_char_type diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c index a7cd8461f1..89c2c30301 100644 --- a/gtk/gtkmain.c +++ b/gtk/gtkmain.c @@ -179,12 +179,6 @@ static gint gtk_invoke_key_snoopers (GtkWidget *grab_widget, static GtkWindowGroup *gtk_main_get_window_group (GtkWidget *widget); -const guint gtk_major_version = GTK_MAJOR_VERSION; -const guint gtk_minor_version = GTK_MINOR_VERSION; -const guint gtk_micro_version = GTK_MICRO_VERSION; -const guint gtk_binary_age = GTK_BINARY_AGE; -const guint gtk_interface_age = GTK_INTERFACE_AGE; - static guint gtk_main_loop_level = 0; static gint pre_initialized = FALSE; static gint gtk_initialized = FALSE; @@ -218,6 +212,97 @@ static const GDebugKey gtk_debug_keys[] = { }; #endif /* G_ENABLE_DEBUG */ +/** + * gtk_major_version: + * + * Returns the major version number of the GTK+ library. (e.g. in GTK+ version + * 3.1.5 this is 3.) + * + * This function is in the library, so it represents the GTK+ library + * your code is running against. Contrast with the #GTK_MAJOR_VERSION + * macro, which represents the major version of the GTK+ headers you + * have included when compiling your code. + * + * Returns the major version number of the GTK+ library. + */ +guint +gtk_major_version (void) +{ + return GTK_MAJOR_VERSION; +} + +/** + * gtk_minor_version: + * + * Returns the minor version number of the GTK+ library. (e.g. in GTK+ version + * 3.1.5 this is 1.) + * + * This function is in the library, so it represents the GTK+ library + * your code is are running against. Contrast with the + * #GTK_MINOR_VERSION macro, which represents the minor version of the + * GTK+ headers you have included when compiling your code. + * + * Returns the minor version number of the GTK+ library. + */ +guint +gtk_minor_version (void) +{ + return GTK_MINOR_VERSION; +} + +/** + * gtk_micro_version: + * + * Returns the micro version number of the GTK+ library. (e.g. in GTK+ version + * 3.1.5 this is 5.) + * + * This function is in the library, so it represents the GTK+ library + * your code is are running against. Contrast with the + * #GTK_MICRO_VERSION macro, which represents the micro version of the + * GTK+ headers you have included when compiling your code. + * + * Returns the micro version number of the GTK+ library. + */ +guint +gtk_micro_version (void) +{ + return GTK_MICRO_VERSION; +} + +/** + * gtk_binary_age: + * + * Returns the binary age as passed to + * libtool when building the GTK+ library + * the process is running against. If + * libtool means nothing to you, don't + * worry about it. + * + * Returns the binary age of the GTK+ library. + */ +guint +gtk_binary_age (void) +{ + return GTK_BINARY_AGE; +} + +/** + * gtk_interface_age: + * + * Returns the interface age as passed to + * libtool when building the GTK+ library + * the process is running against. If + * libtool means nothing to you, don't + * worry about it. + * + * Returns the interface age of the GTK+ library. + */ +guint +gtk_interface_age (void) +{ + return GTK_INTERFACE_AGE; +} + /** * gtk_check_version: * @required_major: the required major version. diff --git a/gtk/gtkmain.h b/gtk/gtkmain.h index fe4ff99490..ca7bd669d7 100644 --- a/gtk/gtkmain.h +++ b/gtk/gtkmain.h @@ -51,21 +51,12 @@ typedef gint (*GtkKeySnoopFunc) (GtkWidget *grab_widget, /* Gtk version. */ -#ifdef G_PLATFORM_WIN32 -#ifdef GTK_COMPILATION -#define GTKMAIN_C_VAR __declspec(dllexport) -#else -#define GTKMAIN_C_VAR extern __declspec(dllimport) -#endif -#else -#define GTKMAIN_C_VAR extern -#endif +guint gtk_major_version (void) G_GNUC_CONST; +guint gtk_minor_version (void) G_GNUC_CONST; +guint gtk_micro_version (void) G_GNUC_CONST; +guint gtk_binary_age (void) G_GNUC_CONST; +guint gtk_interface_age (void) G_GNUC_CONST; -GTKMAIN_C_VAR const guint gtk_major_version; -GTKMAIN_C_VAR const guint gtk_minor_version; -GTKMAIN_C_VAR const guint gtk_micro_version; -GTKMAIN_C_VAR const guint gtk_binary_age; -GTKMAIN_C_VAR const guint gtk_interface_age; const gchar* gtk_check_version (guint required_major, guint required_minor, guint required_micro); diff --git a/tests/testgtk.c b/tests/testgtk.c index cddb7dfe56..b29c4d4be0 100644 --- a/tests/testgtk.c +++ b/tests/testgtk.c @@ -10333,14 +10333,14 @@ create_main_window (void) if (gtk_micro_version > 0) sprintf (buffer, "Gtk+ v%d.%d.%d", - gtk_major_version, - gtk_minor_version, - gtk_micro_version); + gtk_major_version (), + gtk_minor_version (), + gtk_micro_version ()); else sprintf (buffer, "Gtk+ v%d.%d", - gtk_major_version, - gtk_minor_version); + gtk_major_version (), + gtk_minor_version ()); label = gtk_label_new (buffer); gtk_box_pack_start (GTK_BOX (box1), label, FALSE, FALSE, 0);