From 3cc53dab0b5696b07130b0851e4d38787215797b Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Fri, 28 Jun 2013 22:02:29 +0200 Subject: [PATCH] libgimpconfig: add gimp_scanner_parse_int64() --- libgimpconfig/gimpconfig.def | 1 + libgimpconfig/gimpscanner.c | 35 +++++++++++++++++++++++++++++++++++ libgimpconfig/gimpscanner.h | 2 ++ 3 files changed, 38 insertions(+) diff --git a/libgimpconfig/gimpconfig.def b/libgimpconfig/gimpconfig.def index fb3dfd16b1..c29106e1f7 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 b6748091f3..b94d74d832 100644 --- a/libgimpconfig/gimpscanner.c +++ b/libgimpconfig/gimpscanner.c @@ -371,6 +371,41 @@ gimp_scanner_parse_int (GScanner *scanner, return TRUE; } +/** + * 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 diff --git a/libgimpconfig/gimpscanner.h b/libgimpconfig/gimpscanner.h index c2824f0e3a..5833f425fb 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,