css: Split dimension token
authorBenjamin Otte <otte@redhat.com>
Wed, 20 Oct 2021 22:05:19 +0000 (00:05 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 20 Oct 2021 22:16:20 +0000 (00:16 +0200)
Add a signed and an unsigned version.

This will become useful real soon.

gtk/css/gtkcsstokenizer.c
gtk/css/gtkcsstokenizerprivate.h
gtk/gtkcssdimensionvalue.c
gtk/gtkcssnumbervalue.c

index 05fca8ed011418198bb37455088a1b43c5d64549..a6d14abc21da6051056c7dc3547608afe6dc429e 100644 (file)
@@ -55,7 +55,8 @@ gtk_css_token_clear (GtkCssToken *token)
 
     case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION:
     case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION:
-    case GTK_CSS_TOKEN_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNED_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNLESS_DIMENSION:
       g_free (token->dimension.dimension);
       break;
 
@@ -206,7 +207,8 @@ gtk_css_token_is_finite (const GtkCssToken *token)
     case GTK_CSS_TOKEN_BAD_URL:
     case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION:
     case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION:
-    case GTK_CSS_TOKEN_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNED_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNLESS_DIMENSION:
       return FALSE;
     }
 }
@@ -281,7 +283,8 @@ gtk_css_token_is_preserved (const GtkCssToken *token,
     case GTK_CSS_TOKEN_BAD_URL:
     case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION:
     case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION:
-    case GTK_CSS_TOKEN_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNED_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNLESS_DIMENSION:
       if (out_closing)
         *out_closing = GTK_CSS_TOKEN_EOF;
       return TRUE;
@@ -372,11 +375,12 @@ gtk_css_token_print (const GtkCssToken *token,
       break;
 
     case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNED_DIMENSION:
       if (token->dimension.value >= 0)
         g_string_append_c (string, '+');
       G_GNUC_FALLTHROUGH;
     case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION:
-    case GTK_CSS_TOKEN_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNLESS_DIMENSION:
       g_ascii_dtostr (buf, G_ASCII_DTOSTR_BUF_SIZE, token->dimension.value);
       g_string_append (string, buf);
       append_ident (string, token->dimension.dimension);
@@ -549,7 +553,8 @@ gtk_css_token_init_dimension (GtkCssToken     *token,
     {
     case GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION:
     case GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION:
-    case GTK_CSS_TOKEN_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNED_DIMENSION:
+    case GTK_CSS_TOKEN_SIGNLESS_DIMENSION:
       token->dimension.value = value;
       token->dimension.dimension = dimension;
       break;
@@ -1122,7 +1127,7 @@ gtk_css_tokenizer_read_numeric (GtkCssTokenizer *tokenizer,
       if (is_int)
         type = has_sign ? GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION : GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION;
       else
-        type = GTK_CSS_TOKEN_DIMENSION;
+        type = has_sign ? GTK_CSS_TOKEN_SIGNED_DIMENSION : GTK_CSS_TOKEN_SIGNLESS_DIMENSION;
 
       gtk_css_token_init_dimension (token, type, value, gtk_css_tokenizer_read_name (tokenizer));
     }
index 40447b0b8921f8ce70022da1900ba19886f9879e..6211ef722fff6359e9d481cda50126f797ba39fe 100644 (file)
@@ -67,7 +67,8 @@ typedef enum {
   /* dimension */
   GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION,
   GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION,
-  GTK_CSS_TOKEN_DIMENSION
+  GTK_CSS_TOKEN_SIGNED_DIMENSION,
+  GTK_CSS_TOKEN_SIGNLESS_DIMENSION
 } GtkCssTokenType;
 
 typedef union _GtkCssToken GtkCssToken;
index 84a1d0e780e6a2f1131d312a200206d7c5f74065..4bc0c32a6a817e91e17eff3feb85c419da76c4d3 100644 (file)
@@ -93,7 +93,8 @@ gtk_css_dimension_value_parse (GtkCssParser           *parser,
     }
   else if (gtk_css_token_is (token, GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION) ||
            gtk_css_token_is (token, GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION) ||
-           gtk_css_token_is (token, GTK_CSS_TOKEN_DIMENSION))
+           gtk_css_token_is (token, GTK_CSS_TOKEN_SIGNED_DIMENSION) ||
+           gtk_css_token_is (token, GTK_CSS_TOKEN_SIGNLESS_DIMENSION))
     {
       guint i;
 
index dacf9c44768b70d07c50f0410fb926a83e28c3e5..7b2dbeacc99081f1eef56aa6a5352a4f42890769 100644 (file)
@@ -704,7 +704,8 @@ gtk_css_number_value_can_parse (GtkCssParser *parser)
       || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_PERCENTAGE)
       || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNED_INTEGER_DIMENSION)
       || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNLESS_INTEGER_DIMENSION)
-      || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_DIMENSION)
+      || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNED_DIMENSION)
+      || gtk_css_parser_has_token (parser, GTK_CSS_TOKEN_SIGNLESS_DIMENSION)
       || gtk_css_parser_has_function (parser, "calc");
 }