[gtk/matthiasc/for-master: 9/16] Move version-related functions to gtkversion.c




commit d2faa38eedb6fe09f53a57cdf168d218bd670d45
Author: Matthias Clasen <mclasen redhat com>
Date:   Sun Sep 13 22:23:06 2020 -0400

    Move version-related functions to gtkversion.c
    
    This is just an internal cleanup, to make gtkmain.c
    a bit less messy.

 gtk/gtkmain.c       | 143 -----------------------------------------
 gtk/gtkmain.h       |  25 +-------
 gtk/gtkversion.c    | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 gtk/gtkversion.h.in |  30 ++++++---
 gtk/meson.build     |   1 +
 5 files changed, 204 insertions(+), 174 deletions(-)
---
diff --git a/gtk/gtkmain.c b/gtk/gtkmain.c
index 4d549e1ea4..8bb10a28ac 100644
--- a/gtk/gtkmain.c
+++ b/gtk/gtkmain.c
@@ -125,7 +125,6 @@
 #include "gtkrecentmanager.h"
 #include "gtksettingsprivate.h"
 #include "gtktooltipprivate.h"
-#include "gtkversion.h"
 #include "gtkwidgetprivate.h"
 #include "gtkwindowprivate.h"
 #include "gtkwindowgroup.h"
@@ -186,148 +185,6 @@ static const GdkDebugKey gtk_debug_keys[] = {
 };
 #endif /* G_ENABLE_DEBUG */
 
-/**
- * gtk_get_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_get_major_version (void)
-{
-  return GTK_MAJOR_VERSION;
-}
-
-/**
- * gtk_get_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_get_minor_version (void)
-{
-  return GTK_MINOR_VERSION;
-}
-
-/**
- * gtk_get_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_get_micro_version (void)
-{
-  return GTK_MICRO_VERSION;
-}
-
-/**
- * gtk_get_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_get_binary_age (void)
-{
-  return GTK_BINARY_AGE;
-}
-
-/**
- * gtk_get_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_get_interface_age (void)
-{
-  return GTK_INTERFACE_AGE;
-}
-
-/**
- * gtk_check_version:
- * @required_major: the required major version
- * @required_minor: the required minor version
- * @required_micro: the required micro version
- *
- * Checks that the GTK library in use is compatible with the
- * given version. Generally you would pass in the constants
- * #GTK_MAJOR_VERSION, #GTK_MINOR_VERSION, #GTK_MICRO_VERSION
- * as the three arguments to this function; that produces
- * a check that the library in use is compatible with
- * the version of GTK the application or module was compiled
- * against.
- *
- * Compatibility is defined by two things: first the version
- * of the running library is newer than the version
- * @required_major.required_minor.@required_micro. Second
- * the running library must be binary compatible with the
- * version @required_major.required_minor.@required_micro
- * (same major version.)
- *
- * This function is primarily for GTK modules; the module
- * can call this function to check that it wasn’t loaded
- * into an incompatible version of GTK. However, such a
- * check isn’t completely reliable, since the module may be
- * linked against an old version of GTK and calling the
- * old version of gtk_check_version(), but still get loaded
- * into an application using a newer version of GTK.
- *
- * Returns: (nullable): %NULL if the GTK library is compatible with the
- *   given version, or a string describing the version mismatch.
- *   The returned string is owned by GTK and should not be modified
- *   or freed.
- */
-const char *
-gtk_check_version (guint required_major,
-                   guint required_minor,
-                   guint required_micro)
-{
-  int gtk_effective_micro = 100 * GTK_MINOR_VERSION + GTK_MICRO_VERSION;
-  int required_effective_micro = 100 * required_minor + required_micro;
-
-  if (required_major > GTK_MAJOR_VERSION)
-    return "GTK version too old (major mismatch)";
-  if (required_major < GTK_MAJOR_VERSION)
-    return "GTK version too new (major mismatch)";
-  if (required_effective_micro < gtk_effective_micro - GTK_BINARY_AGE)
-    return "GTK version too new (micro mismatch)";
-  if (required_effective_micro > gtk_effective_micro)
-    return "GTK version too old (micro mismatch)";
-  return NULL;
-}
-
 /* This checks to see if the process is running suid or sgid
  * at the current time. If so, we don’t allow GTK to be initialized.
  * This is meant to be a mild check - we only error out if we
diff --git a/gtk/gtkmain.h b/gtk/gtkmain.h
index 9191011ec9..ba8c42db71 100644
--- a/gtk/gtkmain.h
+++ b/gtk/gtkmain.h
@@ -50,25 +50,6 @@ G_BEGIN_DECLS
  */
 #define GTK_PRIORITY_RESIZE (G_PRIORITY_HIGH_IDLE + 10)
 
-/* GTK+ version
- */
-GDK_AVAILABLE_IN_ALL
-guint gtk_get_major_version (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-guint gtk_get_minor_version (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-guint gtk_get_micro_version (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-guint gtk_get_binary_age    (void) G_GNUC_CONST;
-GDK_AVAILABLE_IN_ALL
-guint gtk_get_interface_age (void) G_GNUC_CONST;
-
-GDK_AVAILABLE_IN_ALL
-const char * gtk_check_version (guint   required_major,
-                                guint   required_minor,
-                                guint   required_micro);
-
-
 /* Initialization, exit, mainloop and miscellaneous routines
  */
 
@@ -101,11 +82,11 @@ gboolean gtk_init_check_abi_check (int     num_checks,
 #endif
 
 GDK_AVAILABLE_IN_ALL
-void           gtk_disable_setlocale    (void);
+void              gtk_disable_setlocale    (void);
 GDK_AVAILABLE_IN_ALL
-PangoLanguage *gtk_get_default_language (void);
+PangoLanguage *   gtk_get_default_language (void);
 GDK_AVAILABLE_IN_ALL
-GtkTextDirection gtk_get_locale_direction (void);
+GtkTextDirection  gtk_get_locale_direction (void);
 
 
 G_END_DECLS
diff --git a/gtk/gtkversion.c b/gtk/gtkversion.c
new file mode 100644
index 0000000000..eab7146140
--- /dev/null
+++ b/gtk/gtkversion.c
@@ -0,0 +1,179 @@
+/* GTK - The GIMP Toolkit
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * 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 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/>.
+ */
+
+/*
+ * Modified by the GTK+ Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GTK+ Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
+ */
+
+#include "config.h"
+
+#include "gtkversion.h"
+
+/**
+ * SECTION:gtkfeatures
+ * @Short_description: Variables and functions to check the GTK version
+ * @Title: Version Information
+ *
+ * GTK provides version information, primarily useful in configure checks
+ * for builds that have a configure script. Applications will not typically
+ * use the features described here.
+ */
+
+/**
+ * gtk_get_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_get_major_version (void)
+{
+  return GTK_MAJOR_VERSION;
+}
+
+/**
+ * gtk_get_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_get_minor_version (void)
+{
+  return GTK_MINOR_VERSION;
+}
+
+/**
+ * gtk_get_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_get_micro_version (void)
+{
+  return GTK_MICRO_VERSION;
+}
+
+/**
+ * gtk_get_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_get_binary_age (void)
+{
+  return GTK_BINARY_AGE;
+}
+
+/**
+ * gtk_get_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_get_interface_age (void)
+{
+  return GTK_INTERFACE_AGE;
+}
+
+/**
+ * gtk_check_version:
+ * @required_major: the required major version
+ * @required_minor: the required minor version
+ * @required_micro: the required micro version
+ *
+ * Checks that the GTK library in use is compatible with the
+ * given version. Generally you would pass in the constants
+ * #GTK_MAJOR_VERSION, #GTK_MINOR_VERSION, #GTK_MICRO_VERSION
+ * as the three arguments to this function; that produces
+ * a check that the library in use is compatible with
+ * the version of GTK the application or module was compiled
+ * against.
+ *
+ * Compatibility is defined by two things: first the version
+ * of the running library is newer than the version
+ * @required_major.required_minor.@required_micro. Second
+ * the running library must be binary compatible with the
+ * version @required_major.required_minor.@required_micro
+ * (same major version.)
+ *
+ * This function is primarily for GTK modules; the module
+ * can call this function to check that it wasn’t loaded
+ * into an incompatible version of GTK. However, such a
+ * check isn’t completely reliable, since the module may be
+ * linked against an old version of GTK and calling the
+ * old version of gtk_check_version(), but still get loaded
+ * into an application using a newer version of GTK.
+ *
+ * Returns: (nullable): %NULL if the GTK library is compatible with the
+ *   given version, or a string describing the version mismatch.
+ *   The returned string is owned by GTK and should not be modified
+ *   or freed.
+ */
+const char *
+gtk_check_version (guint required_major,
+                   guint required_minor,
+                   guint required_micro)
+{
+  int gtk_effective_micro = 100 * GTK_MINOR_VERSION + GTK_MICRO_VERSION;
+  int required_effective_micro = 100 * required_minor + required_micro;
+
+  if (required_major > GTK_MAJOR_VERSION)
+    return "GTK version too old (major mismatch)";
+  if (required_major < GTK_MAJOR_VERSION)
+    return "GTK version too new (major mismatch)";
+  if (required_effective_micro < gtk_effective_micro - GTK_BINARY_AGE)
+    return "GTK version too new (micro mismatch)";
+  if (required_effective_micro > gtk_effective_micro)
+    return "GTK version too old (micro mismatch)";
+  return NULL;
+}
diff --git a/gtk/gtkversion.h.in b/gtk/gtkversion.h.in
index 1db6d4686c..a8d3729d23 100644
--- a/gtk/gtkversion.h.in
+++ b/gtk/gtkversion.h.in
@@ -29,15 +29,9 @@
 #ifndef __GTK_VERSION_H__
 #define __GTK_VERSION_H__
 
-/**
- * SECTION:gtkfeatures
- * @Short_description: Variables and functions to check the GTK version
- * @Title: Version Information
- *
- * GTK provides version information, primarily useful in configure checks
- * for builds that have a configure script. Applications will not typically
- * use the features described here.
- */
+#include <gdk/gdk.h>
+
+G_BEGIN_DECLS
 
 /**
  * GTK_MAJOR_VERSION:
@@ -101,4 +95,22 @@
      (GTK_MAJOR_VERSION == (major) && GTK_MINOR_VERSION == (minor) && \
       GTK_MICRO_VERSION >= (micro)))
 
+GDK_AVAILABLE_IN_ALL
+guint gtk_get_major_version (void) G_GNUC_CONST;
+GDK_AVAILABLE_IN_ALL
+guint gtk_get_minor_version (void) G_GNUC_CONST;
+GDK_AVAILABLE_IN_ALL
+guint gtk_get_micro_version (void) G_GNUC_CONST;
+GDK_AVAILABLE_IN_ALL
+guint gtk_get_binary_age    (void) G_GNUC_CONST;
+GDK_AVAILABLE_IN_ALL
+guint gtk_get_interface_age (void) G_GNUC_CONST;
+
+GDK_AVAILABLE_IN_ALL
+const char * gtk_check_version (guint   required_major,
+                                guint   required_minor,
+                                guint   required_micro);
+
+G_END_DECLS
+
 #endif /* __GTK_VERSION_H__ */
diff --git a/gtk/meson.build b/gtk/meson.build
index 0581349041..3554c1b2f1 100644
--- a/gtk/meson.build
+++ b/gtk/meson.build
@@ -421,6 +421,7 @@ gtk_public_sources = files([
   'gtktreestore.c',
   'gtktreeview.c',
   'gtktreeviewcolumn.c',
+  'gtkversion.c',
   'gtkvideo.c',
   'gtkviewport.c',
   'gtkvolumebutton.c',


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]