diff options
author | Johan Dahlin <johan@gnome.org> | 2012-04-05 14:12:11 -0300 |
---|---|---|
committer | Johan Dahlin <jdahlin@litl.com> | 2012-04-05 14:12:11 -0300 |
commit | 1c8927d147090fdc2c2f1f91d60a36cb69a19fe9 (patch) | |
tree | 7fe1788247911c445b36a84a83456d05b3c83846 /giscanner | |
parent | e18dc76c6a0e9d30f1b45fd26fdb22e954d319df (diff) | |
download | gobject-introspection-1c8927d147090fdc2c2f1f91d60a36cb69a19fe9.tar.gz |
Do the filename filtering in scannerlexer
This avoids a bit of python work and reduces the
amount of allocations.
Diffstat (limited to 'giscanner')
-rw-r--r-- | giscanner/scannerlexer.l | 21 | ||||
-rw-r--r-- | giscanner/sourcescanner.py | 5 |
2 files changed, 18 insertions, 8 deletions
diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l index b4a6fac0..8ff6b7be 100644 --- a/giscanner/scannerlexer.l +++ b/giscanner/scannerlexer.l @@ -214,21 +214,29 @@ yywrap (void) static void parse_comment (GISourceScanner *scanner) { - GString *string; + GString *string = NULL; int c1, c2; GISourceComment *comment; int comment_lineno; + int skip = FALSE; + + if (!g_list_find_custom (scanner->filenames, + scanner->current_filename, + (GCompareFunc)g_strcmp0)) { + skip = TRUE; + } else { + string = g_string_new ("/*"); + } c1 = input(); c2 = input(); - string = g_string_new ("/*"); - comment_lineno = lineno; while (c2 != EOF && !(c1 == '*' && c2 == '/')) { - g_string_append_c (string, c1); + if (!skip) + g_string_append_c (string, c1); if (c1 == '\n') lineno++; @@ -236,6 +244,11 @@ parse_comment (GISourceScanner *scanner) c1 = c2; c2 = input(); } + + if (skip) { + return; + } + g_string_append (string, "*/"); comment = g_slice_new (GISourceComment); diff --git a/giscanner/sourcescanner.py b/giscanner/sourcescanner.py index b0d682fc..db282f84 100644 --- a/giscanner/sourcescanner.py +++ b/giscanner/sourcescanner.py @@ -259,10 +259,7 @@ class SourceScanner(object): yield SourceSymbol(self._scanner, symbol) def get_comments(self): - for comment in self._scanner.get_comments(): - filename = comment[-2] - if filename in self._filenames: - yield comment + return self._scanner.get_comments() def dump(self): print '-'*30 |