cssparser: Simplify

Remove the uint parser (and use the int parser in the one user of it).

And avoid unnecessarily going through a macro.
This commit is contained in:
Benjamin Otte 2019-03-22 17:37:04 +01:00
parent 73760e5835
commit d9ef734458
3 changed files with 15 additions and 38 deletions

View File

@ -254,7 +254,7 @@ gtk_css_ease_value_parse_cubic_bezier (GtkCssParser *parser)
static GtkCssValue * static GtkCssValue *
gtk_css_ease_value_parse_steps (GtkCssParser *parser) gtk_css_ease_value_parse_steps (GtkCssParser *parser)
{ {
guint n_steps; int n_steps;
gboolean start; gboolean start;
if (!_gtk_css_parser_try (parser, "(", TRUE)) if (!_gtk_css_parser_try (parser, "(", TRUE))
@ -263,11 +263,16 @@ gtk_css_ease_value_parse_steps (GtkCssParser *parser)
return NULL; return NULL;
} }
if (!_gtk_css_parser_try_uint (parser, &n_steps)) if (!_gtk_css_parser_try_int (parser, &n_steps))
{ {
_gtk_css_parser_error (parser, "Expected number of steps"); _gtk_css_parser_error (parser, "Expected number of steps");
return NULL; return NULL;
} }
else if (n_steps < 1)
{
_gtk_css_parser_error (parser, "Number of steps must be > 0");
return NULL;
}
if (_gtk_css_parser_try (parser, ",", TRUE)) if (_gtk_css_parser_try (parser, ",", TRUE))
{ {

View File

@ -281,14 +281,17 @@ _gtk_css_parser_skip_whitespace (GtkCssParser *parser)
} }
gboolean gboolean
gtk_css_parser_try_len (GtkCssParser *parser, _gtk_css_parser_try (GtkCssParser *parser,
const char *string, const char *string,
gsize string_len, gboolean skip_whitespace)
gboolean skip_whitespace)
{ {
gsize string_len;
g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE); g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE);
g_return_val_if_fail (string != NULL, FALSE); g_return_val_if_fail (string != NULL, FALSE);
string_len = strlen (string);
if (g_ascii_strncasecmp (parser->data, string, string_len) != 0) if (g_ascii_strncasecmp (parser->data, string, string_len) != 0)
return FALSE; return FALSE;
@ -562,33 +565,6 @@ _gtk_css_parser_try_int (GtkCssParser *parser,
return TRUE; return TRUE;
} }
gboolean
_gtk_css_parser_try_uint (GtkCssParser *parser,
guint *value)
{
guint64 result;
char *end;
g_return_val_if_fail (GTK_IS_CSS_PARSER (parser), FALSE);
g_return_val_if_fail (value != NULL, FALSE);
errno = 0;
result = g_ascii_strtoull (parser->data, &end, 10);
if (errno)
return FALSE;
if (result > G_MAXUINT)
return FALSE;
if (parser->data == end)
return FALSE;
parser->data = end;
*value = result;
_gtk_css_parser_skip_whitespace (parser);
return TRUE;
}
gboolean gboolean
_gtk_css_parser_try_double (GtkCssParser *parser, _gtk_css_parser_try_double (GtkCssParser *parser,
gdouble *value) gdouble *value)

View File

@ -61,10 +61,8 @@ gboolean _gtk_css_parser_is_string (GtkCssParser *parser
* however is fine to call if you dont know yet if the token is a foo or a bar, * however is fine to call if you dont know yet if the token is a foo or a bar,
* you can _try_bar() if try_foo() failed. * you can _try_bar() if try_foo() failed.
*/ */
#define _gtk_css_parser_try(p, s, skip) (gtk_css_parser_try_len (p, s, strlen(s), skip)) gboolean _gtk_css_parser_try (GtkCssParser *parser,
gboolean gtk_css_parser_try_len (GtkCssParser *parser,
const char *string, const char *string,
gsize string_len,
gboolean skip_whitespace); gboolean skip_whitespace);
char * _gtk_css_parser_try_ident (GtkCssParser *parser, char * _gtk_css_parser_try_ident (GtkCssParser *parser,
gboolean skip_whitespace); gboolean skip_whitespace);
@ -72,8 +70,6 @@ char * _gtk_css_parser_try_name (GtkCssParser *parser
gboolean skip_whitespace); gboolean skip_whitespace);
gboolean _gtk_css_parser_try_int (GtkCssParser *parser, gboolean _gtk_css_parser_try_int (GtkCssParser *parser,
int *value); int *value);
gboolean _gtk_css_parser_try_uint (GtkCssParser *parser,
guint *value);
gboolean _gtk_css_parser_try_double (GtkCssParser *parser, gboolean _gtk_css_parser_try_double (GtkCssParser *parser,
gdouble *value); gdouble *value);
gboolean _gtk_css_parser_try_hash_color (GtkCssParser *parser, gboolean _gtk_css_parser_try_hash_color (GtkCssParser *parser,