[cfe-commits] r96159 - /cfe/trunk/tools/c-index-test/c-index-test.c

Daniel Dunbar daniel at zuster.org
Sun Feb 14 00:32:32 PST 2010


Author: ddunbar
Date: Sun Feb 14 02:32:32 2010
New Revision: 96159

URL: http://llvm.org/viewvc/llvm-project?rev=96159&view=rev
Log:
c-index-test: Simplify file scanning code.

Modified:
    cfe/trunk/tools/c-index-test/c-index-test.c

Modified: cfe/trunk/tools/c-index-test/c-index-test.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/c-index-test/c-index-test.c?rev=96159&r1=96158&r2=96159&view=diff

==============================================================================
--- cfe/trunk/tools/c-index-test/c-index-test.c (original)
+++ cfe/trunk/tools/c-index-test/c-index-test.c Sun Feb 14 02:32:32 2010
@@ -579,12 +579,10 @@
   CXIndex Idx;
   CXTranslationUnit TU;
   FILE *fp;
-  unsigned line;
-  CXCursor prevCursor;
+  CXCursor prevCursor = clang_getNullCursor();
   CXFile file;
-  unsigned printed;
-  unsigned start_line, start_col, last_line, last_col;
-  size_t i;
+  unsigned line = 1, col = 1;
+  unsigned start_line = 1, start_col = 1, prev_line = 0, prev_col = 0;
   
   if (!(Idx = clang_createIndex(/* excludeDeclsFromPCH */ 1))) {
     fprintf(stderr, "Could not create Index\n");
@@ -599,51 +597,35 @@
     return 1;
   }
   
-  line = 0;
-  prevCursor = clang_getNullCursor();
-  printed = 0;
-  start_line = last_line = 1;
-  start_col = last_col = 1;
-  
   file = clang_getFile(TU, source_file);
-  while (!feof(fp)) {
-    size_t len = 0;
-    int c;
-
-    while ((c = fgetc(fp)) != EOF) {
-      len++;
-      if (c == '\n')
-        break;
+  for (;;) {
+    CXCursor cursor;
+    int c = fgetc(fp);
+
+    if (c == '\n') {
+      ++line;
+      col = 1;
+    } else
+      ++col;
+
+    /* Check the cursor at this position, and dump the previous one if we have
+     * found something new.
+     */
+    cursor = clang_getCursor(TU, clang_getLocation(TU, file, line, col));
+    if ((c == EOF || !clang_equalCursors(cursor, prevCursor)) &&
+        prevCursor.kind != CXCursor_InvalidFile) {
+      print_cursor_file_scan(prevCursor, start_line, start_col,
+                             prev_line, prev_col, prefix);
+      start_line = line;
+      start_col = col;
     }
+    if (c == EOF)
+      break;
 
-    ++line;
-    
-    for (i = 0; i < len ; ++i) {
-      CXCursor cursor;
-      cursor = clang_getCursor(TU, clang_getLocation(TU, file, line, i+1));
-
-      if (!clang_equalCursors(cursor, prevCursor) &&
-          prevCursor.kind != CXCursor_InvalidFile) {
-        print_cursor_file_scan(prevCursor, start_line, start_col,
-                               last_line, last_col, prefix);
-        printed = 1;
-        start_line = line;
-        start_col = (unsigned) i+1;
-      }
-      else {
-        printed = 0;
-      }
-      
-      prevCursor = cursor;
-      last_line = line;
-      last_col = (unsigned) i+1;
-    }    
-  }
-  
-  if (!printed && prevCursor.kind != CXCursor_InvalidFile) {
-    print_cursor_file_scan(prevCursor, start_line, start_col,
-                           last_line, last_col, prefix);
-  }  
+    prevCursor = cursor;
+    prev_line = line;
+    prev_col = col;
+  }
   
   fclose(fp);
   return 0;





More information about the cfe-commits mailing list