From 24ed841d6a65e3beff64b2252d132be9e57ede9a Mon Sep 17 00:00:00 2001 From: Ryan Lortie Date: Thu, 31 Mar 2011 14:45:50 +0530 Subject: [PATCH] GVariant parser: match strings without consuming Add a new function that allows the parser to check that the current token is equal to a given string without consuming the token. Reimplement the 'consume' function in terms of the new function. --- glib/gvariant-parser.c | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/glib/gvariant-parser.c b/glib/gvariant-parser.c index 7f813731d..b5cfe2470 100644 --- a/glib/gvariant-parser.c +++ b/glib/gvariant-parser.c @@ -303,22 +303,25 @@ token_stream_is_numeric (TokenStream *stream) } static gboolean -token_stream_consume (TokenStream *stream, - const gchar *token) +token_stream_peek_string (TokenStream *stream, + const gchar *token) { gint length = strlen (token); - if (!token_stream_prepare (stream)) + return token_stream_prepare (stream) && + stream->stream - stream->this == length && + memcmp (stream->this, token, length) == 0; +} + +static gboolean +token_stream_consume (TokenStream *stream, + const gchar *token) +{ + if (!token_stream_peek_string (stream, token)) return FALSE; - if (stream->stream - stream->this == length && - memcmp (stream->this, token, length) == 0) - { - token_stream_next (stream); - return TRUE; - } - - return FALSE; + token_stream_next (stream); + return TRUE; } static gboolean