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 8b11b6e697f..072867ead2e 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
@@ -121,7 +121,7 @@ import org.eclipse.core.runtime.Platform;
if (testProject==null)
fail("Unable to create project");
- resetIndexer(CCorePlugin.DEFAULT_INDEXER_UNIQ_ID);
+ resetIndexer(DOMSourceIndexer.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
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 432fa63f8d9..8f1961adad7 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
@@ -71,7 +71,8 @@ public class BaseSearchTest extends TestCase implements ICSearchConstants {
try {
//Create temp project
testProject = createProject("SearchTestProject");
-
+ resetIndexer(DOMSourceIndexer.ID);
+
testProject.setSessionProperty(DOMSourceIndexer.activationKey,new Boolean(true));
//Set the id of the source indexer extension point as a session property to allow
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 13c37cffb7f..c77320ac9ff 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
@@ -20,8 +20,6 @@ import junit.framework.Test;
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.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;
@@ -30,8 +28,6 @@ import org.eclipse.cdt.core.parser.failedTests.ASTFailedTests;
import org.eclipse.cdt.core.parser.failedTests.FailedCompleteParseASTTest;
import org.eclipse.cdt.core.parser.failedTests.STLFailedTests;
import org.eclipse.cdt.core.parser.tests.ParserTestSuite;
-import org.eclipse.cdt.core.search.tests.SearchTestSuite;
-import org.eclipse.cdt.core.tests.RegressionTestSuite;
/**
* @author vhirsl
@@ -66,12 +62,15 @@ public class AutomatedIntegrationSuite extends TestSuite {
suite.addTest(BinaryTests.suite());
suite.addTest(ElementDeltaTests.suite());
suite.addTest(WorkingCopyTests.suite());
- suite.addTest(SearchTestSuite.suite());
- suite.addTest(DependencyTests.suite());
- suite.addTest(RegressionTestSuite.suite());
+
+ // TODO turning off indexer/search tests until the PDOM
+ // settles. These'll probably have to be rewritten anyway.
+// suite.addTest(SearchTestSuite.suite());
+// suite.addTest(DependencyTests.suite());
+// 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(DOMSourceIndexerTests.suite());
+// suite.addTest(DOMSourceIndexerTests.suite());
// Last test to trigger report generation
// Add all failed tests
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java
index 313785531e4..43354f41cd3 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CModelManager.java
@@ -34,7 +34,6 @@ import org.eclipse.cdt.core.ICExtensionReference;
import org.eclipse.cdt.core.IBinaryParser.IBinaryArchive;
import org.eclipse.cdt.core.IBinaryParser.IBinaryFile;
import org.eclipse.cdt.core.IBinaryParser.IBinaryObject;
-import org.eclipse.cdt.core.dom.PDOM;
import org.eclipse.cdt.core.model.CModelException;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ElementChangedEvent;
@@ -1139,7 +1138,7 @@ public class CModelManager implements IResourceChangeListener, ICDescriptorListe
this.getIndexManager().discardJobs(project.getName());
// delete the PDOM for this project
try {
- PDOM.deletePDOM(project);
+ CCorePlugin.getPDOMManager().deletePDOM(project);
} catch (CoreException e) {
CCorePlugin.log(e);
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java
index 29510e377cf..5e337df5c9c 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/CProject.java
@@ -43,7 +43,6 @@ import org.eclipse.cdt.core.model.IOutputEntry;
import org.eclipse.cdt.core.model.IPathEntry;
import org.eclipse.cdt.core.model.ISourceEntry;
import org.eclipse.cdt.core.model.ISourceRoot;
-import org.eclipse.cdt.internal.core.pdom.PDOMManager;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
@@ -698,7 +697,7 @@ public class CProject extends Openable implements ICProject {
}
public IPDOM getIndex() {
- return PDOMManager.getInstance().getPDOM(getProject());
+ return CCorePlugin.getPDOMManager().getPDOM(getProject());
}
}
diff --git a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java
index d243ca0a92c..fc5e22c235d 100644
--- a/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java
+++ b/core/org.eclipse.cdt.core/model/org/eclipse/cdt/internal/core/model/TranslationUnit.java
@@ -687,7 +687,8 @@ public class TranslationUnit extends Openable implements ITranslationUnit {
// Special magic for C/C++ header files
if (language == null && isHeaderUnit()) {
- contentType = CoreModel.hasCCNature(getResource().getProject())
+ IResource resource = getResource();
+ contentType = resource != null && CoreModel.hasCCNature(resource.getProject())
? manager.getContentType(CCorePlugin.CONTENT_TYPE_CXXSOURCE)
: manager.getContentType(CCorePlugin.CONTENT_TYPE_CSOURCE);
language = LanguageManager.getInstance().getLanguage(contentType);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOM.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOM.java
index af50aa132c4..8c983ecf605 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOM.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOM.java
@@ -14,6 +14,7 @@ import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.model.IWorkingCopy;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IAdaptable;
/**
* @author Doug Schaefer
@@ -22,7 +23,7 @@ import org.eclipse.core.runtime.CoreException;
* It provides services to allow access to DOM information
* persisted between parses.
*/
-public interface IPDOM {
+public interface IPDOM extends IAdaptable {
public IBinding resolveBinding(IASTName name);
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
new file mode 100644
index 00000000000..f94ed6e69a5
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/IPDOMManager.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2006 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.core.dom;
+
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.CoreException;
+
+/**
+ * @author Doug Schaefer
+ *
+ */
+public interface IPDOMManager {
+
+ // Getting and deleting a PDOM for a project
+ public IPDOM getPDOM(IProject project);
+ public void deletePDOM(IProject project) throws CoreException;
+
+ // Getting and setting indexer Ids
+ public String getDefaultIndexerId();
+ public void setDefaultIndexerId(String indexerId);
+
+ public String getIndexerId(IProject project);
+ public void setIndexerId(IProject project, String indexerId);
+}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java
index d208007b83e..088b546555f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/c/GCCLanguage.java
@@ -13,8 +13,6 @@ package org.eclipse.cdt.core.dom.ast.gnu.c;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ICodeReaderFactory;
-import org.eclipse.cdt.core.dom.IPDOM;
-import org.eclipse.cdt.core.dom.PDOM;
import org.eclipse.cdt.core.dom.ast.ASTCompletionNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.model.IContributedModelBuilder;
@@ -37,8 +35,8 @@ import org.eclipse.cdt.internal.core.dom.parser.c.GNUCSourceParser;
import org.eclipse.cdt.internal.core.parser.scanner2.DOMScanner;
import org.eclipse.cdt.internal.core.parser.scanner2.GCCScannerExtensionConfiguration;
import org.eclipse.cdt.internal.core.parser.scanner2.IScannerExtensionConfiguration;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.PDOMCodeReaderFactory;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.c.PDOMCLinkageFactory;
import org.eclipse.core.resources.IFile;
@@ -97,10 +95,10 @@ public class GCCLanguage extends PlatformObject implements ILanguage {
scanInfo = new ScannerInfo();
}
- IPDOM pdom = PDOM.getPDOM(project);
+ PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project).getAdapter(PDOM.class);
ICodeReaderFactory fileCreator;
if ((style & ILanguage.AST_SKIP_INDEXED_HEADERS) != 0)
- fileCreator = new PDOMCodeReaderFactory((PDOMDatabase)pdom);
+ fileCreator = new PDOMCodeReaderFactory(pdom);
else
fileCreator = SavedCodeReaderFactory.getInstance();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java
index e272f9b9a8d..1e0276e0c55 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/dom/ast/gnu/cpp/GPPLanguage.java
@@ -13,8 +13,6 @@ package org.eclipse.cdt.core.dom.ast.gnu.cpp;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ICodeReaderFactory;
-import org.eclipse.cdt.core.dom.IPDOM;
-import org.eclipse.cdt.core.dom.PDOM;
import org.eclipse.cdt.core.dom.ast.ASTCompletionNode;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.model.IContributedModelBuilder;
@@ -37,8 +35,8 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.GPPParserExtensionConfigurat
import org.eclipse.cdt.internal.core.parser.scanner2.DOMScanner;
import org.eclipse.cdt.internal.core.parser.scanner2.GPPScannerExtensionConfiguration;
import org.eclipse.cdt.internal.core.parser.scanner2.IScannerExtensionConfiguration;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.PDOMCodeReaderFactory;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPLinkageFactory;
import org.eclipse.core.resources.IFile;
@@ -96,10 +94,10 @@ public class GPPLanguage extends PlatformObject implements ILanguage {
scanInfo = new ScannerInfo();
}
- IPDOM pdom = PDOM.getPDOM(project);
+ PDOM pdom = (PDOM)CCorePlugin.getPDOMManager().getPDOM(project).getAdapter(PDOM.class);
ICodeReaderFactory fileCreator;
if ((style & ILanguage.AST_SKIP_INDEXED_HEADERS) != 0)
- fileCreator = new PDOMCodeReaderFactory((PDOMDatabase)pdom);
+ fileCreator = new PDOMCodeReaderFactory(pdom);
else
fileCreator = SavedCodeReaderFactory.getInstance();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMDatabase.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java
similarity index 83%
rename from core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMDatabase.java
rename to core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java
index 854224a6426..e8607b87939 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMDatabase.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOM.java
@@ -18,6 +18,7 @@ import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ICodeReaderFactory;
import org.eclipse.cdt.core.dom.IPDOM;
+import org.eclipse.cdt.core.dom.IPDOMIndexer;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
@@ -37,17 +38,20 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.PlatformObject;
import org.eclipse.core.runtime.QualifiedName;
import org.eclipse.core.runtime.jobs.ISchedulingRule;
+import org.eclipse.core.runtime.jobs.Job;
/**
* The PDOM Database.
*
* @author Doug Schaefer
*/
-public class PDOMDatabase implements IPDOM {
+public class PDOM extends PlatformObject implements IPDOM {
private final IProject project;
+ private IPDOMIndexer indexer;
private final IPath dbPath;
private Database db;
@@ -62,25 +66,40 @@ public class PDOMDatabase implements IPDOM {
private static final QualifiedName dbNameProperty
= new QualifiedName(CCorePlugin.PLUGIN_ID, "dbName"); //$NON-NLS-1$
- public PDOMDatabase(IProject project, PDOMManager manager) throws CoreException {
+ public PDOM(IProject project, IPDOMIndexer indexer) throws CoreException {
this.project = project;
+ this.indexer = indexer;
+
+ // Load up the database
String dbName = project.getPersistentProperty(dbNameProperty);
if (dbName == null) {
dbName = project.getName() + "_"
+ System.currentTimeMillis() + ".pdom";
project.setPersistentProperty(dbNameProperty, dbName);
}
-
dbPath = CCorePlugin.getDefault().getStateLocation().append(dbName);
db = new Database(dbPath.toOSString(), VERSION);
+
+ // Create the appropriate indexer
}
+ public Object getAdapter(Class adapter) {
+ if (adapter == PDOM.class)
+ return this;
+ else
+ return super.getAdapter(adapter);
+ }
+
public IProject getProject() {
return project;
}
+ public IPDOMIndexer getIndexer() {
+ return indexer;
+ }
+
public static interface IListener {
- public void handleChange(PDOMDatabase pdom);
+ public void handleChange(PDOM pdom);
}
private List listeners;
@@ -97,7 +116,7 @@ public class PDOMDatabase implements IPDOM {
listeners.remove(listener);
}
- private void fireChange() {
+ public void fireChange() {
if (listeners == null)
return;
Iterator i = listeners.iterator();
@@ -118,6 +137,9 @@ public class PDOMDatabase implements IPDOM {
return fileIndex;
}
+ /**
+ * @deprecated
+ */
public void addSymbols(ITranslationUnit tu) throws CoreException {
final ILanguage language = tu.getLanguage();
if (language == null)
@@ -154,6 +176,31 @@ public class PDOMDatabase implements IPDOM {
fireChange();
}
+ public void addSymbols(ILanguage language, IASTTranslationUnit ast) throws CoreException {
+ final PDOMLinkage linkage = getLinkage(language);
+ if (linkage == null)
+ return;
+
+ ast.accept(new ASTVisitor() {
+ {
+ shouldVisitNames = true;
+ shouldVisitDeclarations = true;
+ }
+
+ public int visit(IASTName name) {
+ try {
+ linkage.addName(name);
+ return PROCESS_CONTINUE;
+ } catch (CoreException e) {
+ CCorePlugin.log(e);
+ return PROCESS_ABORT;
+ }
+ };
+ });;
+
+ fireChange();
+ }
+
public void removeSymbols(ITranslationUnit tu) throws CoreException {
String filename = ((IFile)tu.getResource()).getLocation().toOSString();
PDOMFile file = PDOMFile.find(this, filename);
@@ -251,7 +298,7 @@ public class PDOMDatabase implements IPDOM {
// Read-write lock rules. Readers don't conflict with other readers,
// Writers conflict with readers, and everyone conflicts with writers.
- private class ReaderLockRule implements ISchedulingRule {
+ private final ISchedulingRule readerLockRule = new ISchedulingRule() {
public boolean isConflicting(ISchedulingRule rule) {
if (rule == this)
return false;
@@ -263,9 +310,9 @@ public class PDOMDatabase implements IPDOM {
public boolean contains(ISchedulingRule rule) {
return rule == this;
}
- }
+ };
- private class WriterLockRule implements ISchedulingRule {
+ private final ISchedulingRule writerLockRule = new ISchedulingRule() {
public boolean isConflicting(ISchedulingRule rule) {
if (rule == this || rule == getReaderLockRule())
return true;
@@ -275,10 +322,7 @@ public class PDOMDatabase implements IPDOM {
public boolean contains(ISchedulingRule rule) {
return rule == this;
}
- }
-
- private ReaderLockRule readerLockRule = new ReaderLockRule();
- private WriterLockRule writerLockRule = new WriterLockRule();
+ };
public ISchedulingRule getReaderLockRule() {
return readerLockRule;
@@ -288,4 +332,7 @@ public class PDOMDatabase implements IPDOM {
return writerLockRule;
}
+ // These are really only recommendations
+ public static final int READER_PRIORITY = Job.SHORT;
+ public static final int WRITER_PRIORITY = Job.LONG;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMCodeReaderFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMCodeReaderFactory.java
index 269d3ff38f8..85e804844a1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMCodeReaderFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMCodeReaderFactory.java
@@ -33,14 +33,14 @@ import org.eclipse.core.runtime.Status;
*/
public class PDOMCodeReaderFactory implements ICodeReaderFactory {
- private final PDOMDatabase pdom;
+ private final PDOM pdom;
private List workingCopies;
- public PDOMCodeReaderFactory(PDOMDatabase pdom) {
+ public PDOMCodeReaderFactory(PDOM pdom) {
this.pdom = pdom;
}
- public PDOMCodeReaderFactory(PDOMDatabase pdom, IWorkingCopy workingCopy) {
+ public PDOMCodeReaderFactory(PDOM pdom, IWorkingCopy workingCopy) {
this(pdom);
workingCopies = new ArrayList(1);
workingCopies.add(workingCopy);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMLanguage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMLanguage.java
index c0ff252016d..8f7fc709df8 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMLanguage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMLanguage.java
@@ -20,19 +20,19 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMLanguage {
- private PDOMDatabase pdom;
+ private PDOM pdom;
private int record;
private static final int NEXT = 0; // int
private static final int ID = 4; // char
private static final int NAME = 6; // string
- public PDOMLanguage(PDOMDatabase pdom, int record) {
+ public PDOMLanguage(PDOM pdom, int record) {
this.pdom = pdom;
this.record = record;
}
- public PDOMLanguage(PDOMDatabase pdom, String name, int id, int next) throws CoreException {
+ public PDOMLanguage(PDOM pdom, String name, int id, int next) throws CoreException {
this.pdom = pdom;
Database db = pdom.getDB();
record = db.malloc(6 + (name.length() + 1) * 2);
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 431c1423fc7..2674c89bee4 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
@@ -11,14 +11,29 @@
package org.eclipse.cdt.internal.core.pdom;
import org.eclipse.cdt.core.CCorePlugin;
+import org.eclipse.cdt.core.ICDescriptor;
+import org.eclipse.cdt.core.ICExtensionReference;
import org.eclipse.cdt.core.dom.IPDOM;
+import org.eclipse.cdt.core.dom.IPDOMIndexer;
+import org.eclipse.cdt.core.dom.IPDOMManager;
+import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ElementChangedEvent;
import org.eclipse.cdt.core.model.IElementChangedListener;
import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.ProjectScope;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtension;
+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.IJobChangeEvent;
import org.eclipse.core.runtime.jobs.IJobChangeListener;
+import org.eclipse.core.runtime.preferences.IEclipsePreferences;
+import org.eclipse.core.runtime.preferences.IPreferencesService;
+import org.eclipse.core.runtime.preferences.InstanceScope;
+import org.osgi.service.prefs.BackingStoreException;
/**
* The PDOM Provider. This is likely temporary since I hope
@@ -27,26 +42,19 @@ import org.eclipse.core.runtime.jobs.IJobChangeListener;
*
* @author Doug Schaefer
*/
-public class PDOMManager implements IElementChangedListener, IJobChangeListener {
+public class PDOMManager implements IPDOMManager, IElementChangedListener, IJobChangeListener {
- private static PDOMManager instance;
private PDOMUpdator currJob;
private static final QualifiedName pdomProperty
= new QualifiedName(CCorePlugin.PLUGIN_ID, "pdom"); //$NON-NLS-1$
- public static PDOMManager getInstance() {
- if (instance == null)
- instance = new PDOMManager();
- return instance;
- }
-
public IPDOM getPDOM(IProject project) {
try {
IPDOM pdom = (IPDOM)project.getSessionProperty(pdomProperty);
if (pdom == null) {
- pdom = new PDOMDatabase(project, this);
+ pdom = new PDOM(project, createIndexer(project));
project.setSessionProperty(pdomProperty, pdom);
}
@@ -97,4 +105,86 @@ public class PDOMManager implements IElementChangedListener, IJobChangeListener
return this;
}
+ private static final String INDEXER_ID_KEY = "indexerId"; //$NON-NLS-1$
+
+ public String getDefaultIndexerId() {
+ IPreferencesService prefService = Platform.getPreferencesService();
+ return prefService.getString(CCorePlugin.PLUGIN_ID, INDEXER_ID_KEY,
+ CCorePlugin.DEFAULT_INDEXER_UNIQ_ID, null);
+ }
+
+ public void setDefaultIndexerId(String indexerId) {
+ IEclipsePreferences prefs = new InstanceScope().getNode(CCorePlugin.PLUGIN_ID);
+ if (prefs == null)
+ return; // TODO why would this be null?
+
+ prefs.put(INDEXER_ID_KEY, indexerId);
+ try {
+ prefs.flush();
+ } catch (BackingStoreException e) {
+ }
+ }
+
+ public String getIndexerId(IProject project) {
+ IEclipsePreferences prefs = new ProjectScope(project).getNode(CCorePlugin.PLUGIN_ID);
+ if (prefs == null)
+ return getDefaultIndexerId();
+
+ String indexerId = prefs.get(INDEXER_ID_KEY, null);
+ if (indexerId == null) {
+ // See if it is in the ICDescriptor
+ try {
+ ICDescriptor desc = CCorePlugin.getDefault().getCProjectDescription(project, true);
+ ICExtensionReference[] ref = desc.get(CCorePlugin.INDEXER_UNIQ_ID);
+ if (ref != null && ref.length > 0) {
+ indexerId = ref[0].getID();
+ }
+ } catch (CoreException e) {
+ }
+
+ if (indexerId == null)
+ // make it the default
+ indexerId = getDefaultIndexerId();
+
+ setIndexerId(project, indexerId);
+ }
+ return indexerId;
+ }
+
+ public void setIndexerId(IProject project, String indexerId) {
+ IEclipsePreferences prefs = new ProjectScope(project).getNode(CCorePlugin.PLUGIN_ID);
+ if (prefs == null)
+ return; // TODO why would this be null?
+
+ prefs.put(INDEXER_ID_KEY, indexerId);
+ try {
+ prefs.flush();
+ } catch (BackingStoreException e) {
+ }
+ }
+
+ private IPDOMIndexer createIndexer(IProject project) throws CoreException {
+ String indexerId = getIndexerId(project);
+
+ // Look up in extension point
+ IExtension indexerExt = Platform.getExtensionRegistry()
+ .getExtension(CCorePlugin.INDEXER_UNIQ_ID, indexerId);
+ IConfigurationElement[] elements = indexerExt.getConfigurationElements();
+ for (int i = 0; i < elements.length; ++i) {
+ IConfigurationElement element = elements[i];
+ if ("run".equals(element.getName())) //$NON-NLS-1$
+ return (IPDOMIndexer)element.createExecutableExtension("class"); //$NON-NLS-1$
+ }
+ throw new CoreException(new Status(IStatus.ERROR, CCorePlugin.PLUGIN_ID,
+ 0, CCorePlugin.getResourceString("indexer.notFound"), null)); //$NON-NLS-1$
+ }
+
+ /**
+ * Startup the PDOM. This mainly sets us up to handle model
+ * change events.
+ */
+ public void startup() {
+ CoreModel.getDefault().addElementChangedListener(this);
+ }
+
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMUpdator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMUpdator.java
index 901c8d8fd37..f7535ee10a1 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMUpdator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/PDOMUpdator.java
@@ -16,7 +16,6 @@ import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOM;
-import org.eclipse.cdt.core.dom.PDOM;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ICElementDelta;
@@ -141,7 +140,7 @@ public class PDOMUpdator extends Job {
private void processDelta(ICElementDelta delta) {
// First make sure this project is PDOMable
ICElement element = delta.getElement();
- if (element instanceof ICProject && PDOM.getPDOM(((ICProject)element).getProject()) == null)
+ if (element instanceof ICProject && CCorePlugin.getPDOMManager().getPDOM(((ICProject)element).getProject()) == null)
return;
// process the children first
@@ -184,8 +183,6 @@ public class PDOMUpdator extends Job {
private void processNewProject(final ICProject project) {
try {
- if (!PDOM.isEnabled(project.getProject()))
- return;
project.getProject().accept(new IResourceProxyVisitor() {
public boolean visit(IResourceProxy proxy) throws CoreException {
if (proxy.getType() == IResource.FILE) {
@@ -215,30 +212,30 @@ public class PDOMUpdator extends Job {
private void processAddedTU(ITranslationUnit tu) throws CoreException {
IPDOM pdom = tu.getCProject().getIndex();
- if (pdom == null || !(pdom instanceof PDOMDatabase))
+ if (pdom == null || !(pdom instanceof PDOM))
return;
- PDOMDatabase mypdom = (PDOMDatabase)pdom;
+ PDOM mypdom = (PDOM)pdom;
mypdom.addSymbols(tu);
}
private void processRemovedTU(ITranslationUnit tu) throws CoreException {
IProject project = tu.getCProject().getProject();
- IPDOM pdom = PDOM.getPDOM(project);
- if (pdom == null || !(pdom instanceof PDOMDatabase))
+ IPDOM pdom = CCorePlugin.getPDOMManager().getPDOM(project);
+ if (pdom == null || !(pdom instanceof PDOM))
return;
- PDOMDatabase mypdom = (PDOMDatabase)pdom;
+ PDOM mypdom = (PDOM)pdom;
mypdom.removeSymbols(tu);
// TODO delete the file itself from the database
// the removeSymbols only removes the names in the file
}
private void processChangedTU(ITranslationUnit tu) throws CoreException {
- IPDOM pdom = PDOM.getPDOM(tu.getCProject().getProject());
- if (pdom == null || !(pdom instanceof PDOMDatabase))
+ IPDOM pdom = CCorePlugin.getPDOMManager().getPDOM(tu.getCProject().getProject());
+ if (pdom == null || !(pdom instanceof PDOM))
return;
- PDOMDatabase mypdom = (PDOMDatabase)pdom;
+ PDOM mypdom = (PDOM)pdom;
mypdom.removeSymbols(tu);
mypdom.addSymbols(tu);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/IPDOMLinkageFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/IPDOMLinkageFactory.java
index 35fd844c000..3ee10e7d315 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/IPDOMLinkageFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/IPDOMLinkageFactory.java
@@ -11,7 +11,7 @@
package org.eclipse.cdt.internal.core.pdom.dom;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.core.runtime.CoreException;
/**
@@ -20,8 +20,8 @@ import org.eclipse.core.runtime.CoreException;
*/
public interface IPDOMLinkageFactory {
- public PDOMLinkage getLinkage(PDOMDatabase pdom, int record);
+ public PDOMLinkage getLinkage(PDOM pdom, int record);
- public PDOMLinkage createLinkage(PDOMDatabase pdom) throws CoreException;
+ public PDOMLinkage createLinkage(PDOM pdom) throws CoreException;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java
index 0880a982d6d..d3b1096f2cb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java
@@ -15,7 +15,7 @@ import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.core.runtime.CoreException;
@@ -32,7 +32,7 @@ public abstract class PDOMBinding extends PDOMNode implements IBinding {
protected static final int RECORD_SIZE = PDOMNode.RECORD_SIZE + 20;
- protected PDOMBinding(PDOMDatabase pdom, PDOMNode parent, IASTName name, int type) throws CoreException {
+ protected PDOMBinding(PDOM pdom, PDOMNode parent, IASTName name, int type) throws CoreException {
super(pdom, parent, name.toCharArray());
Database db = pdom.getDB();
@@ -40,7 +40,7 @@ public abstract class PDOMBinding extends PDOMNode implements IBinding {
db.putInt(record + BINDING_TYPE_OFFSET, type);
}
- public PDOMBinding(PDOMDatabase pdom, int record) {
+ public PDOMBinding(PDOM pdom, int record) {
super(pdom, record);
}
@@ -51,7 +51,7 @@ public abstract class PDOMBinding extends PDOMNode implements IBinding {
return null;
}
- public static int getBindingType(PDOMDatabase pdom, int record) throws CoreException {
+ public static int getBindingType(PDOM pdom, int record) throws CoreException {
return pdom.getDB().getInt(record + BINDING_TYPE_OFFSET);
}
@@ -64,7 +64,7 @@ public abstract class PDOMBinding extends PDOMNode implements IBinding {
* @return
* @throws CoreException
*/
- public static boolean isOrphaned(PDOMDatabase pdom, int record) throws CoreException {
+ public static boolean isOrphaned(PDOM pdom, int record) throws CoreException {
Database db = pdom.getDB();
return db.getInt(record + FIRST_DECL_OFFSET) == 0
&& db.getInt(record + FIRST_DEF_OFFSET) == 0
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBindingAdapterFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBindingAdapterFactory.java
index 64f35bbe9fc..29ef03cb954 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBindingAdapterFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBindingAdapterFactory.java
@@ -13,12 +13,11 @@ package org.eclipse.cdt.internal.core.pdom.dom;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOM;
-import org.eclipse.cdt.core.dom.PDOM;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.ICProject;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdapterFactory;
@@ -36,11 +35,11 @@ public class PDOMBindingAdapterFactory implements IAdapterFactory {
IBinding binding = (IBinding)adaptableObject;
ICProject[] projects = CoreModel.getDefault().getCModel().getCProjects();
for (int i = 0; i < projects.length; ++i) {
- IPDOM ipdom = PDOM.getPDOM(projects[i].getProject());
+ IPDOM ipdom = CCorePlugin.getPDOMManager().getPDOM(projects[i].getProject());
- if (ipdom == null || !(ipdom instanceof PDOMDatabase))
+ if (ipdom == null || !(ipdom instanceof PDOM))
continue;
- PDOMDatabase pdom = (PDOMDatabase)ipdom;
+ PDOM pdom = (PDOM)ipdom;
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) {
PDOMBinding pdomBinding = linkage.adaptBinding(binding);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java
index 22f11bbbb06..18d58f0d98c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMFile.java
@@ -10,7 +10,7 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.pdom.dom;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.BTree;
import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.db.IBTreeComparator;
@@ -25,7 +25,7 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMFile {
- private PDOMDatabase pdom;
+ private PDOM pdom;
private int record;
private static final int FIRST_NAME_OFFSET = 0;
@@ -77,7 +77,7 @@ public class PDOMFile {
}
- public static PDOMFile insert(PDOMDatabase pdom, String filename) throws CoreException {
+ public static PDOMFile insert(PDOM pdom, String filename) throws CoreException {
BTree index = pdom.getFileIndex();
PDOMFile pdomFile = find(pdom, filename);
if (pdomFile == null) {
@@ -91,13 +91,13 @@ public class PDOMFile {
return pdomFile;
}
- public static PDOMFile find(PDOMDatabase pdom, String filename) throws CoreException {
+ public static PDOMFile find(PDOM pdom, String filename) throws CoreException {
BTree index = pdom.getFileIndex();
int record = new FindVisitor(pdom.getDB(), filename).findIn(index);
return (record != 0) ? new PDOMFile(pdom, record) : null;
}
- public PDOMFile(PDOMDatabase pdom, int record) {
+ public PDOMFile(PDOM pdom, int record) {
this.pdom = pdom;
this.record = record;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java
index 5f409526b07..0caddda7bf5 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java
@@ -17,7 +17,7 @@ import java.util.regex.Pattern;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.BTree;
import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor;
@@ -32,11 +32,11 @@ import org.eclipse.core.runtime.CoreException;
public abstract class PDOMLinkage extends PDOMNode {
protected static final class MatchBinding implements IBTreeVisitor {
- private final PDOMDatabase pdom;
+ private final PDOM pdom;
private final List bindings;
private final Pattern pattern;
- public MatchBinding(PDOMDatabase pdom, String pattern, List bindings) {
+ public MatchBinding(PDOM pdom, String pattern, List bindings) {
this.pdom = pdom;
this.bindings = bindings;
this.pattern = Pattern.compile(pattern);
@@ -66,11 +66,11 @@ public abstract class PDOMLinkage extends PDOMNode {
protected static final int RECORD_SIZE = PDOMNode.RECORD_SIZE + 12;
- public PDOMLinkage(PDOMDatabase pdom, int record) {
+ public PDOMLinkage(PDOM pdom, int record) {
super(pdom, record);
}
- protected PDOMLinkage(PDOMDatabase pdom, String languageId, char[] name) throws CoreException {
+ protected PDOMLinkage(PDOM pdom, String languageId, char[] name) throws CoreException {
super(pdom, null, name);
Database db = pdom.getDB();
@@ -85,13 +85,13 @@ public abstract class PDOMLinkage extends PDOMNode {
return RECORD_SIZE;
}
- public static String getId(PDOMDatabase pdom, int record) throws CoreException {
+ public static String getId(PDOM pdom, int record) throws CoreException {
Database db = pdom.getDB();
int namerec = db.getInt(record + ID_OFFSET);
return db.getString(namerec);
}
- public static int getNextLinkageRecord(PDOMDatabase pdom, int record) throws CoreException {
+ public static int getNextLinkageRecord(PDOM pdom, int record) throws CoreException {
return pdom.getDB().getInt(record + NEXT_OFFSET);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMember.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMember.java
index d95da9cc2dc..058959da252 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMember.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMember.java
@@ -12,7 +12,7 @@
package org.eclipse.cdt.internal.core.pdom.dom;
import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.cpp.PDOMCPPClassType;
import org.eclipse.core.runtime.CoreException;
@@ -28,12 +28,12 @@ public abstract class PDOMMember extends PDOMBinding {
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 12;
- public PDOMMember(PDOMDatabase pdom, PDOMMemberOwner parent, IASTName name, int type) throws CoreException {
+ public PDOMMember(PDOM pdom, PDOMMemberOwner parent, IASTName name, int type) throws CoreException {
super(pdom, parent, name, type);
parent.addMember(this);
}
- public PDOMMember(PDOMDatabase pdom, int record) {
+ public PDOMMember(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMemberOwner.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMemberOwner.java
index 8d1d5a8d652..41db9092d40 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMemberOwner.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMMemberOwner.java
@@ -14,7 +14,7 @@ package org.eclipse.cdt.internal.core.pdom.dom;
import java.util.ArrayList;
import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.core.runtime.CoreException;
/**
@@ -28,12 +28,12 @@ public class PDOMMemberOwner extends PDOMBinding {
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 8;
- public PDOMMemberOwner(PDOMDatabase pdom, PDOMNode parent, IASTName name,
+ public PDOMMemberOwner(PDOM pdom, PDOMNode parent, IASTName name,
int type) throws CoreException {
super(pdom, parent, name, type);
}
- public PDOMMemberOwner(PDOMDatabase pdom, int record) {
+ public PDOMMemberOwner(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java
index cb235e1eb77..0b60995c73f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMName.java
@@ -20,7 +20,7 @@ import org.eclipse.cdt.core.dom.ast.IASTNodeLocation;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IScope2;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.core.runtime.CoreException;
@@ -30,7 +30,7 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMName implements IASTName, IASTFileLocation {
- private final PDOMDatabase pdom;
+ private final PDOM pdom;
private final int record;
private static final int FILE_REC_OFFSET = 0;
@@ -50,7 +50,7 @@ public class PDOMName implements IASTName, IASTFileLocation {
private static final int IS_REFERENCE = 3;
- public PDOMName(PDOMDatabase pdom, IASTName name, PDOMBinding binding) throws CoreException {
+ public PDOMName(PDOM pdom, IASTName name, PDOMBinding binding) throws CoreException {
this.pdom = pdom;
Database db = pdom.getDB();
record = db.malloc(RECORD_SIZE);
@@ -98,7 +98,7 @@ public class PDOMName implements IASTName, IASTFileLocation {
db.putInt(record + NODE_LENGTH_OFFSET, fileloc.getNodeLength());
}
- public PDOMName(PDOMDatabase pdom, int nameRecord) {
+ public PDOMName(PDOM pdom, int nameRecord) {
this.pdom = pdom;
this.record = nameRecord;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNode.java
index 258ceaca596..a660bd73ab4 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNode.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNode.java
@@ -11,7 +11,7 @@
package org.eclipse.cdt.internal.core.pdom.dom;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.Database;
import org.eclipse.cdt.internal.core.pdom.db.IBTreeComparator;
import org.eclipse.cdt.internal.core.pdom.db.IBTreeVisitor;
@@ -31,15 +31,15 @@ public abstract class PDOMNode {
protected static final int RECORD_SIZE = 8;
- protected final PDOMDatabase pdom;
+ protected final PDOM pdom;
protected final int record;
- protected PDOMNode(PDOMDatabase pdom, int record) {
+ protected PDOMNode(PDOM pdom, int record) {
this.pdom = pdom;
this.record = record;
}
- protected PDOMNode(PDOMDatabase pdom, PDOMNode parent, char[] name) throws CoreException {
+ protected PDOMNode(PDOM pdom, PDOMNode parent, char[] name) throws CoreException {
this.pdom = pdom;
Database db = pdom.getDB();
@@ -59,7 +59,7 @@ public abstract class PDOMNode {
protected abstract int getRecordSize();
- public PDOMDatabase getPDOM() {
+ public PDOM getPDOM() {
return pdom;
}
@@ -71,7 +71,7 @@ public abstract class PDOMNode {
return getLinkage(pdom, record);
}
- public static PDOMLinkage getLinkage(PDOMDatabase pdom, int record) throws CoreException {
+ public static PDOMLinkage getLinkage(PDOM pdom, int record) throws CoreException {
Database db = pdom.getDB();
int linkagerec = record;
int parentrec = db.getInt(linkagerec + PARENT_OFFSET);
@@ -121,9 +121,9 @@ public abstract class PDOMNode {
}
public abstract static class NodeVisitor implements IBTreeVisitor {
- protected final PDOMDatabase pdom;
+ protected final PDOM pdom;
protected final char[] name;
- protected NodeVisitor(PDOMDatabase pdom, char [] name) {
+ protected NodeVisitor(PDOM pdom, char [] name) {
this.pdom = pdom;
this.name = name;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java
index 41e78f62082..6709c2d9d1c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java
@@ -15,7 +15,7 @@ import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IField;
import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMember;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMemberOwner;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError;
@@ -27,11 +27,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCField extends PDOMMember implements IField {
- public PDOMCField(PDOMDatabase pdom, PDOMMemberOwner parent, IASTName name) throws CoreException {
+ public PDOMCField(PDOM pdom, PDOMMemberOwner parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCLinkage.CFIELD);
}
- public PDOMCField(PDOMDatabase pdom, int record) {
+ public PDOMCField(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java
index dd15711faff..761fb7d05ef 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java
@@ -17,7 +17,7 @@ import org.eclipse.cdt.core.dom.ast.IFunction;
import org.eclipse.cdt.core.dom.ast.IFunctionType;
import org.eclipse.cdt.core.dom.ast.IParameter;
import org.eclipse.cdt.core.dom.ast.IScope;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+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;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError;
@@ -29,11 +29,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCFunction extends PDOMBinding implements IFunction {
- public PDOMCFunction(PDOMDatabase pdom, PDOMNode parent, IASTName name) throws CoreException {
+ public PDOMCFunction(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCLinkage.CFUNCTION);
}
- public PDOMCFunction(PDOMDatabase pdom, int record) {
+ public PDOMCFunction(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java
index 72ab5e50c62..56dda83f02e 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java
@@ -29,7 +29,7 @@ import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.core.dom.ast.c.ICASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+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.PDOMMember;
@@ -43,11 +43,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCLinkage extends PDOMLinkage {
- public PDOMCLinkage(PDOMDatabase pdom, int record) {
+ public PDOMCLinkage(PDOM pdom, int record) {
super(pdom, record);
}
- public PDOMCLinkage(PDOMDatabase pdom) throws CoreException {
+ public PDOMCLinkage(PDOM pdom) throws CoreException {
super(pdom, GCCLanguage.ID, "C".toCharArray());
}
@@ -115,7 +115,7 @@ public class PDOMCLinkage extends PDOMLinkage {
private static final class FindBinding extends PDOMNode.NodeVisitor {
PDOMBinding pdomBinding;
final int desiredType;
- public FindBinding(PDOMDatabase pdom, char[] name, int desiredType) {
+ public FindBinding(PDOM pdom, char[] name, int desiredType) {
super(pdom, name);
this.desiredType = desiredType;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkageFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkageFactory.java
index 99f80fbdb77..67d599bd168 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkageFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkageFactory.java
@@ -11,7 +11,7 @@
package org.eclipse.cdt.internal.core.pdom.dom.c;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
import org.eclipse.core.runtime.CoreException;
@@ -21,11 +21,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCLinkageFactory implements IPDOMLinkageFactory {
- public PDOMLinkage getLinkage(PDOMDatabase pdom, int record) {
+ public PDOMLinkage getLinkage(PDOM pdom, int record) {
return new PDOMCLinkage(pdom, record);
}
- public PDOMLinkage createLinkage(PDOMDatabase pdom) throws CoreException {
+ public PDOMLinkage createLinkage(PDOM pdom) throws CoreException {
return new PDOMCLinkage(pdom);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java
index 22530535735..c8e5a598517 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java
@@ -18,7 +18,7 @@ import org.eclipse.cdt.core.dom.ast.ICompositeType;
import org.eclipse.cdt.core.dom.ast.IField;
import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.IType;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMember;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMemberOwner;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
@@ -31,11 +31,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCStructure extends PDOMMemberOwner implements ICompositeType {
- public PDOMCStructure(PDOMDatabase pdom, PDOMNode parent, IASTName name) throws CoreException {
+ public PDOMCStructure(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCLinkage.CSTRUCTURE);
}
- public PDOMCStructure(PDOMDatabase pdom, int record) {
+ public PDOMCStructure(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java
index 733b1a57b27..ada649993b5 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java
@@ -17,7 +17,7 @@ import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.internal.core.dom.parser.c.CVariable;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+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;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError;
@@ -29,13 +29,13 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCVariable extends PDOMBinding implements IVariable {
- public PDOMCVariable(PDOMDatabase pdom, PDOMNode parent, IASTName name) throws CoreException {
+ public PDOMCVariable(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCLinkage.CVARIABLE);
CVariable binding = (CVariable)name.getBinding();
IType type = binding.getType();
}
- public PDOMCVariable(PDOMDatabase pdom, int record) {
+ public PDOMCVariable(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java
index 97901952030..280c9945257 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java
@@ -25,7 +25,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPConstructor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+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.PDOMMember;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMemberOwner;
@@ -41,11 +41,11 @@ public class PDOMCPPClassType extends PDOMMemberOwner implements ICPPClassType,
protected static final int RECORD_SIZE = PDOMMemberOwner.RECORD_SIZE + 0;
- public PDOMCPPClassType(PDOMDatabase pdom, PDOMNode parent, IASTName name) throws CoreException {
+ public PDOMCPPClassType(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCPPLinkage.CPPCLASSTYPE);
}
- public PDOMCPPClassType(PDOMDatabase pdom, int bindingRecord) {
+ public PDOMCPPClassType(PDOM pdom, int bindingRecord) {
super(pdom, bindingRecord);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java
index 31d7e50d655..ed3cd9c55c9 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java
@@ -18,7 +18,7 @@ import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMember;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError;
import org.eclipse.core.runtime.CoreException;
@@ -29,12 +29,12 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCPPField extends PDOMMember implements ICPPField {
- public PDOMCPPField(PDOMDatabase pdom, PDOMCPPClassType parent, IASTName name)
+ public PDOMCPPField(PDOM pdom, PDOMCPPClassType parent, IASTName name)
throws CoreException {
super(pdom, parent, name, PDOMCPPLinkage.CPPFIELD);
}
- public PDOMCPPField(PDOMDatabase pdom, int bindingRecord) {
+ public PDOMCPPField(PDOM pdom, int bindingRecord) {
super(pdom, bindingRecord);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java
index 8f233e7ec01..65c339b5963 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java
@@ -18,7 +18,7 @@ import org.eclipse.cdt.core.dom.ast.IParameter;
import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPFunction;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+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;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError;
@@ -30,11 +30,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCPPFunction extends PDOMBinding implements ICPPFunction {
- public PDOMCPPFunction(PDOMDatabase pdom, PDOMNode parent, IASTName name) throws CoreException {
+ public PDOMCPPFunction(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCPPLinkage.CPPFUNCTION);
}
- public PDOMCPPFunction(PDOMDatabase pdom, int bindingRecord) {
+ public PDOMCPPFunction(PDOM pdom, int bindingRecord) {
super(pdom, bindingRecord);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java
index d2988cd7ae6..5ca66b27b69 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java
@@ -39,7 +39,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPMethod;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNamespace;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPNamespaceAlias;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVariable;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+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.PDOMMember;
@@ -54,11 +54,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCPPLinkage extends PDOMLinkage {
- public PDOMCPPLinkage(PDOMDatabase pdom, int record) {
+ public PDOMCPPLinkage(PDOM pdom, int record) {
super(pdom, record);
}
- public PDOMCPPLinkage(PDOMDatabase pdom)
+ public PDOMCPPLinkage(PDOM pdom)
throws CoreException {
super(pdom, GPPLanguage.ID, "C++".toCharArray());
}
@@ -133,7 +133,7 @@ public class PDOMCPPLinkage extends PDOMLinkage {
private static final class FindBinding extends PDOMNode.NodeVisitor {
PDOMBinding pdomBinding;
final int desiredType;
- public FindBinding(PDOMDatabase pdom, char[] name, int desiredType) {
+ public FindBinding(PDOM pdom, char[] name, int desiredType) {
super(pdom, name);
this.desiredType = desiredType;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkageFactory.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkageFactory.java
index 5f9520c1baa..12857f9acca 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkageFactory.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkageFactory.java
@@ -11,7 +11,7 @@
package org.eclipse.cdt.internal.core.pdom.dom.cpp;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.IPDOMLinkageFactory;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMLinkage;
import org.eclipse.core.runtime.CoreException;
@@ -22,11 +22,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCPPLinkageFactory implements IPDOMLinkageFactory {
- public PDOMLinkage getLinkage(PDOMDatabase pdom, int record) {
+ public PDOMLinkage getLinkage(PDOM pdom, int record) {
return new PDOMCPPLinkage(pdom, record);
}
- public PDOMLinkage createLinkage(PDOMDatabase pdom) throws CoreException {
+ public PDOMLinkage createLinkage(PDOM pdom) throws CoreException {
return new PDOMCPPLinkage(pdom);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java
index f02aaaa3e68..82c0ecc3825 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java
@@ -19,7 +19,7 @@ import org.eclipse.cdt.core.dom.ast.IParameter;
import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMember;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMMemberOwner;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError;
@@ -31,11 +31,11 @@ import org.eclipse.core.runtime.CoreException;
*/
public class PDOMCPPMethod extends PDOMMember implements ICPPMethod {
- public PDOMCPPMethod(PDOMDatabase pdom, PDOMMemberOwner parent, IASTName name) throws CoreException {
+ public PDOMCPPMethod(PDOM pdom, PDOMMemberOwner parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCPPLinkage.CPPMETHOD);
}
- public PDOMCPPMethod(PDOMDatabase pdom, int record) {
+ public PDOMCPPMethod(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java
index 317f60d1b11..b285d24a772 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java
@@ -23,7 +23,7 @@ import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespace;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.BTree;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNode;
@@ -41,11 +41,11 @@ public class PDOMCPPNamespace extends PDOMBinding
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4;
- public PDOMCPPNamespace(PDOMDatabase pdom, PDOMNode parent, IASTName name) throws CoreException {
+ public PDOMCPPNamespace(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCPPLinkage.CPPNAMESPACE);
}
- public PDOMCPPNamespace(PDOMDatabase pdom, int record) {
+ public PDOMCPPNamespace(PDOM pdom, int record) {
super(pdom, record);
}
@@ -109,7 +109,7 @@ public class PDOMCPPNamespace extends PDOMBinding
private static final class FindBinding extends PDOMNode.NodeVisitor {
PDOMBinding pdomBinding;
final int desiredType;
- public FindBinding(PDOMDatabase pdom, char[] name, int desiredType) {
+ public FindBinding(PDOM pdom, char[] name, int desiredType) {
super(pdom, name);
this.desiredType = desiredType;
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java
index a2e64ab5cd3..487728aecc6 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java
@@ -16,7 +16,7 @@ import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceAlias;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+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;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError;
@@ -29,12 +29,12 @@ import org.eclipse.core.runtime.CoreException;
public class PDOMCPPNamespaceAlias extends PDOMBinding implements
ICPPNamespaceAlias {
- public PDOMCPPNamespaceAlias(PDOMDatabase pdom, PDOMNode parent,
+ public PDOMCPPNamespaceAlias(PDOM pdom, PDOMNode parent,
IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCPPLinkage.CPPNAMESPACEALIAS);
}
- public PDOMCPPNamespaceAlias(PDOMDatabase pdom, int record) {
+ public PDOMCPPNamespaceAlias(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java
index d86b79d444c..74d7b258052 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java
@@ -20,7 +20,7 @@ import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+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;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMNotImplementedError;
@@ -36,7 +36,7 @@ public class PDOMCPPVariable extends PDOMBinding implements ICPPVariable {
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4;
- public PDOMCPPVariable(PDOMDatabase pdom, PDOMNode parent, IASTName name) throws CoreException {
+ public PDOMCPPVariable(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
super(pdom, parent, name, PDOMCPPLinkage.CPPVARIABLE);
// Find the type record
@@ -52,7 +52,7 @@ public class PDOMCPPVariable extends PDOMBinding implements ICPPVariable {
}
}
- public PDOMCPPVariable(PDOMDatabase pdom, int record) {
+ public PDOMCPPVariable(PDOM pdom, int record) {
super(pdom, record);
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastAddTU.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastAddTU.java
index fc3109c764a..85e7c153a31 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastAddTU.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastAddTU.java
@@ -12,8 +12,11 @@
package org.eclipse.cdt.internal.core.pdom.indexer.fast;
import org.eclipse.cdt.core.dom.IPDOM;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.model.ITranslationUnit;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -27,18 +30,35 @@ import org.eclipse.core.runtime.jobs.Job;
public class PDOMFastAddTU extends Job {
private final ITranslationUnit tu;
- private final IPDOM pdom;
+ private final PDOM pdom;
public PDOMFastAddTU(IPDOM pdom, ITranslationUnit tu) {
super("PDOM Fast Add TU");
- this.pdom = pdom;
+ this.pdom = (pdom instanceof PDOM) ? (PDOM)pdom : null;
this.tu = tu;
+ setPriority(PDOM.WRITER_PRIORITY);
}
protected IStatus run(IProgressMonitor monitor) {
+ if (pdom == null)
+ return Status.CANCEL_STATUS;
+
try {
- PDOMDatabase mypdom = (PDOMDatabase)pdom;
- mypdom.addSymbols(tu);
+ ILanguage language = tu.getLanguage();
+ if (language == null)
+ return Status.CANCEL_STATUS;
+
+ // get the AST in a "Fast" way
+ IASTTranslationUnit ast = language.getTranslationUnit((IFile)tu.getResource(),
+ ILanguage.AST_USE_INDEX |
+ ILanguage.AST_SKIP_INDEXED_HEADERS |
+ ILanguage.AST_SKIP_IF_NO_BUILD_INFO);
+ if (ast == null)
+ return Status.CANCEL_STATUS;
+
+ getJobManager().beginRule(pdom.getWriterLockRule(), monitor);
+ pdom.addSymbols(language, ast);
+ getJobManager().endRule(pdom.getWriterLockRule());
return Status.OK_STATUS;
} catch (CoreException e) {
return e.getStatus();
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastChangeTU.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastChangeTU.java
index 0689d0e5569..50a3b7a5cbf 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastChangeTU.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastChangeTU.java
@@ -12,8 +12,11 @@
package org.eclipse.cdt.internal.core.pdom.indexer.fast;
import org.eclipse.cdt.core.dom.IPDOM;
+import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
+import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.model.ITranslationUnit;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -26,20 +29,35 @@ import org.eclipse.core.runtime.jobs.Job;
*/
public class PDOMFastChangeTU extends Job {
- private final IPDOM pdom;
+ private final PDOM pdom;
private final ITranslationUnit tu;
public PDOMFastChangeTU(IPDOM pdom, ITranslationUnit tu) {
super("PDOM Fast Change TU");
- this.pdom = pdom;
+ this.pdom = (pdom instanceof PDOM) ? (PDOM)pdom : null;
this.tu = tu;
}
protected IStatus run(IProgressMonitor monitor) {
+ if (pdom == null)
+ return Status.CANCEL_STATUS;
try {
- PDOMDatabase mypdom = (PDOMDatabase)pdom;
- mypdom.removeSymbols(tu);
- mypdom.addSymbols(tu);
+ ILanguage language = tu.getLanguage();
+ if (language == null)
+ return Status.CANCEL_STATUS;
+
+ // get the AST in a "Fast" way
+ IASTTranslationUnit ast = language.getTranslationUnit((IFile)tu.getResource(),
+ ILanguage.AST_USE_INDEX |
+ ILanguage.AST_SKIP_INDEXED_HEADERS |
+ ILanguage.AST_SKIP_IF_NO_BUILD_INFO);
+ if (ast == null)
+ return Status.CANCEL_STATUS;
+
+ getJobManager().beginRule(pdom.getWriterLockRule(), monitor);
+ pdom.removeSymbols(tu);
+ pdom.addSymbols(language, ast);
+ getJobManager().endRule(pdom.getWriterLockRule());
return Status.OK_STATUS;
} catch (CoreException e) {
return e.getStatus();
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 0d32b1b5f64..04bcb1c91a6 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
@@ -18,14 +18,13 @@ import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.IPDOM;
import org.eclipse.cdt.core.dom.IPDOMIndexer;
-import org.eclipse.cdt.core.dom.PDOM;
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.ICProject;
import org.eclipse.cdt.core.model.ITranslationUnit;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceProxy;
@@ -44,11 +43,19 @@ import org.eclipse.core.runtime.jobs.Job;
*/
public class PDOMFastIndexer implements IPDOMIndexer {
- private PDOMDatabase pdom;
+ private PDOM pdom;
public void setPDOM(IPDOM pdom) {
- if (pdom instanceof PDOMDatabase)
- this.pdom = (PDOMDatabase)pdom;
+ if (pdom instanceof PDOM)
+ this.pdom = (PDOM)pdom;
+ }
+
+ private IProgressMonitor progressGroup;
+
+ private IProgressMonitor getProgressGroup() {
+ if (progressGroup == null)
+ progressGroup = Platform.getJobManager().createProgressGroup();
+ return progressGroup;
}
private class ChangeHandler extends Job {
@@ -130,7 +137,7 @@ public class PDOMFastIndexer implements IPDOMIndexer {
private void processDelta(ICElementDelta delta) {
// First make sure this project is PDOMable
ICElement element = delta.getElement();
- if (element instanceof ICProject && PDOM.getPDOM(((ICProject)element).getProject()) == null)
+ if (element instanceof ICProject && CCorePlugin.getPDOMManager().getPDOM(((ICProject)element).getProject()) == null)
return;
// process the children first
@@ -173,8 +180,6 @@ public class PDOMFastIndexer implements IPDOMIndexer {
private void processNewProject(final ICProject project) {
try {
- if (!PDOM.isEnabled(project.getProject()))
- return;
project.getProject().accept(new IResourceProxyVisitor() {
public boolean visit(IResourceProxy proxy) throws CoreException {
if (proxy.getType() == IResource.FILE) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastRemoveTU.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastRemoveTU.java
index 5fdab656a31..f61987fbc89 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastRemoveTU.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/fast/PDOMFastRemoveTU.java
@@ -13,7 +13,7 @@ package org.eclipse.cdt.internal.core.pdom.indexer.fast;
import org.eclipse.cdt.core.dom.IPDOM;
import org.eclipse.cdt.core.model.ITranslationUnit;
-import org.eclipse.cdt.internal.core.pdom.PDOMDatabase;
+import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.IStatus;
@@ -26,22 +26,24 @@ import org.eclipse.core.runtime.jobs.Job;
*/
public class PDOMFastRemoveTU extends Job {
- private final IPDOM pdom;
+ private final PDOM pdom;
private final ITranslationUnit tu;
public PDOMFastRemoveTU(IPDOM pdom, ITranslationUnit tu) {
super("PDOM Fast Remove TU");
- this.pdom = pdom;
+ this.pdom = (pdom instanceof PDOM) ? (PDOM)pdom : null;
this.tu = tu;
}
protected IStatus run(IProgressMonitor monitor) {
+ if (pdom == null)
+ return Status.CANCEL_STATUS;
try {
- PDOMDatabase mypdom = (PDOMDatabase)pdom;
- mypdom.removeSymbols(tu);
+ getJobManager().beginRule(pdom.getWriterLockRule(), monitor);
+ pdom.removeSymbols(tu);
// TODO delete the file itself from the database
// the removeSymbols only removes the names in the file
- // TODO Auto-generated method stub
+ getJobManager().endRule(pdom.getWriterLockRule());
return Status.OK_STATUS;
} catch (CoreException e) {
return e.getStatus();
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
new file mode 100644
index 00000000000..d391ec62354
--- /dev/null
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/indexer/nulli/PDOMNullIndexer.java
@@ -0,0 +1,33 @@
+/*******************************************************************************
+ * Copyright (c) 2006 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX - Initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.cdt.internal.core.pdom.indexer.nulli;
+
+import org.eclipse.cdt.core.dom.IPDOM;
+import org.eclipse.cdt.core.dom.IPDOMIndexer;
+import org.eclipse.cdt.core.model.ElementChangedEvent;
+
+/**
+ * @author Doug Schaefer
+ *
+ */
+public class PDOMNullIndexer implements IPDOMIndexer {
+
+ public void setPDOM(IPDOM pdom) {
+ }
+
+ public void reindex() {
+ }
+
+ public void elementChanged(ElementChangedEvent event) {
+ }
+
+}
diff --git a/core/org.eclipse.cdt.core/plugin.properties b/core/org.eclipse.cdt.core/plugin.properties
index 954026614a8..078b3375d46 100644
--- a/core/org.eclipse.cdt.core/plugin.properties
+++ b/core/org.eclipse.cdt.core/plugin.properties
@@ -72,4 +72,6 @@ cdt_pathentry_var.description=CDT PathEntry Variable
PDOMProviderName=PDOM Provider
-language.name=Language
\ No newline at end of file
+fastIndexer.name=Fast Indexer
+
+language.name=Language
diff --git a/core/org.eclipse.cdt.core/plugin.xml b/core/org.eclipse.cdt.core/plugin.xml
index ad1f7ded337..eb30e7f85ef 100644
--- a/core/org.eclipse.cdt.core/plugin.xml
+++ b/core/org.eclipse.cdt.core/plugin.xml
@@ -540,6 +540,7 @@
class="org.eclipse.cdt.internal.core.index.domsourceindexer.DOMSourceIndexer">
+
+
+
+
+
+
+
+
+
+
diff --git a/core/org.eclipse.cdt.core/schema/CIndexer.exsd b/core/org.eclipse.cdt.core/schema/CIndexer.exsd
index c9806ca2d0d..0e42c7ddc90 100644
--- a/core/org.eclipse.cdt.core/schema/CIndexer.exsd
+++ b/core/org.eclipse.cdt.core/schema/CIndexer.exsd
@@ -13,7 +13,7 @@
-
+
@@ -39,6 +39,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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 db8cd366d81..b8aeedecc3f 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
@@ -24,7 +24,7 @@ import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.eclipse.cdt.core.dom.CDOM;
-import org.eclipse.cdt.core.dom.PDOM;
+import org.eclipse.cdt.core.dom.IPDOMManager;
import org.eclipse.cdt.core.model.CoreModel;
import org.eclipse.cdt.core.model.IWorkingCopy;
import org.eclipse.cdt.core.parser.IScannerInfoProvider;
@@ -41,6 +41,7 @@ import org.eclipse.cdt.internal.core.model.CModelManager;
import org.eclipse.cdt.internal.core.model.DeltaProcessor;
import org.eclipse.cdt.internal.core.model.IBufferFactory;
import org.eclipse.cdt.internal.core.model.Util;
+import org.eclipse.cdt.internal.core.pdom.PDOMManager;
import org.eclipse.cdt.internal.core.search.indexing.IndexManager;
import org.eclipse.cdt.internal.core.search.matching.MatchLocator;
import org.eclipse.cdt.internal.core.search.processing.JobManager;
@@ -88,8 +89,9 @@ public class CCorePlugin extends Plugin {
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 USE_PDOM_PREF = "usePDOM"; //$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 DEFAULT_INDEXER_SIMPLE_ID = "domsourceindexer"; //$NON-NLS-1$
+ public final static String DEFAULT_INDEXER_SIMPLE_ID = NULL_INDEXER_SIMPLE_ID; //$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$
@@ -158,6 +160,8 @@ public class CCorePlugin extends Plugin {
private CDescriptorManager fDescriptorManager = new CDescriptorManager();
private CoreModel fCoreModel;
+
+ private PDOMManager pdomManager;
private PathEntryVariableManager fPathEntryVariableManager;
@@ -295,7 +299,8 @@ public class CCorePlugin extends Plugin {
fCoreModel.startIndexing();
// Fire up the PDOM
- PDOM.startup();
+ pdomManager = new PDOMManager();
+ pdomManager.startup();
// Set the default for using the structual parse mode to build the CModel
getPluginPreferences().setDefault(PREF_USE_STRUCTURAL_PARSE_MODE, false);
@@ -617,6 +622,10 @@ public class CCorePlugin extends Plugin {
return fCoreModel;
}
+ public static IPDOMManager getPDOMManager() {
+ return getDefault().pdomManager;
+ }
+
public IPathEntryVariableManager getPathEntryVariableManager() {
return fPathEntryVariableManager;
}
diff --git a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/dom/PDOM.java b/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/dom/PDOM.java
deleted file mode 100644
index 5798a644ca6..00000000000
--- a/core/org.eclipse.cdt.core/src/org/eclipse/cdt/core/dom/PDOM.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2005 QNX Software Systems and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * QNX - Initial API and implementation
- *******************************************************************************/
-package org.eclipse.cdt.core.dom;
-
-import org.eclipse.cdt.core.CCorePlugin;
-import org.eclipse.cdt.core.model.CoreModel;
-import org.eclipse.cdt.core.model.IElementChangedListener;
-import org.eclipse.cdt.internal.core.pdom.PDOMManager;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.ProjectScope;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.preferences.IEclipsePreferences;
-import org.eclipse.core.runtime.preferences.IScopeContext;
-import org.osgi.service.prefs.BackingStoreException;
-
-/**
- * @author Doug Schaefer
- *
- */
-public class PDOM {
-
- private static final String PDOM_NODE = CCorePlugin.PLUGIN_ID + ".pdom"; //$NON-NLS-1$
- private static final String ENABLED_KEY = "enabled"; //$NON-NLS-1$
-
- private static IEclipsePreferences getPreferences(IProject project) {
- IScopeContext projectScope = new ProjectScope(project);
- if (projectScope == null)
- return null;
- else
- return projectScope.getNode(PDOM_NODE);
- }
-
- public static boolean isEnabled(IProject project) {
- IEclipsePreferences prefs = getPreferences(project);
- if (prefs == null)
- return false;
- else
- return prefs.getBoolean(ENABLED_KEY, false);
- }
-
- public static void setEnabled(IProject project, boolean enabled) {
- IEclipsePreferences prefs = getPreferences(project);
- if (prefs == null)
- return;
-
- prefs.putBoolean(ENABLED_KEY, enabled);
- try {
- prefs.flush();
- } catch (BackingStoreException e) {
- }
- }
-
- public static boolean isInitialized(IProject project) {
- return getPreferences(project) != null;
- }
-
- /**
- * Get the PDOM for the given project.
- *
- * @param project
- * @return the PDOM for the project
- */
- public static IPDOM getPDOM(IProject project) {
- if (isEnabled(project))
- return PDOMManager.getInstance().getPDOM(project);
- else
- return null;
- }
-
- public static void deletePDOM(IProject project) throws CoreException {
- if (isEnabled(project))
- PDOMManager.getInstance().getPDOM(project).delete();
- }
-
- /**
- * Startup the PDOM. This mainly sets us up to handle model
- * change events.
- */
- public static void startup() {
- IElementChangedListener listener = PDOMManager.getInstance();
- if (listener != null) {
- CoreModel.getDefault().addElementChangedListener(listener);
- }
- }
-
-}
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 3938be3b6a3..d89ac04d3d5 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
@@ -70,3 +70,4 @@ CTagsIndexMarker.CTagsMissing=CTags not installed or not in path
DOMIndexerMarker.EmptyScannerInfo=File not indexed because it was not built
dom.languageError=Language not found
+indexer.notFound = Indexer not found
\ No newline at end of file
diff --git a/core/org.eclipse.cdt.ui/plugin.properties b/core/org.eclipse.cdt.ui/plugin.properties
index 3a08913bc76..2c7839a6393 100644
--- a/core/org.eclipse.cdt.ui/plugin.properties
+++ b/core/org.eclipse.cdt.ui/plugin.properties
@@ -325,6 +325,7 @@ indexerPrefName=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)
+CDTIndexer.fastindexer=Fast C/C++ Indexer (declarations and cross references)
IndexView.name=C/C++ Index
UpdateIndex.name=Update Index
diff --git a/core/org.eclipse.cdt.ui/plugin.xml b/core/org.eclipse.cdt.ui/plugin.xml
index 4534ad9e8b7..4b59eb6ada1 100644
--- a/core/org.eclipse.cdt.ui/plugin.xml
+++ b/core/org.eclipse.cdt.ui/plugin.xml
@@ -1367,6 +1367,11 @@
id="org.eclipse.cdt.ui.DOMASTSourceIndexerUI"
indexerID="org.eclipse.cdt.core.domsourceindexer"
name="%CDTIndexer.domsourceindexer"/>
+