[gnome-video-arcade] Add gva_mame_get_version_int().



commit c171f24129eabcc982a877bcb4e1171b8a309a3b
Author: Matthew Barnes <mbarnes redhat com>
Date:   Sun May 3 22:53:44 2015 -0400

    Add gva_mame_get_version_int().
    
    Need an easy way to compare the MAME version for workarounds.

 docs/reference/gnome-video-arcade-sections.txt |    1 +
 docs/reference/tmpl/gva-mame.sgml              |    9 +++++
 src/gva-mame-common.c                          |   47 ++++++++++++++++++++++++
 src/gva-mame.h                                 |    1 +
 4 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gnome-video-arcade-sections.txt b/docs/reference/gnome-video-arcade-sections.txt
index 99acb84..dd3ee97 100644
--- a/docs/reference/gnome-video-arcade-sections.txt
+++ b/docs/reference/gnome-video-arcade-sections.txt
@@ -196,6 +196,7 @@ gva_main_window_destroy_cb
 GvaMameCallback
 gva_mame_get_path_sep
 gva_mame_get_version
+gva_mame_get_version_int
 gva_mame_get_total_supported
 gva_mame_get_config_value
 gva_mame_has_config_value
diff --git a/docs/reference/tmpl/gva-mame.sgml b/docs/reference/tmpl/gva-mame.sgml
index 4d7783b..98d71b3 100644
--- a/docs/reference/tmpl/gva-mame.sgml
+++ b/docs/reference/tmpl/gva-mame.sgml
@@ -48,6 +48,15 @@
 @Returns: 
 
 
+<!-- ##### FUNCTION gva_mame_get_version_int ##### -->
+<para>
+
+</para>
+
+ void: 
+ Returns: 
+
+
 <!-- ##### FUNCTION gva_mame_get_total_supported ##### -->
 <para>
 
diff --git a/src/gva-mame-common.c b/src/gva-mame-common.c
index d1ad0c9..260724d 100644
--- a/src/gva-mame-common.c
+++ b/src/gva-mame-common.c
@@ -142,6 +142,53 @@ fail:
  *****************************************************************************/
 
 /**
+ * gva_mame_get_version_int:
+ *
+ * Returns the MAME version as a whole number for easy comparison.
+ * For example, MAME version 0.123 is returned as 123.
+ *
+ * Returns: the MAME version as an integer
+ **/
+guint
+gva_mame_get_version_int (void)
+{
+        static gsize regex_initialized;
+        static GRegex *regex;
+        GMatchInfo *match = NULL;
+        gchar *string;
+        guint version_int = 0;
+        GError *error = NULL;
+
+        if (g_once_init_enter (&regex_initialized))
+        {
+                /* MAME versions have been 0.xxx for nearly 20 years,
+                 * so I think it's safe to disregard the leading zero. */
+                regex = g_regex_new ("0\\.(\\d\\d\\d)", 0, 0, NULL);
+                g_assert (regex != NULL);
+                g_once_init_leave (&regex_initialized, 1);
+        }
+
+        string = gva_mame_get_version (&error);
+        gva_error_handle (&error);
+
+        if (string != NULL)
+        {
+                if (g_regex_match (regex, string, 0, &match))
+                {
+                        gchar *substring;
+
+                        substring = g_match_info_fetch (match, 1);
+                        version_int = (guint) strtoul (substring, NULL, 10);
+                        g_free (substring);
+                }
+
+                g_free (string);
+        }
+
+        return version_int;
+}
+
+/**
  * gva_mame_get_config_value:
  * @config_key: a configuration key
  * @error: return location for a #GError, or %NULL
diff --git a/src/gva-mame.h b/src/gva-mame.h
index d56b726..adeb051 100644
--- a/src/gva-mame.h
+++ b/src/gva-mame.h
@@ -49,6 +49,7 @@ typedef void    (*GvaMameCallback)              (const gchar *name,
 
 const gchar *   gva_mame_get_path_sep           (void);
 gchar *         gva_mame_get_version            (GError **error);
+guint           gva_mame_get_version_int        (void);
 guint           gva_mame_get_total_supported    (GError **error);
 gchar *         gva_mame_get_config_value       (const gchar *config_key,
                                                  GError **error);


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