[gobject-introspection] Do the filename filtering in scannerlexer



commit 1c8927d147090fdc2c2f1f91d60a36cb69a19fe9
Author: Johan Dahlin <johan gnome org>
Date:   Thu Apr 5 14:12:11 2012 -0300

    Do the filename filtering in scannerlexer
    
    This avoids a bit of python work and reduces the
    amount of allocations.

 giscanner/scannerlexer.l   |   21 +++++++++++++++++----
 giscanner/sourcescanner.py |    5 +----
 2 files changed, 18 insertions(+), 8 deletions(-)
---
diff --git a/giscanner/scannerlexer.l b/giscanner/scannerlexer.l
index b4a6fac..8ff6b7b 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 b0d682f..db282f8 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



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]