Gitweb links:

...log 
http://git.netsurf-browser.org/libcss.git/shortlog/06b6723a5099de95293b05ccb290b710f2a13de4
...commit 
http://git.netsurf-browser.org/libcss.git/commit/06b6723a5099de95293b05ccb290b710f2a13de4
...tree 
http://git.netsurf-browser.org/libcss.git/tree/06b6723a5099de95293b05ccb290b710f2a13de4

The branch, jmb/mq has been updated
       via  06b6723a5099de95293b05ccb290b710f2a13de4 (commit)
       via  f5d7478d2b205948dc88c6cc9b8b075dd587454d (commit)
      from  73f9082726ce90eeb7109a95e499163398e98273 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commitdiff 
http://git.netsurf-browser.org/libcss.git/commit/?id=06b6723a5099de95293b05ccb290b710f2a13de4
commit 06b6723a5099de95293b05ccb290b710f2a13de4
Author: John-Mark Bell <[email protected]>
Commit: John-Mark Bell <[email protected]>

    Parse: simplify token vector cleanup.
    
    There's not much point having every call site have to call two
    functions every time they want to clean the token vector. Instead,
    have a single function call to do both parts of the cleanup.

diff --git a/src/parse/parse.c b/src/parse/parse.c
index eb83963..e6944d2 100644
--- a/src/parse/parse.c
+++ b/src/parse/parse.c
@@ -147,7 +147,7 @@ static css_error parseISBody0(css_parser *parser);
 static css_error parseISBody(css_parser *parser);
 static css_error parseMediaQuery(css_parser *parser);
 
-static void unref_interned_strings_in_tokens(css_parser *parser);
+static void discard_tokens(css_parser *parser);
 
 /**
  * Dispatch table for parsing, indexed by major state number
@@ -765,8 +765,7 @@ css_error parseStart(css_parser *parser)
                                parser->event_pw);
        }
 
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -797,8 +796,7 @@ css_error parseStylesheet(css_parser *parser)
                                if (error != CSS_OK)
                                        return error;
 
-                                unref_interned_strings_in_tokens(parser);
-                               parserutils_vector_clear(parser->tokens);
+                                discard_tokens(parser);
 
                                return done(parser);
                        case CSS_TOKEN_CDO:
@@ -868,8 +866,7 @@ css_error parseRuleset(css_parser *parser)
 
        switch (state->substate) {
        case Initial:
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                error = getToken(parser, &token);
                if (error != CSS_OK)
@@ -1067,8 +1064,7 @@ css_error parseAtRule(css_parser *parser)
 
        switch (state->substate) {
        case Initial:
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                error = getToken(parser, &token);
                if (error != CSS_OK)
@@ -1238,8 +1234,7 @@ css_error parseBlock(css_parser *parser)
                        assert(0 && "Expected {");
                }
 
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                state->substate = WS;
                /* Fall through */
@@ -1295,8 +1290,7 @@ css_error parseBlock(css_parser *parser)
                parser->event(CSS_PARSER_END_BLOCK, NULL, parser->event_pw);
        }
 
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -1348,10 +1342,7 @@ css_error parseBlockContent(css_parser *parser)
                                                        parser->event_pw);
                                        }
 
-                                       unref_interned_strings_in_tokens(
-                                                       parser);
-                                       parserutils_vector_clear(
-                                                       parser->tokens);
+                                       discard_tokens(parser);
 
                                        return transition(parser, to,
                                                        subsequent);
@@ -1379,10 +1370,7 @@ css_error parseBlockContent(css_parser *parser)
                                        if (error != CSS_OK)
                                                return error;
 
-                                       unref_interned_strings_in_tokens(
-                                                       parser);
-                                       parserutils_vector_clear(
-                                                       parser->tokens);
+                                       discard_tokens(parser);
 
                                        state->substate = WS;
                                } else if (lwc_string_length(
@@ -1405,10 +1393,7 @@ css_error parseBlockContent(css_parser *parser)
                                                        parser->event_pw);
                                        }
 
-                                       unref_interned_strings_in_tokens(
-                                                       parser);
-                                       parserutils_vector_clear(
-                                                       parser->tokens);
+                                       discard_tokens(parser);
 
                                        return done(parser);
                                }
@@ -1427,8 +1412,7 @@ css_error parseBlockContent(css_parser *parser)
                                                        parser->event_pw);
                                }
 
-                               unref_interned_strings_in_tokens(parser);
-                               parserutils_vector_clear(parser->tokens);
+                               discard_tokens(parser);
 
                                return done(parser);
                        }
@@ -1471,8 +1455,7 @@ css_error parseSelector(css_parser *parser)
                parser_state to = { sAny1, Initial };
                parser_state subsequent = { sSelector, AfterAny1 };
 
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                return transition(parser, to, subsequent);
        }
@@ -1498,8 +1481,7 @@ css_error parseDeclaration(css_parser *parser)
                parser_state to = { sProperty, Initial };
                parser_state subsequent = { sDeclaration, Colon };
 
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                return transition(parser, to, subsequent);
        }
@@ -2217,8 +2199,7 @@ css_error parseMalformedDeclaration(css_parser *parser)
                return error;
 
        /* Discard the tokens we've read */
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -2313,8 +2294,7 @@ css_error parseMalformedSelector(css_parser *parser)
                return error;
 
        /* Discard the tokens we've read */
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -2422,8 +2402,7 @@ css_error parseMalformedAtRule(css_parser *parser)
                return error;
 
        /* Discard the tokens we've read */
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -2468,7 +2447,7 @@ css_error parseInlineStyle(css_parser *parser)
        }
        case AfterISBody0:
                /* Clean up any remaining tokens */
-               unref_interned_strings_in_tokens(parser);
+               discard_tokens(parser);
 
                /* Emit remaining fake events to end the parse */
                if (parser->event != NULL) {
@@ -2631,8 +2610,7 @@ css_error parseMediaQuery(css_parser *parser)
        }
        case AfterAtRule:
                /* Clean up any remaining tokens */
-               unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+               discard_tokens(parser);
                break;
        }
 
@@ -2640,11 +2618,11 @@ css_error parseMediaQuery(css_parser *parser)
 }
 
 /**
- * Iterate the token vector and unref any interned strings in the tokens.
+ * Discard the contents of the token vector
  *
  * \param parser The parser whose tokens we are cleaning up.
  */
-void unref_interned_strings_in_tokens(css_parser *parser)
+void discard_tokens(css_parser *parser)
 {
         int32_t ctx = 0;
         const css_token *tok;
@@ -2655,6 +2633,8 @@ void unref_interned_strings_in_tokens(css_parser *parser)
                         lwc_string_unref(tok->idata);
                }
         }
+
+       parserutils_vector_clear(parser->tokens);
 }
 
 #ifndef NDEBUG


commitdiff 
http://git.netsurf-browser.org/libcss.git/commit/?id=f5d7478d2b205948dc88c6cc9b8b075dd587454d
commit f5d7478d2b205948dc88c6cc9b8b075dd587454d
Author: John-Mark Bell <[email protected]>
Commit: John-Mark Bell <[email protected]>

    Parse: use an explicit state for media queries.
    
    This simply wraps the existing at-rule parser but is able to clean
    up afterwards.

diff --git a/src/parse/parse.c b/src/parse/parse.c
index 670b88d..eb83963 100644
--- a/src/parse/parse.c
+++ b/src/parse/parse.c
@@ -67,7 +67,8 @@ enum {
        sMalformedAtRule = 22,
        sInlineStyle = 23,
        sISBody0 = 24,
-       sISBody = 25
+       sISBody = 25,
+       sMediaQuery = 26,
 };
 
 /**
@@ -144,6 +145,7 @@ static css_error parseMalformedAtRule(css_parser *parser);
 static css_error parseInlineStyle(css_parser *parser);
 static css_error parseISBody0(css_parser *parser);
 static css_error parseISBody(css_parser *parser);
+static css_error parseMediaQuery(css_parser *parser);
 
 static void unref_interned_strings_in_tokens(css_parser *parser);
 
@@ -176,7 +178,8 @@ static css_error (*parseFuncs[])(css_parser *parser) = {
        parseMalformedAtRule,
        parseInlineStyle,
        parseISBody0,
-       parseISBody
+       parseISBody,
+       parseMediaQuery,
 };
 
 /**
@@ -230,7 +233,7 @@ css_error css__parser_create_for_inline_style(const char 
*charset,
 css_error css__parser_create_for_media_query(const char *charset,
                css_charset_source cs_source, css_parser **parser)
 {
-       parser_state initial = { sAtRule, 0 };
+       parser_state initial = { sMediaQuery, 0 };
 
        return css__parser_create_internal(charset, cs_source,
                        initial, parser);
@@ -2611,6 +2614,31 @@ css_error parseISBody(css_parser *parser)
        return done(parser);
 }
 
+css_error parseMediaQuery(css_parser *parser)
+{
+       enum { Initial = 0, AfterAtRule = 1 };
+       parser_state *state = parserutils_stack_get_current(parser->states);
+
+       /* media-query = at-rule */
+
+       switch (state->substate) {
+       case Initial:
+       {
+               parser_state to = { sAtRule, Initial };
+               parser_state subsequent = { sMediaQuery, AfterAtRule };
+
+               return transition(parser, to, subsequent);
+       }
+       case AfterAtRule:
+               /* Clean up any remaining tokens */
+               unref_interned_strings_in_tokens(parser);
+               parserutils_vector_clear(parser->tokens);
+               break;
+       }
+
+       return done(parser);
+}
+
 /**
  * Iterate the token vector and unref any interned strings in the tokens.
  *


-----------------------------------------------------------------------

Summary of changes:
 src/parse/parse.c |   94 +++++++++++++++++++++++++++++------------------------
 1 file changed, 51 insertions(+), 43 deletions(-)

diff --git a/src/parse/parse.c b/src/parse/parse.c
index 670b88d..e6944d2 100644
--- a/src/parse/parse.c
+++ b/src/parse/parse.c
@@ -67,7 +67,8 @@ enum {
        sMalformedAtRule = 22,
        sInlineStyle = 23,
        sISBody0 = 24,
-       sISBody = 25
+       sISBody = 25,
+       sMediaQuery = 26,
 };
 
 /**
@@ -144,8 +145,9 @@ static css_error parseMalformedAtRule(css_parser *parser);
 static css_error parseInlineStyle(css_parser *parser);
 static css_error parseISBody0(css_parser *parser);
 static css_error parseISBody(css_parser *parser);
+static css_error parseMediaQuery(css_parser *parser);
 
-static void unref_interned_strings_in_tokens(css_parser *parser);
+static void discard_tokens(css_parser *parser);
 
 /**
  * Dispatch table for parsing, indexed by major state number
@@ -176,7 +178,8 @@ static css_error (*parseFuncs[])(css_parser *parser) = {
        parseMalformedAtRule,
        parseInlineStyle,
        parseISBody0,
-       parseISBody
+       parseISBody,
+       parseMediaQuery,
 };
 
 /**
@@ -230,7 +233,7 @@ css_error css__parser_create_for_inline_style(const char 
*charset,
 css_error css__parser_create_for_media_query(const char *charset,
                css_charset_source cs_source, css_parser **parser)
 {
-       parser_state initial = { sAtRule, 0 };
+       parser_state initial = { sMediaQuery, 0 };
 
        return css__parser_create_internal(charset, cs_source,
                        initial, parser);
@@ -762,8 +765,7 @@ css_error parseStart(css_parser *parser)
                                parser->event_pw);
        }
 
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -794,8 +796,7 @@ css_error parseStylesheet(css_parser *parser)
                                if (error != CSS_OK)
                                        return error;
 
-                                unref_interned_strings_in_tokens(parser);
-                               parserutils_vector_clear(parser->tokens);
+                                discard_tokens(parser);
 
                                return done(parser);
                        case CSS_TOKEN_CDO:
@@ -865,8 +866,7 @@ css_error parseRuleset(css_parser *parser)
 
        switch (state->substate) {
        case Initial:
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                error = getToken(parser, &token);
                if (error != CSS_OK)
@@ -1064,8 +1064,7 @@ css_error parseAtRule(css_parser *parser)
 
        switch (state->substate) {
        case Initial:
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                error = getToken(parser, &token);
                if (error != CSS_OK)
@@ -1235,8 +1234,7 @@ css_error parseBlock(css_parser *parser)
                        assert(0 && "Expected {");
                }
 
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                state->substate = WS;
                /* Fall through */
@@ -1292,8 +1290,7 @@ css_error parseBlock(css_parser *parser)
                parser->event(CSS_PARSER_END_BLOCK, NULL, parser->event_pw);
        }
 
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -1345,10 +1342,7 @@ css_error parseBlockContent(css_parser *parser)
                                                        parser->event_pw);
                                        }
 
-                                       unref_interned_strings_in_tokens(
-                                                       parser);
-                                       parserutils_vector_clear(
-                                                       parser->tokens);
+                                       discard_tokens(parser);
 
                                        return transition(parser, to,
                                                        subsequent);
@@ -1376,10 +1370,7 @@ css_error parseBlockContent(css_parser *parser)
                                        if (error != CSS_OK)
                                                return error;
 
-                                       unref_interned_strings_in_tokens(
-                                                       parser);
-                                       parserutils_vector_clear(
-                                                       parser->tokens);
+                                       discard_tokens(parser);
 
                                        state->substate = WS;
                                } else if (lwc_string_length(
@@ -1402,10 +1393,7 @@ css_error parseBlockContent(css_parser *parser)
                                                        parser->event_pw);
                                        }
 
-                                       unref_interned_strings_in_tokens(
-                                                       parser);
-                                       parserutils_vector_clear(
-                                                       parser->tokens);
+                                       discard_tokens(parser);
 
                                        return done(parser);
                                }
@@ -1424,8 +1412,7 @@ css_error parseBlockContent(css_parser *parser)
                                                        parser->event_pw);
                                }
 
-                               unref_interned_strings_in_tokens(parser);
-                               parserutils_vector_clear(parser->tokens);
+                               discard_tokens(parser);
 
                                return done(parser);
                        }
@@ -1468,8 +1455,7 @@ css_error parseSelector(css_parser *parser)
                parser_state to = { sAny1, Initial };
                parser_state subsequent = { sSelector, AfterAny1 };
 
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                return transition(parser, to, subsequent);
        }
@@ -1495,8 +1481,7 @@ css_error parseDeclaration(css_parser *parser)
                parser_state to = { sProperty, Initial };
                parser_state subsequent = { sDeclaration, Colon };
 
-                unref_interned_strings_in_tokens(parser);
-               parserutils_vector_clear(parser->tokens);
+                discard_tokens(parser);
 
                return transition(parser, to, subsequent);
        }
@@ -2214,8 +2199,7 @@ css_error parseMalformedDeclaration(css_parser *parser)
                return error;
 
        /* Discard the tokens we've read */
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -2310,8 +2294,7 @@ css_error parseMalformedSelector(css_parser *parser)
                return error;
 
        /* Discard the tokens we've read */
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -2419,8 +2402,7 @@ css_error parseMalformedAtRule(css_parser *parser)
                return error;
 
        /* Discard the tokens we've read */
-        unref_interned_strings_in_tokens(parser);
-       parserutils_vector_clear(parser->tokens);
+        discard_tokens(parser);
 
        return done(parser);
 }
@@ -2465,7 +2447,7 @@ css_error parseInlineStyle(css_parser *parser)
        }
        case AfterISBody0:
                /* Clean up any remaining tokens */
-               unref_interned_strings_in_tokens(parser);
+               discard_tokens(parser);
 
                /* Emit remaining fake events to end the parse */
                if (parser->event != NULL) {
@@ -2611,12 +2593,36 @@ css_error parseISBody(css_parser *parser)
        return done(parser);
 }
 
+css_error parseMediaQuery(css_parser *parser)
+{
+       enum { Initial = 0, AfterAtRule = 1 };
+       parser_state *state = parserutils_stack_get_current(parser->states);
+
+       /* media-query = at-rule */
+
+       switch (state->substate) {
+       case Initial:
+       {
+               parser_state to = { sAtRule, Initial };
+               parser_state subsequent = { sMediaQuery, AfterAtRule };
+
+               return transition(parser, to, subsequent);
+       }
+       case AfterAtRule:
+               /* Clean up any remaining tokens */
+               discard_tokens(parser);
+               break;
+       }
+
+       return done(parser);
+}
+
 /**
- * Iterate the token vector and unref any interned strings in the tokens.
+ * Discard the contents of the token vector
  *
  * \param parser The parser whose tokens we are cleaning up.
  */
-void unref_interned_strings_in_tokens(css_parser *parser)
+void discard_tokens(css_parser *parser)
 {
         int32_t ctx = 0;
         const css_token *tok;
@@ -2627,6 +2633,8 @@ void unref_interned_strings_in_tokens(css_parser *parser)
                         lwc_string_unref(tok->idata);
                }
         }
+
+       parserutils_vector_clear(parser->tokens);
 }
 
 #ifndef NDEBUG


-- 
Cascading Style Sheets library

_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org

Reply via email to