From 68fce7ef7ce38a9eb7bf459194a04cb5c7b03295 Mon Sep 17 00:00:00 2001 From: Markus Schorn Date: Fri, 10 Nov 2006 10:55:15 +0000 Subject: [PATCH] Follow up for 150075, progress indication for indexer; Cancel indexing on manual reindex request. --- .../internal/index/tests/IndexBugsTests.java | 4 +- .../index/tests/IndexIncludeTest.java | 2 +- .../pdom/tests/CCompositeTypeTests.java | 4 +- .../internal/pdom/tests/CFunctionTests.java | 4 +- .../pdom/tests/CPPCompositeTypeTests.java | 4 +- .../internal/pdom/tests/CPPFieldTests.java | 4 +- .../internal/pdom/tests/CPPFunctionTests.java | 4 +- .../internal/pdom/tests/CPPVariableTests.java | 4 +- .../internal/pdom/tests/CVariableTests.java | 4 +- .../cdt/internal/pdom/tests/ClassTests.java | 4 +- .../cdt/internal/pdom/tests/DefDeclTests.java | 4 +- .../internal/pdom/tests/EnumerationTests.java | 4 +- .../pdom/tests/FilesOnReindexTests.java | 3 +- .../cdt/internal/pdom/tests/MethodTests.java | 4 +- .../internal/pdom/tests/NamespaceTests.java | 4 +- .../OverloadsWithinCommonHeaderTests.java | 4 +- .../tests/OverloadsWithinSingleTUTests.java | 4 +- .../internal/pdom/tests/PDOMSearchTest.java | 4 +- .../pdom/tests/RaceCondition157992Test.java | 4 +- .../cdt/internal/pdom/tests/TypesTests.java | 4 +- .../cdt/core/browser/AllTypesCache.java | 5 +- .../cdt/core/browser/PDOMTypeInfo.java | 4 +- .../cdt/core/dom/IPDOMIndexerTask.java | 10 +- .../eclipse/cdt/core/dom/IPDOMManager.java | 12 +-- .../cdt/core/dom/ast/ASTCompletionNode.java | 2 +- .../parser/AbstractGNUSourceCodeParser.java | 4 +- .../index/IndexBasedCodeReaderFactory.java | 14 ++- .../cdt/internal/core/pdom/Messages.java | 1 + .../internal/core/pdom/PDOMIndexerJob.java | 39 +------- .../cdt/internal/core/pdom/PDOMManager.java | 80 ++++++++++++---- .../core/pdom/indexer/PDOMIndexerTask.java | 27 ++++-- .../indexer/fast/PDOMFastHandleDelta.java | 23 ++++- .../pdom/indexer/fast/PDOMFastIndexer.java | 2 +- .../pdom/indexer/fast/PDOMFastIndexerJob.java | 93 ++++++++++--------- .../pdom/indexer/fast/PDOMFastReindex.java | 22 ++--- .../indexer/full/PDOMFullHandleDelta.java | 30 ++++-- .../pdom/indexer/full/PDOMFullIndexer.java | 2 +- .../pdom/indexer/full/PDOMFullIndexerJob.java | 78 +++++++++------- .../pdom/indexer/full/PDOMFullReindex.java | 26 +++--- .../pdom/indexer/nulli/PDOMNullIndexer.java | 8 +- .../internal/core/pdom/messages.properties | 1 + .../src/org/eclipse/cdt/core/CCorePlugin.java | 3 - .../core/CCorePluginResources.properties | 1 + .../callhierarchy/CallHierarchyBaseTest.java | 10 +- .../text/selection/ResolveBindingTests.java | 12 +-- .../ui/actions/PDOMUpdateProjectAction.java | 12 +-- .../ui/indexview/CountNodeAction.java | 18 ++-- .../cdt/internal/ui/indexview/IndexView.java | 49 +++++----- .../indexview/RebuildIndexActionDelegate.java | 12 +-- .../PDOMCompletionContributor.java | 4 +- 50 files changed, 380 insertions(+), 301 deletions(-) diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java index 55f2dbfcc95..c5d70685044 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexBugsTests.java @@ -18,7 +18,6 @@ import junit.framework.TestSuite; import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IName; -import org.eclipse.cdt.core.dom.IPDOMIndexer; import org.eclipse.cdt.core.dom.IPDOMManager; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; @@ -57,8 +56,7 @@ public class IndexBugsTests extends BaseTestCase { protected void setUp() throws CoreException { fCProject= CProjectHelper.createCCProject("__bugsTest__", "bin", IPDOMManager.ID_FAST_INDEXER); - IPDOMIndexer indexer = CCoreInternals.getPDOMManager().getIndexer(fCProject); - indexer.reindex(); + CCoreInternals.getPDOMManager().reindex(fCProject); fIndex= CCorePlugin.getIndexManager().getIndex(fCProject); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java index df5e740d12f..9ae4dd9ccb2 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/index/tests/IndexIncludeTest.java @@ -183,7 +183,7 @@ public class IndexIncludeTest extends IndexTestBase { String content = "// comment \n#include \"header20061107.h\"\n"; IFile file= TestSourceReader.createFile(fProject.getProject(), "intermed20061107.h", content); TestSourceReader.createFile(fProject.getProject(), "source20061107.cpp", "#include \"intermed20061107.h\"\n"); - CCoreInternals.getPDOMManager().getIndexer(fProject).reindex(); + CCoreInternals.getPDOMManager().reindex(fProject); waitForIndexer(); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CCompositeTypeTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CCompositeTypeTests.java index 946bf4bd78e..b19459810bf 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CCompositeTypeTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CCompositeTypeTests.java @@ -16,11 +16,11 @@ import java.util.regex.Pattern; import junit.framework.Test; import junit.framework.TestSuite; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.index.IIndexBinding; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.NullProgressMonitor; @@ -41,7 +41,7 @@ public class CCompositeTypeTests extends PDOMTestBase { CCompositeTypeTests foo = null; project = createProject("compositeTypeTests"); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(project); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CFunctionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CFunctionTests.java index 784ab6b3645..4f119a3c04b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CFunctionTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CFunctionTests.java @@ -13,10 +13,10 @@ package org.eclipse.cdt.internal.pdom.tests; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IFunction; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; /** @@ -34,7 +34,7 @@ public class CFunctionTests extends PDOMTestBase { protected void setUp() throws Exception { project = createProject("functionTests"); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(project); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPCompositeTypeTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPCompositeTypeTests.java index 222399c2765..b4e5fa5af28 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPCompositeTypeTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPCompositeTypeTests.java @@ -14,9 +14,9 @@ package org.eclipse.cdt.internal.pdom.tests; import junit.framework.Test; import junit.framework.TestSuite; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.ICompositeType; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; /** @@ -36,7 +36,7 @@ public class CPPCompositeTypeTests extends PDOMTestBase { CPPCompositeTypeTests foo = null; project = createProject("compositeTypeTests"); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(project); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFieldTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFieldTests.java index 98dcd657479..f7e9f46f491 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFieldTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFieldTests.java @@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.pdom.tests; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IBasicType; import org.eclipse.cdt.core.dom.ast.IBinding; @@ -21,6 +20,7 @@ import org.eclipse.cdt.core.dom.ast.IField; import org.eclipse.cdt.core.dom.ast.cpp.ICPPField; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMember; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.CoreException; @@ -39,7 +39,7 @@ public class CPPFieldTests extends PDOMTestBase { protected void setUp() throws Exception { project = createProject("fieldTests"); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(project); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java index f8d13234468..945c91f50b4 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPFunctionTests.java @@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.pdom.tests; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.DOMException; import org.eclipse.cdt.core.dom.ast.IBasicType; import org.eclipse.cdt.core.dom.ast.IBinding; @@ -23,6 +22,7 @@ import org.eclipse.cdt.core.dom.ast.IParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPBasicType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.CoreException; @@ -42,7 +42,7 @@ public class CPPFunctionTests extends PDOMTestBase { protected void setUp() throws Exception { project = createProject("functionTests"); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(project); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPVariableTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPVariableTests.java index f2555603a3f..d24d0730449 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPVariableTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CPPVariableTests.java @@ -13,10 +13,10 @@ package org.eclipse.cdt.internal.pdom.tests; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; /** @@ -34,7 +34,7 @@ public class CPPVariableTests extends PDOMTestBase { protected void setUp() throws Exception { project = createProject("variableTests"); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(project); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CVariableTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CVariableTests.java index 502dda55986..c7443d1772b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CVariableTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/CVariableTests.java @@ -13,10 +13,10 @@ package org.eclipse.cdt.internal.pdom.tests; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IVariable; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; /** @@ -34,7 +34,7 @@ public class CVariableTests extends PDOMTestBase { protected void setUp() throws Exception { project = createProject("variableTests"); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(project); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java index cb65c108701..ed8bf77fcde 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/ClassTests.java @@ -16,7 +16,6 @@ import java.util.regex.Pattern; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IName; import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IBinding; @@ -28,6 +27,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; import org.eclipse.core.runtime.NullProgressMonitor; @@ -47,7 +47,7 @@ public class ClassTests extends PDOMTestBase { protected void setUp() throws Exception { if (pdom == null) { ICProject project = createProject("classTests"); - pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(project); } pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/DefDeclTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/DefDeclTests.java index 0b11911cc5d..22097b6feb0 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/DefDeclTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/DefDeclTests.java @@ -17,7 +17,6 @@ import java.util.regex.Pattern; import junit.framework.AssertionFailedError; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IName; import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IBinding; @@ -27,6 +26,7 @@ import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.testplugin.util.TestSourceReader; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; @@ -53,7 +53,7 @@ public class DefDeclTests extends PDOMTestBase { String requiredName = "defDeclTests"; ICProject cproject = createProject(requiredName); this.projectName = cproject.getElementName(); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(cproject); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(cproject); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java index 165b3fdc804..cbef7b4e318 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/EnumerationTests.java @@ -15,7 +15,6 @@ import java.util.regex.Pattern; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IName; import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IBinding; @@ -24,6 +23,7 @@ import org.eclipse.cdt.core.dom.ast.IEnumerator; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.NullProgressMonitor; @@ -42,7 +42,7 @@ public class EnumerationTests extends PDOMTestBase { protected void setUp() throws Exception { if (pdom == null) { ICProject project = createProject("enumerationTests"); - pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(project); } pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/FilesOnReindexTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/FilesOnReindexTests.java index 6342cd16a3f..9fbec96994b 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/FilesOnReindexTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/FilesOnReindexTests.java @@ -20,6 +20,7 @@ import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.IIndexFile; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.core.resources.IFile; import org.eclipse.core.runtime.CoreException; @@ -53,7 +54,7 @@ public class FilesOnReindexTests extends PDOMTestBase { IFile file = project.getProject().getFile("simple.cpp"); performAssertions(file); pdom.releaseReadLock(); - CCorePlugin.getPDOMManager().getIndexer(project).reindex(); + CCoreInternals.getPDOMManager().reindex(project); // wait until the indexer is done assertTrue(CCorePlugin.getIndexManager().joinIndexer(360000, new NullProgressMonitor())); diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/MethodTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/MethodTests.java index 1f12f8f44de..e38d6e50e94 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/MethodTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/MethodTests.java @@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.pdom.tests; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IBasicType; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IParameter; @@ -23,6 +22,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMember; import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; /** @@ -39,7 +39,7 @@ public class MethodTests extends PDOMTestBase { protected void setUp() throws Exception { project = createProject("methodTests"); - pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(project); pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/NamespaceTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/NamespaceTests.java index 71a0a433c8b..5f753ed21a1 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/NamespaceTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/NamespaceTests.java @@ -15,7 +15,6 @@ import java.util.regex.Pattern; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IName; import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IBinding; @@ -26,6 +25,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; @@ -49,7 +49,7 @@ public class NamespaceTests extends PDOMTestBase { protected void setUp() throws Exception { if (pdom == null) { ICProject project = createProject("namespaceTests", true); - pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(project); } pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/OverloadsWithinCommonHeaderTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/OverloadsWithinCommonHeaderTests.java index 550488335f2..6aa016b1608 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/OverloadsWithinCommonHeaderTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/OverloadsWithinCommonHeaderTests.java @@ -14,13 +14,13 @@ import java.util.regex.Pattern; import junit.framework.TestSuite; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IBasicType; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IPointerType; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.dom.Linkage; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.CoreException; @@ -41,7 +41,7 @@ public class OverloadsWithinCommonHeaderTests extends PDOMTestBase { protected void setUp() throws Exception { if (pdom == null) { ICProject project = createProject("overloadsWithinCommonHeader", true); - pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(project); } pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/OverloadsWithinSingleTUTests.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/OverloadsWithinSingleTUTests.java index 06c2161a4a9..0e74c22d4a9 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/OverloadsWithinSingleTUTests.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/OverloadsWithinSingleTUTests.java @@ -14,11 +14,11 @@ import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IBasicType; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.core.runtime.CoreException; @@ -35,7 +35,7 @@ public class OverloadsWithinSingleTUTests extends PDOMTestBase { protected void setUp() throws Exception { if (pdom == null) { ICProject project = createProject("overloadsWithinSingleTU"); - pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(project); } pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java index 8307841bd1d..9685c5de726 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/PDOMSearchTest.java @@ -15,7 +15,6 @@ import java.util.regex.Pattern; import junit.framework.Test; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IName; import org.eclipse.cdt.core.dom.ast.IASTFileLocation; import org.eclipse.cdt.core.dom.ast.IBinding; @@ -28,6 +27,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.index.IndexFilter; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode; @@ -54,7 +54,7 @@ public class PDOMSearchTest extends PDOMTestBase { protected void setUp() throws Exception { if (pdom == null) { ICProject project = createProject("searchTests", true); - pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project); + pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(project); } pdom.acquireReadLock(); } diff --git a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/RaceCondition157992Test.java b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/RaceCondition157992Test.java index 228971a98f1..97ba02ddc6a 100644 --- a/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/RaceCondition157992Test.java +++ b/core/org.eclipse.cdt.core.tests/parser/org/eclipse/cdt/internal/pdom/tests/RaceCondition157992Test.java @@ -14,9 +14,9 @@ package org.eclipse.cdt.internal.pdom.tests; import java.util.regex.Pattern; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.core.runtime.NullProgressMonitor; @@ -30,7 +30,7 @@ public class RaceCondition157992Test extends PDOMTestBase { for(int i=0; i 0 ? new PDOMTypeReference(names[0], project) : null; } catch (CoreException e) { diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMIndexerTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMIndexerTask.java index 21f3f6a49eb..dae6d7e7db1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMIndexerTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMIndexerTask.java @@ -37,13 +37,19 @@ public interface IPDOMIndexerTask { * Used by the framework to report progress. * @since 4.0 */ - public int getRemainingSubtaskCount(); + public int estimateRemainingSources(); /** * Used by the framework to report progress. * @since 4.0 */ - public int getCompletedSubtaskCount(); + public int getCompletedSourcesCount(); + + /** + * Used by the framework to report progress. + * @since 4.0 + */ + public int getCompletedHeadersCount(); /** * Returns information about the current subtask. diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMManager.java index 336d2f59d5d..1154ddc2e0a 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMManager.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMManager.java @@ -23,15 +23,13 @@ public interface IPDOMManager { public static final String ID_NO_INDEXER= "org.eclipse.cdt.core.nullindexer"; //$NON-NLS-1$ public static final String ID_FAST_INDEXER= "org.eclipse.cdt.core.fastIndexer"; //$NON-NLS-1$ public static final String ID_FULL_INDEXER= "org.eclipse.cdt.core.domsourceindexer"; //$NON-NLS-1$ - - // Getting the PDOM + /** - * mstodo deprecate: use CCorePlugin.getIndexManager().getIndex(...). + * Clears the entire index of the project and schedules the indexer. + * @throws CoreException + * @since 4.0 */ - public IPDOM getPDOM(ICProject project) throws CoreException; - - // Get the indexer for a given project - public IPDOMIndexer getIndexer(ICProject project); + public void reindex(ICProject project) throws CoreException; // Getting and setting indexer Ids public String getDefaultIndexerId(); diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java index ac0c45daac1..459f34adfc0 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/ASTCompletionNode.java @@ -66,7 +66,7 @@ public class ASTCompletionNode { * @return the prefix text up to the point of completion */ public String getPrefix() { - return completionToken.getType() != IToken.tEOC ? completionToken.getImage() : ""; + return completionToken.getType() != IToken.tEOC ? completionToken.getImage() : ""; //$NON-NLS-1$ } /** diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java index 28dc8c8f008..a870fb7f5ad 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/AbstractGNUSourceCodeParser.java @@ -371,7 +371,7 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { } public String toString() { - return scanner.toString(); //$NON-NLS-1$ + return scanner.toString(); } /** @@ -415,7 +415,7 @@ public abstract class AbstractGNUSourceCodeParser implements ISourceCodeParser { resolveAmbiguities(); log.traceLog("Ambiguity resolution : " //$NON-NLS-1$ + (System.currentTimeMillis() - startTime) + "ms" //$NON-NLS-1$ - ); //$NON-NLS-1$ //$NON-NLS-2$ + ); IASTTranslationUnit result = getTranslationUnit(); nullifyTranslationUnit(); return result; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexBasedCodeReaderFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexBasedCodeReaderFactory.java index a5b17cb2a7a..72458b7ce0f 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexBasedCodeReaderFactory.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/index/IndexBasedCodeReaderFactory.java @@ -50,13 +50,21 @@ public class IndexBasedCodeReaderFactory implements ICodeReaderFactory { private static final char[] EMPTY_CHARS = new char[0]; + private static class NeedToParseException extends Exception {} public static class FileInfo { private FileInfo() {} public IIndexFile fFile= null; public IMacro[] fMacros= null; - public boolean fNeedToIndex= false; + private boolean fRequested= false; + + public boolean isRequested() { + return fRequested; + } + public void setRequested(boolean val) { + fRequested= val; + } } - private static class NeedToParseException extends Exception {} + public IndexBasedCodeReaderFactory(IIndex index) { this.index = index; @@ -138,7 +146,7 @@ public class IndexBasedCodeReaderFactory implements ICodeReaderFactory { if (!target.add(fileInfo)) { return; } - if (fileInfo.fFile == null || fileInfo.fNeedToIndex) { + if (fileInfo.fFile == null || fileInfo.isRequested()) { throw new NeedToParseException(); } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/Messages.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/Messages.java index 90c19c50ab5..fe8f7ae5dfb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/Messages.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/Messages.java @@ -15,6 +15,7 @@ import org.eclipse.osgi.util.NLS; public class Messages extends NLS { private static final String BUNDLE_NAME = "org.eclipse.cdt.internal.core.pdom.messages"; //$NON-NLS-1$ + public static String PDOMManager_indexMonitorDetail; public static String PDOMManager_JoinIndexerTask; public static String PDOMManager_notifyJob_label; public static String PDOMManager_notifyTask_message; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMIndexerJob.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMIndexerJob.java index f671409e4a7..af52b139f9c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMIndexerJob.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMIndexerJob.java @@ -11,8 +11,6 @@ *******************************************************************************/ package org.eclipse.cdt.internal.core.pdom; -import java.text.MessageFormat; - import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMIndexer; import org.eclipse.cdt.core.dom.IPDOMIndexerTask; @@ -29,7 +27,6 @@ import org.eclipse.core.runtime.jobs.Job; public class PDOMIndexerJob extends Job { private final PDOMManager pdomManager; - private int fCompletedSubtaskCount= 0; private IPDOMIndexerTask currentTask; private boolean cancelledByManager= false; private Object taskMutex = new Object(); @@ -48,15 +45,10 @@ public class PDOMIndexerJob extends Job { this.monitor = monitor; long start = System.currentTimeMillis(); - String taskName = CCorePlugin.getResourceString("pdom.indexer.task"); //$NON-NLS-1$ - monitor.beginTask(taskName, IProgressMonitor.UNKNOWN); startMonitorJob(monitor); try { do { synchronized(taskMutex) { - if (currentTask != null) { - fCompletedSubtaskCount+= currentTask.getCompletedSubtaskCount(); - } currentTask= null; taskMutex.notify(); @@ -118,10 +110,13 @@ public class PDOMIndexerJob extends Job { } private void startMonitorJob(final IProgressMonitor monitor) { - fMonitorJob= new Job("cdt indexer monitor job") { //$NON-NLS-1$ + fMonitorJob= new Job(CCorePlugin.getResourceString("PDOMIndexerJob.updateMonitorJob")) { //$NON-NLS-1$ protected IStatus run(IProgressMonitor m) { + String taskName = CCorePlugin.getResourceString("pdom.indexer.task"); //$NON-NLS-1$ + monitor.beginTask(taskName, 1000); + int currentTick= 0; while(!m.isCanceled()) { - updateMonitor(monitor); + currentTick= pdomManager.getMonitorMessage(monitor, currentTick, 1000); try { Thread.sleep(350); } catch (InterruptedException e) { @@ -135,21 +130,6 @@ public class PDOMIndexerJob extends Job { fMonitorJob.schedule(); } - protected void updateMonitor(IProgressMonitor monitor) { - String detail= null; - synchronized(taskMutex) { - if (currentTask != null) { - detail= currentTask.getMonitorMessageDetail(); - } - } - String msg= pdomManager.getMonitorMessage(); - if (detail != null) { - msg= MessageFormat.format("{0}: {1}", new Object[] {msg, detail}); //$NON-NLS-1$ - } - - monitor.subTask(msg); - } - public void cancelJobs(IPDOMIndexer indexer) { synchronized (taskMutex) { if (currentTask != null && currentTask.getIndexer() == indexer) { @@ -165,13 +145,4 @@ public class PDOMIndexerJob extends Job { } } } - - public int getCompletedSubtaskCount() { - synchronized (taskMutex) { - if (currentTask != null) { - return currentTask.getCompletedSubtaskCount() + fCompletedSubtaskCount; - } - } - return fCompletedSubtaskCount; - } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java index 02b353d1592..a9e7af1de61 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMManager.java @@ -96,6 +96,8 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen private PDOMIndexerJob fIndexerJob; private IPDOMIndexerTask fCurrentTask; private LinkedList fTaskQueue = new LinkedList(); + private int fCompletedSources; + private int fCompletedHeaders; /** * Stores mapping from pdom to project, used to serialize\ creation of new pdoms. @@ -423,6 +425,8 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen synchronized (fTaskQueueMutex) { fTaskQueue.addLast(subjob); if (fIndexerJob == null) { + fCompletedSources= 0; + fCompletedHeaders= 0; fIndexerJob = new PDOMIndexerJob(this); fIndexerJob.schedule(); notifyBusy= true; @@ -443,6 +447,10 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen idle= true; } else { + if (fCurrentTask != null) { + fCompletedSources+= fCurrentTask.getCompletedSourcesCount(); + fCompletedHeaders+= fCurrentTask.getCompletedHeadersCount(); + } result= fCurrentTask= (IPDOMIndexerTask)fTaskQueue.removeFirst(); } } @@ -536,6 +544,10 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen } } } + cancelIndexerJobs(indexer); + } + + private void cancelIndexerJobs(IPDOMIndexer indexer) { PDOMIndexerJob jobToCancel= null; synchronized (fTaskQueueMutex) { for (Iterator iter = fTaskQueue.iterator(); iter.hasNext();) { @@ -553,6 +565,23 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen } } + public void reindex(ICProject project) throws CoreException { + assert !Thread.holdsLock(fPDOMs); + IPDOMIndexer indexer= null; + synchronized (fIndexerMutex) { + indexer= getIndexer(project, false); + } + // don't attempt to hold lock on indexerMutex while cancelling + if (indexer != null) { + cancelIndexerJobs(indexer); + } + + synchronized(fIndexerMutex) { + indexer= getIndexer(project, true); + indexer.reindex(); + } + } + public void addIndexChangeListener(IIndexChangeListener listener) { fChangeListeners.add(listener); } @@ -644,14 +673,15 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen } public boolean joinIndexer(int waitMaxMillis, IProgressMonitor monitor) { - monitor.beginTask(Messages.PDOMManager_JoinIndexerTask, IProgressMonitor.UNKNOWN); + monitor.beginTask(Messages.PDOMManager_JoinIndexerTask, 1000); long limit= System.currentTimeMillis()+waitMaxMillis; try { while (true) { + int currentTicks= 0; if (monitor.isCanceled()) { return false; } - monitor.subTask(getMonitorMessage()); + currentTicks= getMonitorMessage(monitor, currentTicks, 1000); synchronized(fTaskQueueMutex) { if (isIndexerIdle()) { return true; @@ -680,29 +710,44 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen } } - String getMonitorMessage() { + int getMonitorMessage(IProgressMonitor monitor, int currentTicks, int base) { assert !Thread.holdsLock(fTaskQueueMutex); - int remainingCount= 0; - int completedCount= 0; - IPDOMIndexerTask currentTask= null; - PDOMIndexerJob currentJob= null; + int remainingSources= 0; + int completedSources= 0; + int completedHeaders= 0; + String detail= null; synchronized (fTaskQueueMutex) { + completedHeaders= fCompletedHeaders; + completedSources= fCompletedSources; for (Iterator iter = fTaskQueue.iterator(); iter.hasNext();) { IPDOMIndexerTask task = (IPDOMIndexerTask) iter.next(); - remainingCount+= task.getRemainingSubtaskCount(); + remainingSources+= task.estimateRemainingSources(); + } + if (fCurrentTask != null) { + remainingSources+= fCurrentTask.estimateRemainingSources(); + completedHeaders+= fCurrentTask.getCompletedHeadersCount(); + completedSources+= fCurrentTask.getCompletedSourcesCount(); + detail= fCurrentTask.getMonitorMessageDetail(); } - currentTask= fCurrentTask; - currentJob= fIndexerJob; } - if (currentTask != null) { - remainingCount += currentTask.getRemainingSubtaskCount(); + + int totalSources = remainingSources+completedSources; + String msg= MessageFormat.format(Messages.PDOMManager_indexMonitorDetail, new Object[] { + new Integer(completedSources), new Integer(totalSources), + new Integer(completedHeaders)}); + if (detail != null) { + msg= msg+ ": " + detail; //$NON-NLS-1$ } - if (currentJob != null) { - completedCount= currentJob.getCompletedSubtaskCount(); + monitor.subTask(msg); + + if (completedSources > 0 && totalSources >= completedSources) { + int newTick= completedSources*base/totalSources; + if (newTick > currentTicks) { + monitor.worked(newTick-currentTicks); + return newTick; + } } - return MessageFormat.format("{0}/{1}", new Object[] { //$NON-NLS-1$ - new Integer(completedCount), new Integer(remainingCount+completedCount) - }); + return currentTicks; } @@ -725,4 +770,5 @@ public class PDOMManager implements IPDOMManager, IWritableIndexManager, IListen public IIndex getIndex(ICProject[] projects, int options) throws CoreException { return fIndexFactory.getIndex(projects, options); } + } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java index 79e6d0b3e13..d6d2fefe3aa 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/PDOMIndexerTask.java @@ -37,16 +37,26 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; +import org.eclipse.core.runtime.Platform; public abstract class PDOMIndexerTask implements IPDOMIndexerTask { private static final Object NO_CONTEXT = new Object(); protected static final int MAX_ERRORS = 10; - protected volatile int fTotalTasks= 0; - protected volatile int fCompletedTasks= 0; + protected volatile int fTotalSourcesEstimate= 0; + protected volatile int fCompletedSources= 0; + protected volatile int fCompletedHeaders= 0; protected int fErrorCount; protected Map fContextMap= new HashMap(); protected volatile String fMessage; + protected boolean fTrace; + + protected PDOMIndexerTask() { + String trace = Platform.getDebugOption(CCorePlugin.PLUGIN_ID + "/debug/indexer"); //$NON-NLS-1$ + if (trace != null && trace.equalsIgnoreCase("true")) { //$NON-NLS-1$ + fTrace= true; + } + } protected void processDelta(ICElementDelta delta, Collection added, Collection changed, Collection removed) throws CoreException { int flags = delta.getFlags(); @@ -199,11 +209,16 @@ public abstract class PDOMIndexerTask implements IPDOMIndexerTask { return fMessage; } - final public int getRemainingSubtaskCount() { - return fTotalTasks-fCompletedTasks; + + final public int estimateRemainingSources() { + return fTotalSourcesEstimate-fCompletedSources; } - final public int getCompletedSubtaskCount() { - return fCompletedTasks; + public int getCompletedHeadersCount() { + return fCompletedHeaders; + } + + public int getCompletedSourcesCount() { + return fCompletedSources; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastHandleDelta.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastHandleDelta.java index d2917aad7af..c57ebd0cec9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastHandleDelta.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastHandleDelta.java @@ -31,7 +31,7 @@ class PDOMFastHandleDelta extends PDOMFastIndexerJob { public PDOMFastHandleDelta(PDOMFastIndexer indexer, ICElementDelta delta) throws CoreException { super(indexer); processDelta(delta, changed, changed, removed); - fTotalTasks= changed.size() + removed.size(); + fTotalSourcesEstimate= changed.size() + removed.size(); } public void run(IProgressMonitor monitor) { @@ -47,10 +47,27 @@ class PDOMFastHandleDelta extends PDOMFastIndexerJob { return; ITranslationUnit tu = (ITranslationUnit)i.next(); removeTU(index, tu); - fCompletedTasks++; + if (tu.isSourceUnit()) { + fCompletedSources++; + } + else { + fTotalSourcesEstimate--; + fCompletedHeaders++; + } } - parseTUs(changed, monitor); + // separate headers + List headers= new ArrayList(); + List sources= changed; + for (Iterator iter = changed.iterator(); iter.hasNext();) { + ITranslationUnit tu = (ITranslationUnit) iter.next(); + if (!tu.isSourceUnit()) { + headers.add(tu); + iter.remove(); + } + } + + parseTUs(sources, headers, monitor); if (monitor.isCanceled()) { return; } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexer.java index 8f071b25e6c..f7ef70dec9c 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexer.java @@ -46,7 +46,7 @@ public class PDOMFastIndexer implements IPDOMIndexer { public void handleDelta(ICElementDelta delta) throws CoreException { PDOMFastHandleDelta fhd= new PDOMFastHandleDelta(this, delta); - if (fhd.getRemainingSubtaskCount() > 0) { + if (fhd.estimateRemainingSources() > 0) { CCoreInternals.getPDOMManager().enqueue(fhd); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexerJob.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexerJob.java index 3df97222643..500f55921d3 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexerJob.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastIndexerJob.java @@ -43,7 +43,6 @@ import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; -import org.eclipse.core.runtime.Platform; /** * @author Doug Schaefer @@ -54,14 +53,9 @@ abstract class PDOMFastIndexerJob extends PDOMIndexerTask implements IPDOMIndexe protected final PDOMFastIndexer indexer; protected IWritableIndex index; protected IndexBasedCodeReaderFactory codeReaderFactory; - private boolean fTrace= false; public PDOMFastIndexerJob(PDOMFastIndexer indexer) throws CoreException { this.indexer = indexer; - String trace = Platform.getDebugOption(CCorePlugin.PLUGIN_ID + "/debug/indexer"); //$NON-NLS-1$ - if (trace != null && trace.equalsIgnoreCase("true")) { //$NON-NLS-1$ - fTrace= true; - } } protected void setupIndexAndReaderFactory() throws CoreException { @@ -69,11 +63,11 @@ abstract class PDOMFastIndexerJob extends PDOMIndexerTask implements IPDOMIndexe this.codeReaderFactory = new IndexBasedCodeReaderFactory(index); } - protected void registerTUsInReaderFactory(Collection tus) throws CoreException { - for (Iterator iter = tus.iterator(); iter.hasNext();) { + protected void registerTUsInReaderFactory(Collection files) throws CoreException { + for (Iterator iter = files.iterator(); iter.hasNext();) { ITranslationUnit tu = (ITranslationUnit) iter.next(); FileInfo info= codeReaderFactory.createFileInfo(tu); - info.fNeedToIndex= true; + info.setRequested(true); } } @@ -173,42 +167,55 @@ abstract class PDOMFastIndexerJob extends PDOMIndexerTask implements IPDOMIndexe } String path= (String) entry.getKey(); FileInfo info= codeReaderFactory.createFileInfo(path); - if (!info.fNeedToIndex && info.fFile != null) { - if (fTrace) { - System.out.println("Indexer: skipping " + path); //$NON-NLS-1$ - } - iter.remove(); - } - else { + + // file is requested or is not yet indexed. + if (info.isRequested() || info.fFile == null) { // resolve the names ArrayList names= ((ArrayList[]) entry.getValue())[2]; for (int i=0; i 0) { + if (task.estimateRemainingSources() > 0) { CCoreInternals.getPDOMManager().enqueue(task); } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexerJob.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexerJob.java index 985a0ec3fd9..11accaadbe5 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexerJob.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullIndexerJob.java @@ -61,45 +61,42 @@ abstract class PDOMFullIndexerJob extends PDOMIndexerTask implements IPDOMIndexe this.index = ((IWritableIndexManager) CCorePlugin.getIndexManager()).getWritableIndex(indexer.getProject()); } - protected void registerTUsInReaderFactory(Collection required, Collection optional) throws CoreException { + protected void registerTUsInReaderFactory(Collection sources, Collection headers, + boolean requireHeaders) throws CoreException { filePathsToParse= new HashMap(); - for (Iterator iter = required.iterator(); iter.hasNext();) { + for (Iterator iter = sources.iterator(); iter.hasNext();) { ITranslationUnit tu = (ITranslationUnit) iter.next(); filePathsToParse.put(tu.getLocation().toOSString(), Boolean.TRUE); } - for (Iterator iter = optional.iterator(); iter.hasNext();) { + Boolean required= Boolean.valueOf(requireHeaders); + for (Iterator iter = headers.iterator(); iter.hasNext();) { ITranslationUnit tu = (ITranslationUnit) iter.next(); - filePathsToParse.put(tu.getLocation().toOSString(), Boolean.FALSE); + filePathsToParse.put(tu.getLocation().toOSString(), required); } } - protected void parseTUs(Collection translationUnits, IProgressMonitor monitor) throws CoreException, InterruptedException { + protected void parseTUs(Collection sources, Collection headers, IProgressMonitor monitor) throws CoreException, InterruptedException { // sources first - Iterator i = translationUnits.iterator(); - while (i.hasNext()) { + Iterator iter; + for (iter = sources.iterator(); iter.hasNext();) { if (monitor.isCanceled()) return; - ITranslationUnit tu = (ITranslationUnit)i.next(); + ITranslationUnit tu = (ITranslationUnit) iter.next(); String path = tu.getLocation().toOSString(); - if (filePathsToParse.get(path) == null) { - i.remove(); - } - else if (tu.isSourceUnit()) { + if (filePathsToParse.get(path) != null) { parseTU(tu, monitor); - i.remove(); } } // headers with context - i = translationUnits.iterator(); - while (i.hasNext()) { - if (monitor.isCanceled()) + for (iter = headers.iterator(); iter.hasNext();) { + if (monitor.isCanceled()) return; - ITranslationUnit tu = (ITranslationUnit)i.next(); + ITranslationUnit tu = (ITranslationUnit) iter.next(); String path = tu.getLocation().toOSString(); if (filePathsToParse.get(path)==null) { - i.remove(); + iter.remove(); } else { ITranslationUnit context= findContext(index, path); @@ -111,12 +108,13 @@ abstract class PDOMFullIndexerJob extends PDOMIndexerTask implements IPDOMIndexe // headers without context if (getIndexAllFiles()) { - i = translationUnits.iterator(); - while (i.hasNext()) { - ITranslationUnit tu = (ITranslationUnit)i.next(); + for (iter = headers.iterator(); iter.hasNext();) { + if (monitor.isCanceled()) + return; + ITranslationUnit tu = (ITranslationUnit) iter.next(); String path = tu.getLocation().toOSString(); if (filePathsToParse.get(path)==null) { - i.remove(); + iter.remove(); } else { parseTU(tu, monitor); @@ -194,19 +192,40 @@ abstract class PDOMFullIndexerJob extends PDOMIndexerTask implements IPDOMIndexe } } + boolean isFirstRequest= true; + boolean isFirstAddition= true; index.acquireWriteLock(0); try { for (Iterator iter = symbolMap.entrySet().iterator(); iter.hasNext();) { - if (pm.isCanceled()) { + if (pm.isCanceled()) return; - } + Map.Entry entry = (Map.Entry) iter.next(); String path= (String) entry.getKey(); - addToIndex(path, (ArrayList[]) entry.getValue()); + Boolean required= (Boolean) filePathsToParse.remove(path); + if (required != null) { + if (required.booleanValue()) { + if (isFirstRequest) + isFirstRequest= false; + else + fTotalSourcesEstimate--; + } + + if (fTrace) + System.out.println("Indexer: adding " + path); //$NON-NLS-1$ + + addToIndex(path, (ArrayList[]) entry.getValue()); + + if (isFirstAddition) + isFirstAddition= false; + else + fCompletedHeaders++; + } } } finally { index.releaseWriteLock(0); } + fCompletedSources++; } private void addToMap(HashMap map, int idx, String path, Object thing) { @@ -221,14 +240,6 @@ abstract class PDOMFullIndexerJob extends PDOMIndexerTask implements IPDOMIndexe } private void addToIndex(String location, ArrayList[] lists) throws CoreException { - Boolean required= (Boolean) filePathsToParse.remove(location); - if (required == null) { - return; - } - if (!required.booleanValue()) { - fTotalTasks++; - } - // Remove the old symbols in the tu Path path= new Path(location); IIndexFragmentFile file= (IIndexFragmentFile) index.getFile(new Path(location)); @@ -259,6 +270,5 @@ abstract class PDOMFullIndexerJob extends PDOMIndexerTask implements IPDOMIndexe for (int i = 0; i < list.size(); i++) { index.addName(file, (IASTName) list.get(i)); } - fCompletedTasks++; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullReindex.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullReindex.java index 71330a7318b..f5517127837 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullReindex.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/full/PDOMFullReindex.java @@ -27,39 +27,35 @@ import org.eclipse.core.runtime.Status; */ class PDOMFullReindex extends PDOMFullIndexerJob { - private ArrayList fTUs= new ArrayList(); - public PDOMFullReindex(PDOMFullIndexer indexer) throws CoreException { super(indexer); - fTotalTasks= 1; } public void run(final IProgressMonitor monitor) { try { long start = System.currentTimeMillis(); boolean allfiles= getIndexAllFiles(); - List optional= new ArrayList(); + List headers= new ArrayList(); + List sources= new ArrayList(); - collectSources(indexer.getProject(), fTUs, optional, allfiles); - if (allfiles) { - fTUs.addAll(optional); - optional.clear(); - } + collectSources(indexer.getProject(), sources, headers, allfiles); - fTotalTasks+= fTUs.size()+1; - fCompletedTasks++; + fTotalSourcesEstimate= sources.size(); + if (allfiles) + fTotalSourcesEstimate+= headers.size(); setupIndexAndReaderFactory(); clearIndex(index); - if (getRemainingSubtaskCount() == 1 || monitor.isCanceled()) { + if (fTotalSourcesEstimate == 0 || monitor.isCanceled()) { return; } - registerTUsInReaderFactory(fTUs, optional); - fCompletedTasks++; + registerTUsInReaderFactory(sources, headers, allfiles); + if (!allfiles) + headers.clear(); - parseTUs(fTUs, monitor); + parseTUs(sources, headers, monitor); String showTimings = Platform.getDebugOption(CCorePlugin.PLUGIN_ID + "/debug/pdomtimings"); //$NON-NLS-1$ diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java index 9095767088c..9b178c641eb 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java @@ -73,11 +73,15 @@ public class PDOMNullIndexer implements IPDOMIndexer { return null; } - public int getCompletedSubtaskCount() { + public int estimateRemainingSources() { return 0; } - public int getRemainingSubtaskCount() { + public int getCompletedHeadersCount() { + return 0; + } + + public int getCompletedSourcesCount() { return 0; } } diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/messages.properties b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/messages.properties index d8da46be732..ddcad56a411 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/messages.properties +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/messages.properties @@ -3,3 +3,4 @@ PDOMManager_notifyJob_label=Notify Index Change Listeners PDOMManager_JoinIndexerTask=Join Indexer PDOMManager_savePrefsJob=Save Project Preferences PDOMManager_notifyTask_message=Notify Listeners +PDOMManager_indexMonitorDetail={0}/{1} sources, {2} headers 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 96f0af9efc4..c7945d43eff 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 @@ -651,9 +651,6 @@ public class CCorePlugin extends Plugin { return fCoreModel; } - /** - * deprecated, use getIndexManager() - */ public static IPDOMManager getPDOMManager() { return getDefault().pdomManager; } diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePluginResources.properties b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePluginResources.properties index c8e308121cd..254b01d6d14 100644 --- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePluginResources.properties +++ b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/internal/core/CCorePluginResources.properties @@ -77,3 +77,4 @@ pdom.indexer.name=C/C++ Indexer pdom.indexer.task=Indexing pdom.indexer.filling=Counting files pdom.indexer.message=file {0} of {1}: {2} +PDOMIndexerJob.updateMonitorJob=Update Monitor diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java index 319c9107901..389961b39d8 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/callhierarchy/CallHierarchyBaseTest.java @@ -19,7 +19,6 @@ import org.eclipse.swt.widgets.TreeItem; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.dom.IPDOMIndexer; import org.eclipse.cdt.core.dom.IPDOMManager; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.model.ICProject; @@ -27,6 +26,8 @@ import org.eclipse.cdt.core.testplugin.CProjectHelper; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.tests.BaseUITestCase; +import org.eclipse.cdt.internal.core.CCoreInternals; + import org.eclipse.cdt.internal.ui.callhierarchy.CHViewPart; import org.eclipse.cdt.internal.ui.callhierarchy.CallHierarchyUI; import org.eclipse.cdt.internal.ui.editor.CEditor; @@ -42,12 +43,7 @@ public class CallHierarchyBaseTest extends BaseUITestCase { protected void setUp() throws CoreException { fCProject= CProjectHelper.createCCProject("__chTest__", "bin", IPDOMManager.ID_FAST_INDEXER); - IPDOMIndexer indexer = CCorePlugin.getPDOMManager().getIndexer(fCProject); - try { - indexer.reindex(); - } catch (CoreException e) { - CUIPlugin.getDefault().log(e); - } + CCoreInternals.getPDOMManager().reindex(fCProject); fIndex= CCorePlugin.getIndexManager().getIndex(fCProject); } diff --git a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/ResolveBindingTests.java b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/ResolveBindingTests.java index 6416d26676c..51e79cd214e 100644 --- a/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/ResolveBindingTests.java +++ b/core/org.eclipse.cdt.ui.tests/ui/org/eclipse/cdt/ui/tests/text/selection/ResolveBindingTests.java @@ -15,11 +15,9 @@ import junit.framework.Test; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.dom.IPDOMIndexer; import org.eclipse.cdt.core.dom.IPDOMManager; import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; @@ -30,9 +28,10 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; import org.eclipse.cdt.core.index.IIndex; import org.eclipse.cdt.core.model.ICProject; import org.eclipse.cdt.core.testplugin.CProjectHelper; -import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.tests.BaseUITestCase; +import org.eclipse.cdt.internal.core.CCoreInternals; + public class ResolveBindingTests extends BaseUITestCase { private static final int WAIT_FOR_INDEXER = 5000; @@ -50,12 +49,7 @@ public class ResolveBindingTests extends BaseUITestCase { protected void setUp() throws Exception { super.setUp(); fCProject= CProjectHelper.createCProject("ResolveBindingTests", "bin", IPDOMManager.ID_NO_INDEXER); - IPDOMIndexer indexer = CCorePlugin.getPDOMManager().getIndexer(fCProject); - try { - indexer.reindex(); - } catch (CoreException e) { - CUIPlugin.getDefault().log(e); - } + CCoreInternals.getPDOMManager().reindex(fCProject); fIndex= CCorePlugin.getIndexManager().getIndex(fCProject); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/PDOMUpdateProjectAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/PDOMUpdateProjectAction.java index 5432a12fccd..d52dd86bef3 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/PDOMUpdateProjectAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/actions/PDOMUpdateProjectAction.java @@ -10,10 +10,6 @@ *******************************************************************************/ package org.eclipse.cdt.internal.ui.actions; -import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.dom.IPDOMIndexer; -import org.eclipse.cdt.core.model.ICProject; -import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; @@ -22,6 +18,11 @@ import org.eclipse.ui.IActionDelegate; import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.ui.CUIPlugin; + +import org.eclipse.cdt.internal.core.CCoreInternals; + public class PDOMUpdateProjectAction implements IObjectActionDelegate { private ISelection selection; @@ -45,9 +46,8 @@ public class PDOMUpdateProjectAction implements IObjectActionDelegate { continue; ICProject project = (ICProject)objs[i]; - IPDOMIndexer indexer = CCorePlugin.getPDOMManager().getIndexer(project); try { - indexer.reindex(); + CCoreInternals.getPDOMManager().reindex(project); } catch (CoreException e) { CUIPlugin.getDefault().log(e); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/CountNodeAction.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/CountNodeAction.java index e1527a1361a..57463c21c61 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/CountNodeAction.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/CountNodeAction.java @@ -10,22 +10,24 @@ *******************************************************************************/ package org.eclipse.cdt.internal.ui.indexview; -import org.eclipse.cdt.core.CCorePlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.TreeViewer; + import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.ui.CUIPlugin; + +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMFile; import org.eclipse.cdt.internal.core.pdom.dom.PDOMMacro; import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; -import org.eclipse.cdt.ui.CUIPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.TreeViewer; /** * @author dschaefer @@ -69,7 +71,7 @@ public class CountNodeAction extends IndexAction { continue; ICProject project = (ICProject)objs[i]; - final PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project); + final PDOM pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(project); //pdom.getDB().reportFreeBlocks(); pdom.getFileIndex().accept(new IBTreeVisitor() { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/IndexView.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/IndexView.java index a6a2032cfc6..057d3ef7cc9 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/IndexView.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/IndexView.java @@ -14,24 +14,6 @@ package org.eclipse.cdt.internal.ui.indexview; import java.util.Arrays; import java.util.Comparator; -import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.dom.IPDOMNode; -import org.eclipse.cdt.core.dom.IPDOMVisitor; -import org.eclipse.cdt.core.dom.ast.IASTFileLocation; -import org.eclipse.cdt.core.model.CModelException; -import org.eclipse.cdt.core.model.CoreModel; -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.ICModel; -import org.eclipse.cdt.core.model.ICProject; -import org.eclipse.cdt.core.model.IElementChangedListener; -import org.eclipse.cdt.internal.core.pdom.PDOM; -import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; -import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; -import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; -import org.eclipse.cdt.internal.ui.IndexLabelProvider; -import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; @@ -57,6 +39,27 @@ import org.eclipse.ui.IActionBars; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.part.ViewPart; +import org.eclipse.cdt.core.dom.IPDOMNode; +import org.eclipse.cdt.core.dom.IPDOMVisitor; +import org.eclipse.cdt.core.dom.ast.IASTFileLocation; +import org.eclipse.cdt.core.model.CModelException; +import org.eclipse.cdt.core.model.CoreModel; +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.ICModel; +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.core.model.IElementChangedListener; +import org.eclipse.cdt.ui.CUIPlugin; + +import org.eclipse.cdt.internal.core.CCoreInternals; +import org.eclipse.cdt.internal.core.pdom.PDOM; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; +import org.eclipse.cdt.internal.core.pdom.dom.PDOMName; + +import org.eclipse.cdt.internal.ui.IndexLabelProvider; + /** * @author Doug Schaefer * @@ -182,7 +185,7 @@ public class IndexView extends ViewPart implements PDOM.IListener, IElementChang public Object[] getChildren(Object parentElement) { try { if (parentElement instanceof ICProject) { - PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)parentElement); + PDOM pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM((ICProject)parentElement); PDOMLinkage[] linkages= pdom.getLinkages(); if (linkages.length == 1) { // Skip linkages in hierarchy if there is only one @@ -212,7 +215,7 @@ public class IndexView extends ViewPart implements PDOM.IListener, IElementChang public boolean hasChildren(Object element) { try { if (element instanceof ICProject) { - PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)element); + PDOM pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM((ICProject)element); PDOMLinkage[] linkages = pdom.getLinkages(); if (linkages.length == 0) return false; @@ -278,7 +281,7 @@ public class IndexView extends ViewPart implements PDOM.IListener, IElementChang try { ICProject[] projects = model.getCProjects(); for (int i = 0; i < projects.length; ++i) { - PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(projects[i]); + PDOM pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(projects[i]); pdom.addListener(this); } viewer.setChildCount(model, projects.length); @@ -322,7 +325,7 @@ public class IndexView extends ViewPart implements PDOM.IListener, IElementChang try { ICProject[] projects = model.getCProjects(); for (int i = 0; i < projects.length; ++i) { - PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(projects[i]); + PDOM pdom = (PDOM)CCoreInternals.getPDOMManager().getPDOM(projects[i]); pdom.removeListener(this); } viewer.setChildCount(model, projects.length); @@ -424,7 +427,7 @@ public class IndexView extends ViewPart implements PDOM.IListener, IElementChang switch (delta.getKind()) { case ICElementDelta.ADDED: try { - PDOM pdom = ((PDOM)CCorePlugin.getPDOMManager().getPDOM((ICProject)delta.getElement())); + PDOM pdom = ((PDOM)CCoreInternals.getPDOMManager().getPDOM((ICProject)delta.getElement())); pdom.addListener(this); handleChange(pdom); } catch (CoreException e) { diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/RebuildIndexActionDelegate.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/RebuildIndexActionDelegate.java index 30f7b942a8e..8b05f6d7f98 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/RebuildIndexActionDelegate.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/indexview/RebuildIndexActionDelegate.java @@ -1,8 +1,4 @@ package org.eclipse.cdt.internal.ui.indexview; -import org.eclipse.cdt.core.CCorePlugin; -import org.eclipse.cdt.core.dom.IPDOMIndexer; -import org.eclipse.cdt.core.model.ICProject; -import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; @@ -10,6 +6,11 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.cdt.core.model.ICProject; +import org.eclipse.cdt.ui.CUIPlugin; + +import org.eclipse.cdt.internal.core.CCoreInternals; + /******************************************************************************* * Copyright (c) 2006 QNX Software Systems and others. * All rights reserved. This program and the accompanying materials @@ -44,9 +45,8 @@ public class RebuildIndexActionDelegate implements IObjectActionDelegate { continue; ICProject project = (ICProject)objs[i]; - IPDOMIndexer indexer = CCorePlugin.getPDOMManager().getIndexer(project); try { - indexer.reindex(); + CCoreInternals.getPDOMManager().reindex(project); } catch (CoreException e) { CUIPlugin.getDefault().log(e); } diff --git a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/PDOMCompletionContributor.java b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/PDOMCompletionContributor.java index 2b2c0af3662..97fe73a7a3b 100644 --- a/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/PDOMCompletionContributor.java +++ b/core/org.eclipse.cdt.ui/src/org/eclipse/cdt/internal/ui/text/contentassist/PDOMCompletionContributor.java @@ -17,7 +17,6 @@ import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.text.ITextViewer; -import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.dom.IPDOMNode; import org.eclipse.cdt.core.dom.IPDOMVisitor; import org.eclipse.cdt.core.dom.ast.ASTCompletionNode; @@ -34,6 +33,7 @@ import org.eclipse.cdt.core.model.IWorkingCopy; import org.eclipse.cdt.ui.CUIPlugin; import org.eclipse.cdt.ui.text.contentassist.ICompletionContributor; +import org.eclipse.cdt.internal.core.CCoreInternals; import org.eclipse.cdt.internal.core.pdom.PDOM; import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage; @@ -61,7 +61,7 @@ public class PDOMCompletionContributor extends DOMCompletionContributor implemen return; try { - PDOM pdom = (PDOM) CCorePlugin.getPDOMManager().getPDOM(workingCopy.getCProject()); + PDOM pdom = (PDOM) CCoreInternals.getPDOMManager().getPDOM(workingCopy.getCProject()); IASTName[] names = completionNode.getNames(); for (int i = 0; i < names.length; ++i) { IASTName name = names[i];