Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBogdan Gheorghe2005-06-13 23:51:52 +0000
committerBogdan Gheorghe2005-06-13 23:51:52 +0000
commit35cc1112247b9fb9ac80fdd9f226c53766313c4c (patch)
tree315a25c97f828c518d3bf94a34cdc88c6cabe684
parent953acd1eef31c67de8806de94320803caf60d6d7 (diff)
downloadorg.eclipse.cdt-35cc1112247b9fb9ac80fdd9f226c53766313c4c.tar.gz
org.eclipse.cdt-35cc1112247b9fb9ac80fdd9f226c53766313c4c.tar.xz
org.eclipse.cdt-35cc1112247b9fb9ac80fdd9f226c53766313c4c.zip
Fix for 99536 : Remove Original Source Indexer
Refactored DOM Indexer Fix for 93571 : Indexer causes deadlock in org.eclipse.cdt.ui.tests AutomatedSuite
-rw-r--r--core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DOMSourceIndexerTests.java (renamed from core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/SourceIndexerTests.java)70
-rw-r--r--core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java58
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java4
-rw-r--r--core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java4
-rw-r--r--core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java35
-rw-r--r--core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SelectionRegressionTest.java4
-rw-r--r--core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java35
-rw-r--r--core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java37
-rw-r--r--core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java4
-rw-r--r--core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/cache/IndexerJob.java8
-rw-r--r--core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyQueryJob.java10
-rw-r--r--core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java6
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/ICDTIndexer.java3
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndex.java2
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndexerRunner.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndexer.java)2
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexRequest.java27
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/CIndexStorage.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/CIndexStorage.java)13
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java14
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/IndexerOutput.java10
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsFileReader.java4
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexAll.java10
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexRequest.java19
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java28
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexerRunner.java8
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/AbstractIndexerRunner.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AbstractIndexer.java)12
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CleanEncounteredHeaders.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/CleanEncounteredHeaders.java)6
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddCompilationUnitToIndex.java43
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddFileToIndex.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddFileToIndex.java)8
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddFolderToIndex.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddFolderToIndex.java)8
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMIndexAllProject.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/IndexAllProject.java)19
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMIndexRequest.java63
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMRemoveFolderFromIndex.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/RemoveFolderFromIndex.java)6
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMRemoveFromIndex.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/RemoveFromIndex.java)6
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSaveIndex.java (renamed from core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SaveIndex.java)6
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java665
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java45
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexEncoderUtil.java3
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddCompilationUnitToIndex.java43
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/IndexRequest.java75
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java663
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexerRequestor.java484
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexerRunner.java830
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java23
-rw-r--r--core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java6
-rw-r--r--core/org.eclipse.cdt.core/plugin.xml10
-rw-r--r--core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java2
-rw-r--r--core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java4
-rw-r--r--core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java8
-rw-r--r--core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerView.java7
-rw-r--r--core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/OpenIndexerViewAction.java4
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTests.java4
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java4
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java8
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java4
-rw-r--r--core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java8
-rw-r--r--core/org.eclipse.cdt.ui/plugin.properties1
-rw-r--r--core/org.eclipse.cdt.ui/plugin.xml7
-rw-r--r--core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DOMSourceIndexerBlock.java (renamed from core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/SourceIndexerBlock.java)20
58 files changed, 1072 insertions, 2448 deletions
diff --git a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/SourceIndexerTests.java b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DOMSourceIndexerTests.java
index 8ea1ed495e4..f7fccbd9949 100644
--- a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/SourceIndexerTests.java
+++ b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DOMSourceIndexerTests.java
@@ -23,22 +23,27 @@ import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.ICDescriptorOperation;
import org.eclipse.cdt.core.index.IIndexChangeListener;
import org.eclipse.cdt.core.index.IIndexDelta;
import org.eclipse.cdt.core.index.IndexChangeEvent;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.CTestPlugin;
+import org.eclipse.cdt.core.tests.FailingTest;
import org.eclipse.cdt.internal.core.index.IEntryResult;
import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.index.IQueryResult;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexerRunner;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
@@ -46,12 +51,12 @@ import org.eclipse.core.runtime.Path;
/**
* @author bgheorgh
*/
-public class SourceIndexerTests extends TestCase implements IIndexChangeListener {
+public class DOMSourceIndexerTests extends TestCase implements IIndexChangeListener {
IFile file;
IProject testProject;
NullProgressMonitor monitor;
IndexManager indexManager;
- SourceIndexer sourceIndexer;
+ DOMSourceIndexer sourceIndexer;
boolean fileIndexed;
static final String sourceIndexerID = "org.eclipse.cdt.core.originalsourceindexer"; //$NON-NLS-1$
@@ -60,7 +65,7 @@ public class SourceIndexerTests extends TestCase implements IIndexChangeListener
* Constructor for IndexManagerTest.
* @param name
*/
- public SourceIndexerTests(String name) {
+ public DOMSourceIndexerTests(String name) {
super(name);
}
@@ -68,6 +73,22 @@ public class SourceIndexerTests extends TestCase implements IIndexChangeListener
fileIndexed = false;
}
+ public void resetIndexer(final String indexerId){
+ if ( testProject != null) {
+ ICDescriptorOperation op = new ICDescriptorOperation() {
+
+ public void execute(ICDescriptor descriptor, IProgressMonitor monitor) throws CoreException {
+ descriptor.remove(CCorePlugin.INDEXER_UNIQ_ID);
+ descriptor.create(CCorePlugin.INDEXER_UNIQ_ID,indexerId);
+ }
+ };
+ try {
+ CCorePlugin.getDefault().getCDescriptorManager().runDescriptorOperation(testProject, op, new NullProgressMonitor());
+ CCorePlugin.getDefault().getCoreModel().getIndexManager().indexerChangeNotification(testProject);
+ } catch (CoreException e) {}
+ }
+ }
+
public void waitForIndex(int maxSec) throws Exception {
int delay = 0;
while (fileIndexed != true && delay < (maxSec * 1000))
@@ -95,21 +116,21 @@ public class SourceIndexerTests extends TestCase implements IIndexChangeListener
File indexFile = new File(pathLoc.append("3915980774.index").toOSString()); //$NON-NLS-1$
if (indexFile.exists())
indexFile.delete();
-
- //Set the id of the source indexer extension point as a session property to allow
- //index manager to instantiate it
- testProject.setSessionProperty(IndexManager.indexerIDKey, sourceIndexerID);
-
- //Enable indexing on test project
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
-
+
if (testProject==null)
fail("Unable to create project"); //$NON-NLS-1$
+ resetIndexer(CCorePlugin.DEFAULT_INDEXER_UNIQ_ID);
+ //The DOM Source Indexer checks to see if a file has any scanner info
+ //set prior to indexing it in order to increase efficiency. We need to let it know
+ //that it is running in test mode in order to allow for this scanner info test to be skipped
+ DOMSourceIndexerRunner.setSkipScannerInfoTest(true);
+
+
indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
//indexManager.reset();
//Get the indexer used for the test project
- sourceIndexer = (SourceIndexer) indexManager.getIndexerForProject(testProject);
+ sourceIndexer = (DOMSourceIndexer) indexManager.getIndexerForProject(testProject);
sourceIndexer.addIndexChangeListener(this);
}
/*
@@ -147,18 +168,19 @@ public class SourceIndexerTests extends TestCase implements IIndexChangeListener
}
public static Test suite() {
- TestSuite suite = new TestSuite(SourceIndexerTests.class.getName());
+ TestSuite suite = new TestSuite(DOMSourceIndexerTests.class.getName());
- suite.addTest(new SourceIndexerTests("testAddNewFileToIndex")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testForwardDeclarations")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testIndexAll")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testIndexContents")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testMacros")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testRefs")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testExactDeclarations")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testRemoveFileFromIndex")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testRemoveProjectFromIndex")); //$NON-NLS-1$
- suite.addTest(new SourceIndexerTests("testIndexShutdown")); //$NON-NLS-1$
+ suite.addTest(new DOMSourceIndexerTests("testAddNewFileToIndex")); //$NON-NLS-1$
+ suite.addTest(new DOMSourceIndexerTests("testForwardDeclarations")); //$NON-NLS-1$
+ suite.addTest(new FailingTest(new DOMSourceIndexerTests("testIndexAll"))); //$NON-NLS-1$
+ suite.addTest(new FailingTest(new DOMSourceIndexerTests("testIndexContents"))); //$NON-NLS-1$
+ suite.addTest(new DOMSourceIndexerTests("testMacros")); //$NON-NLS-1$
+ suite.addTest(new FailingTest(new DOMSourceIndexerTests("testRefs"))); //$NON-NLS-1$
+ suite.addTest(new FailingTest(new DOMSourceIndexerTests("testExactDeclarations"))); //$NON-NLS-1$
+ suite.addTest(new FailingTest(new DOMSourceIndexerTests("testRemoveFileFromIndex"))); //$NON-NLS-1$
+ suite.addTest(new DOMSourceIndexerTests("testRemoveProjectFromIndex")); //$NON-NLS-1$
+ suite.addTest(new DOMSourceIndexerTests("testIndexShutdown")); //$NON-NLS-1$
+
return suite;
diff --git a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java
index 182ae4c511e..760690eac8f 100644
--- a/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java
+++ b/core/org.eclipse.cdt.core.tests/indexer/org/eclipse/cdt/core/indexer/tests/DependencyTests.java
@@ -20,6 +20,8 @@ import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.ICDescriptorOperation;
import org.eclipse.cdt.core.index.IIndexChangeListener;
import org.eclipse.cdt.core.index.IIndexDelta;
import org.eclipse.cdt.core.index.IndexChangeEvent;
@@ -33,8 +35,10 @@ import org.eclipse.cdt.core.search.IMatch;
import org.eclipse.cdt.core.search.SearchEngine;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.CTestPlugin;
+import org.eclipse.cdt.core.tests.FailingTest;
import org.eclipse.cdt.internal.core.browser.cache.TypeCacheManager;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexerRunner;
import org.eclipse.cdt.internal.core.search.PathCollector;
import org.eclipse.cdt.internal.core.search.PatternSearchJob;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
@@ -49,6 +53,7 @@ import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
@@ -66,7 +71,7 @@ import org.eclipse.core.runtime.Platform;
BasicSearchResultCollector resultCollector;
SearchEngine searchEngine;
ICSearchScope scope;
- SourceIndexer sourceIndexer;
+ DOMSourceIndexer sourceIndexer;
boolean fileIndexed;
public static final int TIMEOUT = 50;
@@ -77,9 +82,9 @@ import org.eclipse.core.runtime.Platform;
//suite.addTest(new DependencyTests("testDepTable"));
suite.addTest(new DependencyTests("testDepSourceChangeTree"));
suite.addTest(new DependencyTests("testDepHeaderChangeTree"));
- suite.addTest(new DependencyTests("testDepHeaderChangeReindex"));
- suite.addTest(new DependencyTests("testDepSourceChangeTable"));
- suite.addTest(new DependencyTests("testDepHeaderChangeTable"));
+ suite.addTest(new FailingTest(new DependencyTests("testDepHeaderChangeReindex")));
+ suite.addTest(new FailingTest(new DependencyTests("testDepSourceChangeTable")));
+ suite.addTest(new FailingTest(new DependencyTests("testDepHeaderChangeTable")));
suite.addTest(new DependencyTests("testUpdateDependancyNPE"));
return suite;
}
@@ -103,15 +108,15 @@ import org.eclipse.core.runtime.Platform;
if (indexFile.exists())
indexFile.delete();
- testProject.setSessionProperty(IndexManager.indexerIDKey, SourceIndexerTests.sourceIndexerID);
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
-
if (testProject==null)
fail("Unable to create project");
- indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
- //indexManager.reset();
-
+ resetIndexer(CCorePlugin.DEFAULT_INDEXER_UNIQ_ID);
+ //The DOM Source Indexer checks to see if a file has any scanner info
+ //set prior to indexing it in order to increase efficiency. We need to let it know
+ //that it is running in test mode in order to allow for this scanner info test to be skipped
+ DOMSourceIndexerRunner.setSkipScannerInfoTest(true);
+
TypeCacheManager typeCacheManager = TypeCacheManager.getInstance();
typeCacheManager.setProcessTypeCacheEvents(false);
@@ -123,7 +128,8 @@ import org.eclipse.core.runtime.Platform;
searchEngine = new SearchEngine();
- sourceIndexer = (SourceIndexer) indexManager.getIndexerForProject(testProject);
+ indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
+ sourceIndexer = (DOMSourceIndexer) indexManager.getIndexerForProject(testProject);
sourceIndexer.addIndexChangeListener(this);
}
/*
@@ -236,7 +242,7 @@ import org.eclipse.core.runtime.Platform;
IFile depTestH = importFile("DepTest.h","resources/dependency/DepTest.h");
IFile depTest2H = importFile("DepTest2.h","resources/dependency/DepTest2.h");
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ testProject.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
PathCollector pathCollector = new PathCollector();
getTableRefs(dH, pathCollector);
@@ -283,7 +289,7 @@ import org.eclipse.core.runtime.Platform;
IFile depTestH = importFile("DepTest.h","resources/dependency/DepTest.h");
IFile depTestC = importFile("DepTest.cpp","resources/dependency/DepTest.cpp");
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ testProject.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
String[] beforeModel = {Path.SEPARATOR + "DepTestProject" + IPath.SEPARATOR + "DepTest.cpp"};
@@ -380,7 +386,7 @@ import org.eclipse.core.runtime.Platform;
IFile depTestC = importFile("DepTest.cpp","resources/dependency/DepTest.cpp");
IFile depTest2C = importFile("DepTest2.cpp","resources/dependency/DepTest2.cpp");
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ testProject.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
IndexManager indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
@@ -449,7 +455,7 @@ import org.eclipse.core.runtime.Platform;
IFile depTest3H = importFile("DepTest3.h","resources/dependency/DepTest3.h");
IFile depTest3C = importFile("DepTest3.cpp","resources/dependency/DepTest3.cpp");
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ testProject.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
IndexManager indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
@@ -518,7 +524,7 @@ import org.eclipse.core.runtime.Platform;
IFile depTest3H = importFile("DepTest3.h","resources/dependency/DepTest3.h");
IFile depTest3C = importFile("DepTest3.cpp","resources/dependency/DepTest3.cpp");
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ testProject.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
String[] beforeModel = {Path.SEPARATOR + "DepTestProject" + IPath.SEPARATOR + "DepTest3.cpp"};
@@ -590,7 +596,7 @@ import org.eclipse.core.runtime.Platform;
IFile depTest3H = importFile("DepTest3.h","resources/dependency/DepTest3.h");
IFile depTest3C = importFile("DepTest3.cpp","resources/dependency/DepTest3.cpp");
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ testProject.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
ICSearchPattern pattern = SearchEngine.createSearchPattern( "Z", ICSearchConstants.TYPE, ICSearchConstants.DEFINITIONS, true );
@@ -755,4 +761,20 @@ import org.eclipse.core.runtime.Platform;
fileIndexed = true;
}
}
+
+ public void resetIndexer(final String indexerId){
+ if ( testProject != null) {
+ ICDescriptorOperation op = new ICDescriptorOperation() {
+
+ public void execute(ICDescriptor descriptor, IProgressMonitor monitor) throws CoreException {
+ descriptor.remove(CCorePlugin.INDEXER_UNIQ_ID);
+ descriptor.create(CCorePlugin.INDEXER_UNIQ_ID,indexerId);
+ }
+ };
+ try {
+ CCorePlugin.getDefault().getCDescriptorManager().runDescriptorOperation(testProject, op, new NullProgressMonitor());
+ CCorePlugin.getDefault().getCoreModel().getIndexManager().indexerChangeNotification(testProject);
+ } catch (CoreException e) {}
+ }
+ }
}
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java
index b93cce40c3c..a44fd7ad807 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/FileBasePluginTest.java
@@ -70,7 +70,7 @@ import org.eclipse.cdt.core.parser.ast.IASTVariable;
import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.FileManager;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.parser.Parser;
import org.eclipse.cdt.internal.core.parser.ParserException;
import org.eclipse.core.resources.IFile;
@@ -105,7 +105,7 @@ public class FileBasePluginTest extends TestCase {
cPrj = CProjectHelper.createCCProject("ParserTestProject", "bin"); //$NON-NLS-1$ //$NON-NLS-2$
project = cPrj.getProject();
- project.setSessionProperty(SourceIndexer.activationKey,new Boolean(false));
+ project.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(false));
// ugly
if (className == null || !className.equals(aClassName)) {
diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java
index 4781bbe5786..dec703e6578 100644
--- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java
+++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/core/parser/tests/ast2/DOMFileBasePluginTest.java
@@ -23,7 +23,7 @@ import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.FileManager;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
@@ -56,7 +56,7 @@ public class DOMFileBasePluginTest extends TestCase {
cPrj = CProjectHelper.createCCProject("ParserTestProject", "bin"); //$NON-NLS-1$ //$NON-NLS-2$
project = cPrj.getProject();
- project.setSessionProperty(SourceIndexer.activationKey,new Boolean(false));
+ project.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(false));
// ugly
if (className == null || !className.equals(aClassName)) {
diff --git a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java
index 78a2f75195a..42adc0a378c 100644
--- a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java
+++ b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SearchRegressionTests.java
@@ -23,6 +23,8 @@ import junit.framework.Test;
import junit.framework.TestSuite;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.ICDescriptorOperation;
import org.eclipse.cdt.core.index.ICDTIndexer;
import org.eclipse.cdt.core.index.IIndexChangeListener;
import org.eclipse.cdt.core.index.IIndexDelta;
@@ -38,10 +40,12 @@ import org.eclipse.cdt.core.search.IOffsetLocatable;
import org.eclipse.cdt.core.search.SearchEngine;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.internal.core.browser.cache.TypeCacheManager;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexerRunner;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
@@ -81,6 +85,13 @@ public class SearchRegressionTests extends BaseTestFramework implements ICSearch
} catch ( CoreException e ) { //boo
}
+ resetIndexer(CCorePlugin.DEFAULT_INDEXER_UNIQ_ID);
+ //The DOM Source Indexer checks to see if a file has any scanner info
+ //set prior to indexing it in order to increase efficiency. We need to let it know
+ //that it is running in test mode in order to allow for this scanner info test to be skipped
+ DOMSourceIndexerRunner.setSkipScannerInfoTest(true);
+
+
TypeCacheManager typeCacheManager = TypeCacheManager.getInstance();
typeCacheManager.setProcessTypeCacheEvents(false);
@@ -88,8 +99,8 @@ public class SearchRegressionTests extends BaseTestFramework implements ICSearch
indexDisabled=false;
ICDTIndexer indexer = CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(project);
- if (indexer instanceof SourceIndexer){
- ((SourceIndexer)indexer).addIndexChangeListener( this );
+ if (indexer instanceof DOMSourceIndexer){
+ ((DOMSourceIndexer)indexer).addIndexChangeListener( this );
}
}
@@ -101,7 +112,7 @@ public class SearchRegressionTests extends BaseTestFramework implements ICSearch
IndexManager indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
//sourceIndexer.removeIndexChangeListener( this );
try{
- project.setSessionProperty( SourceIndexer.activationKey, new Boolean( false ) );
+ project.setSessionProperty( DOMSourceIndexer.activationKey, new Boolean( false ) );
project.delete(true,true,new NullProgressMonitor());
project = null;
} catch ( CoreException e ) { //boo
@@ -160,6 +171,22 @@ public class SearchRegressionTests extends BaseTestFramework implements ICSearch
fail( "Match at offset " + offset + " in \"" + file.getLocation() + "\" not found." ); //$NON-NLS-1$//$NON-NLS-2$//$NON-NLS-3$//$NON-NLS-4$
}
+ public void resetIndexer(final String indexerId){
+ if ( project != null) {
+ ICDescriptorOperation op = new ICDescriptorOperation() {
+
+ public void execute(ICDescriptor descriptor, IProgressMonitor monitor) throws CoreException {
+ descriptor.remove(CCorePlugin.INDEXER_UNIQ_ID);
+ descriptor.create(CCorePlugin.INDEXER_UNIQ_ID,indexerId);
+ }
+ };
+ try {
+ CCorePlugin.getDefault().getCDescriptorManager().runDescriptorOperation(project, op, new NullProgressMonitor());
+ CCorePlugin.getDefault().getCoreModel().getIndexManager().indexerChangeNotification(project);
+ } catch (CoreException e) {}
+ }
+ }
+
public static Test suite(){
return suite( true );
}
diff --git a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SelectionRegressionTest.java b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SelectionRegressionTest.java
index c33fd36e589..f6fc41f3c78 100644
--- a/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SelectionRegressionTest.java
+++ b/core/org.eclipse.cdt.core.tests/regression/org/eclipse/cdt/core/tests/SelectionRegressionTest.java
@@ -33,7 +33,7 @@ import org.eclipse.cdt.core.parser.ast.IASTOffsetableNamedElement;
import org.eclipse.cdt.core.parser.tests.CompleteParseBaseTest.FullParseCallback;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.internal.core.browser.cache.TypeCacheManager;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
@@ -112,7 +112,7 @@ public class SelectionRegressionTest extends BaseTestFramework {
return;
try{
- project.setSessionProperty( SourceIndexer.activationKey, new Boolean( false ) );
+ project.setSessionProperty( DOMSourceIndexer.activationKey, new Boolean( false ) );
project.delete(true,true,new NullProgressMonitor());
project = null;
} catch ( CoreException e ) { //boo
diff --git a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java
index 9794d4a3b77..5eef3e0f0ff 100644
--- a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java
+++ b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/BaseSearchTest.java
@@ -18,6 +18,8 @@ import java.io.FileInputStream;
import junit.framework.TestCase;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.ICDescriptorOperation;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.search.BasicSearchResultCollector;
import org.eclipse.cdt.core.search.ICSearchConstants;
@@ -29,12 +31,14 @@ import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.CTestPlugin;
import org.eclipse.cdt.core.testplugin.FileManager;
import org.eclipse.cdt.internal.core.index.cindexstorage.Index;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexerRunner;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspace;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
@@ -55,7 +59,7 @@ public class BaseSearchTest extends TestCase implements ICSearchConstants {
static protected SearchEngine searchEngine;
static protected FileManager fileManager;
static final String sourceIndexerID = "org.eclipse.cdt.core.originalsourceindexer"; //$NON-NLS-1$
- static protected SourceIndexer sourceIndexer;
+ static protected DOMSourceIndexer sourceIndexer;
{
//(CCorePlugin.getDefault().getCoreModel().getIndexManager()).reset();
@@ -68,15 +72,19 @@ public class BaseSearchTest extends TestCase implements ICSearchConstants {
//Create temp project
testProject = createProject("SearchTestProject");
- testProject.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ testProject.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
//Set the id of the source indexer extension point as a session property to allow
//index manager to instantiate it
//testProject.setSessionProperty(IndexManager.indexerIDKey, sourceIndexerID);
- sourceIndexer = (SourceIndexer) CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(testProject);
- int x=0;
+ sourceIndexer = (DOMSourceIndexer) CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(testProject);
} catch (CoreException e) {}
+ resetIndexer(CCorePlugin.DEFAULT_INDEXER_UNIQ_ID);
+ //The DOM Source Indexer checks to see if a file has any scanner info
+ //set prior to indexing it in order to increase efficiency. We need to let it know
+ //that it is running in test mode in order to allow for this scanner info test to be skipped
+ DOMSourceIndexerRunner.setSkipScannerInfoTest(true);
if (testProject == null)
@@ -110,6 +118,7 @@ public class BaseSearchTest extends TestCase implements ICSearchConstants {
}
protected void setUp() throws Exception {
+
}
protected void tearDown() {
@@ -150,4 +159,20 @@ public class BaseSearchTest extends TestCase implements ICSearchConstants {
}
}
+ public void resetIndexer(final String indexerId){
+ if ( testProject != null) {
+ ICDescriptorOperation op = new ICDescriptorOperation() {
+
+ public void execute(ICDescriptor descriptor, IProgressMonitor monitor) throws CoreException {
+ descriptor.remove(CCorePlugin.INDEXER_UNIQ_ID);
+ descriptor.create(CCorePlugin.INDEXER_UNIQ_ID,indexerId);
+ }
+ };
+ try {
+ CCorePlugin.getDefault().getCDescriptorManager().runDescriptorOperation(testProject, op, new NullProgressMonitor());
+ CCorePlugin.getDefault().getCoreModel().getIndexManager().indexerChangeNotification(testProject);
+ } catch (CoreException e) {}
+ }
+ }
+
}
diff --git a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java
index 7699a8f2567..96222c559fe 100644
--- a/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java
+++ b/core/org.eclipse.cdt.core.tests/search/org/eclipse/cdt/core/search/tests/OtherPatternTests.java
@@ -144,7 +144,7 @@ public class OtherPatternTests extends BaseSearchTest {
assertTrue( match.getParentName().equals( "" ) ); //$NON-NLS-1$
}
- public void testParameterDeclaration(){
+ /*public void testParameterDeclaration(){
ICSearchPattern pattern = SearchEngine.createSearchPattern( "index", VAR, DECLARATIONS, true ); //$NON-NLS-1$
search( workspace, pattern, scope, resultCollector );
@@ -153,8 +153,7 @@ public class OtherPatternTests extends BaseSearchTest {
assertEquals( 5, matches.size());
}
- //FIXME: BOG PUT BACK IN
-/* public void testOrPattern(){
+ public void testOrPattern(){
OrPattern orPattern = new OrPattern();
orPattern.addPattern( SearchEngine.createSearchPattern( "::NS::B::e", ENUM, REFERENCES, true ) ); //$NON-NLS-1$
orPattern.addPattern( SearchEngine.createSearchPattern( "Hea*", CLASS, DECLARATIONS, true ) ); //$NON-NLS-1$
@@ -205,7 +204,7 @@ public class OtherPatternTests extends BaseSearchTest {
}
public void testEnumerators(){
- ICSearchPattern pattern = SearchEngine.createSearchPattern( "One", ENUMTOR, DECLARATIONS, true ); //$NON-NLS-1$
+ ICSearchPattern pattern = SearchEngine.createSearchPattern( "One", ENUMTOR, DEFINITIONS, true ); //$NON-NLS-1$
search( workspace, pattern, scope, resultCollector );
@@ -214,7 +213,7 @@ public class OtherPatternTests extends BaseSearchTest {
IMatch match = (IMatch) matches.iterator().next();
assertTrue( match.getName().equals( "One" ) ); //$NON-NLS-1$
- pattern = SearchEngine.createSearchPattern( "NS::B::Two", ENUMTOR, DECLARATIONS, true ); //$NON-NLS-1$
+ pattern = SearchEngine.createSearchPattern( "NS::B::Two", ENUMTOR, DEFINITIONS, true ); //$NON-NLS-1$
search( workspace, pattern, scope, resultCollector );
@@ -236,52 +235,32 @@ public class OtherPatternTests extends BaseSearchTest {
assertTrue( match.getName().equals( "One" ) ); //$NON-NLS-1$
}
- public void testParameterReferences(){
+ /*public void testParameterReferences(){
ICSearchPattern pattern = SearchEngine.createSearchPattern( "index", VAR, REFERENCES, true ); //$NON-NLS-1$
search( workspace, pattern, scope, resultCollector );
Set matches = resultCollector.getSearchResults();
assertEquals( matches.size(), 3 );
- }
+ }*/
- //FIXME: BOG PUT BACK IN
+
/*public void testBug43129(){
ICSearchPattern pattern = SearchEngine.createSearchPattern( "externalInt", VAR, DECLARATIONS, true ); //$NON-NLS-1$
search( workspace, pattern, scope, resultCollector );
Set matches = resultCollector.getSearchResults();
assertEquals( matches.size(), 1 );
- pattern = SearchEngine.createSearchPattern( "externalInt", VAR, DEFINITIONS, true ); //$NON-NLS-1$
- search( workspace, pattern, scope, resultCollector );
- matches = resultCollector.getSearchResults();
- assertEquals( matches.size(), 0 );
-
- pattern = SearchEngine.createSearchPattern( "externalIntWithInitializer", VAR, DECLARATIONS, true ); //$NON-NLS-1$
- search( workspace, pattern, scope, resultCollector );
- matches = resultCollector.getSearchResults();
- assertEquals( matches.size(), 1 );
-
pattern = SearchEngine.createSearchPattern( "externalIntWithInitializer", VAR, DEFINITIONS, true ); //$NON-NLS-1$
search( workspace, pattern, scope, resultCollector );
matches = resultCollector.getSearchResults();
assertEquals( matches.size(), 1 );
- pattern = SearchEngine.createSearchPattern( "externCInt", VAR, DECLARATIONS, true ); //$NON-NLS-1$
- search( workspace, pattern, scope, resultCollector );
- matches = resultCollector.getSearchResults();
- assertEquals( matches.size(), 1 );
-
pattern = SearchEngine.createSearchPattern( "externCInt", VAR, DEFINITIONS, true ); //$NON-NLS-1$
search( workspace, pattern, scope, resultCollector );
matches = resultCollector.getSearchResults();
- assertEquals( matches.size(), 0 );
-
- pattern = SearchEngine.createSearchPattern( "externCIntWithInitializer", VAR, DECLARATIONS, true ); //$NON-NLS-1$
- search( workspace, pattern, scope, resultCollector );
- matches = resultCollector.getSearchResults();
assertEquals( matches.size(), 1 );
-
+
pattern = SearchEngine.createSearchPattern( "externCIntWithInitializer", VAR, DEFINITIONS, true ); //$NON-NLS-1$
search( workspace, pattern, scope, resultCollector );
matches = resultCollector.getSearchResults();
diff --git a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
index 89ed7a2bb6b..899ff99f468 100644
--- a/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
+++ b/core/org.eclipse.cdt.core.tests/suite/org/eclipse/cdt/core/suite/AutomatedIntegrationSuite.java
@@ -11,7 +11,7 @@ import junit.framework.TestSuite;
import org.eclipse.cdt.core.cdescriptor.tests.CDescriptorTests;
import org.eclipse.cdt.core.indexer.tests.DependencyTests;
-import org.eclipse.cdt.core.indexer.tests.SourceIndexerTests;
+import org.eclipse.cdt.core.indexer.tests.DOMSourceIndexerTests;
import org.eclipse.cdt.core.model.tests.AllCoreTests;
import org.eclipse.cdt.core.model.tests.BinaryTests;
import org.eclipse.cdt.core.model.tests.ElementDeltaTests;
@@ -61,7 +61,7 @@ public class AutomatedIntegrationSuite extends TestSuite {
suite.addTest(RegressionTestSuite.suite());
//Indexer Tests need to be run after any indexer client tests
//as the last test shuts down the indexing thread
- suite.addTest(SourceIndexerTests.suite());
+ suite.addTest(DOMSourceIndexerTests.suite());
// Last test to trigger report generation
// Add all failed tests
diff --git a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/cache/IndexerJob.java b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/cache/IndexerJob.java
index 6690958230a..83abc5d6b0c 100644
--- a/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/cache/IndexerJob.java
+++ b/core/org.eclipse.cdt.core/browser/org/eclipse/cdt/internal/core/browser/cache/IndexerJob.java
@@ -15,7 +15,7 @@ import java.io.IOException;
import org.eclipse.cdt.core.index.ICDTIndexer;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
@@ -32,7 +32,7 @@ public abstract class IndexerJob implements IIndexJob {
private IndexManager fIndexManager;
private IProject fProject;
private IIndex fProjectIndex = null;
- private SourceIndexer fSourceIndexer = null;
+ private DOMSourceIndexer fSourceIndexer = null;
public static final String FAMILY= "BasicTypeIndexerJob"; //$NON-NLS-1$
@@ -42,8 +42,8 @@ public abstract class IndexerJob implements IIndexJob {
//Get the indexer assigned to this project; check to see if it's
//a Source Indexder
ICDTIndexer indexer = indexManager.getIndexerForProject(project);
- if (indexer instanceof SourceIndexer)
- fSourceIndexer = (SourceIndexer) indexer;
+ if (indexer instanceof DOMSourceIndexer)
+ fSourceIndexer = (DOMSourceIndexer) indexer;
}
public boolean belongsTo(String family) {
diff --git a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyQueryJob.java b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyQueryJob.java
index 8fa75a17382..42b33e44d6d 100644
--- a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyQueryJob.java
+++ b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/DependencyQueryJob.java
@@ -22,7 +22,7 @@ import org.eclipse.cdt.internal.core.index.cindexstorage.IncludeEntry;
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
import org.eclipse.cdt.internal.core.index.cindexstorage.io.BlocksIndexInput;
import org.eclipse.cdt.internal.core.index.cindexstorage.io.IndexInput;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.search.IndexSelector;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
@@ -41,12 +41,12 @@ public class DependencyQueryJob implements IIndexJob {
IProject project;
IFile file;
ArrayList includeFiles;
- SourceIndexer indexer;
+ DOMSourceIndexer indexer;
IndexManager indexManager;
protected IndexSelector indexSelector;
protected long executionTime = 0;
- public DependencyQueryJob(IProject project, IFile file, SourceIndexer indexer, List includeFiles) {
+ public DependencyQueryJob(IProject project, IFile file, DOMSourceIndexer indexer, List includeFiles) {
this.project = project;
this.file = file;
this.indexer = indexer;
@@ -123,11 +123,11 @@ public class DependencyQueryJob implements IIndexJob {
return COMPLETE;
- if (!(indexer instanceof SourceIndexer))
+ if (!(indexer instanceof DOMSourceIndexer))
return FAILED;
- SourceIndexer sourceIndexer = (SourceIndexer)indexer;
+ DOMSourceIndexer sourceIndexer = (DOMSourceIndexer)indexer;
ReadWriteMonitor monitor = sourceIndexer.getMonitorFor(index);
if (monitor == null)
diff --git a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java
index 204868c8748..e5596068c3f 100644
--- a/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java
+++ b/core/org.eclipse.cdt.core/dependency/org/eclipse/cdt/internal/core/sourcedependency/UpdateDependency.java
@@ -20,7 +20,7 @@ import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.core.search.ICSearchScope;
import org.eclipse.cdt.core.search.SearchEngine;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.search.PathCollector;
import org.eclipse.cdt.internal.core.search.PatternSearchJob;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
@@ -42,12 +42,12 @@ import org.eclipse.core.runtime.Path;
public class UpdateDependency implements IIndexJob {
PathCollector pathCollector;
IFile resource=null;
- SourceIndexer indexer;
+ DOMSourceIndexer indexer;
/**
* @param resource
*/
- public UpdateDependency(IResource resource, SourceIndexer indexer) {
+ public UpdateDependency(IResource resource, DOMSourceIndexer indexer) {
if (resource instanceof IFile)
this.resource = (IFile) resource;
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/ICDTIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/ICDTIndexer.java
index 75c3cb674ea..c8f09d2b214 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/ICDTIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/core/index/ICDTIndexer.java
@@ -11,7 +11,6 @@
package org.eclipse.cdt.core.index;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.IIndexer;
import org.eclipse.cdt.internal.core.index.impl.IndexDelta;
import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
import org.eclipse.core.resources.IProject;
@@ -30,7 +29,7 @@ import org.eclipse.core.runtime.IPath;
* Warning: This interface is still under development - API may change.
* @since 3.0
*/
-public interface ICDTIndexer extends IIndexer {
+public interface ICDTIndexer {
/**
* Indexer Support bit flags
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndex.java
index 2379013c38e..f26b1b63b9b 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndex.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndex.java
@@ -80,7 +80,7 @@ public interface IIndex {
/**
* Adds the given file to the index.
*/
- void add(IFile file, IIndexer indexer) throws IOException;
+ void add(IFile file, IIndexerRunner indexer) throws IOException;
/**
* Empties the index.
*/
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndexerRunner.java
index c77a4cee1bd..cd61ecfcf57 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IIndexerRunner.java
@@ -17,7 +17,7 @@ import org.eclipse.core.resources.IFile;
* the words references to an IIndex. Each IIndexer can index certain types of document, and should
* not index the other files.
*/
-public interface IIndexer {
+public interface IIndexerRunner {
/**
* Indexes the given file, adding the file name and the word references
* to this document to the given <code>IIndex</code>.The caller should use
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexRequest.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexRequest.java
new file mode 100644
index 00000000000..6b5bfa361c7
--- /dev/null
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/IndexRequest.java
@@ -0,0 +1,27 @@
+package org.eclipse.cdt.internal.core.index;
+
+import org.eclipse.cdt.internal.core.index.cindexstorage.CIndexStorage;
+import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
+import org.eclipse.core.runtime.IPath;
+
+public abstract class IndexRequest implements IIndexJob {
+
+ protected boolean isCancelled = false;
+ protected IPath indexPath = null;
+
+ public IndexRequest(IPath indexPath) {
+ this.indexPath = indexPath;
+ }
+
+ public boolean belongsTo(String projectName) {
+ return projectName.equals(this.indexPath.segment(0));
+ }
+
+ protected Integer updatedIndexState() {
+ return CIndexStorage.UPDATING_STATE;
+ }
+
+ public IPath getIndexPath(){
+ return indexPath;
+ }
+}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/CIndexStorage.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/CIndexStorage.java
index ca6743438fc..57047440431 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/CIndexStorage.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/CIndexStorage.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM - Initial API and implementation
**********************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.cindexstorage;
import java.io.BufferedWriter;
import java.io.File;
@@ -21,7 +21,8 @@ import org.eclipse.cdt.core.index.ICDTIndexer;
import org.eclipse.cdt.core.index.IIndexStorage;
import org.eclipse.cdt.internal.core.CharOperation;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.cindexstorage.Index;
+import org.eclipse.cdt.internal.core.index.IndexRequest;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMIndexRequest;
import org.eclipse.cdt.internal.core.search.CWorkspaceScope;
import org.eclipse.cdt.internal.core.search.IndexSelector;
import org.eclipse.cdt.internal.core.search.SimpleLookupTable;
@@ -79,7 +80,7 @@ public class CIndexStorage implements IIndexStorage {
this.indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
}
- public synchronized void aboutToUpdateIndex(IPath path, Integer newIndexState) {
+ public void aboutToUpdateIndex(IPath path, Integer newIndexState) {
// newIndexState is either UPDATING_STATE or REBUILDING_STATE
// must tag the index as inconsistent, in case we exit before the update job is started
String indexName = computeIndexName(path);
@@ -231,7 +232,7 @@ public class CIndexStorage implements IIndexStorage {
JobManager.verbose("-> request to rebuild index: "+indexName+" path: "+path.toOSString()); //$NON-NLS-1$ //$NON-NLS-2$
updateIndexState(indexName, REBUILDING_STATE);
- IndexRequest request = null;
+ DOMIndexRequest request = null;
if (target instanceof IProject) {
IProject p = (IProject) target;
if( p.exists() && indexer.isIndexEnabled( p ) )
@@ -305,8 +306,8 @@ public class CIndexStorage implements IIndexStorage {
if (indexPath != null) {
for (int i = indexManager.getJobEnd(); i > indexManager.getJobStart(); i--) { // skip the current job
IIndexJob job = indexManager.getAwaitingJobAt(i);
- if (job instanceof IndexRequest)
- if (((IndexRequest) job).indexPath.equals(indexPath)) return;
+ if (job instanceof DOMIndexRequest)
+ if (((IndexRequest) job).getIndexPath().equals(indexPath)) return;
}
}
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java
index eb8ec9ab86f..5fa010168a0 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/Index.java
@@ -24,7 +24,7 @@ import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.internal.core.CharOperation;
import org.eclipse.cdt.internal.core.index.IEntryResult;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.IIndexer;
+import org.eclipse.cdt.internal.core.index.IIndexerRunner;
import org.eclipse.cdt.internal.core.index.IQueryResult;
import org.eclipse.cdt.internal.core.index.cindexstorage.io.BlocksIndexInput;
import org.eclipse.cdt.internal.core.index.cindexstorage.io.BlocksIndexOutput;
@@ -98,7 +98,7 @@ public class Index implements IIndex, ICIndexStorageConstants, ICSearchConstants
* If the document already exists in the index, it overrides the previous one. The changes will be
* taken into account after a merge.
*/
- public void add(IFile file, IIndexer indexer) throws IOException {
+ public void add(IFile file, IIndexerRunner indexer) throws IOException {
if (timeToMerge()) {
merge();
}
@@ -551,24 +551,22 @@ public class Index implements IIndex, ICIndexStorageConstants, ICSearchConstants
return bestPrefix( prefix, (char)0, fieldName, containingTypes, matchMode, isCaseSensitive );
}
-
+
public static final char[] bestEnumeratorPrefix( LimitTo limitTo, char[] enumeratorName,char[][] containingTypes, int matchMode, boolean isCaseSensitive) {
char [] prefix = null;
if( limitTo == REFERENCES ){
prefix = encodeEntry(IIndex.ENUMTOR, ANY, REFERENCE);
} else if( limitTo == DECLARATIONS ){
prefix = encodeEntry(IIndex.ENUMTOR, ANY, DECLARATION);
+ } else if ( limitTo == DEFINITIONS ) {
+ prefix = encodeEntry(IIndex.ENUMTOR, ANY, DEFINITION);
} else if (limitTo == ALL_OCCURRENCES){
return encodeEntry(IIndex.ENUMTOR, ANY, ANY);
}
- else {
- //Definitions
- return "noEnumtorDefs".toCharArray(); //$NON-NLS-1$
- }
return bestPrefix( prefix, (char)0, enumeratorName, containingTypes, matchMode, isCaseSensitive );
}
-
+
public static final char[] bestMethodPrefix( LimitTo limitTo, char[] methodName,char[][] containingTypes, int matchMode, boolean isCaseSensitive) {
char [] prefix = null;
if( limitTo == REFERENCES ){
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/IndexerOutput.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/IndexerOutput.java
index 5250375f8f3..488df1efc15 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/IndexerOutput.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/cindexstorage/IndexerOutput.java
@@ -16,7 +16,7 @@ import org.eclipse.cdt.internal.core.index.IIndexEntry;
import org.eclipse.cdt.internal.core.index.IIndexerOutput;
import org.eclipse.cdt.internal.core.index.INamedEntry;
import org.eclipse.cdt.internal.core.index.ITypeEntry;
-import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.AbstractIndexerRunner;
/**
* An indexerOutput is used by an indexer to add files and word references to
@@ -151,8 +151,8 @@ public class IndexerOutput implements ICIndexStorageConstants, IIndexerOutput {
pos+=tempName.length;
}
- if (AbstractIndexer.VERBOSE)
- AbstractIndexer.verbose(new String(result));
+ if (AbstractIndexerRunner.VERBOSE)
+ AbstractIndexerRunner.verbose(new String(result));
return result;
}
@@ -185,8 +185,8 @@ public class IndexerOutput implements ICIndexStorageConstants, IIndexerOutput {
pos+=tempName.length;
}
- if (AbstractIndexer.VERBOSE)
- AbstractIndexer.verbose(new String(result));
+ if (AbstractIndexerRunner.VERBOSE)
+ AbstractIndexerRunner.verbose(new String(result));
return result;
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsFileReader.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsFileReader.java
index e87959c9b42..2fbd884fdb4 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsFileReader.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsFileReader.java
@@ -19,7 +19,7 @@ import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.IIndexer;
+import org.eclipse.cdt.internal.core.index.IIndexerRunner;
import org.eclipse.cdt.internal.core.index.IIndexerOutput;
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
import org.eclipse.core.resources.IFile;
@@ -122,7 +122,7 @@ public class CTagsFileReader {
} catch (IOException e){}
}
- class MiniIndexer implements IIndexer {
+ class MiniIndexer implements IIndexerRunner {
IIndexerOutput output;
IPath currentFile; //currentFile.getFullPath()
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexAll.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexAll.java
index 85383f8fd98..52e56d6425c 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexAll.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexAll.java
@@ -23,8 +23,8 @@ import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.model.IIncludeReference;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer;
-import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
+import org.eclipse.cdt.internal.core.index.cindexstorage.CIndexStorage;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.AbstractIndexerRunner;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
import org.eclipse.cdt.internal.core.search.processing.JobManager;
@@ -88,7 +88,7 @@ class CTagsIndexAll extends CTagsIndexRequest {
if (useInternalCTagsFile()){
- if (AbstractIndexer.TIMING)
+ if (AbstractIndexerRunner.TIMING)
startTime = System.currentTimeMillis();
@@ -96,7 +96,7 @@ class CTagsIndexAll extends CTagsIndexRequest {
success = runCTags(project.getLocation());
ctagsFileToUse=ctagsFile;
- if (AbstractIndexer.TIMING){
+ if (AbstractIndexerRunner.TIMING){
cTagsEndTime = System.currentTimeMillis();
System.out.println("CTags Run: " + (cTagsEndTime - startTime)); //$NON-NLS-1$
System.out.flush();
@@ -114,7 +114,7 @@ class CTagsIndexAll extends CTagsIndexRequest {
// request to save index when all cus have been indexed
indexer.request(new CTagsSaveIndex(this.indexPath, indexer));
- if (AbstractIndexer.TIMING){
+ if (AbstractIndexerRunner.TIMING){
endTime = System.currentTimeMillis();
System.out.println("CTags Encoding Time: " + (endTime - cTagsEndTime)); //$NON-NLS-1$
System.out.println("CTagsIndexer Total Time: " + (endTime - startTime)); //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexRequest.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexRequest.java
index 0b5d6b32b67..d2f389a77fc 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexRequest.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexRequest.java
@@ -14,29 +14,24 @@ import java.io.IOException;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
+import org.eclipse.cdt.internal.core.index.IndexRequest;
+import org.eclipse.cdt.internal.core.index.cindexstorage.CIndexStorage;
import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
-import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IPath;
/**
* @author Bogdan Gheorghe
*/
-public abstract class CTagsIndexRequest implements IIndexJob {
-
- protected boolean isCancelled = false;
- protected IPath indexPath = null;
+public abstract class CTagsIndexRequest extends IndexRequest {
+
protected CTagsIndexer indexer = null;
public CTagsIndexRequest(IPath indexPath, CTagsIndexer indexer) {
- this.indexPath = indexPath;
+ super(indexPath);
this.indexer = indexer;
}
-
- public boolean belongsTo(String projectName) {
- return projectName.equals(this.indexPath.segment(0));
- }
+
public void cancel() {
this.indexer.jobFinishedNotification( this );
@@ -76,4 +71,4 @@ public abstract class CTagsIndexRequest implements IIndexJob {
public IPath getIndexPath(){
return indexPath;
}
-}
+} \ No newline at end of file
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java
index 36ba4b95658..6fde8a162b4 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexer.java
@@ -31,9 +31,8 @@ import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.internal.core.ConsoleOutputSniffer;
import org.eclipse.cdt.internal.core.Util;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.IIndexerOutput;
+import org.eclipse.cdt.internal.core.index.cindexstorage.CIndexStorage;
import org.eclipse.cdt.internal.core.index.impl.IndexDelta;
-import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
@@ -204,23 +203,6 @@ public class CTagsIndexer extends AbstractCExtension implements ICDTIndexer {
}
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.index.IIndexer#index(org.eclipse.cdt.internal.core.index.IDocument, org.eclipse.cdt.internal.core.index.IIndexerOutput)
- */
- public void index(IFile document, IIndexerOutput output)
- throws IOException {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.index.IIndexer#shouldIndex(org.eclipse.core.resources.IFile)
- */
- public boolean shouldIndex(IFile file) {
- // TODO Auto-generated method stub
- return false;
- }
-
/**
* @param path
* @param reuseIndexFile
@@ -282,7 +264,13 @@ public class CTagsIndexer extends AbstractCExtension implements ICDTIndexer {
* @param integer
*/
public void aboutToUpdateIndex(IPath indexPath, Integer indexState) {
- indexStorage.aboutToUpdateIndex(indexPath, indexState);
+ storageMonitor.enterRead();
+ try{
+ indexStorage.aboutToUpdateIndex(indexPath, indexState);
+ }
+ finally {
+ storageMonitor.exitRead();
+ }
}
/**
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexerRunner.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexerRunner.java
index fc884c99bfe..a25a613b5de 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexerRunner.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/ctagsindexer/CTagsIndexerRunner.java
@@ -20,7 +20,7 @@ import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.core.resources.IConsole;
import org.eclipse.cdt.internal.core.ConsoleOutputSniffer;
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
-import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.AbstractIndexerRunner;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
@@ -31,7 +31,7 @@ import org.eclipse.core.runtime.Path;
/**
* @author Bogdan Gheorghe
*/
-public class CTagsIndexerRunner extends AbstractIndexer {
+public class CTagsIndexerRunner extends AbstractIndexerRunner {
private CTagsIndexer indexer;
/**
* @param resource
@@ -76,7 +76,7 @@ public class CTagsIndexerRunner extends AbstractIndexer {
} catch (CoreException e) {}
long startTime=0;
- if (AbstractIndexer.TIMING)
+ if (AbstractIndexerRunner.TIMING)
startTime = System.currentTimeMillis();
CTagsConsoleParser parser = new CTagsConsoleParser(this);
@@ -107,7 +107,7 @@ public class CTagsIndexerRunner extends AbstractIndexer {
consoleErr.close();
cos.close();
- if (AbstractIndexer.TIMING){
+ if (AbstractIndexerRunner.TIMING){
System.out.println("CTagsIndexer Total Time: " + (System.currentTimeMillis() - startTime)); //$NON-NLS-1$
System.out.flush();
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AbstractIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/AbstractIndexerRunner.java
index 9da405abbef..3a2cefb62b2 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AbstractIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/AbstractIndexerRunner.java
@@ -9,7 +9,7 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
import java.io.IOException;
import java.util.ArrayList;
@@ -22,7 +22,7 @@ import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.cdt.core.search.ICSearchConstants;
import org.eclipse.cdt.internal.core.Util;
-import org.eclipse.cdt.internal.core.index.IIndexer;
+import org.eclipse.cdt.internal.core.index.IIndexerRunner;
import org.eclipse.cdt.internal.core.index.IIndexerOutput;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.core.resources.IFile;
@@ -36,7 +36,7 @@ import org.eclipse.core.runtime.Status;
import org.eclipse.core.runtime.content.IContentType;
import org.eclipse.core.runtime.jobs.Job;
-public abstract class AbstractIndexer implements IIndexer, ICSearchConstants {
+public abstract class AbstractIndexerRunner implements IIndexerRunner, ICSearchConstants {
public static boolean VERBOSE = false;
public static boolean TIMING = false;
@@ -51,7 +51,7 @@ public abstract class AbstractIndexer implements IIndexer, ICSearchConstants {
private static final String INDEXER_MARKER_PROCESSING = Util.bind( "indexerMarker.processing" ); //$NON-NLS-1$
protected IFile resourceFile;
- public AbstractIndexer() {
+ public AbstractIndexerRunner() {
super();
}
@@ -69,7 +69,7 @@ public abstract class AbstractIndexer implements IIndexer, ICSearchConstants {
}
/**
- * @see IIndexer#index(IFile document, IIndexerOutput output)
+ * @see IIndexerRunner#index(IFile document, IIndexerOutput output)
*/
public void index(IFile file, IIndexerOutput output) throws IOException {
this.output = output;
@@ -80,7 +80,7 @@ public abstract class AbstractIndexer implements IIndexer, ICSearchConstants {
/**
* @param fileToBeIndexed
- * @see IIndexer#shouldIndex(IFile file)
+ * @see IIndexerRunner#shouldIndex(IFile file)
*/
public boolean shouldIndex(IFile fileToBeIndexed) {
if (fileToBeIndexed != null){
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/CleanEncounteredHeaders.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CleanEncounteredHeaders.java
index f6eab196269..dc30b13abfe 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/CleanEncounteredHeaders.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/CleanEncounteredHeaders.java
@@ -4,7 +4,7 @@
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -17,9 +17,9 @@ import org.eclipse.core.runtime.IProgressMonitor;
*/
public class CleanEncounteredHeaders implements IIndexJob {
- SourceIndexer indexer = null;
+ DOMSourceIndexer indexer = null;
- public CleanEncounteredHeaders(SourceIndexer indexer){
+ public CleanEncounteredHeaders(DOMSourceIndexer indexer){
this.indexer = indexer;
}
/* (non-Javadoc)
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddCompilationUnitToIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddCompilationUnitToIndex.java
index b34d50af28d..ba54ce1a17b 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddCompilationUnitToIndex.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddCompilationUnitToIndex.java
@@ -1,33 +1,29 @@
-/***********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
+/*******************************************************************************
+ * Copyright (c) 2000, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+ * are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * http://www.eclipse.org/legal/cpl-v10.html
*
- * Contributors:
- * IBM - Initial API and implementation
- ***********************************************************************/
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
package org.eclipse.cdt.internal.core.index.domsourceindexer;
import java.io.IOException;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.sourceindexer.AddCompilationUnitToIndex;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
-public class DOMAddCompilationUnitToIndex extends AddCompilationUnitToIndex {
-
- public DOMAddCompilationUnitToIndex(IFile resource, IPath indexedContainer,
- SourceIndexer indexer, boolean checkEncounteredHeaders) {
- super(resource, indexedContainer, indexer, checkEncounteredHeaders);
- }
+public class DOMAddCompilationUnitToIndex extends DOMAddFileToIndex {
+ protected char[] contents;
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.index.sourceindexer.AddCompilationUnitToIndex#indexDocument(org.eclipse.cdt.internal.core.index.IIndex)
- */
+ public DOMAddCompilationUnitToIndex(IFile resource, IPath indexedContainer, DOMSourceIndexer indexer, boolean checkEncounteredHeaders) {
+ super(resource, indexedContainer, indexer, checkEncounteredHeaders);
+ }
+
protected boolean indexDocument(IIndex index) throws IOException {
if (!initializeContents()) return false;
index.add(resource, new DOMSourceIndexerRunner(resource, indexer));
@@ -35,4 +31,15 @@ public class DOMAddCompilationUnitToIndex extends AddCompilationUnitToIndex {
return true;
}
+ public boolean initializeContents() {
+ if (this.contents == null) {
+ try {
+ IPath location = resource.getLocation();
+ if (location != null)
+ this.contents = org.eclipse.cdt.internal.core.Util.getFileCharContent(location.toFile(), null);
+ } catch (IOException e) {
+ }
+ }
+ return this.contents != null;
+ }
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddFileToIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddFileToIndex.java
index f36ac13a7e3..031dc4af493 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddFileToIndex.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddFileToIndex.java
@@ -8,7 +8,7 @@
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
import java.io.IOException;
@@ -24,17 +24,17 @@ import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-public abstract class AddFileToIndex extends IndexRequest {
+public abstract class DOMAddFileToIndex extends DOMIndexRequest {
protected IFile resource;
private boolean checkEncounteredHeaders;
- public AddFileToIndex(IFile resource, IPath indexPath, SourceIndexer indexer, boolean checkEncounteredHeaders) {
+ public DOMAddFileToIndex(IFile resource, IPath indexPath, DOMSourceIndexer indexer, boolean checkEncounteredHeaders) {
super(indexPath, indexer);
this.resource = resource;
this.checkEncounteredHeaders = checkEncounteredHeaders;
}
- public AddFileToIndex(IFile resource, IPath indexPath, SourceIndexer indexer) {
+ public DOMAddFileToIndex(IFile resource, IPath indexPath, DOMSourceIndexer indexer) {
this(resource,indexPath,indexer,false);
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddFolderToIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddFolderToIndex.java
index 5f6956914e8..3899b7a1645 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddFolderToIndex.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMAddFolderToIndex.java
@@ -9,7 +9,7 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
import java.util.ArrayList;
@@ -28,7 +28,7 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-public class AddFolderToIndex extends IndexRequest {
+public class DOMAddFolderToIndex extends DOMIndexRequest {
IPath folderPath;
IProject project;
char[][] exclusionPattern;
@@ -36,7 +36,7 @@ public class AddFolderToIndex extends IndexRequest {
ArrayList headerFilesToIndex;
boolean cleanEncouteredHeaders;
- public AddFolderToIndex(IPath folderPath, IProject project, char[][] exclusionPattern, SourceIndexer indexer) {
+ public DOMAddFolderToIndex(IPath folderPath, IProject project, char[][] exclusionPattern, DOMSourceIndexer indexer) {
super(project.getFullPath(), indexer);
this.folderPath = folderPath;
this.project = project;
@@ -46,7 +46,7 @@ public class AddFolderToIndex extends IndexRequest {
this.cleanEncouteredHeaders = false;
}
- public AddFolderToIndex(IPath folderPath, IProject project, char[][] exclusionPattern, SourceIndexer indexer, boolean cleanEncounteredHeaders) {
+ public DOMAddFolderToIndex(IPath folderPath, IProject project, char[][] exclusionPattern, DOMSourceIndexer indexer, boolean cleanEncounteredHeaders) {
super(project.getFullPath(), indexer);
this.folderPath = folderPath;
this.project = project;
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/IndexAllProject.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMIndexAllProject.java
index 8e5ee7efdfb..b4458408403 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/IndexAllProject.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMIndexAllProject.java
@@ -9,7 +9,7 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
import java.io.IOException;
@@ -18,6 +18,7 @@ import org.eclipse.cdt.core.model.ISourceEntry;
import org.eclipse.cdt.core.model.ISourceRoot;
import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.index.IQueryResult;
+import org.eclipse.cdt.internal.core.index.cindexstorage.CIndexStorage;
import org.eclipse.cdt.internal.core.model.CModel;
import org.eclipse.cdt.internal.core.model.CModelManager;
import org.eclipse.cdt.internal.core.model.SourceRoot;
@@ -30,17 +31,17 @@ import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
-public class IndexAllProject extends IndexRequest {
+public class DOMIndexAllProject extends DOMIndexRequest {
IProject project;
- public IndexAllProject(IProject project, SourceIndexer indexer) {
+ public DOMIndexAllProject(IProject project, DOMSourceIndexer indexer) {
super(project.getFullPath(), indexer);
this.project = project;
}
public boolean equals(Object o) {
- if (o instanceof IndexAllProject)
- return this.project.equals(((IndexAllProject) o).project);
+ if (o instanceof DOMIndexAllProject)
+ return this.project.equals(((DOMIndexAllProject) o).project);
return false;
}
/**
@@ -61,7 +62,7 @@ public class IndexAllProject extends IndexRequest {
if (monitor == null) return true; // index got deleted since acquired
try {
- if (AbstractIndexer.TIMING)
+ if (AbstractIndexerRunner.TIMING)
//reset the total index timer
indexer.setTotalIndexTime(0);
@@ -92,14 +93,14 @@ public class IndexAllProject extends IndexRequest {
ISourceEntry tempEntry = ((SourceRoot) sourceRoot[i]).getSourceEntry();
if ((i+1) != sourceRoot.length)
- indexer.request(new AddFolderToIndex(sourceRoot[i].getPath(), project, tempEntry.fullExclusionPatternChars(), indexer));
+ indexer.request(new DOMAddFolderToIndex(sourceRoot[i].getPath(), project, tempEntry.fullExclusionPatternChars(), indexer));
else
- indexer.request(new AddFolderToIndex(sourceRoot[i].getPath(), project, tempEntry.fullExclusionPatternChars(),indexer,true));
+ indexer.request(new DOMAddFolderToIndex(sourceRoot[i].getPath(), project, tempEntry.fullExclusionPatternChars(),indexer,true));
}
}
// request to save index when all cus have been indexed
- indexer.request(new SaveIndex(this.indexPath, indexer));
+ indexer.request(new DOMSaveIndex(this.indexPath, indexer));
} catch (CoreException e) {
if (IndexManager.VERBOSE) {
JobManager.verbose("-> failed to index " + this.project + " because of the following exception:"); //$NON-NLS-1$ //$NON-NLS-2$
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMIndexRequest.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMIndexRequest.java
new file mode 100644
index 00000000000..afae3ec58b9
--- /dev/null
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMIndexRequest.java
@@ -0,0 +1,63 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2004 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/cpl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
+
+import java.io.IOException;
+
+import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.internal.core.index.IIndex;
+import org.eclipse.cdt.internal.core.index.IndexRequest;
+import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IPath;
+
+public abstract class DOMIndexRequest extends IndexRequest {
+
+ protected DOMSourceIndexer indexer = null;
+
+ public DOMIndexRequest(IPath indexPath, DOMSourceIndexer indexer) {
+ super(indexPath);
+ this.indexer = indexer;
+ }
+
+ public void cancel() {
+ indexer.jobFinishedNotification( this );
+ indexer.jobWasCancelled(this.indexPath);
+ this.isCancelled = true;
+ }
+
+ public boolean isReadyToRun() {
+ IProject project = CCorePlugin.getWorkspace().getRoot().getProject(indexPath.segment(0));
+ if ( !project.isAccessible() || !this.indexer.isIndexEnabled( project ) )
+ return false;
+
+ // tag the index as inconsistent
+ indexer.aboutToUpdateIndex(indexPath, updatedIndexState());
+ return true;
+ }
+ /*
+ * This code is assumed to be invoked while monitor has read lock
+ */
+ protected void saveIfNecessary(IIndex index, ReadWriteMonitor monitor) throws IOException {
+ /* if index has changed, commit these before querying */
+ if (index.hasChanged()) {
+ try {
+ monitor.exitRead(); // free read lock
+ monitor.enterWrite(); // ask permission to write
+ indexer.saveIndex(index);
+ } finally {
+ monitor.exitWriteEnterRead(); // finished writing and reacquire read permission
+ }
+ }
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/RemoveFolderFromIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMRemoveFolderFromIndex.java
index 7f970945178..c5ae1c8645b 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/RemoveFolderFromIndex.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMRemoveFolderFromIndex.java
@@ -9,7 +9,7 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
import java.io.IOException;
@@ -24,12 +24,12 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
-public class RemoveFolderFromIndex extends IndexRequest {
+public class DOMRemoveFolderFromIndex extends DOMIndexRequest {
IPath folderPath;
char[][] exclusionPatterns;
IProject project;
- public RemoveFolderFromIndex(IPath folderPath, char[][] exclusionPatterns, IProject project, SourceIndexer indexer) {
+ public DOMRemoveFolderFromIndex(IPath folderPath, char[][] exclusionPatterns, IProject project, DOMSourceIndexer indexer) {
super(project.getFullPath(), indexer);
this.folderPath = folderPath;
this.exclusionPatterns = exclusionPatterns;
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/RemoveFromIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMRemoveFromIndex.java
index 33d443cb744..59d799bac4c 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/RemoveFromIndex.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMRemoveFromIndex.java
@@ -9,7 +9,7 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
import java.io.IOException;
@@ -20,10 +20,10 @@ import org.eclipse.cdt.internal.core.search.processing.JobManager;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-public class RemoveFromIndex extends IndexRequest {
+public class DOMRemoveFromIndex extends DOMIndexRequest {
String resourceName;
- public RemoveFromIndex(String resourceName, IPath indexPath, SourceIndexer indexer) {
+ public DOMRemoveFromIndex(String resourceName, IPath indexPath, DOMSourceIndexer indexer) {
super(indexPath, indexer);
this.resourceName = resourceName;
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SaveIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSaveIndex.java
index 2e96e94fcb2..39d4c26636c 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SaveIndex.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSaveIndex.java
@@ -9,7 +9,7 @@
* IBM Corporation - initial API and implementation
*******************************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
+package org.eclipse.cdt.internal.core.index.domsourceindexer;
import java.io.IOException;
@@ -23,8 +23,8 @@ import org.eclipse.core.runtime.IProgressMonitor;
/*
* Save the index of a project.
*/
-public class SaveIndex extends IndexRequest {
- public SaveIndex(IPath indexPath, SourceIndexer indexer) {
+public class DOMSaveIndex extends DOMIndexRequest {
+ public DOMSaveIndex(IPath indexPath, DOMSourceIndexer indexer) {
super(indexPath, indexer);
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java
index 8ed72b43a7d..ff5af1f99a7 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexer.java
@@ -1,62 +1,649 @@
-/***********************************************************************
- * Copyright (c) 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
+/**********************************************************************
+ * Copyright (c) 2005 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
+ * http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
- ***********************************************************************/
+ **********************************************************************/
package org.eclipse.cdt.internal.core.index.domsourceindexer;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+
+import org.eclipse.cdt.core.AbstractCExtension;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.ICExtensionReference;
import org.eclipse.cdt.core.ICLogConstants;
-import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.core.index.ICDTIndexer;
+import org.eclipse.cdt.core.index.IIndexChangeListener;
+import org.eclipse.cdt.core.index.IIndexStorage;
+import org.eclipse.cdt.core.index.IndexChangeEvent;
+import org.eclipse.cdt.core.parser.util.ObjectSet;
+import org.eclipse.cdt.internal.core.Util;
+import org.eclipse.cdt.internal.core.index.IIndex;
+import org.eclipse.cdt.internal.core.index.cindexstorage.CIndexStorage;
+import org.eclipse.cdt.internal.core.index.impl.IndexDelta;
+import org.eclipse.cdt.internal.core.search.SimpleLookupTable;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
+import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
+import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
+import org.eclipse.cdt.internal.core.sourcedependency.UpdateDependency;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.ISafeRunnable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.core.runtime.QualifiedName;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
-public class DOMSourceIndexer extends SourceIndexer {
+/**
+ * @author Bogdan Gheorghe
+ */
+public class DOMSourceIndexer extends AbstractCExtension implements ICDTIndexer {
+
+ public static boolean VERBOSE = false;
+
+ //private IndexerModelListener indexModelListener = null;
+
+ /**
+ * Collection of listeners for indexer deltas
+ */
+ protected List indexChangeListeners = Collections.synchronizedList(new ArrayList());
+ public static final String INDEX_NOTIFICATION_NAME = Util.bind( "indexNotificationJob" ); //$NON-NLS-1$
+
+ public final static String INDEX_MODEL_ID = CCorePlugin.PLUGIN_ID + ".newindexmodel"; //$NON-NLS-1$
+ public final static String ACTIVATION = "enable"; //$NON-NLS-1$
+ public final static String PROBLEM_ACTIVATION = "problemEnable"; //$NON-NLS-1$
+ public final static QualifiedName activationKey = new QualifiedName(INDEX_MODEL_ID, ACTIVATION);
+ public final static QualifiedName problemsActivationKey = new QualifiedName( INDEX_MODEL_ID, PROBLEM_ACTIVATION );
+
+ public static final int PREPROCESSOR_PROBLEMS_BIT = 1;
+ public static final int SEMANTIC_PROBLEMS_BIT = 1 << 1;
+ public static final int SYNTACTIC_PROBLEMS_BIT = 1 << 2;
+ public static final int INCLUSION_PROBLEMS_BIT = 1 << 3;
+ public static final String SOURCE_INDEXER_ID = "originalsourceindexer"; //$NON-NLS-1$
+ public static final String SOURCE_INDEXER_UNIQUE_ID = CCorePlugin.PLUGIN_ID + "." + SOURCE_INDEXER_ID; //$NON-NLS-1$;
+
+
+ private CIndexStorage indexStorage = null;
+ protected ReadWriteMonitor storageMonitor = null;
+ protected IndexManager indexManager = null;
+
+ protected HashSet jobSet = null;
+
+ protected long totalIndexTime = 0;
+
public static String ID = CCorePlugin.PLUGIN_ID + ".domsourceindexer"; //$NON-NLS-1$
- public DOMSourceIndexer() {
- super();
+ public DOMSourceIndexer(){
+ this.indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
+ this.indexStorage = (CIndexStorage) indexManager.getIndexStorageForIndexer(this);
+ this.jobSet = new HashSet();
+ this.storageMonitor = new ReadWriteMonitor();
+ }
+
+ /**
+ * @return
+ */
+ public IIndexStorage getIndexStorage() {
+ return indexStorage;
+ }
+
+
+ public void addSource(IFile resource, IPath indexedContainers){
+ this.addSource(resource,indexedContainers, false);
+ }
+
+ /**
+ * Trigger addition of a resource to an index
+ * Note: the actual operation is performed in background
+ * @param checkEncounteredHeaders TODO
+ */
+ public void addSource(IFile resource, IPath indexedContainers, boolean checkEncounteredHeaders) {
+ IProject project = resource.getProject();
+
+ boolean indexEnabled = false;
+ if (project != null)
+ indexEnabled = isIndexEnabled(project);
+ else
+ org.eclipse.cdt.internal.core.model.Util.log(null, "IndexManager addSource: File has no project associated : " + resource.getName(), ICLogConstants.CDT); //$NON-NLS-1$
+
+ if (CCorePlugin.getDefault() == null) return;
+
+ if (indexEnabled){
+ DOMAddCompilationUnitToIndex job = new DOMAddCompilationUnitToIndex(resource, indexedContainers, this, checkEncounteredHeaders);
+
+ //If we are in WAITING mode, we need to kick ourselves into enablement
+ if (!jobSet.add(resource.getLocation()) &&
+ indexManager.enabledState()==IndexManager.ENABLED)
+ return;
+
+
+ if (indexManager.awaitingJobsCount() < CIndexStorage.MAX_FILES_IN_MEMORY) {
+ // reduces the chance that the file is open later on, preventing it from being deleted
+ if (!job.initializeContents()) return;
+ }
+
+ this.indexManager.request(job);
+ }
+ }
+
+
+
+
+ public void updateDependencies(IResource resource){
+ if (CCorePlugin.getDefault() == null || !isIndexEnabled( resource.getProject() ) )
+ return;
+
+ UpdateDependency job = new UpdateDependency(resource, this);
+ indexManager.request(job);
+ }
+
+ /**
+ *
+ *
+ * Warning: Does not check whether index is consistent (not being used)
+ */
+ public static int trimed = 0;
+ public static int added = 0;
+
+ public synchronized boolean haveEncounteredHeader(IPath projectPath, IPath filePath, boolean add) {
+ SimpleLookupTable headerTable = indexStorage.getEncounteredHeaders();
+
+ // Path is already canonical per construction
+ ObjectSet headers = (ObjectSet) headerTable.get(projectPath);
+ if (headers == null) {
+ //First time for the project, must create a new ObjectSet
+ headers = new ObjectSet(4);
+ headerTable.put(projectPath, headers);
+ }
+
+ if (headers.containsKey(filePath.toOSString())) {
+ trimed++;
+ return true;
+ }
+
+ if (add) {
+ headers.put(filePath.toOSString());
+ added++;
+ }
+
+ return false;
+ }
+
+
+
+ /**
+ * Trigger addition of the entire content of a project
+ * Note: the actual operation is performed in background
+ */
+ public void indexAll(IProject project) {
+ if (CCorePlugin.getDefault() == null) return;
+
+ //check to see if indexing isEnabled for this project
+ boolean indexEnabled = isIndexEnabled(project);
+
+ if (indexEnabled){
+ if( indexManager.enabledState() == IndexManager.WAITING ){
+ //if we are paused because the user cancelled a previous index, this is a good
+ //enough reason to restart
+ indexManager.enable();
+ }
+ // check if the same request is not already in the queue
+ DOMIndexRequest request = new DOMIndexAllProject(project, this);
+ for (int i = indexManager.getJobEnd(); i > indexManager.getJobStart(); i--) // NB: don't check job at jobStart, as it may have already started (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=32488)
+ if (request.equals(indexManager.getAwaitingJobAt(i))) return;
+ indexManager.request(request);
+ }
+ }
+
+ /**
+ * @param project
+ * @return
+ */
+ public boolean isIndexEnabled(IProject project) {
+ if( project == null || !project.exists() || !project.isOpen() )
+ return false;
+
+ return true;
+ /*Boolean indexValue = null;
+
+ try {
+ indexValue = (Boolean) project.getSessionProperty(activationKey);
+ } catch (CoreException e) {}
+
+ if (indexValue != null)
+ return indexValue.booleanValue();
+
+ try {
+ ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(project, false);
+ if (cdesc == null)
+ return false;
+
+ ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
+ if (cext.length > 0) {
+ //initializeIndexerId();
+ for (int i = 0; i < cext.length; i++) {
+ String id = cext[i].getID();
+ String orig = cext[i].getExtensionData("indexenabled"); //$NON-NLS-1$
+ if (orig != null){
+ Boolean tempBool = new Boolean(orig);
+ indexEnabled = tempBool.booleanValue();
+ }
+ }
+ }
+
+
+ } catch (CoreException e) {}
+
+ return indexEnabled;*/
+ }
+
+
+
+ public int indexProblemsEnabled(IProject project) {
+
+ if( project == null || !project.exists() || !project.isOpen() )
+ return 0;
+
+ int indexProblemsEnabled = 0;
+ try {
+ ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(project, false);
+ if (cdesc == null)
+ return 0;
+
+ ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
+ if (cext.length > 0) {
+ //initializeIndexerId();
+ for (int i = 0; i < cext.length; i++) {
+ String orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
+ if (orig != null){
+ Integer tempInt = new Integer(orig);
+ indexProblemsEnabled = tempInt.intValue();
+ }
+ }
+ }
+
+
+ } catch (CoreException e) {}
+
+ return indexProblemsEnabled;
+ }
+ /**
+ * Index the content of the given source folder.
+ */
+ public void indexSourceFolder(IProject project, IPath sourceFolder, final char[][] exclusionPattern) {
+ if( !isIndexEnabled( project ) )
+ return;
+ if (indexManager.getJobEnd() > indexManager.getJobStart()) {
+ // check if a job to index the project is not already in the queue
+ DOMIndexRequest request = new DOMIndexAllProject(project, this);
+ for (int i = indexManager.getJobEnd(); i > indexManager.getJobStart(); i--) // NB: don't check job at jobStart, as it may have already started (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=32488)
+ if (request.equals(indexManager.getAwaitingJobAt(i))) return;
+ }
+ this.request(new DOMAddFolderToIndex(sourceFolder, project, exclusionPattern, this));
+ }
+
+ /**
+ * Trigger removal of a resource to an index
+ * Note: the actual operation is performed in background
+ */
+ public void remove(String resourceName, IPath indexedContainer){
+ IProject project = CCorePlugin.getWorkspace().getRoot().getProject(indexedContainer.toString());
+ if( isIndexEnabled( project ) )
+ request(new DOMRemoveFromIndex(resourceName, indexedContainer, this));
+ }
+
+
+ /**
+ * Remove the content of the given source folder from the index.
+ */
+ public void removeSourceFolderFromIndex(IProject project, IPath sourceFolder, char[][] exclusionPatterns) {
+
+ if( !isIndexEnabled( project ) )
+ return;
+
+ if (indexManager.getJobEnd()> indexManager.getJobStart()) {
+ // check if a job to index the project is not already in the queue
+ DOMIndexRequest request = new DOMIndexAllProject(project, this);
+ for (int i = indexManager.getJobEnd(); i > indexManager.getJobStart(); i--) // NB: don't check job at jobStart, as it may have already started (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=32488)
+ if (request.equals(indexManager.getAwaitingJobAt(i))) return;
+ }
+
+ this.request(new DOMRemoveFolderFromIndex(sourceFolder, exclusionPatterns, project, this));
+ }
+
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.internal.core.search.processing.JobManager#jobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IJob)
+ */
+ public void jobFinishedNotification(IIndexJob job) {
+ this.indexJobFinishedNotification(job);
+
+ }
+
+ public void removeIndexerProblems( IResource resource){
+ indexManager.removeIndexerProblems(resource);
+ }
+
+ public void addIndexChangeListener(IIndexChangeListener listener) {
+ synchronized(indexChangeListeners) {
+ if (!indexChangeListeners.contains(listener)) {
+ indexChangeListeners.add(listener);
+ }
+ }
+ }
+
+ public void removeIndexChangeListener(IIndexChangeListener listener) {
+ synchronized(indexChangeListeners) {
+ int i = indexChangeListeners.indexOf(listener);
+ if (i != -1) {
+ indexChangeListeners.remove(i);
+ }
+ }
+ }
+ /**
+ * @param indexDelta
+ */
+ public void notifyListeners(IndexDelta indexDelta) {
+ final IndexChangeEvent indexEvent = new IndexChangeEvent(indexDelta);
+ for (int i= 0; i < indexChangeListeners.size(); i++) {
+ IIndexChangeListener tempListener = null;
+ synchronized(indexChangeListeners){
+ tempListener = (IIndexChangeListener) indexChangeListeners.get(i);
+ }
+ final IIndexChangeListener listener = tempListener;
+ long start = -1;
+ if (VERBOSE) {
+ System.out.print("Listener #" + (i+1) + "=" + listener.toString());//$NON-NLS-1$//$NON-NLS-2$
+ start = System.currentTimeMillis();
+ }
+
+ // wrap callbacks with Safe runnable for subsequent listeners to be called when some are causing grief
+ Job job = new Job(INDEX_NOTIFICATION_NAME){
+ protected IStatus run(IProgressMonitor monitor) {
+ Platform.run(new ISafeRunnable() {
+ public void handleException(Throwable exception) {
+ CCorePlugin.log(exception);
+ }
+ public void run() throws Exception {
+ listener.indexChanged(indexEvent);
+ }
+ });
+
+ return Status.OK_STATUS;
+ }
+ };
+
+ job.schedule();
+ if (VERBOSE) {
+ System.out.println(" -> " + (System.currentTimeMillis()-start) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
+ }
+ }
+
+ }
+
+ /**
+ * No more job awaiting.
+ */
+ public void notifyIdle(long idlingTime){
+ if (idlingTime > 1000 && indexStorage.getNeedToSave())
+ indexStorage.saveIndexes();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.index2.IIndexer#getIndexerFeatures()
+ */
+ public int getIndexerFeatures() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.index2.IIndexer#addRequest(org.eclipse.cdt.core.model.ICElement, org.eclipse.core.resources.IResourceDelta, org.eclipse.core.resources.IResourceChangeEvent)
+ */
+ public void addRequest(IProject project, IResourceDelta delta, int kind) {
+
+ switch (kind) {
+ case ICDTIndexer.PROJECT :
+ this.indexAll(project);
+ break;
+
+ case ICDTIndexer.FOLDER :
+ this.indexSourceFolder(project,delta.getFullPath(),null);
+ break;
+
+ case ICDTIndexer.COMPILATION_UNIT:
+ IFile file = (IFile) delta.getResource();
+ this.addSource(file, project.getFullPath());
+ break;
+ }
+
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.index2.IIndexer#removeRequest(org.eclipse.cdt.core.model.ICElement, org.eclipse.core.resources.IResourceDelta, org.eclipse.core.resources.IResourceChangeEvent)
+ */
+ public void removeRequest(IProject project, IResourceDelta delta, int kind) {
+ switch (kind) {
+ case ICDTIndexer.PROJECT :
+ IPath fullPath = project.getFullPath();
+ if( delta.getKind() == IResourceDelta.CHANGED )
+ indexManager.discardJobs(fullPath.segment(0));
+ indexStorage.removeIndexFamily(fullPath);
+ // NB: Discarding index jobs belonging to this project was done during PRE_DELETE
+ break;
+ // NB: Update of index if project is opened, closed, or its c nature is added or removed
+ // is done in updateCurrentDeltaAndIndex
+
+ case ICDTIndexer.FOLDER :
+ this.removeSourceFolderFromIndex(project,delta.getFullPath(),null);
+ break;
+
+ case ICDTIndexer.COMPILATION_UNIT:
+ IFile file = (IFile) delta.getResource();
+ this.remove(file.getFullPath().toString(), file.getProject().getFullPath());
+ break;
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.index2.IIndexer#indexJobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IIndexJob)
+ */
+ public void indexJobFinishedNotification(IIndexJob job) {
+ indexStorage.setNeedToSave(true);
+
+ if (job instanceof DOMAddCompilationUnitToIndex){
+ DOMAddCompilationUnitToIndex tempJob = (DOMAddCompilationUnitToIndex) job;
+ jobSet.remove(tempJob.getResource().getLocation());
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.cdt.core.index2.IIndexer#shutdown()
+ */
+ public void shutdown() {
+ indexStorage.shutdown();
+ //indexModelListener.shutdown();
+ }
+
+ /**
+ * Forward job request to Index Manager
+ * @param cleanHeaders
+ */
+ public void request(IIndexJob indexJob) {
+ this.indexManager.request(indexJob);
+ }
+
+ public ReadWriteMonitor getStorageMonitor() {
+ return storageMonitor;
+ }
+ /**
+ *
+ */
+ public void resetEncounteredHeaders() {
+ try{
+ storageMonitor.enterWrite();
+ indexStorage.resetEncounteredHeaders();
+ }
+ finally {
+ storageMonitor.exitWrite();
+ }
+ }
+
+
+ /**
+ * @param path
+ * @param reuseIndexFile
+ * @param createIfMissing
+ * @return
+ */
+ public synchronized IIndex getIndex(IPath path, boolean reuseExistingFile, boolean createIfMissing) {
+ IIndex index = null;
+ try{
+ storageMonitor.enterRead();
+ index = indexStorage.getIndex(path,reuseExistingFile, createIfMissing);
+ }
+ finally{
+ storageMonitor.exitRead();
+ }
+ return index;
+ }
+
+ /**
+ * @param index
+ * @return
+ */
+ public ReadWriteMonitor getMonitorFor(IIndex index) {
+ ReadWriteMonitor monitor = null;
+ try{
+ storageMonitor.enterRead();
+ monitor=indexStorage.getMonitorForIndex();
+ }
+ finally{
+ storageMonitor.exitRead();
+ }
+ return monitor;
+ }
+
+ /**
+ * @param path
+ */
+ public void removeIndex(IPath path) {
+ try{
+ storageMonitor.enterWrite();
+ indexStorage.removeIndex(path);
+ }
+ finally{
+ storageMonitor.exitWrite();
+ }
+
+ }
+
+ /**
+ * @param path
+ */
+ public void jobWasCancelled(IPath path) {
+ try{
+ storageMonitor.enterWrite();
+ indexStorage.jobWasCancelled(path);
+ }
+ finally{
+ storageMonitor.exitWrite();
+ }
+ }
+
+ /**
+ * @param index
+ */
+ public void saveIndex(IIndex index) throws IOException {
+ try{
+ storageMonitor.enterWrite();
+ indexStorage.saveIndex(index);
+ }
+ finally {
+ storageMonitor.exitWrite();
+ }
+
+ }
+
+ /**
+ * @param indexPath
+ * @param indexState
+ */
+ public void aboutToUpdateIndex(IPath indexPath, Integer indexState) {
+ storageMonitor.enterRead();
+ try{
+ indexStorage.aboutToUpdateIndex(indexPath, indexState);
+ }
+ finally {
+ storageMonitor.exitRead();
+ }
+ }
+ /**
+ * @return Returns the totalIndexTime.
+ */
+ public long getTotalIndexTime() {
+ return totalIndexTime;
+ }
+ /**
+ * @param totalIndexTime The totalIndexTime to set.
+ */
+ public void setTotalIndexTime(long totalIndexTime) {
+ this.totalIndexTime = totalIndexTime;
}
/* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer#addSource(org.eclipse.core.resources.IFile, org.eclipse.core.runtime.IPath, boolean)
+ * @see org.eclipse.cdt.core.index.ICDTIndexer#notifyIndexerChange()
*/
- public void addSource(IFile resource, IPath indexedContainers, boolean checkEncounteredHeaders) {
- IProject project = resource.getProject();
-
- boolean indexEnabled = false;
- if (project != null)
- indexEnabled = isIndexEnabled(project);
- else
- org.eclipse.cdt.internal.core.model.Util.log(null, "IndexManager addSource: File has no project associated : " + resource.getName(), ICLogConstants.CDT); //$NON-NLS-1$
-
- if (CCorePlugin.getDefault() == null) return;
-
- if (indexEnabled){
- DOMAddCompilationUnitToIndex job = new DOMAddCompilationUnitToIndex(resource, indexedContainers, this, checkEncounteredHeaders);
-
- //If we are in WAITING mode, we need to kick ourselves into enablement
- if (!jobSet.add(resource.getLocation()) &&
- indexManager.enabledState()==IndexManager.ENABLED)
- return;
-
-
- if (indexManager.awaitingJobsCount() < CIndexStorage.MAX_FILES_IN_MEMORY) {
- // reduces the chance that the file is open later on, preventing it from being deleted
- if (!job.initializeContents()) return;
- }
-
- this.indexManager.request(job);
- }
+ public void notifyIndexerChange(IProject project) {
+ this.indexAll(project);
}
+ public void indexerRemoved(IProject project) {
+ removeIndexerProblems(project);
+ }
+
+ public void addResource(IProject project, IResource resource) {
+
+ if (resource instanceof IProject){
+ this.indexAll(project);
+ }
+ else if (resource instanceof IFolder){
+ this.indexSourceFolder(project,resource.getFullPath(),null);
+ }
+ else if (resource instanceof IFile){
+ IFile file = (IFile) resource;
+ this.addSource(file, project.getFullPath());
+ }
+ }
+
+ public void removeResource(IProject project, IResource resource) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void addResourceByPath(IProject project, IPath path, int resourceType) {
+ // TODO Auto-generated method stub
+
+ }
+
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java
index 256326a3b0f..0d6424eb90e 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/DOMSourceIndexerRunner.java
@@ -43,8 +43,6 @@ import org.eclipse.cdt.internal.core.index.IIndex;
import org.eclipse.cdt.internal.core.index.NamedEntry;
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexerOutput;
import org.eclipse.cdt.internal.core.index.impl.IndexDelta;
-import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IResource;
@@ -57,17 +55,21 @@ import org.eclipse.core.runtime.Path;
*
* @author vhirsl
*/
-public class DOMSourceIndexerRunner extends AbstractIndexer {
+public class DOMSourceIndexerRunner extends AbstractIndexerRunner {
- private SourceIndexer indexer;
+ private DOMSourceIndexer indexer;
+ // for running JUnit tests
+ private static boolean skipScannerInfoTest=false;
+
+
// timing & errors
static int totalParseTime = 0;
static int totalVisitTime = 0;
static int errorCount = 0;
static Map errors = new HashMap();
- public DOMSourceIndexerRunner(IFile resource, SourceIndexer indexer) {
+ public DOMSourceIndexerRunner(IFile resource, DOMSourceIndexer indexer) {
this.resourceFile = resource;
this.indexer = indexer;
}
@@ -75,7 +77,7 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
/**
* @return Returns the indexer.
*/
- public SourceIndexer getIndexer() {
+ public DOMSourceIndexer getIndexer() {
return indexer;
}
@@ -86,12 +88,12 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
protected void indexFile(IFile file) throws IOException {
int problems = indexer.indexProblemsEnabled(resourceFile.getProject());
// enable inclusion problem markers
- problems |= SourceIndexer.INCLUSION_PROBLEMS_BIT;
+ problems |= DOMSourceIndexer.INCLUSION_PROBLEMS_BIT;
setProblemMarkersEnabled(problems);
requestRemoveMarkers(resourceFile, null);
// do not index the file if there is no scanner info
- if (isScannerInfoEmpty(resourceFile)) {
+ if (!skipScannerInfoTest && isScannerInfoEmpty(resourceFile)) {
// generate info marker - file is not indexed
addInfoMarker(resourceFile, CCorePlugin.getResourceString("DOMIndexerMarker.EmptyScannerInfo")); //$NON-NLS-1$
if (areProblemMarkersEnabled()) {
@@ -110,13 +112,13 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
long startTime = 0, parseTime = 0, endTime = 0;
String error = null;
try {
- if (AbstractIndexer.TIMING)
+ if (AbstractIndexerRunner.TIMING)
startTime = System.currentTimeMillis();
tu = CDOM.getInstance().getASTService().getTranslationUnit(resourceFile,
CDOM.getInstance().getCodeReaderFactory(CDOM.PARSE_SAVED_RESOURCES));
- if (AbstractIndexer.TIMING)
+ if (AbstractIndexerRunner.TIMING)
parseTime = System.currentTimeMillis();
ASTVisitor visitor = null;
@@ -153,7 +155,7 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
throw (IOException) ex;
}
finally {
- if (AbstractIndexer.TIMING) {
+ if (AbstractIndexerRunner.TIMING) {
endTime = System.currentTimeMillis();
if (error != null) {
errorCount++;
@@ -172,12 +174,12 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
long tempTotaltime = indexer.getTotalIndexTime() + currentTime;
indexer.setTotalIndexTime(tempTotaltime);
System.out.println(" \t\tOverall " + tempTotaltime + "=" + totalParseTime + "+" + totalVisitTime + " " + errorCount + " errors "); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
- System.out.println( "Attempted Entries " + IndexerOutput.entryCount + " Trimed " + SourceIndexer.trimed + " Added " + SourceIndexer.added); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
+ System.out.println( "Attempted Entries " + IndexerOutput.entryCount + " Trimed " + DOMSourceIndexer.trimed + " Added " + DOMSourceIndexer.added); //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
System.out.flush();
}
- if (AbstractIndexer.VERBOSE){
- AbstractIndexer.verbose("DOM AST TRAVERSAL FINISHED " + resourceFile.getName().toString()); //$NON-NLS-1$
+ if (AbstractIndexerRunner.VERBOSE){
+ AbstractIndexerRunner.verbose("DOM AST TRAVERSAL FINISHED " + resourceFile.getName().toString()); //$NON-NLS-1$
}
// if the user disable problem reporting since we last checked, don't report the collected problems
if (areProblemMarkersEnabled()) {
@@ -405,9 +407,9 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
}
public boolean shouldRecordProblem(IASTProblem problem) {
- boolean preprocessor = (getProblemMarkersEnabled() & SourceIndexer.PREPROCESSOR_PROBLEMS_BIT ) != 0;
- boolean semantics = (getProblemMarkersEnabled() & SourceIndexer.SEMANTIC_PROBLEMS_BIT ) != 0;
- boolean syntax = (getProblemMarkersEnabled() & SourceIndexer.SYNTACTIC_PROBLEMS_BIT ) != 0;
+ boolean preprocessor = (getProblemMarkersEnabled() & DOMSourceIndexer.PREPROCESSOR_PROBLEMS_BIT ) != 0;
+ boolean semantics = (getProblemMarkersEnabled() & DOMSourceIndexer.SEMANTIC_PROBLEMS_BIT ) != 0;
+ boolean syntax = (getProblemMarkersEnabled() & DOMSourceIndexer.SYNTACTIC_PROBLEMS_BIT ) != 0;
if (problem.checkCategory(IASTProblem.PREPROCESSOR_INCLUSION_NOT_FOUND)) {
return true;
@@ -428,14 +430,14 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
* @return
*/
public boolean shouldRecordProblem(IProblemBinding problem) {
- return (getProblemMarkersEnabled() & SourceIndexer.SEMANTIC_PROBLEMS_BIT) != 0;
+ return (getProblemMarkersEnabled() & DOMSourceIndexer.SEMANTIC_PROBLEMS_BIT) != 0;
}
/**
*
*/
public static void printErrors() {
- if (AbstractIndexer.TIMING) {
+ if (AbstractIndexerRunner.TIMING) {
totalParseTime = 0;
totalVisitTime = 0;
System.out.println("Errors during indexing"); //$NON-NLS-1$
@@ -445,5 +447,10 @@ public class DOMSourceIndexerRunner extends AbstractIndexer {
}
}
}
+
+ public static void setSkipScannerInfoTest(boolean skipScannerInfoTest) {
+ DOMSourceIndexerRunner.skipScannerInfoTest = skipScannerInfoTest;
+ }
+
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexEncoderUtil.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexEncoderUtil.java
index f739eba22dc..fa65a403367 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexEncoderUtil.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/domsourceindexer/IndexEncoderUtil.java
@@ -14,7 +14,6 @@ import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.IASTFileLocation;
import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
@@ -81,7 +80,7 @@ public class IndexEncoderUtil {
? true : false;
}
- public static boolean nodeInVisitedExternalHeader(IASTNode node, SourceIndexer indexer) {
+ public static boolean nodeInVisitedExternalHeader(IASTNode node, DOMSourceIndexer indexer) {
String fileName = node.getContainingFilename();
IPath filePath = new Path(fileName);
IPath projectPath = indexer.getProject().getFullPath();
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddCompilationUnitToIndex.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddCompilationUnitToIndex.java
deleted file mode 100644
index 09c68eb62e6..00000000000
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/AddCompilationUnitToIndex.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.core.index.sourceindexer;
-
-import java.io.IOException;
-
-import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.runtime.IPath;
-
-public class AddCompilationUnitToIndex extends AddFileToIndex {
- protected char[] contents;
-
- public AddCompilationUnitToIndex(IFile resource, IPath indexedContainer, SourceIndexer indexer, boolean checkEncounteredHeaders) {
- super(resource, indexedContainer, indexer, checkEncounteredHeaders);
- }
- protected boolean indexDocument(IIndex index) throws IOException {
- if (!initializeContents()) return false;
- index.add(resource, new SourceIndexerRunner(resource, indexer));
-
- return true;
- }
- public boolean initializeContents() {
- if (this.contents == null) {
- try {
- IPath location = resource.getLocation();
- if (location != null)
- this.contents = org.eclipse.cdt.internal.core.Util.getFileCharContent(location.toFile(), null);
- } catch (IOException e) {
- }
- }
- return this.contents != null;
- }
-}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/IndexRequest.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/IndexRequest.java
deleted file mode 100644
index bd23e6e5604..00000000000
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/IndexRequest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2004 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.core.index.sourceindexer;
-
-import java.io.IOException;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
-import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
-
-public abstract class IndexRequest implements IIndexJob {
- protected boolean isCancelled = false;
- protected IPath indexPath = null;
- protected SourceIndexer indexer = null;
-
- public IndexRequest(IPath indexPath, SourceIndexer indexer) {
- this.indexPath = indexPath;
- this.indexer = indexer;
- }
-
- public boolean belongsTo(String projectName) {
- return projectName.equals(this.indexPath.segment(0));
- }
-
- public void cancel() {
- this.indexer.jobFinishedNotification( this );
- this.indexer.jobWasCancelled(this.indexPath);
- this.isCancelled = true;
- }
-
- public boolean isReadyToRun() {
- IProject project = CCorePlugin.getWorkspace().getRoot().getProject(indexPath.segment(0));
- if ( !project.isAccessible() || !this.indexer.isIndexEnabled( project ) )
- return false;
-
- // tag the index as inconsistent
- indexer.aboutToUpdateIndex(indexPath, updatedIndexState());
- return true;
- }
- /*
- * This code is assumed to be invoked while monitor has read lock
- */
- protected void saveIfNecessary(IIndex index, ReadWriteMonitor monitor) throws IOException {
- /* if index has changed, commit these before querying */
- if (index.hasChanged()) {
- try {
- monitor.exitRead(); // free read lock
- monitor.enterWrite(); // ask permission to write
- indexer.saveIndex(index);
- } finally {
- monitor.exitWriteEnterRead(); // finished writing and reacquire read permission
- }
- }
- }
-
- protected Integer updatedIndexState() {
- return CIndexStorage.UPDATING_STATE;
- }
-
- public IPath getIndexPath(){
- return indexPath;
- }
-}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java
deleted file mode 100644
index 5a1bc7dee3f..00000000000
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexer.java
+++ /dev/null
@@ -1,663 +0,0 @@
-/**********************************************************************
- * Copyright (c) 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM - Initial API and implementation
- **********************************************************************/
-package org.eclipse.cdt.internal.core.index.sourceindexer;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-
-import org.eclipse.cdt.core.AbstractCExtension;
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.ICDescriptor;
-import org.eclipse.cdt.core.ICExtensionReference;
-import org.eclipse.cdt.core.ICLogConstants;
-import org.eclipse.cdt.core.index.ICDTIndexer;
-import org.eclipse.cdt.core.index.IIndexChangeListener;
-import org.eclipse.cdt.core.index.IIndexStorage;
-import org.eclipse.cdt.core.index.IndexChangeEvent;
-import org.eclipse.cdt.core.parser.util.ObjectSet;
-import org.eclipse.cdt.internal.core.Util;
-import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.IIndexerOutput;
-import org.eclipse.cdt.internal.core.index.impl.IndexDelta;
-import org.eclipse.cdt.internal.core.search.SimpleLookupTable;
-import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
-import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
-import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
-import org.eclipse.cdt.internal.core.sourcedependency.UpdateDependency;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IResourceDelta;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.ISafeRunnable;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.core.runtime.QualifiedName;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
-
-/**
- * @author Bogdan Gheorghe
- */
-public class SourceIndexer extends AbstractCExtension implements ICDTIndexer {
-
- public static boolean VERBOSE = false;
-
- //private IndexerModelListener indexModelListener = null;
-
- /**
- * Collection of listeners for indexer deltas
- */
- protected List indexChangeListeners = Collections.synchronizedList(new ArrayList());
- public static final String INDEX_NOTIFICATION_NAME = Util.bind( "indexNotificationJob" ); //$NON-NLS-1$
-
- public final static String INDEX_MODEL_ID = CCorePlugin.PLUGIN_ID + ".newindexmodel"; //$NON-NLS-1$
- public final static String ACTIVATION = "enable"; //$NON-NLS-1$
- public final static String PROBLEM_ACTIVATION = "problemEnable"; //$NON-NLS-1$
- public final static QualifiedName activationKey = new QualifiedName(INDEX_MODEL_ID, ACTIVATION);
- public final static QualifiedName problemsActivationKey = new QualifiedName( INDEX_MODEL_ID, PROBLEM_ACTIVATION );
-
- public static final int PREPROCESSOR_PROBLEMS_BIT = 1;
- public static final int SEMANTIC_PROBLEMS_BIT = 1 << 1;
- public static final int SYNTACTIC_PROBLEMS_BIT = 1 << 2;
- public static final int INCLUSION_PROBLEMS_BIT = 1 << 3;
-
- public static final String SOURCE_INDEXER_ID = "originalsourceindexer"; //$NON-NLS-1$
- public static final String SOURCE_INDEXER_UNIQUE_ID = CCorePlugin.PLUGIN_ID + "." + SOURCE_INDEXER_ID; //$NON-NLS-1$;
-
-
- private CIndexStorage indexStorage = null;
- protected ReadWriteMonitor storageMonitor = null;
- protected IndexManager indexManager = null;
-
- protected HashSet jobSet = null;
-
- protected long totalIndexTime = 0;
-
- public SourceIndexer(){
- this.indexManager = CCorePlugin.getDefault().getCoreModel().getIndexManager();
- this.indexStorage = (CIndexStorage) indexManager.getIndexStorageForIndexer(this);
- this.jobSet = new HashSet();
- this.storageMonitor = new ReadWriteMonitor();
- }
-
- /**
- * @return
- */
- public IIndexStorage getIndexStorage() {
- return indexStorage;
- }
-
-
- public void addSource(IFile resource, IPath indexedContainers){
- this.addSource(resource,indexedContainers, false);
- }
-
- /**
- * Trigger addition of a resource to an index
- * Note: the actual operation is performed in background
- * @param checkEncounteredHeaders TODO
- */
- public void addSource(IFile resource, IPath indexedContainers, boolean checkEncounteredHeaders){
-
- IProject project = resource.getProject();
-
- boolean indexEnabled = false;
- if (project != null)
- indexEnabled = isIndexEnabled(project);
- else
- org.eclipse.cdt.internal.core.model.Util.log(null, "IndexManager addSource: File has no project associated : " + resource.getName(), ICLogConstants.CDT); //$NON-NLS-1$
-
- if (CCorePlugin.getDefault() == null) return;
-
- if (indexEnabled){
- AddCompilationUnitToIndex job = new AddCompilationUnitToIndex(resource, indexedContainers, this, checkEncounteredHeaders);
-
- //If we are in WAITING mode, we need to kick ourselves into enablement
- if (!jobSet.add(resource.getLocation()) &&
- indexManager.enabledState()==IndexManager.ENABLED)
- return;
-
-
- if (indexManager.awaitingJobsCount() < CIndexStorage.MAX_FILES_IN_MEMORY) {
- // reduces the chance that the file is open later on, preventing it from being deleted
- if (!job.initializeContents()) return;
- }
-
- this.indexManager.request(job);
- }
- }
-
-
-
- public void updateDependencies(IResource resource){
- if (CCorePlugin.getDefault() == null || !isIndexEnabled( resource.getProject() ) )
- return;
-
- UpdateDependency job = new UpdateDependency(resource, this);
- indexManager.request(job);
- }
-
- /**
- *
- *
- * Warning: Does not check whether index is consistent (not being used)
- */
- public static int trimed = 0;
- public static int added = 0;
-
- public synchronized boolean haveEncounteredHeader(IPath projectPath, IPath filePath, boolean add) {
- SimpleLookupTable headerTable = indexStorage.getEncounteredHeaders();
-
- // Path is already canonical per construction
- ObjectSet headers = (ObjectSet) headerTable.get(projectPath);
- if (headers == null) {
- //First time for the project, must create a new ObjectSet
- headers = new ObjectSet(4);
- headerTable.put(projectPath, headers);
- }
-
- if (headers.containsKey(filePath.toOSString())) {
- trimed++;
- return true;
- }
-
- if (add) {
- headers.put(filePath.toOSString());
- added++;
- }
-
- return false;
- }
-
-
-
- /**
- * Trigger addition of the entire content of a project
- * Note: the actual operation is performed in background
- */
- public void indexAll(IProject project) {
- if (CCorePlugin.getDefault() == null) return;
-
- //check to see if indexing isEnabled for this project
- boolean indexEnabled = isIndexEnabled(project);
-
- if (indexEnabled){
- if( indexManager.enabledState() == IndexManager.WAITING ){
- //if we are paused because the user cancelled a previous index, this is a good
- //enough reason to restart
- indexManager.enable();
- }
- // check if the same request is not already in the queue
- IndexRequest request = new IndexAllProject(project, this);
- for (int i = indexManager.getJobEnd(); i > indexManager.getJobStart(); i--) // NB: don't check job at jobStart, as it may have already started (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=32488)
- if (request.equals(indexManager.getAwaitingJobAt(i))) return;
- indexManager.request(request);
- }
- }
-
- /**
- * @param project
- * @return
- */
- public boolean isIndexEnabled(IProject project) {
- if( project == null || !project.exists() || !project.isOpen() )
- return false;
-
- return true;
- /*Boolean indexValue = null;
-
- try {
- indexValue = (Boolean) project.getSessionProperty(activationKey);
- } catch (CoreException e) {}
-
- if (indexValue != null)
- return indexValue.booleanValue();
-
- try {
- ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(project, false);
- if (cdesc == null)
- return false;
-
- ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
- if (cext.length > 0) {
- //initializeIndexerId();
- for (int i = 0; i < cext.length; i++) {
- String id = cext[i].getID();
- String orig = cext[i].getExtensionData("indexenabled"); //$NON-NLS-1$
- if (orig != null){
- Boolean tempBool = new Boolean(orig);
- indexEnabled = tempBool.booleanValue();
- }
- }
- }
-
-
- } catch (CoreException e) {}
-
- return indexEnabled;*/
- }
-
-
-
- public int indexProblemsEnabled(IProject project) {
-
- if( project == null || !project.exists() || !project.isOpen() )
- return 0;
-
- int indexProblemsEnabled = 0;
- try {
- ICDescriptor cdesc = CCorePlugin.getDefault().getCProjectDescription(project, false);
- if (cdesc == null)
- return 0;
-
- ICExtensionReference[] cext = cdesc.get(CCorePlugin.INDEXER_UNIQ_ID);
- if (cext.length > 0) {
- //initializeIndexerId();
- for (int i = 0; i < cext.length; i++) {
- String orig = cext[i].getExtensionData("indexmarkers"); //$NON-NLS-1$
- if (orig != null){
- Integer tempInt = new Integer(orig);
- indexProblemsEnabled = tempInt.intValue();
- }
- }
- }
-
-
- } catch (CoreException e) {}
-
- return indexProblemsEnabled;
- }
- /**
- * Index the content of the given source folder.
- */
- public void indexSourceFolder(IProject project, IPath sourceFolder, final char[][] exclusionPattern) {
- if( !isIndexEnabled( project ) )
- return;
- if (indexManager.getJobEnd() > indexManager.getJobStart()) {
- // check if a job to index the project is not already in the queue
- IndexRequest request = new IndexAllProject(project, this);
- for (int i = indexManager.getJobEnd(); i > indexManager.getJobStart(); i--) // NB: don't check job at jobStart, as it may have already started (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=32488)
- if (request.equals(indexManager.getAwaitingJobAt(i))) return;
- }
- this.request(new AddFolderToIndex(sourceFolder, project, exclusionPattern, this));
- }
-
- /**
- * Trigger removal of a resource to an index
- * Note: the actual operation is performed in background
- */
- public void remove(String resourceName, IPath indexedContainer){
- IProject project = CCorePlugin.getWorkspace().getRoot().getProject(indexedContainer.toString());
- if( isIndexEnabled( project ) )
- request(new RemoveFromIndex(resourceName, indexedContainer, this));
- }
-
-
- /**
- * Remove the content of the given source folder from the index.
- */
- public void removeSourceFolderFromIndex(IProject project, IPath sourceFolder, char[][] exclusionPatterns) {
-
- if( !isIndexEnabled( project ) )
- return;
-
- if (indexManager.getJobEnd()> indexManager.getJobStart()) {
- // check if a job to index the project is not already in the queue
- IndexRequest request = new IndexAllProject(project, this);
- for (int i = indexManager.getJobEnd(); i > indexManager.getJobStart(); i--) // NB: don't check job at jobStart, as it may have already started (see http://bugs.eclipse.org/bugs/show_bug.cgi?id=32488)
- if (request.equals(indexManager.getAwaitingJobAt(i))) return;
- }
-
- this.request(new RemoveFolderFromIndex(sourceFolder, exclusionPatterns, project, this));
- }
-
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.internal.core.search.processing.JobManager#jobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IJob)
- */
- public void jobFinishedNotification(IIndexJob job) {
- this.indexJobFinishedNotification(job);
-
- }
-
- public void removeIndexerProblems( IResource resource){
- indexManager.removeIndexerProblems(resource);
- }
-
- public void addIndexChangeListener(IIndexChangeListener listener) {
- synchronized(indexChangeListeners) {
- if (!indexChangeListeners.contains(listener)) {
- indexChangeListeners.add(listener);
- }
- }
- }
-
- public void removeIndexChangeListener(IIndexChangeListener listener) {
- synchronized(indexChangeListeners) {
- int i = indexChangeListeners.indexOf(listener);
- if (i != -1) {
- indexChangeListeners.remove(i);
- }
- }
- }
- /**
- * @param indexDelta
- */
- public void notifyListeners(IndexDelta indexDelta) {
- final IndexChangeEvent indexEvent = new IndexChangeEvent(indexDelta);
- for (int i= 0; i < indexChangeListeners.size(); i++) {
- IIndexChangeListener tempListener = null;
- synchronized(indexChangeListeners){
- tempListener = (IIndexChangeListener) indexChangeListeners.get(i);
- }
- final IIndexChangeListener listener = tempListener;
- long start = -1;
- if (VERBOSE) {
- System.out.print("Listener #" + (i+1) + "=" + listener.toString());//$NON-NLS-1$//$NON-NLS-2$
- start = System.currentTimeMillis();
- }
-
- // wrap callbacks with Safe runnable for subsequent listeners to be called when some are causing grief
- Job job = new Job(INDEX_NOTIFICATION_NAME){
- protected IStatus run(IProgressMonitor monitor) {
- Platform.run(new ISafeRunnable() {
- public void handleException(Throwable exception) {
- CCorePlugin.log(exception);
- }
- public void run() throws Exception {
- listener.indexChanged(indexEvent);
- }
- });
-
- return Status.OK_STATUS;
- }
- };
-
- job.schedule();
- if (VERBOSE) {
- System.out.println(" -> " + (System.currentTimeMillis()-start) + "ms"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
-
- }
-
- /**
- * No more job awaiting.
- */
- public void notifyIdle(long idlingTime){
- if (idlingTime > 1000 && indexStorage.getNeedToSave())
- indexStorage.saveIndexes();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.index2.IIndexer#getIndexerFeatures()
- */
- public int getIndexerFeatures() {
- // TODO Auto-generated method stub
- return 0;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.index2.IIndexer#shouldIndex(org.eclipse.core.resources.IFile)
- */
- public boolean shouldIndex(IFile file) {
- // TODO Auto-generated method stub
- return false;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.index2.IIndexer#index(org.eclipse.cdt.internal.core.index.IDocument, org.eclipse.cdt.internal.core.index.IIndexerOutput)
- */
- public void index(IFile document, IIndexerOutput output) throws IOException {
- // TODO Auto-generated method stub
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.index2.IIndexer#addRequest(org.eclipse.cdt.core.model.ICElement, org.eclipse.core.resources.IResourceDelta, org.eclipse.core.resources.IResourceChangeEvent)
- */
- public void addRequest(IProject project, IResourceDelta delta, int kind) {
-
- switch (kind) {
- case ICDTIndexer.PROJECT :
- this.indexAll(project);
- break;
-
- case ICDTIndexer.FOLDER :
- this.indexSourceFolder(project,delta.getFullPath(),null);
- break;
-
- case ICDTIndexer.COMPILATION_UNIT:
- IFile file = (IFile) delta.getResource();
- this.addSource(file, project.getFullPath());
- break;
- }
-
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.index2.IIndexer#removeRequest(org.eclipse.cdt.core.model.ICElement, org.eclipse.core.resources.IResourceDelta, org.eclipse.core.resources.IResourceChangeEvent)
- */
- public void removeRequest(IProject project, IResourceDelta delta, int kind) {
- switch (kind) {
- case ICDTIndexer.PROJECT :
- IPath fullPath = project.getFullPath();
- if( delta.getKind() == IResourceDelta.CHANGED )
- indexManager.discardJobs(fullPath.segment(0));
- indexStorage.removeIndexFamily(fullPath);
- // NB: Discarding index jobs belonging to this project was done during PRE_DELETE
- break;
- // NB: Update of index if project is opened, closed, or its c nature is added or removed
- // is done in updateCurrentDeltaAndIndex
-
- case ICDTIndexer.FOLDER :
- this.removeSourceFolderFromIndex(project,delta.getFullPath(),null);
- break;
-
- case ICDTIndexer.COMPILATION_UNIT:
- IFile file = (IFile) delta.getResource();
- this.remove(file.getFullPath().toString(), file.getProject().getFullPath());
- break;
- }
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.index2.IIndexer#indexJobFinishedNotification(org.eclipse.cdt.internal.core.search.processing.IIndexJob)
- */
- public void indexJobFinishedNotification(IIndexJob job) {
- indexStorage.setNeedToSave(true);
-
- if (job instanceof AddCompilationUnitToIndex){
- AddCompilationUnitToIndex tempJob = (AddCompilationUnitToIndex) job;
- jobSet.remove(tempJob.getResource().getLocation());
- }
-
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.index2.IIndexer#shutdown()
- */
- public void shutdown() {
- indexStorage.shutdown();
- //indexModelListener.shutdown();
- }
-
- /**
- * Forward job request to Index Manager
- * @param cleanHeaders
- */
- public void request(IIndexJob indexJob) {
- this.indexManager.request(indexJob);
- }
-
- public ReadWriteMonitor getStorageMonitor() {
- return storageMonitor;
- }
- /**
- *
- */
- public void resetEncounteredHeaders() {
- try{
- storageMonitor.enterWrite();
- indexStorage.resetEncounteredHeaders();
- }
- finally {
- storageMonitor.exitWrite();
- }
- }
-
-
- /**
- * @param path
- * @param reuseIndexFile
- * @param createIfMissing
- * @return
- */
- public synchronized IIndex getIndex(IPath path, boolean reuseExistingFile, boolean createIfMissing) {
- IIndex index = null;
- try{
- storageMonitor.enterRead();
- index = indexStorage.getIndex(path,reuseExistingFile, createIfMissing);
- }
- finally{
- storageMonitor.exitRead();
- }
- return index;
- }
-
- /**
- * @param index
- * @return
- */
- public ReadWriteMonitor getMonitorFor(IIndex index) {
- ReadWriteMonitor monitor = null;
- try{
- storageMonitor.enterRead();
- monitor=indexStorage.getMonitorForIndex();
- }
- finally{
- storageMonitor.exitRead();
- }
- return monitor;
- }
-
- /**
- * @param path
- */
- public void removeIndex(IPath path) {
- try{
- storageMonitor.enterWrite();
- indexStorage.removeIndex(path);
- }
- finally{
- storageMonitor.exitWrite();
- }
-
- }
-
- /**
- * @param path
- */
- public void jobWasCancelled(IPath path) {
- try{
- storageMonitor.enterWrite();
- indexStorage.jobWasCancelled(path);
- }
- finally{
- storageMonitor.exitWrite();
- }
- }
-
- /**
- * @param index
- */
- public void saveIndex(IIndex index) throws IOException {
- try{
- storageMonitor.enterWrite();
- indexStorage.saveIndex(index);
- }
- finally {
- storageMonitor.exitWrite();
- }
-
- }
-
- /**
- * @param indexPath
- * @param indexState
- */
- public void aboutToUpdateIndex(IPath indexPath, Integer indexState) {
- try{
- //storageMonitor.enterWrite();
- indexStorage.aboutToUpdateIndex(indexPath, indexState);
- }
- finally {
- //storageMonitor.exitWrite();
- }
- }
- /**
- * @return Returns the totalIndexTime.
- */
- public long getTotalIndexTime() {
- return totalIndexTime;
- }
- /**
- * @param totalIndexTime The totalIndexTime to set.
- */
- public void setTotalIndexTime(long totalIndexTime) {
- this.totalIndexTime = totalIndexTime;
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.index.ICDTIndexer#notifyIndexerChange()
- */
- public void notifyIndexerChange(IProject project) {
- this.indexAll(project);
- }
-
- public void indexerRemoved(IProject project) {
- removeIndexerProblems(project);
- }
-
- public void addResource(IProject project, IResource resource) {
-
- if (resource instanceof IProject){
- this.indexAll(project);
- }
- else if (resource instanceof IFolder){
- this.indexSourceFolder(project,resource.getFullPath(),null);
- }
- else if (resource instanceof IFile){
- IFile file = (IFile) resource;
- this.addSource(file, project.getFullPath());
- }
- }
-
- public void removeResource(IProject project, IResource resource) {
- // TODO Auto-generated method stub
-
- }
-
- public void addResourceByPath(IProject project, IPath path, int resourceType) {
- // TODO Auto-generated method stub
-
- }
-
-}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexerRequestor.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexerRequestor.java
deleted file mode 100644
index 529d528eccb..00000000000
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexerRequestor.java
+++ /dev/null
@@ -1,484 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.core.index.sourceindexer;
-
-/**
-* @author bgheorgh
-*/
-
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.LinkedList;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.parser.CodeReader;
-import org.eclipse.cdt.core.parser.IParser;
-import org.eclipse.cdt.core.parser.IProblem;
-import org.eclipse.cdt.core.parser.ISourceElementRequestor;
-import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.core.parser.ParserUtil;
-import org.eclipse.cdt.core.parser.ast.IASTASMDefinition;
-import org.eclipse.cdt.core.parser.ast.IASTAbstractTypeSpecifierDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTClassReference;
-import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTCodeScope;
-import org.eclipse.cdt.core.parser.ast.IASTCompilationUnit;
-import org.eclipse.cdt.core.parser.ast.IASTDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
-import org.eclipse.cdt.core.parser.ast.IASTEnumeratorReference;
-import org.eclipse.cdt.core.parser.ast.IASTField;
-import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
-import org.eclipse.cdt.core.parser.ast.IASTFunction;
-import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
-import org.eclipse.cdt.core.parser.ast.IASTInclusion;
-import org.eclipse.cdt.core.parser.ast.IASTLinkageSpecification;
-import org.eclipse.cdt.core.parser.ast.IASTMacro;
-import org.eclipse.cdt.core.parser.ast.IASTMethod;
-import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
-import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
-import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
-import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTParameterReference;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateInstantiation;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateParameterReference;
-import org.eclipse.cdt.core.parser.ast.IASTTemplateSpecialization;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
-import org.eclipse.cdt.core.parser.ast.IASTUsingDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTUsingDirective;
-import org.eclipse.cdt.core.parser.ast.IASTVariable;
-import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
-import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
-import org.eclipse.cdt.internal.core.search.indexing.IndexProblemHandler;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
-import org.eclipse.core.runtime.Path;
-
-/**
- * @author bgheorgh
- *
- * To change the template for this generated type comment go to
- * Window>Preferences>Java>Code Generation>Code and Comments
- */
-public class SourceIndexerRequestor implements ISourceElementRequestor {
-
- SourceIndexerRunner indexer;
- IFile resourceFile;
-
- char[] packageName;
- char[][] enclosingTypeNames = new char[5][];
- int depth = 0;
- int methodDepth = 0;
-
- private IASTInclusion currentInclude = null;
- private LinkedList includeStack = new LinkedList();
-
- private IProgressMonitor pm = new NullProgressMonitor();
-
- private ArrayList filesTraversed = null;
- private IParser parser;
-
- public SourceIndexerRequestor(SourceIndexerRunner indexer, IFile resourceFile) {
- super();
- this.indexer = indexer;
- this.resourceFile = resourceFile;
- this.filesTraversed = new ArrayList(15);
- this.filesTraversed.add(resourceFile.getLocation().toOSString());
- }
-
- public boolean acceptProblem(IProblem problem) {
- if( indexer.areProblemMarkersEnabled() && shouldRecordProblem( problem ) ){
- IASTInclusion include = peekInclude();
- IFile tempFile = resourceFile;
-
- //If we are in an include file, get the include file
- if (include != null){
- IPath newPath = new Path(include.getFullFileName());
- tempFile = CCorePlugin.getWorkspace().getRoot().getFileForLocation(newPath);
- }
-
- if( tempFile != null ){
- indexer.generateMarkerProblem(tempFile, resourceFile, problem);
- }
- }
-
- return IndexProblemHandler.ruleOnProblem( problem, ParserMode.COMPLETE_PARSE );
- }
-
- public void acceptMacro(IASTMacro macro) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addMacro(macro, indexFlag);
- }
-
- public void acceptVariable(IASTVariable variable) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addVariable(variable, indexFlag);
- }
-
- public void acceptFunctionDeclaration(IASTFunction function) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addFunctionDeclaration(function, indexFlag);
- }
-
- public void acceptUsingDirective(IASTUsingDirective usageDirective) {}
- public void acceptUsingDeclaration(IASTUsingDeclaration usageDeclaration) {}
- public void acceptASMDefinition(IASTASMDefinition asmDefinition) {}
-
- public void acceptTypedefDeclaration(IASTTypedefDeclaration typedef) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addTypedefDeclaration(typedef,indexFlag);
- }
-
- public void acceptEnumerationSpecifier(IASTEnumerationSpecifier enumeration) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addEnumerationSpecifier(enumeration,indexFlag);
- }
-
- public void enterFunctionBody(IASTFunction function) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addFunctionDefinition(function,indexFlag);
-
- }
-
- public void exitFunctionBody(IASTFunction function) {}
- public void enterCompilationUnit(IASTCompilationUnit compilationUnit) {}
-
- public void enterInclusion(IASTInclusion inclusion) {
- if( indexer.areProblemMarkersEnabled() ){
- IPath newPath = new Path(inclusion.getFullFileName());
- IFile tempFile = CCorePlugin.getWorkspace().getRoot().getFileForLocation(newPath);
- if (tempFile !=null){
- indexer.requestRemoveMarkers(tempFile, resourceFile);
- } else{
- //File is out of workspace
- }
- }
-
- IASTInclusion parent = peekInclude();
- indexer.addInclude(inclusion, parent,indexer.output.getIndexedFile(resourceFile.getFullPath().toString()).getFileID());
- //Push on stack
- pushInclude(inclusion);
- //Add to traversed files
- this.filesTraversed.add(inclusion.getFullFileName());
-
- IProject resourceProject = resourceFile.getProject();
- /* Check to see if this is a header file */
- boolean isHeader = CoreModel.isValidHeaderUnitName(resourceProject,
- inclusion.getFullFileName());
-
- /* See if this file has been encountered before */
- if (isHeader)
- indexer.haveEncounteredHeader(resourceProject.getFullPath(),new Path(inclusion.getFullFileName()));
-
- }
-
- public void enterNamespaceDefinition(IASTNamespaceDefinition namespaceDefinition) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addNamespaceDefinition(namespaceDefinition, indexFlag);
- }
-
- public void enterClassSpecifier(IASTClassSpecifier classSpecification) {}
- public void enterLinkageSpecification(IASTLinkageSpecification linkageSpec) {}
- public void enterTemplateDeclaration(IASTTemplateDeclaration declaration) {}
- public void enterTemplateSpecialization(IASTTemplateSpecialization specialization) {}
- public void enterTemplateInstantiation(IASTTemplateInstantiation instantiation) {}
-
- public void acceptMethodDeclaration(IASTMethod method) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addMethodDeclaration(method, indexFlag);
- }
-
- public void enterMethodBody(IASTMethod method) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addMethodDefinition(method, indexFlag);
- }
-
- public void exitMethodBody(IASTMethod method) {}
-
- public void acceptField(IASTField field) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addFieldDeclaration(field, indexFlag);
- }
-
- public void acceptClassReference(IASTClassReference reference) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if (reference.getReferencedElement() instanceof IASTClassSpecifier)
- indexer.addClassReference(reference, indexFlag);
- else if (reference.getReferencedElement() instanceof IASTElaboratedTypeSpecifier)
- {
- indexer.addForwardClassReference(reference, indexFlag);
- }
- }
-
- /**
- * @return
- */
- private int calculateIndexFlags() {
- int fileNum= 0;
-
- //Initialize the file number to be the file number for the file that triggerd
- //the indexing. Note that we should always be able to get a number for this as
- //the first step in the Source Indexer is to add the file being indexed to the index
- //which actually creates an entry for the file in the index.
-
- IndexedFileEntry mainIndexFile = indexer.output.getIndexedFile(resourceFile.getFullPath().toString());
- if (mainIndexFile != null)
- fileNum = mainIndexFile.getFileID();
-
- IASTInclusion include = peekInclude();
- if (include != null){
- //We are not in the file that has triggered the index. Thus, we need to find the
- //file number for the current file (if it has one). If the current file does not
- //have a file number, we need to add it to the index.
- IFile tempFile = CCorePlugin.getWorkspace().getRoot().getFileForLocation(new Path(include.getFullFileName()));
- String filePath = ""; //$NON-NLS-1$
- if (tempFile != null){
- //File is local to workspace
- filePath = tempFile.getFullPath().toString();
- }
- else{
- //File is external to workspace
- filePath = include.getFullFileName();
- }
-
- IndexedFileEntry indFile = indexer.output.getIndexedFile(filePath);
- if (indFile != null){
- //File has already been added to the output; it already has a number
- fileNum = indFile.getFileID();
- }
- else {
- //Need to add file to index and get a fileNumber
- if (tempFile != null){
- indFile = indexer.output.addIndexedFile(tempFile.getFullPath().toString());
- if (indFile != null)
- fileNum = indFile.getFileID();
- }
- else {
- indFile = indexer.output.addIndexedFile(include.getFullFileName());
- if (indFile != null)
- fileNum = indFile.getFileID();
- }
- }
-
- }
-
- return fileNum;
- }
-
- public void exitTemplateDeclaration(IASTTemplateDeclaration declaration) {}
- public void exitTemplateSpecialization(IASTTemplateSpecialization specialization) {}
- public void exitTemplateExplicitInstantiation(IASTTemplateInstantiation instantiation) {}
- public void exitLinkageSpecification(IASTLinkageSpecification linkageSpec) {}
-
- public void exitClassSpecifier(IASTClassSpecifier classSpecification) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addClassSpecifier(classSpecification, indexFlag);
- }
-
- public void exitNamespaceDefinition(IASTNamespaceDefinition namespaceDefinition) {}
-
- public void exitInclusion(IASTInclusion inclusion) {
- // TODO Auto-generated method stub
- popInclude();
- }
-
- public void exitCompilationUnit(IASTCompilationUnit compilationUnit) {}
-
- public void acceptAbstractTypeSpecDeclaration(IASTAbstractTypeSpecifierDeclaration abstractDeclaration) {}
-
- public void acceptTypedefReference(IASTTypedefReference reference) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if( reference.getReferencedElement() instanceof IASTTypedefDeclaration )
- indexer.addTypedefReference( reference,indexFlag);
- }
-
- public void acceptNamespaceReference(IASTNamespaceReference reference) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if (reference.getReferencedElement() instanceof IASTNamespaceDefinition)
- indexer.addNamespaceReference(reference,indexFlag);
- }
-
- public void acceptEnumerationReference(IASTEnumerationReference reference) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if (reference.getReferencedElement() instanceof IASTEnumerationSpecifier)
- indexer.addEnumerationReference(reference,indexFlag);
- }
-
- public void acceptVariableReference(IASTVariableReference reference) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if (reference.getReferencedElement() instanceof IASTVariable)
- indexer.addVariableReference(reference,indexFlag);
- }
-
- public void acceptFunctionReference(IASTFunctionReference reference) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if (reference.getReferencedElement() instanceof IASTFunction)
- indexer.addFunctionReference(reference, indexFlag);
- }
-
- public void acceptFieldReference(IASTFieldReference reference) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if (reference.getReferencedElement() instanceof IASTField)
- indexer.addFieldReference(reference,indexFlag);
- }
-
- public void acceptMethodReference(IASTMethodReference reference) {
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if (reference.getReferencedElement() instanceof IASTMethod)
- indexer.addMethodReference(reference,indexFlag);
- }
-
- public void acceptElaboratedForewardDeclaration(IASTElaboratedTypeSpecifier elaboratedType){
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- indexer.addElaboratedForwardDeclaration(elaboratedType, indexFlag);
- }
-
- public void enterCodeBlock(IASTCodeScope scope) {}
- public void exitCodeBlock(IASTCodeScope scope) {}
- public void acceptEnumeratorReference(IASTEnumeratorReference reference){
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if( reference.getReferencedElement() instanceof IASTEnumerator )
- indexer.addEnumeratorReference( reference, indexFlag);
-
- }
-
- public void acceptParameterReference(IASTParameterReference reference){
- //Check to see if this reference actually occurs in the file being indexed
- //or if it occurs in another file
- int indexFlag = calculateIndexFlags();
-
- if( reference.getReferencedElement() instanceof IASTParameterDeclaration )
- indexer.addParameterReference( reference, indexFlag);
-
- }
-
- public void acceptTemplateParameterReference( IASTTemplateParameterReference reference ){}
- public void acceptFriendDeclaration(IASTDeclaration declaration) {}
-
- private void pushInclude( IASTInclusion inclusion ){
- includeStack.addFirst( currentInclude );
- currentInclude = inclusion;
- }
-
- private IASTInclusion popInclude(){
- IASTInclusion oldInclude = currentInclude;
- currentInclude = (includeStack.size() > 0 ) ? (IASTInclusion) includeStack.removeFirst() : null;
- return oldInclude;
- }
-
- private IASTInclusion peekInclude(){
- return currentInclude;
- }
- /* (non-Javadoc)
- * @see org.eclipse.cdt.core.parser.ISourceElementRequestor#createReader(java.lang.String)
- */
- public CodeReader createReader(String finalPath, Iterator workingCopies) {
- return ParserUtil.createReader(finalPath,workingCopies);
- }
-
- public boolean shouldRecordProblem( IProblem problem ){
- if( problem.getSourceLineNumber() == -1 )
- return false;
-
- boolean preprocessor = ( indexer.getProblemMarkersEnabled() & SourceIndexer.PREPROCESSOR_PROBLEMS_BIT ) != 0;
- boolean semantics = ( indexer.getProblemMarkersEnabled() & SourceIndexer.SEMANTIC_PROBLEMS_BIT ) != 0;
- boolean syntax = ( indexer.getProblemMarkersEnabled() & SourceIndexer.SYNTACTIC_PROBLEMS_BIT ) != 0;
-
- if( problem.checkCategory( IProblem.PREPROCESSOR_RELATED ) || problem.checkCategory( IProblem.SCANNER_RELATED ) )
- return preprocessor && problem.getID() != IProblem.PREPROCESSOR_CIRCULAR_INCLUSION;
- else if( problem.checkCategory( IProblem.SEMANTICS_RELATED ) )
- return semantics;
- else if( problem.checkCategory( IProblem.SYNTAX_RELATED ) )
- return syntax;
-
- return false;
- }
-
- /**
- * @return Returns the filesTraversed.
- */
- public ArrayList getFilesTraversed() {
- return filesTraversed;
- }
-}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexerRunner.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexerRunner.java
deleted file mode 100644
index 3d58f185335..00000000000
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/index/sourceindexer/SourceIndexerRunner.java
+++ /dev/null
@@ -1,830 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2005 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Common Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/cpl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-package org.eclipse.cdt.internal.core.index.sourceindexer;
-
-/**
- * @author bgheorgh
-*/
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.naming.Name;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.ICLogConstants;
-import org.eclipse.cdt.core.index.IIndexDelta;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.ICModelMarker;
-import org.eclipse.cdt.core.parser.CodeReader;
-import org.eclipse.cdt.core.parser.IParser;
-import org.eclipse.cdt.core.parser.IProblem;
-import org.eclipse.cdt.core.parser.IScannerInfo;
-import org.eclipse.cdt.core.parser.IScannerInfoProvider;
-import org.eclipse.cdt.core.parser.ParserFactory;
-import org.eclipse.cdt.core.parser.ParserFactoryError;
-import org.eclipse.cdt.core.parser.ParserLanguage;
-import org.eclipse.cdt.core.parser.ParserMode;
-import org.eclipse.cdt.core.parser.ParserUtil;
-import org.eclipse.cdt.core.parser.ScannerInfo;
-import org.eclipse.cdt.core.parser.ast.ASTClassKind;
-import org.eclipse.cdt.core.parser.ast.ASTNotImplementedException;
-import org.eclipse.cdt.core.parser.ast.IASTBaseSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTClassReference;
-import org.eclipse.cdt.core.parser.ast.IASTClassSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTElaboratedTypeSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerationReference;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerationSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTEnumerator;
-import org.eclipse.cdt.core.parser.ast.IASTEnumeratorReference;
-import org.eclipse.cdt.core.parser.ast.IASTField;
-import org.eclipse.cdt.core.parser.ast.IASTFieldReference;
-import org.eclipse.cdt.core.parser.ast.IASTFunction;
-import org.eclipse.cdt.core.parser.ast.IASTFunctionReference;
-import org.eclipse.cdt.core.parser.ast.IASTInclusion;
-import org.eclipse.cdt.core.parser.ast.IASTInitializerClause;
-import org.eclipse.cdt.core.parser.ast.IASTMacro;
-import org.eclipse.cdt.core.parser.ast.IASTMethod;
-import org.eclipse.cdt.core.parser.ast.IASTMethodReference;
-import org.eclipse.cdt.core.parser.ast.IASTNamespaceDefinition;
-import org.eclipse.cdt.core.parser.ast.IASTNamespaceReference;
-import org.eclipse.cdt.core.parser.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTParameterReference;
-import org.eclipse.cdt.core.parser.ast.IASTTypeSpecifier;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefDeclaration;
-import org.eclipse.cdt.core.parser.ast.IASTTypedefReference;
-import org.eclipse.cdt.core.parser.ast.IASTVariable;
-import org.eclipse.cdt.core.parser.ast.IASTVariableReference;
-import org.eclipse.cdt.internal.core.index.FunctionEntry;
-import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.NamedEntry;
-import org.eclipse.cdt.internal.core.index.TypeEntry;
-import org.eclipse.cdt.internal.core.index.cindexstorage.IndexedFileEntry;
-import org.eclipse.cdt.internal.core.index.impl.IndexDelta;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IMarker;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.Path;
-
-/**
- * A SourceIndexer indexes source files using the parser. The following items are indexed:
- * Declarations:
- * - Classes
- * - Structs
- * - Unions
- * References:
- * - Classes
- * - Structs
- * - Unions
- */
-public class SourceIndexerRunner extends AbstractIndexer {
- private SourceIndexer indexer;
-
- /**
- * @param resource
- * @param out
- */
- public SourceIndexerRunner(IFile resource, SourceIndexer indexer) {
- this.indexer = indexer;
- this.resourceFile = resource;
- }
-
- protected void indexFile(IFile file) throws IOException {
- // Add the name of the file to the index
- IndexedFileEntry indFile =output.addIndexedFile(file.getFullPath().toString());
-
- // Create a new Parser
- SourceIndexerRequestor requestor = new SourceIndexerRequestor(this, resourceFile);
-
- int problems = indexer.indexProblemsEnabled( resourceFile.getProject() );
- setProblemMarkersEnabled( problems );
- requestRemoveMarkers( resourceFile, null );
-
- //Get the scanner info
- IProject currentProject = resourceFile.getProject();
- IScannerInfo scanInfo = new ScannerInfo();
- IScannerInfoProvider provider = CCorePlugin.getDefault().getScannerInfoProvider(currentProject);
- if (provider != null){
- IScannerInfo buildScanInfo = provider.getScannerInformation(resourceFile);
- if (buildScanInfo != null){
- scanInfo = new ScannerInfo(buildScanInfo.getDefinedSymbols(), buildScanInfo.getIncludePaths());
- }
- }
-
- //C or CPP?
- ParserLanguage language = CoreModel.hasCCNature(currentProject) ? ParserLanguage.CPP : ParserLanguage.C;
-
- IParser parser = null;
-
- InputStream contents = null;
- try {
- contents = resourceFile.getContents();
- CodeReader reader = new CodeReader(resourceFile.getLocation().toOSString(), resourceFile.getCharset(), contents);
- parser = ParserFactory.createParser(
- ParserFactory.createScanner(reader, scanInfo, ParserMode.COMPLETE_PARSE, language, requestor, ParserUtil.getScannerLogService(), null ),
- requestor, ParserMode.COMPLETE_PARSE, language, ParserUtil.getParserLogService() );
- } catch( ParserFactoryError pfe ){
- } catch (CoreException e) {
- } finally {
- if (contents != null) {
- contents.close();
- }
- }
-
- try{
- long startTime = 0;
-
- if (AbstractIndexer.TIMING)
- startTime = System.currentTimeMillis();
-
- boolean retVal = parser.parse();
-
- if (AbstractIndexer.TIMING){
- long currentTime = System.currentTimeMillis() - startTime;
- System.out.println("Source Indexer - Index Time for " + resourceFile.getName() + ": " + currentTime + " ms"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- long tempTotaltime = indexer.getTotalIndexTime() + currentTime;
- indexer.setTotalIndexTime(tempTotaltime);
- System.out.println("Source Indexer - Total Index Time: " + tempTotaltime + " ms"); //$NON-NLS-1$ //$NON-NLS-2$
-
- }
-
- if (AbstractIndexer.VERBOSE){
- if (!retVal)
- AbstractIndexer.verbose("PARSE FAILED " + resourceFile.getName().toString()); //$NON-NLS-1$
- else
- AbstractIndexer.verbose("PARSE SUCCEEDED " + resourceFile.getName().toString()); //$NON-NLS-1$
- }
- }
- catch ( VirtualMachineError vmErr){
- if (vmErr instanceof OutOfMemoryError){
- org.eclipse.cdt.internal.core.model.Util.log(null, "Out Of Memory error: " + vmErr.getMessage() + " on File: " + resourceFile.getName(), ICLogConstants.CDT); //$NON-NLS-1$ //$NON-NLS-2$
- }
- }
- catch ( Exception ex ){
- if (ex instanceof IOException)
- throw (IOException) ex;
- }
- finally{
- //if the user disable problem reporting since we last checked, don't report the collected problems
- if( indexer.indexProblemsEnabled( resourceFile.getProject() ) != 0 )
- reportProblems();
-
- //Report events
- ArrayList filesTrav = requestor.getFilesTraversed();
- IndexDelta indexDelta = new IndexDelta(resourceFile.getProject(),filesTrav, IIndexDelta.INDEX_FINISHED_DELTA);
- indexer.notifyListeners(indexDelta);
- //Release all resources
- parser=null;
- currentProject = null;
- requestor = null;
- provider = null;
- scanInfo=null;
- }
- }
-
- /**
- * @param fullPath
- * @param path
- */
- public boolean haveEncounteredHeader(IPath fullPath, Path path) {
- return indexer.haveEncounteredHeader(fullPath, path, true);
- }
-
- protected class AddMarkerProblem extends Problem {
- private IProblem problem;
- public AddMarkerProblem(IResource file, IResource orig, IProblem problem) {
- super(file, orig);
- this.problem = problem;
- }
-
- public void run() {
- try {
- //we only ever add index markers on the file, so DEPTH_ZERO is far enough
- IMarker[] markers = resource.findMarkers(ICModelMarker.INDEXER_MARKER, true,IResource.DEPTH_ZERO);
-
- boolean newProblem = true;
-
- if (markers.length > 0) {
- IMarker tempMarker = null;
- Integer tempInt = null;
- String tempMsgString = null;
-
- for (int i=0; i<markers.length; i++) {
- tempMarker = markers[i];
- tempInt = (Integer) tempMarker.getAttribute(IMarker.LINE_NUMBER);
- tempMsgString = (String) tempMarker.getAttribute(IMarker.MESSAGE);
- if (tempInt != null && tempInt.intValue() == problem.getSourceLineNumber() &&
- tempMsgString.equalsIgnoreCase( INDEXER_MARKER_PREFIX + problem.getMessage()))
- {
- newProblem = false;
- break;
- }
- }
- }
-
- if (newProblem) {
- IMarker marker = resource.createMarker(ICModelMarker.INDEXER_MARKER);
- int start = problem.getSourceStart();
- int end = problem.getSourceEnd();
- if (end <= start)
- end = start + 1;
- marker.setAttribute(IMarker.LOCATION, problem.getSourceLineNumber());
- marker.setAttribute(IMarker.MESSAGE, INDEXER_MARKER_PREFIX + problem.getMessage());
- marker.setAttribute(IMarker.SEVERITY, IMarker.SEVERITY_WARNING);
- marker.setAttribute(IMarker.LINE_NUMBER, problem.getSourceLineNumber());
- marker.setAttribute(IMarker.CHAR_START, start);
- marker.setAttribute(IMarker.CHAR_END, end);
- marker.setAttribute(INDEXER_MARKER_ORIGINATOR, originator.getFullPath().toString() );
- }
- } catch (CoreException e) {
- // You need to handle the cases where attribute value is rejected
- }
- }
- }
-
- public void addClassSpecifier(IASTClassSpecifier classSpecification, int fileNumber){
-
- if (classSpecification.getClassKind().equals(ASTClassKind.CLASS))
- {
- //Get base clauses
- Iterator baseClauses = classSpecification.getBaseClauses();
- while (baseClauses.hasNext()){
- IASTBaseSpecifier baseSpec = (IASTBaseSpecifier) baseClauses.next();
- try {
- IASTTypeSpecifier typeSpec = baseSpec.getParentClassSpecifier();
- if (typeSpec instanceof IASTClassSpecifier){
- IASTClassSpecifier baseClassSpec = (IASTClassSpecifier) typeSpec;
- char[][] baseFullyQualifiedName = baseClassSpec.getFullyQualifiedNameCharArrays();
- int offset = baseClassSpec.getNameOffset();
- int offsetLength = baseClassSpec.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_DERIVED ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- } catch (ASTNotImplementedException e) {}
- }
-
- //Get friends
- Iterator friends = classSpecification.getFriends();
- while (friends.hasNext()){
- Object decl = friends.next();
- if (decl instanceof IASTClassSpecifier){
- IASTClassSpecifier friendClassSpec = (IASTClassSpecifier) decl;
- char[][] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedNameCharArrays();
- int offset = friendClassSpec.getNameOffset();
- int offsetLength = friendClassSpec.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FRIEND ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- else if (decl instanceof IASTElaboratedTypeSpecifier){
- IASTElaboratedTypeSpecifier friendClassSpec = (IASTElaboratedTypeSpecifier) decl;
- char[][] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedNameCharArrays();
- int offset = friendClassSpec.getNameOffset();
- int offsetLength = friendClassSpec.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FRIEND ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- else if (decl instanceof IASTFunction){
-
- }
- else if (decl instanceof IASTMethod){
- //
- }
-
- }
-
- int offset = classSpecification.getNameOffset();
- int offsetLength = classSpecification.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_CLASS,IIndex.DEFINITION, classSpecification.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- //typeEntry.setBaseTypes(getInherits());
- typeEntry.serialize(output);
- }
- else if (classSpecification.getClassKind().equals(ASTClassKind.STRUCT))
- {
- //Get base clauses
- Iterator i = classSpecification.getBaseClauses();
- while (i.hasNext()){
- IASTBaseSpecifier baseSpec = (IASTBaseSpecifier) i.next();
- try {
- IASTTypeSpecifier typeSpec = baseSpec.getParentClassSpecifier();
- if (typeSpec instanceof IASTClassSpecifier){
- IASTClassSpecifier baseClassSpec = (IASTClassSpecifier) typeSpec;
- char[][] baseFullyQualifiedName = baseClassSpec.getFullyQualifiedNameCharArrays();
- int offset = baseClassSpec.getNameOffset();
- int offsetLength = baseClassSpec.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_DERIVED ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- } catch (ASTNotImplementedException e) {}
- }
-
-// Get friends
- Iterator friends = classSpecification.getFriends();
- while (friends.hasNext()){
- Object decl = friends.next();
- if (decl instanceof IASTClassSpecifier){
- IASTClassSpecifier friendClassSpec = (IASTClassSpecifier) decl;
- char[][] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedNameCharArrays();
- int offset = friendClassSpec.getNameOffset();
- int offsetLength = friendClassSpec.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FRIEND ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- else if (decl instanceof IASTElaboratedTypeSpecifier){
- IASTElaboratedTypeSpecifier friendClassSpec = (IASTElaboratedTypeSpecifier) decl;
- char[][] baseFullyQualifiedName = friendClassSpec.getFullyQualifiedNameCharArrays();
- int offset = friendClassSpec.getNameOffset();
- int offsetLength = friendClassSpec.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_FRIEND ,IIndex.DECLARATION, baseFullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- else if (decl instanceof IASTFunction){
-
- }
- else if (decl instanceof IASTMethod){
- //
- }
- }
-
- int offset = classSpecification.getNameOffset();
- int offsetLength = classSpecification.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_STRUCT,IIndex.DEFINITION, classSpecification.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- //typeEntry.setBaseTypes(getInherits());
- typeEntry.serialize(output);
- }
- else if (classSpecification.getClassKind().equals(ASTClassKind.UNION))
- {
- int offset = classSpecification.getNameOffset();
- int offsetLength = classSpecification.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_UNION,IIndex.DEFINITION, classSpecification.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset,offsetLength, IIndex.OFFSET);
- //typeEntry.setBaseTypes(getInherits());
- typeEntry.serialize(output);
- }
- }
-
- public void addEnumerationSpecifier(IASTEnumerationSpecifier enumeration, int fileNumber) {
-
- int offset = enumeration.getNameOffset();
- int offsetLength = enumeration.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_ENUM ,IIndex.DECLARATION, enumeration.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
-
- Iterator i = enumeration.getEnumerators();
- while (i.hasNext())
- {
- IASTEnumerator en = (IASTEnumerator) i.next();
- char[][] enumeratorFullName =
- createEnumeratorFullyQualifiedName(en);
-
- offset = en.getNameOffset();
- offsetLength = en.getNameEndOffset() - offset;
-
- NamedEntry namedEntry = new NamedEntry(IIndex.ENUMTOR, IIndex.DECLARATION, enumeratorFullName, 0 /*getModifiers()*/, fileNumber);
- namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- namedEntry.serialize(output);
- }
- }
-
- protected char[][] createEnumeratorFullyQualifiedName(IASTEnumerator en) {
- char[] name = en.getNameCharArray();
- IASTEnumerationSpecifier parent = en.getOwnerEnumerationSpecifier();
- char[][] parentName = parent.getFullyQualifiedNameCharArrays();
-
- //See spec 7.2-10, the the scope of the enumerator is the same level as the enumeration
- char[][] enumeratorFullName = new char[parentName.length][];
-
- System.arraycopy( parentName, 0, enumeratorFullName, 0, parentName.length);
- enumeratorFullName[ parentName.length - 1 ] = name;
- return enumeratorFullName;
- }
-
- public void addEnumeratorReference(IASTEnumeratorReference reference, int fileNumber) {
- IASTEnumerator enumerator = (IASTEnumerator)reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = enumerator.getNameEndOffset() - enumerator.getNameOffset();
-
- NamedEntry namedEntry = new NamedEntry(IIndex.ENUMTOR, IIndex.REFERENCE, createEnumeratorFullyQualifiedName(enumerator), 0 /*getModifiers()*/, fileNumber);
- namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- namedEntry.serialize(output);
- }
-
- public void addMacro(IASTMacro macro, int fileNumber) {
- char[][] macroName = new char[][] { macro.getNameCharArray() };
- int offset = macro.getNameOffset();
- int offsetLength = macro.getNameEndOffset() - offset;
-
- NamedEntry namedEntry = new NamedEntry(IIndex.MACRO, IIndex.DECLARATION, macroName, 0 /*getModifiers()*/, fileNumber);
- namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- namedEntry.serialize(output);
- }
-
- public void addEnumerationReference(IASTEnumerationReference reference, int fileNumber) {
- IASTEnumerationSpecifier enumeration = (IASTEnumerationSpecifier) reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = enumeration.getNameEndOffset() - enumeration.getNameOffset();
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_ENUM ,IIndex.REFERENCE, enumeration.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- public void addVariable(IASTVariable variable, int fileNumber) {
- int offset = variable.getNameOffset();
- int offsetLength = variable.getNameEndOffset() - offset;
-
- IASTInitializerClause initClause = variable.getInitializerClause();
- TypeEntry typeEntry;
- if ((variable.isExtern() && initClause == null )||
- variable.isStatic()){
- typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DECLARATION, variable.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- } else {
- typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DEFINITION, variable.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- }
-
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
-
- public void addVariableReference(IASTVariableReference reference, int fileNumber) {
- IASTVariable variable = (IASTVariable)reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = variable.getNameEndOffset() - variable.getNameOffset();
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.REFERENCE, variable.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
-
- public void addParameterReference( IASTParameterReference reference, int fileNumber ){
- IASTParameterDeclaration parameter = (IASTParameterDeclaration) reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = parameter.getNameEndOffset() - parameter.getNameOffset();
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.REFERENCE, new char[][]{parameter.getNameCharArray()}, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
-
- public void addTypedefDeclaration(IASTTypedefDeclaration typedef, int fileNumber) {
- int offset = typedef.getNameOffset();
- int offsetLength = typedef.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_TYPEDEF, IIndex.DECLARATION, typedef.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
-
- public void addFieldDeclaration(IASTField field, int fileNumber) {
- int offset = field.getNameOffset();
- int offsetLength = field.getNameEndOffset() - offset;
-
- if (field.isStatic()){
- NamedEntry namedEntry = new NamedEntry(IIndex.FIELD, IIndex.DECLARATION, field.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- namedEntry.serialize(output);
- } else {
- NamedEntry namedEntry = new NamedEntry(IIndex.FIELD, IIndex.DEFINITION, field.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- namedEntry.serialize(output);
- }
- }
-
- public void addFieldReference(IASTFieldReference reference, int fileNumber) {
- IASTField field=(IASTField) reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = field.getNameEndOffset() - field.getNameOffset();
-
- NamedEntry namedEntry = new NamedEntry(IIndex.FIELD, IIndex.REFERENCE, field.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- namedEntry.serialize(output);
-
- }
-
- public void addMethodDeclaration(IASTMethod method, int fileNumber) {
- int offset = method.getNameOffset();
- int offsetLength = method.getNameEndOffset() - offset;
-
- FunctionEntry functionEntry = new FunctionEntry(IIndex.METHOD, IIndex.DECLARATION, method.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
- //funEntry.setSignature(getFunctionSignature());
- functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- functionEntry.serialize(output);
-
- Iterator i=method.getParameters();
- while (i.hasNext()){
- Object parm = i.next();
- if (parm instanceof IASTParameterDeclaration){
- IASTParameterDeclaration parmDecl = (IASTParameterDeclaration) parm;
- offset = parmDecl.getNameOffset();
- offsetLength = parmDecl.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DECLARATION, new char[][]{parmDecl.getNameCharArray()}, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- }
- }
-
- public void addMethodDefinition(IASTMethod method, int fileNumber) {
- int offset = method.getNameOffset();
- int offsetLength = method.getNameEndOffset() - offset;
-
- FunctionEntry functionEntry = new FunctionEntry(IIndex.METHOD, IIndex.DEFINITION, method.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
- //funEntry.setSignature(getFunctionSignature());
- functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- functionEntry.serialize(output);
-
- Iterator i=method.getParameters();
- while (i.hasNext()){
- Object parm = i.next();
- if (parm instanceof IASTParameterDeclaration){
- IASTParameterDeclaration parmDecl = (IASTParameterDeclaration) parm;
- offset = parmDecl.getNameOffset();
- offsetLength = parmDecl.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DECLARATION, new char[][]{parmDecl.getNameCharArray()}, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- }
- }
-
- public void addMethodReference(IASTMethodReference reference, int fileNumber) {
- IASTMethod method = (IASTMethod) reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = method.getNameEndOffset() - method.getNameOffset();
-
- FunctionEntry functionEntry = new FunctionEntry(IIndex.METHOD, IIndex.REFERENCE, method.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
- //funEntry.setSignature(getFunctionSignature());
- functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- functionEntry.serialize(output);
- }
-
- public void addElaboratedForwardDeclaration(IASTElaboratedTypeSpecifier elaboratedType, int fileNumber) {
- int offset = elaboratedType.getNameOffset();
- int offsetLength = elaboratedType.getNameEndOffset() - offset;
-
- if (elaboratedType.getClassKind().equals(ASTClassKind.CLASS))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_CLASS ,IIndex.DECLARATION, elaboratedType.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- else if (elaboratedType.getClassKind().equals(ASTClassKind.STRUCT))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_STRUCT ,IIndex.DECLARATION, elaboratedType.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- else if (elaboratedType.getClassKind().equals(ASTClassKind.UNION))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_UNION,IIndex.DECLARATION, elaboratedType.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- }
-
- public void addConstructorDeclaration(){
-
- }
- public void addConstructorReference(){
-
- }
-
- public void addMemberDeclaration(){
-
- }
- public void addMemberReference(){
-
- }
-
- public void addFunctionDeclaration(IASTFunction function, int fileNumber){
- int offset = function.getNameOffset();
- int offsetLength = function.getNameEndOffset() - offset;
-
- FunctionEntry functionEntry = new FunctionEntry(IIndex.FUNCTION, IIndex.DECLARATION, function.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
- //funEntry.setSignature(getFunctionSignature());
- functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- functionEntry.serialize(output);
-
- Iterator i=function.getParameters();
- while (i.hasNext()){
- Object parm = i.next();
- if (parm instanceof IASTParameterDeclaration){
- IASTParameterDeclaration parmDecl = (IASTParameterDeclaration) parm;
- offset = parmDecl.getNameOffset();
- offsetLength = parmDecl.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DECLARATION, new char[][]{parmDecl.getNameCharArray()}, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- }
- }
-
- public void addFunctionDefinition(IASTFunction function, int fileNumber){
- int offset = function.getNameOffset();
- int offsetLength = function.getNameEndOffset() - offset;
-
- FunctionEntry functionEntry = new FunctionEntry(IIndex.FUNCTION, IIndex.DEFINITION, function.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
- //funEntry.setSignature(getFunctionSignature());
- functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- functionEntry.serialize(output);
-
- /*Iterator i=function.getParameters();
- while (i.hasNext()){
- Object parm = i.next();
- if (parm instanceof IASTParameterDeclaration){
- IASTParameterDeclaration parmDecl = (IASTParameterDeclaration) parm;
- offset = parmDecl.getNameOffset();
- offsetLength = parmDecl.getNameEndOffset() - offset;
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_VAR ,IIndex.DECLARATION, new char[][]{parmDecl.getNameCharArray()}, 0 getModifiers(), fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- }*/
- }
-
- public void addFunctionReference(IASTFunctionReference reference, int fileNumber){
- IASTFunction function=(IASTFunction) reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = function.getNameEndOffset() - function.getNameOffset();
-
- FunctionEntry functionEntry = new FunctionEntry(IIndex.FUNCTION, IIndex.REFERENCE, function.getFullyQualifiedNameCharArrays(),0 /*getModifiers()*/, fileNumber);
- //funEntry.setSignature(getFunctionSignature());
- functionEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- functionEntry.serialize(output);
- }
-
- public void addNameReference(){
-
- }
-
- public void addNamespaceDefinition(IASTNamespaceDefinition namespace, int fileNumber){
- int offset = namespace.getNameOffset();
- int offsetLength = namespace.getNameEndOffset() - offset;
-
- NamedEntry namedEntry = new NamedEntry(IIndex.NAMESPACE, IIndex.DEFINITION, namespace.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- namedEntry.serialize(output);
- }
-
- public void addNamespaceReference(IASTNamespaceReference reference, int fileNumber) {
- IASTNamespaceDefinition namespace = (IASTNamespaceDefinition)reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = namespace.getNameEndOffset() - namespace.getNameOffset();
-
- NamedEntry namedEntry = new NamedEntry(IIndex.NAMESPACE, IIndex.REFERENCE, namespace.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- namedEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- namedEntry.serialize(output);
- }
-
- public void addTypedefReference( IASTTypedefReference reference, int fileNumber ){
- IASTTypedefDeclaration typedef = (IASTTypedefDeclaration) reference.getReferencedElement();
- int offset = reference.getOffset();
- int offsetLength = typedef.getNameEndOffset() - typedef.getNameOffset();
-
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_TYPEDEF, IIndex.REFERENCE, typedef.getFullyQualifiedNameCharArrays(), 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
-
- public void addClassReference(IASTClassReference reference, int fileNumber){
- char[][] fullyQualifiedName = null;
- ASTClassKind classKind = null;
- int offset=0;
- int offsetLength=1;
- Object referenceObject = reference.getReferencedElement();
- if (referenceObject instanceof IASTClassSpecifier){
- IASTClassSpecifier classRef = (IASTClassSpecifier) referenceObject;
- fullyQualifiedName = classRef.getFullyQualifiedNameCharArrays();
- classKind = classRef.getClassKind();
- offset=reference.getOffset();
- offsetLength=classRef.getNameEndOffset()-classRef.getNameOffset();
- }
- else if (referenceObject instanceof IASTElaboratedTypeSpecifier){
- IASTElaboratedTypeSpecifier typeRef = (IASTElaboratedTypeSpecifier) reference;
- fullyQualifiedName = typeRef.getFullyQualifiedNameCharArrays();
- classKind = typeRef.getClassKind();
- offset=reference.getOffset();
- offsetLength=typeRef.getNameEndOffset()-typeRef.getNameOffset();
- }
-
- if (classKind.equals(ASTClassKind.CLASS))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_CLASS,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- //typeEntry.setBaseTypes(getInherits());
- typeEntry.serialize(output);
- }
- else if (classKind.equals(ASTClassKind.STRUCT))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_STRUCT,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- //typeEntry.setBaseTypes(getInherits());
- typeEntry.serialize(output);
- }
- else if (classKind.equals(ASTClassKind.UNION))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_UNION,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- //typeEntry.setBaseTypes(getInherits());
- typeEntry.serialize(output);
- }
- }
-
- public void addForwardClassReference(IASTClassReference reference, int fileNumber){
- char[][] fullyQualifiedName = null;
- ASTClassKind classKind = null;
- int offset=0;
- int offsetLength=1;
- Object referencedObject = reference.getReferencedElement();
- if (referencedObject instanceof IASTElaboratedTypeSpecifier){
- IASTElaboratedTypeSpecifier typeRef = (IASTElaboratedTypeSpecifier) referencedObject;
- fullyQualifiedName = typeRef.getFullyQualifiedNameCharArrays();
- classKind = typeRef.getClassKind();
- offset=reference.getOffset();
- offsetLength=typeRef.getNameEndOffset()-typeRef.getNameOffset();
- }
-
- if (classKind == null)
- return;
-
- if (classKind.equals(ASTClassKind.CLASS))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_CLASS ,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- else if (classKind.equals(ASTClassKind.STRUCT))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_STRUCT ,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- else if (classKind.equals(ASTClassKind.UNION))
- {
- TypeEntry typeEntry = new TypeEntry(IIndex.TYPE_UNION ,IIndex.REFERENCE, fullyQualifiedName, 0 /*getModifiers()*/, fileNumber);
- typeEntry.setNameOffset(offset, offsetLength, IIndex.OFFSET);
- typeEntry.serialize(output);
- }
- }
-
- public void addInclude(IASTInclusion inclusion, IASTInclusion parent, int fileNumber){
- this.output.addIncludeRef(fileNumber, inclusion.getFullFileName());
- this.output.addRelatives(fileNumber, inclusion.getFullFileName(),(parent != null ) ? parent.getFullFileName() : null);
-
- //Add Dep Table entry
- char[][] incName = new char[1][];
- incName[0] = inclusion.getFullFileName().toCharArray();
- //TODO: Kludge! Get rid of BOGUS entry - need to restructure Dep Tree to use reference indexes
- int BOGUS_ENTRY = 1;
- this.output.addIncludeRef(fileNumber, incName,1,1, IIndex.OFFSET);
- }
-
- public void generateMarkerProblem(IFile tempFile, IFile originator, IProblem problem) {
- Problem tempProblem = new AddMarkerProblem(tempFile, originator, problem);
- if (getProblemsMap().containsKey(tempFile)) {
- List list = (List) getProblemsMap().get(tempFile);
- list.add(tempProblem);
- } else {
- List list = new ArrayList();
- list.add(new RemoveMarkerProblem(tempFile, originator)); //remove existing markers
- list.add(tempProblem);
- getProblemsMap().put(tempFile, list);
- }
- }
-}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java
index 850db326479..e1024430d83 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexManager.java
@@ -20,10 +20,9 @@ import org.eclipse.cdt.core.ICExtensionReference;
import org.eclipse.cdt.core.index.ICDTIndexer;
import org.eclipse.cdt.core.index.IIndexStorage;
import org.eclipse.cdt.core.model.ICModelMarker;
-import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexRequest;
-import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
-import org.eclipse.cdt.internal.core.index.sourceindexer.IndexRequest;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.IndexRequest;
+import org.eclipse.cdt.internal.core.index.cindexstorage.CIndexStorage;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.search.processing.IIndexJob;
import org.eclipse.cdt.internal.core.search.processing.JobManager;
import org.eclipse.core.resources.IProject;
@@ -84,6 +83,7 @@ public class IndexManager extends JobManager{
*
*/
protected void jobFinishedNotification(IIndexJob job) {
+
if (job instanceof IndexRequest ){
IndexRequest indexRequest = (IndexRequest) job;
IPath path = indexRequest.getIndexPath();
@@ -93,17 +93,6 @@ public class IndexManager extends JobManager{
if (indexer != null)
indexer.indexJobFinishedNotification(job);
}
-
- //TODO: Standardize on jobs
- if (job instanceof CTagsIndexRequest){
- CTagsIndexRequest indexRequest = (CTagsIndexRequest) job;
- IPath path = indexRequest.getIndexPath();
- IProject project= ResourcesPlugin.getWorkspace().getRoot().getProject(path.toOSString());
- ICDTIndexer indexer = getIndexerForProject(project);
-
- if (indexer != null)
- indexer.indexJobFinishedNotification(job);
- }
}
/**
* @param project
@@ -264,8 +253,8 @@ public class IndexManager extends JobManager{
*/
public void updateDependencies(IProject project, IResource resource) {
ICDTIndexer indexer = getIndexerForProject(project);
- if (indexer instanceof SourceIndexer)
- ((SourceIndexer) indexer).updateDependencies(resource);
+ if (indexer instanceof DOMSourceIndexer)
+ ((DOMSourceIndexer) indexer).updateDependencies(resource);
}
diff --git a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java
index 6789b092efe..7b08c4a589b 100644
--- a/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java
+++ b/core/org.eclipse.cdt.core/index/org/eclipse/cdt/internal/core/search/indexing/IndexerModelListener.java
@@ -17,7 +17,7 @@ import org.eclipse.cdt.core.model.ElementChangedEvent;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICElementDelta;
import org.eclipse.cdt.core.model.IElementChangedListener;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.model.SourceRoot;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
@@ -59,10 +59,10 @@ public class IndexerModelListener implements IElementChangedListener {
IProject project = element.getCProject().getProject();
ICDTIndexer indexer = indexManager.getIndexerForProject(project);
- if (!(indexer instanceof SourceIndexer))
+ if (!(indexer instanceof DOMSourceIndexer))
return;
- SourceIndexer sourceIndexer = (SourceIndexer) indexer;
+ DOMSourceIndexer sourceIndexer = (DOMSourceIndexer) indexer;
switch(kind){
case ICElementDelta.CHANGED:
diff --git a/core/org.eclipse.cdt.core/plugin.xml b/core/org.eclipse.cdt.core/plugin.xml
index 1ccfebb6050..421d68c91aa 100644
--- a/core/org.eclipse.cdt.core/plugin.xml
+++ b/core/org.eclipse.cdt.core/plugin.xml
@@ -580,16 +580,6 @@
</run>
</cextension>
</extension>
- <extension
- name="%CDTIndexer.originalsourceindexer"
- id="originalsourceindexer"
- point="org.eclipse.cdt.core.CIndexer">
- <cextension>
- <run
- class="org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer">
- </run>
- </cextension>
- </extension>
<extension
point="org.eclipse.core.variables.dynamicVariables">
<variable
diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java
index 6645f0677b3..481e7449f12 100644
--- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java
+++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/PatternSearchJob.java
@@ -20,8 +20,8 @@ import org.eclipse.cdt.core.index.IIndexStorage;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.search.ICSearchScope;
import org.eclipse.cdt.internal.core.index.IIndex;
+import org.eclipse.cdt.internal.core.index.cindexstorage.CIndexStorage;
import org.eclipse.cdt.internal.core.index.cindexstorage.Index;
-import org.eclipse.cdt.internal.core.index.sourceindexer.CIndexStorage;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.internal.core.search.indexing.ReadWriteMonitor;
import org.eclipse.cdt.internal.core.search.matching.CSearchPattern;
diff --git a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
index 1ac23d58839..5d223d6c454 100644
--- a/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
+++ b/core/org.eclipse.cdt.core/search/org/eclipse/cdt/internal/core/search/processing/JobManager.java
@@ -15,7 +15,7 @@ package org.eclipse.cdt.internal.core.search.processing;
import org.eclipse.cdt.core.ICLogConstants;
import org.eclipse.cdt.internal.core.Util;
-import org.eclipse.cdt.internal.core.index.sourceindexer.IndexRequest;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMIndexRequest;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.OperationCanceledException;
@@ -205,7 +205,7 @@ public abstract class JobManager implements Runnable {
if( indexJob != null ){
String progressString = null;
IIndexJob job = currentJob();
- if( job instanceof IndexRequest ){
+ if( job instanceof DOMIndexRequest ){
progressString = " ("; //$NON-NLS-1$
progressString += job.toString();
progressString += ")"; //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java
index 2550a772ce2..95d55bb1ab6 100644
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java
+++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/CCorePlugin.java
@@ -27,7 +27,7 @@ import org.eclipse.cdt.core.search.SearchEngine;
import org.eclipse.cdt.internal.core.CDTLogWriter;
import org.eclipse.cdt.internal.core.CDescriptorManager;
import org.eclipse.cdt.internal.core.PathEntryVariableManager;
-import org.eclipse.cdt.internal.core.index.sourceindexer.AbstractIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.AbstractIndexerRunner;
import org.eclipse.cdt.internal.core.model.BufferManager;
import org.eclipse.cdt.internal.core.model.CModelManager;
import org.eclipse.cdt.internal.core.model.DeltaProcessor;
@@ -79,7 +79,7 @@ public class CCorePlugin extends Plugin {
public static final String INDEXER_SIMPLE_ID = "CIndexer"; //$NON-NLS-1$
public static final String INDEXER_UNIQ_ID = PLUGIN_ID + "." + INDEXER_SIMPLE_ID; //$NON-NLS-1$
public final static String PREF_INDEXER = "indexer"; //$NON-NLS-1$
- public final static String DEFAULT_INDEXER_SIMPLE_ID = "originalsourceindexer"; //$NON-NLS-1$
+ public final static String DEFAULT_INDEXER_SIMPLE_ID = "domsourceindexer"; //$NON-NLS-1$
public final static String NULL_INDEXER_SIMPLE_ID = "nullindexer"; //$NON-NLS-1$
public final static String NULL_INDEXER_UNIQUE_ID = PLUGIN_ID + "." + NULL_INDEXER_SIMPLE_ID ; //$NON-NLS-1$
public final static String DEFAULT_INDEXER_UNIQ_ID = PLUGIN_ID + "." + DEFAULT_INDEXER_SIMPLE_ID; //$NON-NLS-1$
@@ -918,10 +918,10 @@ public class CCorePlugin extends Plugin {
} //$NON-NLS-1$
option = Platform.getDebugOption(INDEXER);
- if(option != null) AbstractIndexer.VERBOSE = option.equalsIgnoreCase("true") ; //$NON-NLS-1$
+ if(option != null) AbstractIndexerRunner.VERBOSE = option.equalsIgnoreCase("true") ; //$NON-NLS-1$
option = Platform.getDebugOption(INDEXER_TIMES);
- if (option != null) AbstractIndexer.TIMING = option.equalsIgnoreCase("true"); //$NON-NLS-1$
+ if (option != null) AbstractIndexerRunner.TIMING = option.equalsIgnoreCase("true"); //$NON-NLS-1$
option = Platform.getDebugOption(SEARCH);
if(option != null) SearchEngine.VERBOSE = option.equalsIgnoreCase("true") ; //$NON-NLS-1$
diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerView.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerView.java
index 2029a0a2749..46b6a48e1c2 100644
--- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerView.java
+++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/IndexerView.java
@@ -15,7 +15,6 @@ import java.io.IOException;
import org.eclipse.cdt.core.index.ICDTIndexer;
import org.eclipse.cdt.internal.core.index.IEntryResult;
import org.eclipse.cdt.internal.core.index.IIndex;
-import org.eclipse.cdt.internal.core.index.IIndexer;
import org.eclipse.cdt.ui.testplugin.CTestPlugin;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -81,7 +80,7 @@ public class IndexerView extends ViewPart {
protected Action sortAction;
protected Action displayFullNameAction;
protected Action displayStatsAction;
- protected IIndexer[] indexers = new IIndexer[DEFAULT_INDEXER_SIZE]; // support 1 indexer for now new IIndexer[CTestPlugin.getWorkspace().getRoot().getProjects().length];
+ protected ICDTIndexer[] indexers = new ICDTIndexer[DEFAULT_INDEXER_SIZE]; // support 1 indexer for now new IIndexer[CTestPlugin.getWorkspace().getRoot().getProjects().length];
protected IProject project = null;
protected static ViewContentProvider.StartInitializingIndexerView initializeIndexerViewJob = null;
@@ -524,7 +523,7 @@ public class IndexerView extends ViewPart {
}
}
- public void appendIndexer(IIndexer indexer) {
+ public void appendIndexer(ICDTIndexer indexer) {
// indexers = (IIndexer[])ArrayUtil.append(IIndexer.class, indexers, indexer);
// only support 1 indexer for now
indexers[0] = indexer;
@@ -532,7 +531,7 @@ public class IndexerView extends ViewPart {
public void clearIndexers() {
// for now only support 1 indexer at a time
- indexers = new IIndexer[1];
+ indexers = new ICDTIndexer[1];
}
public void setContentProvider(ViewContentProvider provider) {
diff --git a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/OpenIndexerViewAction.java b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/OpenIndexerViewAction.java
index 730307b7a0d..6be593e1afd 100644
--- a/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/OpenIndexerViewAction.java
+++ b/core/org.eclipse.cdt.ui.tests/src/org/eclipse/cdt/ui/tests/IndexerView/OpenIndexerViewAction.java
@@ -11,7 +11,7 @@
package org.eclipse.cdt.ui.tests.IndexerView;
import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.internal.core.index.IIndexer;
+import org.eclipse.cdt.core.index.ICDTIndexer;
import org.eclipse.cdt.internal.core.model.CProject;
import org.eclipse.core.resources.IProject;
import org.eclipse.jface.action.IAction;
@@ -53,7 +53,7 @@ public class OpenIndexerViewAction implements IViewActionDelegate,
if (tempView != null) {
if (tempView instanceof IndexerView) {
((IndexerView)tempView).clearIndexers();
- IIndexer indexer = CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(proj);
+ ICDTIndexer indexer = CCorePlugin.getDefault().getCoreModel().getIndexManager().getIndexerForProject(proj);
((IndexerView)tempView).appendIndexer(indexer);
((IndexerView)tempView).setContentProvider(((IndexerView)tempView).new ViewContentProvider());
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTests.java
index fa927b019a2..63372472829 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTests.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/contentassist/ContentAssistTests.java
@@ -29,7 +29,7 @@ import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.core.model.IWorkingCopy;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.core.testplugin.FileManager;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.ui.CHelpProviderManager;
import org.eclipse.cdt.internal.ui.text.CHelpBookDescriptor;
import org.eclipse.cdt.internal.ui.text.contentassist.CCompletionProcessor;
@@ -64,7 +64,7 @@ public class ContentAssistTests extends TestCase {
cPrj = CProjectHelper.createCCProject("ContentAssistTestProject", "bin"); //$NON-NLS-1$ //$NON-NLS-2$
project = cPrj.getProject();
- project.setSessionProperty(SourceIndexer.activationKey,new Boolean(false));
+ project.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(false));
} catch ( CoreException e ) {
/*boo*/
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java
index 4629cc660dd..a787274d694 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsCTagsIndexer.java
@@ -25,7 +25,7 @@ import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexer;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.make.core.MakeProjectNature;
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
@@ -74,7 +74,7 @@ public class CPPSelectionTestsCTagsIndexer extends BaseSelectionTestsIndexer
project.setSessionProperty(IndexManager.indexerIDKey, sourceIndexerID);
//Enable indexing on test project
- project.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ project.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
if (project==null) fail("Unable to create project"); //$NON-NLS-1$
IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java
index 45a59df731a..8809eb1891f 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CPPSelectionTestsDOMIndexer.java
@@ -26,7 +26,7 @@ import org.eclipse.cdt.core.index.IIndexChangeListener;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.make.core.MakeProjectNature;
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
@@ -49,7 +49,7 @@ public class CPPSelectionTestsDOMIndexer extends BaseSelectionTestsIndexer imple
IFile file;
NullProgressMonitor monitor;
IndexManager indexManager;
- SourceIndexer sourceIndexer;
+ DOMSourceIndexer sourceIndexer;
static final String sourceIndexerID = "org.eclipse.cdt.core.domsourceindexer"; //$NON-NLS-1$
@@ -73,7 +73,7 @@ public class CPPSelectionTestsDOMIndexer extends BaseSelectionTestsIndexer imple
project.setSessionProperty(IndexManager.indexerIDKey, sourceIndexerID);
//Enable indexing on test project
- project.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ project.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
if (project==null) fail("Unable to create project"); //$NON-NLS-1$
IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
@@ -88,7 +88,7 @@ public class CPPSelectionTestsDOMIndexer extends BaseSelectionTestsIndexer imple
//indexManager.reset();
//Get the indexer used for the test project
- sourceIndexer = (SourceIndexer) indexManager.getIndexerForProject(project);
+ sourceIndexer = (DOMSourceIndexer) indexManager.getIndexerForProject(project);
sourceIndexer.addIndexChangeListener(this);
}
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java
index dd4afccab31..3a1b14a1dd4 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsCTagsIndexer.java
@@ -24,7 +24,7 @@ import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
import org.eclipse.cdt.internal.core.index.ctagsindexer.CTagsIndexer;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.make.core.MakeProjectNature;
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
@@ -76,7 +76,7 @@ public class CSelectionTestsCTagsIndexer extends BaseSelectionTestsIndexer
project.setSessionProperty(IndexManager.indexerIDKey, sourceIndexerID);
//Enable indexing on test project
- project.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ project.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
if (project==null) fail("Unable to create project"); //$NON-NLS-1$
IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java
index c62eaa5c379..77fbee2e05c 100644
--- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java
+++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selectiontests/CSelectionTestsDOMIndexer.java
@@ -23,7 +23,7 @@ import org.eclipse.cdt.core.index.IIndexChangeListener;
import org.eclipse.cdt.core.model.ICProject;
import org.eclipse.cdt.core.testplugin.CProjectHelper;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.make.core.MakeProjectNature;
import org.eclipse.cdt.make.core.scannerconfig.ScannerConfigNature;
@@ -46,7 +46,7 @@ public class CSelectionTestsDOMIndexer extends BaseSelectionTestsIndexer impleme
IFile file;
NullProgressMonitor monitor;
IndexManager indexManager;
- SourceIndexer sourceIndexer;
+ DOMSourceIndexer sourceIndexer;
static final String sourceIndexerID = "org.eclipse.cdt.core.domsourceindexer"; //$NON-NLS-1$
@@ -70,7 +70,7 @@ public class CSelectionTestsDOMIndexer extends BaseSelectionTestsIndexer impleme
project.setSessionProperty(IndexManager.indexerIDKey, sourceIndexerID);
//Enable indexing on test project
- project.setSessionProperty(SourceIndexer.activationKey,new Boolean(true));
+ project.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
if (project==null) fail("Unable to create project"); //$NON-NLS-1$
IProjectDescription description = ResourcesPlugin.getWorkspace().newProjectDescription(project.getName());
@@ -84,7 +84,7 @@ public class CSelectionTestsDOMIndexer extends BaseSelectionTestsIndexer impleme
//indexManager.reset();
//Get the indexer used for the test project
- sourceIndexer = (SourceIndexer) indexManager.getIndexerForProject(project);
+ sourceIndexer = (DOMSourceIndexer) indexManager.getIndexerForProject(project);
sourceIndexer.addIndexChangeListener(this);
}
diff --git a/core/org.eclipse.cdt.ui/plugin.properties b/core/org.eclipse.cdt.ui/plugin.properties
index b517b2c5b41..68f99a8fa75 100644
--- a/core/org.eclipse.cdt.ui/plugin.properties
+++ b/core/org.eclipse.cdt.ui/plugin.properties
@@ -317,7 +317,6 @@ completionContributors=Code Assist Completion Contributor
indexerPrefName=Indexer
# indexer names
-CDTIndexer.originalsourceindexer=Original C/C++ Indexer
CDTIndexer.domsourceindexer=Full C/C++ Indexer (declarations and cross references)
CDTIndexer.ctagsindexer=CTags Indexer (declarations only)
CDTIndexer.nullindexer=No Indexer (search-based features will not work correctly)
diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml
index 3295a4cfa68..e6b7d5bbaad 100644
--- a/core/org.eclipse.cdt.ui/plugin.xml
+++ b/core/org.eclipse.cdt.ui/plugin.xml
@@ -1340,7 +1340,7 @@
<extension
point="org.eclipse.cdt.ui.IndexerPage">
<indexerUI
- class="org.eclipse.cdt.ui.dialogs.SourceIndexerBlock"
+ class="org.eclipse.cdt.ui.dialogs.DOMSourceIndexerBlock"
id="org.eclipse.cdt.ui.DOMASTSourceIndexerUI"
indexerID="org.eclipse.cdt.core.domsourceindexer"
name="%CDTIndexer.domsourceindexer"/>
@@ -1354,11 +1354,6 @@
indexerID="org.eclipse.cdt.core.nullindexer"
name="%CDTIndexer.nullindexer"
id="org.eclipse.cdt.ui.nullindexerUI"/>
- <indexerUI
- class="org.eclipse.cdt.ui.dialogs.SourceIndexerBlock"
- indexerID="org.eclipse.cdt.core.originalsourceindexer"
- name="%CDTIndexer.originalsourceindexer"
- id="org.eclipse.cdt.ui.originalSourceIndexerUI"/>
<!--TODO reverse this <indexerUI
class="org.eclipse.cdt.ui.dialogs.NullIndexerBlock"
id="org.eclipse.cdt.ui.DOMASTSourceIndexerUI"
diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/SourceIndexerBlock.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DOMSourceIndexerBlock.java
index 33044959df8..98b63b4b3ee 100644
--- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/SourceIndexerBlock.java
+++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/ui/dialogs/DOMSourceIndexerBlock.java
@@ -15,7 +15,7 @@ import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.ICDescriptor;
import org.eclipse.cdt.core.ICExtensionReference;
import org.eclipse.cdt.core.index.ICDTIndexer;
-import org.eclipse.cdt.internal.core.index.sourceindexer.SourceIndexer;
+import org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer;
import org.eclipse.cdt.internal.ui.CUIMessages;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.index.AbstractIndexerPage;
@@ -30,7 +30,7 @@ import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Group;
-public class SourceIndexerBlock extends AbstractIndexerPage {
+public class DOMSourceIndexerBlock extends AbstractIndexerPage {
public final static String PREF_INDEX_MARKERS = CUIPlugin.PLUGIN_ID + ".indexmarkers"; //$NON-NLS-1$
@@ -96,8 +96,8 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
int indexMarkersInt = Integer.parseInt(indexMarkers);
if (indexMarkersInt != oldIndexerProblemsValue && indexMarkersInt == 0)
- if (indexer instanceof SourceIndexer)
- ((SourceIndexer) indexer).removeIndexerProblems(currentProject);
+ if (indexer instanceof DOMSourceIndexer)
+ ((DOMSourceIndexer) indexer).removeIndexerProblems(currentProject);
}
/* (non-Javadoc)
@@ -130,10 +130,10 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
public String getIndexerProblemsValuesString(){
int result = 0;
- result |= preprocessorProblemsEnabled.getSelection() ? SourceIndexer.PREPROCESSOR_PROBLEMS_BIT : 0;
+ result |= preprocessorProblemsEnabled.getSelection() ? DOMSourceIndexer.PREPROCESSOR_PROBLEMS_BIT : 0;
if( syntacticProblemsEnabled != null )
- result |= syntacticProblemsEnabled.getSelection() ? SourceIndexer.SYNTACTIC_PROBLEMS_BIT : 0;
- result |= semanticProblemsEnabled.getSelection() ? SourceIndexer.SEMANTIC_PROBLEMS_BIT : 0;
+ result |= syntacticProblemsEnabled.getSelection() ? DOMSourceIndexer.SYNTACTIC_PROBLEMS_BIT : 0;
+ result |= semanticProblemsEnabled.getSelection() ? DOMSourceIndexer.SEMANTIC_PROBLEMS_BIT : 0;
Integer tempInt = new Integer(result);
return tempInt.toString();
@@ -172,10 +172,10 @@ public class SourceIndexerBlock extends AbstractIndexerPage {
}
public void setIndexerProblemValues( int value ){
- preprocessorProblemsEnabled.setSelection( (value & SourceIndexer.PREPROCESSOR_PROBLEMS_BIT) != 0 );
+ preprocessorProblemsEnabled.setSelection( (value & DOMSourceIndexer.PREPROCESSOR_PROBLEMS_BIT) != 0 );
if( syntacticProblemsEnabled != null )
- syntacticProblemsEnabled.setSelection( (value & SourceIndexer.SYNTACTIC_PROBLEMS_BIT) != 0 );
- semanticProblemsEnabled.setSelection( (value & SourceIndexer.SEMANTIC_PROBLEMS_BIT) != 0 );
+ syntacticProblemsEnabled.setSelection( (value & DOMSourceIndexer.SYNTACTIC_PROBLEMS_BIT) != 0 );
+ semanticProblemsEnabled.setSelection( (value & DOMSourceIndexer.SEMANTIC_PROBLEMS_BIT) != 0 );
}
public void loadPreferences() {

Back to the top