diff options
author | Ran Benita <ran234@gmail.com> | 2014-10-07 23:42:08 +0300 |
---|---|---|
committer | Ran Benita <ran234@gmail.com> | 2014-10-08 00:03:34 +0300 |
commit | 8a0acf2c67633a5569124d6928c17c9a885949a5 (patch) | |
tree | eaf32e8d8ab0bfb4edcd9200dcbddc6b6dc4ff0a | |
parent | 8d58e250b005644f5fcaf60c9e6692caf707ef42 (diff) | |
download | xorg-lib-libxkbcommon-8a0acf2c67633a5569124d6928c17c9a885949a5.tar.gz |
scanner-utils: optimize one-line comments
Compose files have a lot of those.
Signed-off-by: Ran Benita <ran234@gmail.com>
-rw-r--r-- | src/compose/parser.c | 2 | ||||
-rw-r--r-- | src/scanner-utils.h | 9 | ||||
-rw-r--r-- | src/xkbcomp/rules.c | 2 | ||||
-rw-r--r-- | src/xkbcomp/scanner.c | 2 |
4 files changed, 12 insertions, 3 deletions
diff --git a/src/compose/parser.c b/src/compose/parser.c index 29229f3..ff0b006 100644 --- a/src/compose/parser.c +++ b/src/compose/parser.c @@ -134,7 +134,7 @@ skip_more_whitespace_and_comments: /* Skip comments. */ if (chr(s, '#')) { - while (!eof(s) && !eol(s)) next(s); + skip_to_eol(s); goto skip_more_whitespace_and_comments; } diff --git a/src/scanner-utils.h b/src/scanner-utils.h index ba47f69..914e11f 100644 --- a/src/scanner-utils.h +++ b/src/scanner-utils.h @@ -102,6 +102,15 @@ eol(struct scanner *s) return peek(s) == '\n'; } +static inline void +skip_to_eol(struct scanner *s) +{ + const char *nl = memchr(s->s + s->pos, '\n', s->len - s->pos); + const size_t new_pos = nl ? (size_t) (nl - s->s) : s->len; + s->column += new_pos - s->pos; + s->pos = new_pos; +} + static inline char next(struct scanner *s) { diff --git a/src/xkbcomp/rules.c b/src/xkbcomp/rules.c index 3a6f57c..f4b475a 100644 --- a/src/xkbcomp/rules.c +++ b/src/xkbcomp/rules.c @@ -85,7 +85,7 @@ skip_more_whitespace_and_comments: /* Skip comments. */ if (lit(s, "//")) { - while (!eof(s) && !eol(s)) next(s); + skip_to_eol(s); } /* New line. */ diff --git a/src/xkbcomp/scanner.c b/src/xkbcomp/scanner.c index ead20ab..8f24721 100644 --- a/src/xkbcomp/scanner.c +++ b/src/xkbcomp/scanner.c @@ -69,7 +69,7 @@ skip_more_whitespace_and_comments: /* Skip comments. */ if (lit(s, "//") || chr(s, '#')) { - while (!eof(s) && !eol(s)) next(s); + skip_to_eol(s); goto skip_more_whitespace_and_comments; } |