Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cdt-patch] Indexer patch


This patch adds macro declarations to the index.

- Bogdan

Index: index/ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/ChangeLog,v
retrieving revision 1.9
diff -u -r1.9 ChangeLog
--- index/ChangeLog	11 Aug 2003 13:42:47 -0000	1.9
+++ index/ChangeLog	11 Aug 2003 17:43:41 -0000
@@ -1,3 +1,6 @@
+2003-08-11 Bogdan Gheorghe
+	- Added macro declarations to the index
+	
 2003-08-07 Bogdan Gheorghe
 	- Added shutdown cleanup routine in IndexManager
 	
Index: index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java,v
retrieving revision 1.9
diff -u -r1.9 AbstractIndexer.java
--- index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java	29 Jul 2003 12:40:17 -0000	1.9
+++ index/org/eclipse/cdt/internal/core/search/indexing/AbstractIndexer.java	11 Aug 2003 17:43:41 -0000
@@ -20,6 +20,7 @@
 import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
 import org.eclipse.cdt.core.parser.ast.IASTField;
 import org.eclipse.cdt.core.parser.ast.IASTFunction;
+import org.eclipse.cdt.core.parser.ast.IASTMacro;
 import org.eclipse.cdt.core.parser.ast.IASTMethod;
 import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
 import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
@@ -78,6 +79,12 @@
 		}
 	}
 	
+	public void addMacro(IASTMacro macro) {
+		String[] macroName = new String[1];
+		macroName[0] = macro.getName();
+		this.output.addRef(encodeEntry(macroName,MACRO_DECL,MACRO_DECL_LENGTH));
+	}
+		
 	public void addEnumerationReference(IASTEnumerationSpecifier enumeration) {
 		this.output.addRef(encodeTypeEntry(enumeration.getFullyQualifiedName(), ENUM, ICSearchConstants.REFERENCES));
 	}
Index: index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java,v
retrieving revision 1.5
diff -u -r1.5 IIndexConstants.java
--- index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java	25 Jul 2003 15:21:57 -0000	1.5
+++ index/org/eclipse/cdt/internal/core/search/indexing/IIndexConstants.java	11 Aug 2003 17:43:41 -0000
@@ -59,6 +59,9 @@
 		
 	char[] TYPEDEF_DECL = "typedefDecl/".toCharArray(); //$NON-NLS-1$
 	int TYPEDEF_DECL_LENGTH = 12;
+	
+	char[] MACRO_DECL = "macroDecl/".toCharArray();
+	int MACRO_DECL_LENGTH = 10;
 	//a Var REF will be treated as  a typeREF
 	//char[] VAR_REF= "varRef/".toCharArray(); //$NON-NLS-1$
 	
Index: index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java,v
retrieving revision 1.9
diff -u -r1.9 SourceIndexerRequestor.java
--- index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java	30 Jul 2003 01:31:14 -0000	1.9
+++ index/org/eclipse/cdt/internal/core/search/indexing/SourceIndexerRequestor.java	11 Aug 2003 17:43:41 -0000
@@ -80,7 +80,7 @@
 	 */
 	public void acceptMacro(IASTMacro macro) {
 		// TODO Auto-generated method stub
-		//System.out.println("acceptMacro");
+		indexer.addMacro(macro);
 	}
 
 	/* (non-Javadoc)
Index: ChangeLog
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/ChangeLog,v
retrieving revision 1.51
diff -u -r1.51 ChangeLog
--- ChangeLog	7 Aug 2003 14:46:44 -0000	1.51
+++ ChangeLog	11 Aug 2003 17:44:12 -0000
@@ -1,3 +1,6 @@
+2003-08-11 Bogdan Gheorghe
+	- Added testMacros to IndexManagerTests
+	
 2003-08-05 Andrew Niefer
 	- refactoring Parser Symbol Table function names
 	- added ParserSymbolTableTest.testConstructors() 
Index: indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java,v
retrieving revision 1.8
diff -u -r1.8 IndexManagerTests.java
--- indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java	11 Aug 2003 13:42:51 -0000	1.8
+++ indexer/org/eclipse/cdt/core/indexer/tests/IndexManagerTests.java	11 Aug 2003 17:44:12 -0000
@@ -15,6 +15,7 @@
 import java.io.FileWriter;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Iterator;
 
 import junit.framework.Test;
@@ -88,7 +89,14 @@
 
 	public static Test suite() {
 		TestSuite suite = new TestSuite();
+
+		suite.addTest(new IndexManagerTests("testAddNewFileToIndex"));
+		suite.addTest(new IndexManagerTests("testRemoveProjectFromIndex"));
+		suite.addTest(new IndexManagerTests("testRefs"));
+		suite.addTest(new IndexManagerTests("testMacros"));
+		suite.addTest(new IndexManagerTests("testDependencyTree"));
 		suite.addTest(new IndexManagerTests("testIndexShutdown"));
+
 		return suite;
 		//return new TestSuite(IndexManagerTests.class);
 	}
@@ -167,13 +175,12 @@
 
 		if (eresults.length != entryResultModel.length)
 			fail("Entry Result length different from model");
-		
-	
+
 		for (int i=0; i<qresults.length;i++)
 		{
 			assertEquals(queryResultModel[i],qresults[i].toString());
 		}
-		
+	
 		for (int i=0;i<eresults.length; i++)
 		{
 			assertEquals(entryResultModel[i],eresults[i].toString());
@@ -202,7 +209,7 @@
 		
 		if (eresults.length != entryResultModel.length)
 			fail("Entry Result length different from model");
-			
+
 		for (int i=0;i<eresults.length; i++)
 		{
 			assertEquals(entryResultModel[i],eresults[i].toString());
@@ -250,7 +257,7 @@
 	 String [] entryResultBeforeModel ={"EntryResult: word=typeDecl/C/CDocumentManager, refs={ 1 }", "EntryResult: word=typeDecl/C/Mail, refs={ 2 }", "EntryResult: word=typeDecl/C/Unknown, refs={ 2 }", "EntryResult: word=typeDecl/C/container, refs={ 2 }", "EntryResult: word=typeDecl/C/first_class, refs={ 2 }", "EntryResult: word=typeDecl/C/postcard, refs={ 2 }"};
 	 if (eresults.length != entryResultBeforeModel.length)
 			fail("Entry Result length different from model");	
-	 
+
 	 for (int i=0;i<eresults.length; i++)
 	 {
 		assertEquals(entryResultBeforeModel[i],eresults[i].toString());
@@ -336,7 +343,7 @@
 		
 		if (functionresults.length != functionResultModel.length)
 					fail("Entry Result length different from model for functionDecl");
-	
+
 		for (int i=0;i<functionresults.length; i++)
 		{
 			assertEquals(functionResultModel[i],functionresults[i].toString());
@@ -423,6 +430,33 @@
 		  }
 	}
 	
+  public void testMacros() throws Exception
+  {
+	  //Add a new file to the project, give it some time to index
+	  importFile("extramail.cpp","resources/indexer/extramail.cpp");
+	  //Enable indexing on the created project
+	  //By doing this, we force the Index Manager to indexAll()
+	  indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
+	  indexManager.setEnabled(testProject,true);
+	  Thread.sleep(TIMEOUT);
+	  //Make sure project got added to index
+	  IPath testProjectPath = testProject.getFullPath();
+	  IIndex ind = indexManager.getIndex(testProjectPath,true,true);
+	  assertTrue("Index exists for project",ind != null);
+	
+	  IEntryResult[] macroresults = ind.queryEntries(IIndexConstants.MACRO_DECL);
+	  
+	  String [] macroResultModel = {"EntryResult: word=macroDecl/CASE, refs={ 1 }", "EntryResult: word=macroDecl/MAX, refs={ 1 }", "EntryResult: word=macroDecl/PRINT, refs={ 1 }"};
+	   
+	  if (macroresults.length != macroResultModel.length)
+		 fail("Entry Result length different from model for macros");
+
+	  for (int i=0;i<macroresults.length; i++)
+	  {
+		assertEquals(macroResultModel[i],macroresults[i].toString());
+	  }
+  }
+  
   public void testIndexShutdown() throws Exception{
 	//Add a new file to the project, give it some time to index
 	 importFile("reftest.cpp","resources/indexer/reftest.cpp");
@@ -495,6 +529,9 @@
 	if (depTestModelLocal.length != depTestIncludes.length)
 			fail("Number of included files differsfrom model");
 	
+	Arrays.sort(depTestModelLocal);
+	Arrays.sort(depTestIncludes);
+		
 	for (i=0;i<depTestIncludes.length; i++)
 	{
 		assertEquals(depTestModelLocal[i],depTestIncludes[i]);
@@ -514,6 +551,9 @@
 	
 	if (depTest2ModelLocal.length != depTest2Includes.length)
 			fail("Number of included files differsfrom model");
+	
+	Arrays.sort(depTest2ModelLocal);
+	Arrays.sort(depTest2Includes);
 	
 	for (i=0;i<depTest2Includes.length; i++)
 	{
Index: resources/indexer/extramail.cpp
===================================================================
RCS file: /home/tools/org.eclipse.cdt.core.tests/resources/indexer/extramail.cpp,v
retrieving revision 1.1
diff -u -r1.1 extramail.cpp
--- resources/indexer/extramail.cpp	21 Jul 2003 21:13:59 -0000	1.1
+++ resources/indexer/extramail.cpp	11 Aug 2003 17:44:12 -0000
@@ -3,6 +3,10 @@
 #include <alloc.h>
 #include <iomanip.h>
 
+#define PRINT(a,b) cout<<(a)<<(b)
+#define CASE break;case
+#define MAX(a,b) (((a)>(b))?(a):(b))
+
 typedef int int32;
 
 static void doSomething();

Back to the top