[
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();