1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-07-19 23:15:24 +02:00

Eliminating use of the adapter in IBinding. I'm not sure that was the right choice since you need context information since a binding can exist in more than one project.

This commit is contained in:
Doug Schaefer 2006-01-09 20:23:03 +00:00
parent 0623b903f8
commit 5caada25a2
3 changed files with 19 additions and 14 deletions

View file

@ -13,9 +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.dom.ast.IScope;
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.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdapterFactory;
@ -32,16 +34,19 @@ public class PDOMBindingAdapterFactory implements IAdapterFactory {
try {
IBinding binding = (IBinding)adaptableObject;
IScope scope = binding.getScope();
IPDOM ipdom = scope.getPhysicalNode().getTranslationUnit().getIndex();
if (ipdom == null)
return null;
PDOMDatabase pdom = (PDOMDatabase)ipdom;
ICProject[] projects = CoreModel.getDefault().getCModel().getCProjects();
for (int i = 0; i < projects.length; ++i) {
IPDOM ipdom = PDOM.getPDOM(projects[i].getProject());
if (ipdom == null || !(ipdom instanceof PDOMDatabase))
continue;
PDOMDatabase pdom = (PDOMDatabase)ipdom;
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) {
PDOMBinding pdomBinding = linkage.adaptBinding(binding);
if (binding != null)
return pdomBinding;
for (PDOMLinkage linkage = pdom.getFirstLinkage(); linkage != null; linkage = linkage.getNextLinkage()) {
PDOMBinding pdomBinding = linkage.adaptBinding(binding);
if (binding != null)
return pdomBinding;
}
}
return null;
} catch (DOMException e) {

View file

@ -56,7 +56,7 @@ public class PDOMCLinkage extends PDOMLinkage {
IASTName scopeName = scope.getScopeName();
if (scopeName != null) {
IBinding scopeBinding = scopeName.resolveBinding();
PDOMBinding scopePDOMBinding = (PDOMBinding)scopeBinding.getAdapter(PDOMBinding.class);
PDOMBinding scopePDOMBinding = adaptBinding(scopeBinding);
if (scopePDOMBinding != null)
parent = scopePDOMBinding;
}
@ -73,7 +73,7 @@ public class PDOMCLinkage extends PDOMLinkage {
if (binding == null || binding instanceof IProblemBinding)
return null;
PDOMBinding pdomBinding = (PDOMBinding)binding.getAdapter(PDOMBinding.class);
PDOMBinding pdomBinding = adaptBinding(binding);
if (pdomBinding == null) {
PDOMNode parent = getParent(binding);

View file

@ -67,7 +67,7 @@ public class PDOMCPPLinkage extends PDOMLinkage {
IASTName scopeName = scope.getScopeName();
if (scopeName != null) {
IBinding scopeBinding = scopeName.resolveBinding();
PDOMBinding scopePDOMBinding = (PDOMBinding)scopeBinding.getAdapter(PDOMBinding.class);
PDOMBinding scopePDOMBinding = adaptBinding(scopeBinding);
if (scopePDOMBinding != null)
parent = scopePDOMBinding;
}
@ -84,7 +84,7 @@ public class PDOMCPPLinkage extends PDOMLinkage {
// Can't tell what it is
return null;
PDOMBinding pdomBinding = (PDOMBinding)binding.getAdapter(PDOMBinding.class);
PDOMBinding pdomBinding = adaptBinding(binding);
if (pdomBinding == null) {
PDOMNode parent = getParent(binding);