[gimp] libgimpconfig: add gimp_scanner_parse_int64()



commit 3cc53dab0b5696b07130b0851e4d38787215797b
Author: Michael Natterer <mitch gimp org>
Date:   Fri Jun 28 22:02:29 2013 +0200

    libgimpconfig: add gimp_scanner_parse_int64()

 libgimpconfig/gimpconfig.def |    1 +
 libgimpconfig/gimpscanner.c  |   35 +++++++++++++++++++++++++++++++++++
 libgimpconfig/gimpscanner.h  |    2 ++
 3 files changed, 38 insertions(+), 0 deletions(-)
---
diff --git a/libgimpconfig/gimpconfig.def b/libgimpconfig/gimpconfig.def
index fb3dfd1..c29106e 100644
--- a/libgimpconfig/gimpconfig.def
+++ b/libgimpconfig/gimpconfig.def
@@ -60,6 +60,7 @@ EXPORTS
        gimp_scanner_parse_float
        gimp_scanner_parse_identifier
        gimp_scanner_parse_int
+       gimp_scanner_parse_int64
        gimp_scanner_parse_matrix2
        gimp_scanner_parse_string
        gimp_scanner_parse_string_no_validate
diff --git a/libgimpconfig/gimpscanner.c b/libgimpconfig/gimpscanner.c
index b674809..b94d74d 100644
--- a/libgimpconfig/gimpscanner.c
+++ b/libgimpconfig/gimpscanner.c
@@ -372,6 +372,41 @@ gimp_scanner_parse_int (GScanner *scanner,
 }
 
 /**
+ * gimp_scanner_parse_int64:
+ * @scanner: A #GScanner created by gimp_scanner_new_file() or
+ *           gimp_scanner_new_string()
+ * @dest: Return location for the parsed integer
+ *
+ * Return value: %TRUE on success
+ *
+ * Since: GIMP 2.8
+ **/
+gboolean
+gimp_scanner_parse_int64 (GScanner *scanner,
+                          gint64   *dest)
+{
+  gboolean negate = FALSE;
+
+  if (g_scanner_peek_next_token (scanner) == '-')
+    {
+      negate = TRUE;
+      g_scanner_get_next_token (scanner);
+    }
+
+  if (g_scanner_peek_next_token (scanner) != G_TOKEN_INT)
+    return FALSE;
+
+  g_scanner_get_next_token (scanner);
+
+  if (negate)
+    *dest = -scanner->value.v_int64;
+  else
+    *dest = scanner->value.v_int64;
+
+  return TRUE;
+}
+
+/**
  * gimp_scanner_parse_float:
  * @scanner: A #GScanner created by gimp_scanner_new_file() or
  *           gimp_scanner_new_string()
diff --git a/libgimpconfig/gimpscanner.h b/libgimpconfig/gimpscanner.h
index c2824f0..5833f42 100644
--- a/libgimpconfig/gimpscanner.h
+++ b/libgimpconfig/gimpscanner.h
@@ -48,6 +48,8 @@ gboolean   gimp_scanner_parse_data               (GScanner     *scanner,
                                                   guint8      **dest);
 gboolean   gimp_scanner_parse_int                (GScanner     *scanner,
                                                   gint         *dest);
+gboolean   gimp_scanner_parse_int64              (GScanner     *scanner,
+                                                  gint64       *dest);
 gboolean   gimp_scanner_parse_float              (GScanner     *scanner,
                                                   gdouble      *dest);
 gboolean   gimp_scanner_parse_boolean            (GScanner     *scanner,


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