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 7f4ce6d69e2..415bd437954 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
@@ -52,7 +52,7 @@ public class OverloadsWithinCommonHeaderTests extends PDOMTestBase {
public void testDummy() {}
- public void _testOverloadedInCommonHeader_ClassScope() throws CoreException {
+ public void testOverloadedInCommonHeader_ClassScope() throws CoreException {
Pattern[] ManyOverloadedQuxPath = makePatternArray(new String[] {"ManyOverloaded","qux"});
IBinding[] ManyOverloadedQux = pdom.findBindings(ManyOverloadedQuxPath, new NullProgressMonitor());
assertEquals(5,ManyOverloadedQux.length);
@@ -73,7 +73,7 @@ public class OverloadsWithinCommonHeaderTests extends PDOMTestBase {
assertFunctionRefCount(new Class[]{ICPPClassType.class}, ManyOverloadedQux, 10);
}
- public void _testOverloadedInCommonHeader_FileScope() throws CoreException {
+ public void testOverloadedInCommonHeader_FileScope() throws CoreException {
Pattern[] QuuxPath = makePatternArray(new String[] {"quux"});
IBinding[] Quux = pdom.findBindings(QuuxPath, false, IndexFilter.getFilter(Linkage.CPP_LINKAGE), new NullProgressMonitor());
@@ -95,7 +95,7 @@ public class OverloadsWithinCommonHeaderTests extends PDOMTestBase {
assertFunctionRefCount(new Class[] {ICPPClassType.class}, Quux, 12);
}
- public void _testOverloadedInCommonHeader_NamespaceScope() throws CoreException {
+ public void testOverloadedInCommonHeader_NamespaceScope() throws CoreException {
Pattern[] GraultPath = makePatternArray(new String[] {"corge","grault"});
IBinding[] Grault = pdom.findBindings(GraultPath, true, IndexFilter.getFilter(Linkage.CPP_LINKAGE), new NullProgressMonitor());
assertEquals(5,Grault.length);
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 88186c57d99..266210f045a 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
@@ -14,7 +14,6 @@ package org.eclipse.cdt.internal.core.pdom.dom;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.index.IIndexBinding;
import org.eclipse.cdt.internal.core.index.IIndexFragment;
@@ -35,10 +34,6 @@ public abstract class PDOMBinding extends PDOMNamedNode implements IIndexFragmen
protected static final int RECORD_SIZE = PDOMNamedNode.RECORD_SIZE + 12;
- protected PDOMBinding(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
- super(pdom, parent, name.toCharArray());
- }
-
protected PDOMBinding(PDOM pdom, PDOMNode parent, char[] name) throws CoreException {
super(pdom, parent, name);
}
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 674320a05da..e8ed93c983e 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
@@ -177,8 +177,10 @@ public abstract class PDOMLinkage extends PDOMNamedNode implements IBindingIdent
/**
*
* @param binding
- * @return null for filescope for non-pdom bindings, this for filescope for pdom bindings
- * or the parent binding in any other case
+ * @return
- null - skip this binding (don't add to pdom)
+ *
- this - for filescope
+ *
- a PDOMBinding instance - parent adapted binding
+ *
* @throws CoreException
*/
public PDOMNode getAdaptedParent(IBinding binding) throws CoreException {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java
index 7e377ef9a2c..3ca5dc37e0c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java
@@ -16,7 +16,6 @@ package org.eclipse.cdt.internal.core.pdom.dom;
import org.eclipse.cdt.core.CCorePlugin;
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.IString;
import org.eclipse.core.runtime.CoreException;
@@ -47,9 +46,7 @@ public abstract class PDOMNamedNode extends PDOMNode {
name != null ? db.newString(name).getRecord() : 0);
}
- protected int getRecordSize() {
- return RECORD_SIZE;
- }
+ abstract protected int getRecordSize();
public IString getDBName() throws CoreException {
Database db = pdom.getDB();
@@ -65,17 +62,6 @@ public abstract class PDOMNamedNode extends PDOMNode {
return getDBName().equals(name);
}
- public IBTreeComparator getIndexComparator() {
- return new IBTreeComparator() {
- public int compare(int record1, int record2) throws CoreException {
- Database db = pdom.getDB();
- int string1 = db.getInt(record1 + NAME);
- int string2 = db.getInt(record2 + NAME);
- return db.getString(string1).compare(db.getString(string2));
- }
- };
- }
-
/**
* Convenience method for fetching a byte from the database.
* @param offset Location of the byte.
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotation.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotation.java
index 622bd47c48a..db651c9a264 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotation.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotation.java
@@ -15,7 +15,7 @@ import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IFunction;
import org.eclipse.cdt.core.dom.ast.IVariable;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
/**
* A utility class for packing various annotations into bit fields. This
@@ -67,14 +67,17 @@ public class PDOMCAnnotation {
/**
* Encodes CV qualifiers from a method declarator as a bit vector.
- * @param declarator Method declarator.
+ * @param type the function type
* @return a bit vector of the CV qualifiers.
*/
- public static byte encodeCVQualifiers(ICPPASTFunctionDeclarator declarator) {
+ /*
+ * aftodo - will we put CV information in C pdom bindings or should we
+ * move this to PDOMCPPAnnotation?
+ */
+ public static byte encodeCVQualifiers(ICPPFunctionType type) {
byte modifiers = 0;
- modifiers |= (declarator.isConst() ? 1 : 0) << CONST_OFFSET;
- modifiers |= (declarator.isVolatile() ? 1 : 0) << VOLATILE_OFFSET;
+ modifiers |= (type.isConst() ? 1 : 0) << CONST_OFFSET;
+ modifiers |= (type.isVolatile() ? 1 : 0) << VOLATILE_OFFSET;
return modifiers;
}
-
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java
index a9e0e37b3e7..585f064cd56 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java
@@ -14,7 +14,6 @@ import java.util.ArrayList;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IEnumeration;
import org.eclipse.cdt.core.dom.ast.IEnumerator;
import org.eclipse.cdt.core.dom.ast.IType;
@@ -33,9 +32,9 @@ class PDOMCEnumeration extends PDOMBinding implements IEnumeration {
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4;
- public PDOMCEnumeration(PDOM pdom, PDOMNode parent, IASTName name)
+ public PDOMCEnumeration(PDOM pdom, PDOMNode parent, IEnumeration enumeration)
throws CoreException {
- super(pdom, parent, name);
+ super(pdom, parent, enumeration.getNameCharArray());
}
public PDOMCEnumeration(PDOM pdom, int record) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java
index 1deec7ec558..ea30788e1cb 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java
@@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.core.pdom.dom.c;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IEnumerator;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.internal.core.pdom.PDOM;
@@ -32,9 +31,9 @@ class PDOMCEnumerator extends PDOMBinding implements IEnumerator {
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 8;
- public PDOMCEnumerator(PDOM pdom, PDOMNode parent, IASTName name, PDOMCEnumeration enumeration)
+ public PDOMCEnumerator(PDOM pdom, PDOMNode parent, IEnumerator enumerator, PDOMCEnumeration enumeration)
throws CoreException {
- super(pdom, parent, name);
+ super(pdom, parent, enumerator.getNameCharArray());
pdom.getDB().putInt(record + ENUMERATION, enumeration.getRecord());
enumeration.addEnumerator(this);
}
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 3f81d109ed8..5960cc68b18 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
@@ -13,7 +13,6 @@
package org.eclipse.cdt.internal.core.pdom.dom.c;
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.PDOM;
@@ -28,8 +27,8 @@ import org.eclipse.core.runtime.CoreException;
*/
class PDOMCField extends PDOMBinding implements IField {
- public PDOMCField(PDOM pdom, IPDOMMemberOwner parent, IASTName name) throws CoreException {
- super(pdom, (PDOMNode) parent, name);
+ public PDOMCField(PDOM pdom, IPDOMMemberOwner parent, IField field) throws CoreException {
+ super(pdom, (PDOMNode) parent, field.getNameCharArray());
}
public PDOMCField(PDOM pdom, int 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 23f9ccba94a..67d31da4a93 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
@@ -15,17 +15,11 @@ package org.eclipse.cdt.internal.core.pdom.dom.c;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
-import org.eclipse.cdt.core.dom.ast.IASTStandardFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.IBinding;
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.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator;
import org.eclipse.cdt.internal.core.Util;
import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
@@ -60,25 +54,16 @@ class PDOMCFunction extends PDOMBinding implements IFunction {
*/
public static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 9;
- public PDOMCFunction(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
- super(pdom, parent, name);
+ public PDOMCFunction(PDOM pdom, PDOMNode parent, IFunction function) throws CoreException {
+ super(pdom, parent, function.getNameCharArray());
+
try {
- IASTNode parentNode = name.getParent();
- if (parentNode instanceof IASTStandardFunctionDeclarator) {
- IASTStandardFunctionDeclarator funcDecl = (IASTStandardFunctionDeclarator)parentNode;
- IASTParameterDeclaration[] params = funcDecl.getParameters();
- pdom.getDB().putInt(record + NUM_PARAMS, params.length);
- for (int i = 0; i < params.length; ++i) {
- IASTParameterDeclaration param = params[i];
- IASTName paramName = param.getDeclarator().getName();
- IBinding binding = paramName.resolveBinding();
- IParameter paramBinding = (IParameter)binding;
- setFirstParameter(new PDOMCParameter(pdom, this, paramName, paramBinding));
- }
- } else if(parentNode instanceof ICASTKnRFunctionDeclarator) {
- fail(); // aftodo
+ IParameter[] params = function.getParameters();
+ pdom.getDB().putInt(record + NUM_PARAMS, params.length);
+ for (int i = 0; i < params.length; ++i) {
+ setFirstParameter(new PDOMCParameter(pdom, this, params[i]));
}
- pdom.getDB().putByte(record + ANNOTATIONS, PDOMCAnnotation.encodeAnnotation(name.resolveBinding()));
+ pdom.getDB().putByte(record + ANNOTATIONS, PDOMCAnnotation.encodeAnnotation(function));
} catch(DOMException e) {
throw new CoreException(Util.createStatus(e));
}
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 c87fc941afc..a71b9f483fd 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
@@ -102,7 +102,7 @@ class PDOMCLinkage extends PDOMLinkage {
if (binding instanceof IParameter)
// skip parameters
return null;
-
+
PDOMBinding pdomBinding = adaptBinding(binding);
try {
if (pdomBinding == null) {
@@ -114,42 +114,38 @@ class PDOMCLinkage extends PDOMLinkage {
return null; // skip parameters
else if (binding instanceof IField) { // must be before IVariable
if (parent instanceof IPDOMMemberOwner)
- pdomBinding = new PDOMCField(pdom, (IPDOMMemberOwner)parent, name);
+ pdomBinding = new PDOMCField(pdom, (IPDOMMemberOwner)parent, (IField) binding);
} else if (binding instanceof IVariable) {
IVariable var= (IVariable) binding;
if (!var.isStatic()) { // bug 161216
- pdomBinding = new PDOMCVariable(pdom, parent, name);
+ pdomBinding = new PDOMCVariable(pdom, parent, var);
}
- }
- else if (binding instanceof IFunction) {
+ } else if (binding instanceof IFunction) {
IFunction func= (IFunction) binding;
if (!func.isStatic()) { // bug 161216
- pdomBinding = new PDOMCFunction(pdom, parent, name);
+ pdomBinding = new PDOMCFunction(pdom, parent, func);
}
- }
- else if (binding instanceof ICompositeType)
- pdomBinding = new PDOMCStructure(pdom, parent, name);
+ } else if (binding instanceof ICompositeType)
+ pdomBinding = new PDOMCStructure(pdom, parent, (ICompositeType) binding);
else if (binding instanceof IEnumeration)
- pdomBinding = new PDOMCEnumeration(pdom, parent, name);
+ pdomBinding = new PDOMCEnumeration(pdom, parent, (IEnumeration) binding);
else if (binding instanceof IEnumerator) {
try {
IEnumeration enumeration = (IEnumeration)((IEnumerator)binding).getType();
PDOMBinding pdomEnumeration = adaptBinding(enumeration);
if (pdomEnumeration instanceof PDOMCEnumeration)
- pdomBinding = new PDOMCEnumerator(pdom, parent, name,
- (PDOMCEnumeration)pdomEnumeration);
+ pdomBinding = new PDOMCEnumerator(pdom, parent, (IEnumerator) binding, (PDOMCEnumeration)pdomEnumeration);
} catch (DOMException e) {
throw new CoreException(Util.createStatus(e));
}
} else if (binding instanceof ITypedef)
- pdomBinding = new PDOMCTypedef(pdom, parent, name, (ITypedef)binding);
+ pdomBinding = new PDOMCTypedef(pdom, parent, (ITypedef)binding);
if(pdomBinding!=null) {
parent.addChild(pdomBinding);
}
}
- }
- catch (DOMException e) {
+ } catch (DOMException e) {
throw new CoreException(Util.createStatus(e));
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java
index 0f650307b85..485662a57a7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java
@@ -15,7 +15,6 @@ package org.eclipse.cdt.internal.core.pdom.dom.c;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTInitializer;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IParameter;
import org.eclipse.cdt.core.dom.ast.IScope;
import org.eclipse.cdt.core.dom.ast.IType;
@@ -44,9 +43,9 @@ class PDOMCParameter extends PDOMNamedNode implements IParameter {
super(pdom, record);
}
- public PDOMCParameter(PDOM pdom, PDOMNode parent, IASTName name, IParameter param)
+ public PDOMCParameter(PDOM pdom, PDOMNode parent, IParameter param)
throws CoreException {
- super(pdom, parent, name.toCharArray());
+ super(pdom, parent, param.getNameCharArray());
Database db = pdom.getDB();
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 07b0f33ea10..66778b2aac5 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
@@ -20,7 +20,6 @@ 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.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.ICompositeType;
import org.eclipse.cdt.core.dom.ast.IField;
import org.eclipse.cdt.core.dom.ast.IScope;
@@ -42,8 +41,8 @@ public class PDOMCStructure extends PDOMBinding implements ICompositeType, IPDOM
private static final int MEMBERLIST = PDOMBinding.RECORD_SIZE;
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4;
- public PDOMCStructure(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
- super(pdom, parent, name);
+ public PDOMCStructure(PDOM pdom, PDOMNode parent, ICompositeType compType) throws CoreException {
+ super(pdom, parent, compType.getNameCharArray());
// linked list is initialized by malloc zeroing allocated storage
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java
index 620c12ff24c..df3eaf66bed 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java
@@ -14,7 +14,6 @@ package org.eclipse.cdt.internal.core.pdom.dom.c;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.ITypedef;
import org.eclipse.cdt.internal.core.Util;
@@ -33,9 +32,9 @@ class PDOMCTypedef extends PDOMBinding implements ITypedef {
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4;
- public PDOMCTypedef(PDOM pdom, PDOMNode parent, IASTName name, ITypedef typedef)
+ public PDOMCTypedef(PDOM pdom, PDOMNode parent, ITypedef typedef)
throws CoreException {
- super(pdom, parent, name);
+ super(pdom, parent, typedef.getNameCharArray());
try {
IType type = typedef.getType();
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 afcd1271063..0bc53065257 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
@@ -13,7 +13,6 @@
package org.eclipse.cdt.internal.core.pdom.dom.c;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.IVariable;
import org.eclipse.cdt.internal.core.Util;
@@ -39,12 +38,11 @@ class PDOMCVariable extends PDOMBinding implements IVariable {
*/
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 1;
- public PDOMCVariable(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
- super(pdom, parent, name);
- IVariable binding = (IVariable)name.getBinding();
+ public PDOMCVariable(PDOM pdom, PDOMNode parent, IVariable variable) throws CoreException {
+ super(pdom, parent, variable.getNameCharArray());
try {
- pdom.getDB().putByte(record + ANNOTATIONS, PDOMCAnnotation.encodeAnnotation(binding));
+ pdom.getDB().putByte(record + ANNOTATIONS, PDOMCAnnotation.encodeAnnotation(variable));
} catch (DOMException e) {
throw new CoreException(Util.createStatus(e));
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPBindingIdentity.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPBindingIdentity.java
index 7bedfe3e095..e2ee622b808 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPBindingIdentity.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPBindingIdentity.java
@@ -102,7 +102,7 @@ public class CPPBindingIdentity extends AbstractCLocalBindingIdentity {
}
public String toString() {
- return name+" "+type+" "+mangledExtendedType;
+ return name+" "+type+" "+mangledExtendedType; //$NON-NLS-1$ //$NON-NLS-2$
}
public char[] getNameCharArray() throws CoreException {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java
index 608cbdfa6ab..d3e57c8398c 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java
@@ -16,7 +16,6 @@ import java.util.List;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding;
@@ -31,7 +30,7 @@ abstract public class PDOMCPPBinding extends PDOMBinding implements ICPPBinding
public PDOMCPPBinding(PDOM pdom, int record) {
super(pdom, record);
}
- public PDOMCPPBinding(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
+ public PDOMCPPBinding(PDOM pdom, PDOMNode parent, char[] name) throws CoreException {
super(pdom, parent, name);
}
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 ce83121b5a0..707210b8903 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
@@ -23,7 +23,6 @@ import org.eclipse.cdt.core.dom.IPDOMNode;
import org.eclipse.cdt.core.dom.IPDOMVisitor;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IField;
import org.eclipse.cdt.core.dom.ast.IScope;
@@ -61,16 +60,12 @@ class PDOMCPPClassType extends PDOMCPPBinding implements ICPPClassType,
protected static final int RECORD_SIZE = PDOMCPPBinding.RECORD_SIZE + 12;
- public PDOMCPPClassType(PDOM pdom, PDOMNode parent, IASTName name)
+ public PDOMCPPClassType(PDOM pdom, PDOMNode parent, ICPPClassType classType)
throws CoreException {
- super(pdom, parent, name);
+ super(pdom, parent, classType.getName().toCharArray());
- IBinding binding = name.resolveBinding();
try {
- int key = 0;
- if (binding instanceof ICPPClassType) // not sure why it wouldn't
- key = ((ICPPClassType) binding).getKey();
- pdom.getDB().putByte(record + KEY, (byte) key);
+ pdom.getDB().putByte(record + KEY, (byte) classType.getKey());
} catch (DOMException e) {
throw new CoreException(Util.createStatus(e));
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java
index 38c421ef25b..eddfc7850e7 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java
@@ -14,7 +14,6 @@ import java.util.ArrayList;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IEnumeration;
import org.eclipse.cdt.core.dom.ast.IEnumerator;
import org.eclipse.cdt.core.dom.ast.IType;
@@ -34,9 +33,9 @@ class PDOMCPPEnumeration extends PDOMCPPBinding implements IEnumeration, ICPPBin
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4;
- public PDOMCPPEnumeration(PDOM pdom, PDOMNode parent, IASTName name)
+ public PDOMCPPEnumeration(PDOM pdom, PDOMNode parent, IEnumeration enumeration)
throws CoreException {
- super(pdom, parent, name);
+ super(pdom, parent, enumeration.getNameCharArray());
}
public PDOMCPPEnumeration(PDOM pdom, int record) {
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java
index f8e2386b8f8..368198b4c25 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java
@@ -13,7 +13,6 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IEnumerator;
import org.eclipse.cdt.core.dom.ast.IType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPBinding;
@@ -33,9 +32,9 @@ class PDOMCPPEnumerator extends PDOMCPPBinding implements IEnumerator, ICPPBindi
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 8;
- public PDOMCPPEnumerator(PDOM pdom, PDOMNode parent, IASTName name, PDOMCPPEnumeration enumeration)
+ public PDOMCPPEnumerator(PDOM pdom, PDOMNode parent, IEnumerator enumerator, PDOMCPPEnumeration enumeration)
throws CoreException {
- super(pdom, parent, name);
+ super(pdom, parent, enumerator.getNameCharArray());
pdom.getDB().putInt(record + ENUMERATION, enumeration.getRecord());
enumeration.addEnumerator(this);
}
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 95e6bec8db9..15f991ae5c9 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
@@ -14,8 +14,6 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp;
import org.eclipse.cdt.core.CCorePlugin;
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.IType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPClassType;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
@@ -44,13 +42,12 @@ class PDOMCPPField extends PDOMCPPBinding implements ICPPField {
*/
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 1;
- public PDOMCPPField(PDOM pdom, PDOMCPPClassType parent, IASTName name)
+ public PDOMCPPField(PDOM pdom, PDOMCPPClassType parent, ICPPField field)
throws CoreException {
- super(pdom, parent, name);
- IBinding binding = name.resolveBinding();
+ super(pdom, parent, field.getNameCharArray());
try {
Database db = pdom.getDB();
- db.putByte(record + ANNOTATION, PDOMCPPAnnotation.encodeAnnotation(binding));
+ db.putByte(record + ANNOTATION, PDOMCPPAnnotation.encodeAnnotation(field));
} catch (DOMException e) {
throw new CoreException(Util.createStatus(e));
}
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 d47518e99c9..87b9d536127 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
@@ -14,19 +14,13 @@ package org.eclipse.cdt.internal.core.pdom.dom.cpp;
import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.ast.DOMException;
-import org.eclipse.cdt.core.dom.ast.IASTName;
-import org.eclipse.cdt.core.dom.ast.IASTNode;
-import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.IBinding;
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.core.dom.ast.IType;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunction;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType;
-import org.eclipse.cdt.core.dom.ast.cpp.ICPPParameter;
import org.eclipse.cdt.internal.core.Util;
import org.eclipse.cdt.internal.core.pdom.PDOM;
import org.eclipse.cdt.internal.core.pdom.db.Database;
@@ -65,26 +59,18 @@ class PDOMCPPFunction extends PDOMCPPBinding implements ICPPFunction, ICPPFuncti
*/
protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 9;
- public PDOMCPPFunction(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException {
- super(pdom, parent, name);
- IASTNode parentNode = name.getParent();
+ public PDOMCPPFunction(PDOM pdom, PDOMNode parent, ICPPFunction function) throws CoreException {
+ super(pdom, parent, function.getNameCharArray());
+
Database db = pdom.getDB();
- if (parentNode instanceof ICPPASTFunctionDeclarator) {
- ICPPASTFunctionDeclarator funcDecl = (ICPPASTFunctionDeclarator)parentNode;
- IASTParameterDeclaration[] params = funcDecl.getParameters();
- db.putInt(record + NUM_PARAMS, params.length);
- for (int i = 0; i < params.length; ++i) {
- ICPPASTParameterDeclaration param = (ICPPASTParameterDeclaration)params[i];
- IASTName paramName = param.getDeclarator().getName();
- IBinding binding = paramName.resolveBinding();
- if (!(binding instanceof ICPPParameter))
- continue;
- ICPPParameter paramBinding = (ICPPParameter)binding;
- setFirstParameter(new PDOMCPPParameter(pdom, this, paramName, paramBinding));
- }
- }
- IBinding binding = name.resolveBinding();
+ IBinding binding = function;
try {
+ IParameter[] params = function.getParameters();
+ db.putInt(record + NUM_PARAMS, params.length);
+
+ for (int i=0; i