Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 52729 Details for
Bug 162217
change PDOM binding records to be constructed from binding objects not the AST
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
have pdom records constructed from bindings, rather than AST information
pdomConstructors.txt (text/plain), 49.23 KB, created by
Andrew Ferguson
on 2006-10-26 06:24:31 EDT
(
hide
)
Description:
have pdom records constructed from bindings, rather than AST information
Filename:
MIME Type:
Creator:
Andrew Ferguson
Created:
2006-10-26 06:24:31 EDT
Size:
49.23 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.cdt.core >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java,v >retrieving revision 1.3 >diff -u -r1.3 PDOMCEnumerator.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java 27 Sep 2006 15:05:10 -0000 1.3 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumerator.java 26 Oct 2006 10:21:22 -0000 >@@ -13,7 +13,6 @@ > > 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 @@ > > 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); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java,v >retrieving revision 1.7 >diff -u -r1.7 PDOMCFunction.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java 20 Oct 2006 09:59:38 -0000 1.7 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCFunction.java 26 Oct 2006 10:21:22 -0000 >@@ -15,17 +15,11 @@ > > 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 @@ > */ > 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)); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java,v >retrieving revision 1.1 >diff -u -r1.1 PDOMCParameter.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java 20 Oct 2006 09:59:38 -0000 1.1 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCParameter.java 26 Oct 2006 10:21:22 -0000 >@@ -15,7 +15,6 @@ > 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 @@ > 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(); > >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java,v >retrieving revision 1.30 >diff -u -r1.30 PDOMCLinkage.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java 25 Oct 2006 14:32:43 -0000 1.30 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCLinkage.java 26 Oct 2006 10:21:22 -0000 >@@ -102,7 +102,7 @@ > if (binding instanceof IParameter) > // skip parameters > return null; >- >+ > PDOMBinding pdomBinding = adaptBinding(binding); > try { > if (pdomBinding == null) { >@@ -114,42 +114,38 @@ > 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)); > } > >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotation.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotation.java,v >retrieving revision 1.1 >diff -u -r1.1 PDOMCAnnotation.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotation.java 13 Oct 2006 08:46:20 -0000 1.1 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCAnnotation.java 26 Oct 2006 10:21:22 -0000 >@@ -15,7 +15,7 @@ > 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 @@ > > /** > * 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; > } >- > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java,v >retrieving revision 1.5 >diff -u -r1.5 PDOMCTypedef.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java 18 Oct 2006 19:17:10 -0000 1.5 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCTypedef.java 26 Oct 2006 10:21:22 -0000 >@@ -14,7 +14,6 @@ > > 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 @@ > > 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(); >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java,v >retrieving revision 1.13 >diff -u -r1.13 PDOMCStructure.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java 20 Oct 2006 09:59:38 -0000 1.13 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCStructure.java 26 Oct 2006 10:21:22 -0000 >@@ -20,7 +20,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.ICompositeType; > import org.eclipse.cdt.core.dom.ast.IField; > import org.eclipse.cdt.core.dom.ast.IScope; >@@ -42,8 +41,8 @@ > 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 > } > >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java,v >retrieving revision 1.3 >diff -u -r1.3 PDOMCEnumeration.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java 27 Sep 2006 15:05:11 -0000 1.3 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCEnumeration.java 26 Oct 2006 10:21:22 -0000 >@@ -14,7 +14,6 @@ > > 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 @@ > > 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) { >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java,v >retrieving revision 1.7 >diff -u -r1.7 PDOMCField.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java 13 Oct 2006 08:46:20 -0000 1.7 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCField.java 26 Oct 2006 10:21:22 -0000 >@@ -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 @@ > */ > 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) { >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java,v >retrieving revision 1.8 >diff -u -r1.8 PDOMCVariable.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java 18 Oct 2006 19:17:10 -0000 1.8 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/c/PDOMCVariable.java 26 Oct 2006 10:21:22 -0000 >@@ -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 @@ > */ > 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)); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java,v >retrieving revision 1.15 >diff -u -r1.15 PDOMCPPFunction.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java 18 Oct 2006 19:17:09 -0000 1.15 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPFunction.java 26 Oct 2006 10:21:22 -0000 >@@ -14,19 +14,13 @@ > > 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 @@ > */ > 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(); >+ IBinding binding = function; >+ try { >+ IParameter[] params = function.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)); >+ >+ for (int i=0; i<params.length; ++i) { >+ setFirstParameter(new PDOMCPPParameter(pdom, this, params[i])); > } >- } >- IBinding binding = name.resolveBinding(); >- try { > db.putByte(record + ANNOTATION, PDOMCPPAnnotation.encodeAnnotation(binding)); > } catch (DOMException e) { > throw new CoreException(Util.createStatus(e)); >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java,v >retrieving revision 1.1 >diff -u -r1.1 PDOMCPPBinding.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java 3 Oct 2006 11:32:52 -0000 1.1 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPBinding.java 26 Oct 2006 10:21:22 -0000 >@@ -16,7 +16,6 @@ > > 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 @@ > 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); > } > >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java,v >retrieving revision 1.12 >diff -u -r1.12 PDOMCPPField.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java 18 Oct 2006 19:17:09 -0000 1.12 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPField.java 26 Oct 2006 10:21:22 -0000 >@@ -14,8 +14,6 @@ > > 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 @@ > */ > 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)); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPBindingIdentity.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPBindingIdentity.java,v >retrieving revision 1.1 >diff -u -r1.1 CPPBindingIdentity.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPBindingIdentity.java 20 Oct 2006 09:59:38 -0000 1.1 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/CPPBindingIdentity.java 26 Oct 2006 10:21:22 -0000 >@@ -102,7 +102,7 @@ > } > > public String toString() { >- return name+" "+type+" "+mangledExtendedType; >+ return name+" "+type+" "+mangledExtendedType; //$NON-NLS-1$ //$NON-NLS-2$ > } > > public char[] getNameCharArray() throws CoreException { >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java,v >retrieving revision 1.4 >diff -u -r1.4 PDOMCPPEnumeration.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java 3 Oct 2006 11:32:52 -0000 1.4 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumeration.java 26 Oct 2006 10:21:22 -0000 >@@ -14,7 +14,6 @@ > > 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 @@ > > 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) { >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java,v >retrieving revision 1.14 >diff -u -r1.14 PDOMCPPVariable.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java 18 Oct 2006 19:17:09 -0000 1.14 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPVariable.java 26 Oct 2006 10:21:22 -0000 >@@ -15,13 +15,9 @@ > > import org.eclipse.cdt.core.CCorePlugin; > import org.eclipse.cdt.core.dom.ast.DOMException; >-import org.eclipse.cdt.core.dom.ast.IASTDeclarator; >-import org.eclipse.cdt.core.dom.ast.IASTName; >-import org.eclipse.cdt.core.dom.ast.IASTNode; > import org.eclipse.cdt.core.dom.ast.IType; > import org.eclipse.cdt.core.dom.ast.cpp.ICPPVariable; > import org.eclipse.cdt.internal.core.Util; >-import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPVisitor; > import org.eclipse.cdt.internal.core.pdom.PDOM; > import org.eclipse.cdt.internal.core.pdom.db.Database; > import org.eclipse.cdt.internal.core.pdom.dom.PDOMBinding; >@@ -52,21 +48,17 @@ > */ > protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 5; > >- public PDOMCPPVariable(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException { >- super(pdom, parent, name); >+ public PDOMCPPVariable(PDOM pdom, PDOMNode parent, ICPPVariable variable) throws CoreException { >+ super(pdom, parent, variable.getNameCharArray()); > >- // Find the type record >- IASTNode nameParent = name.getParent(); >- Database db = pdom.getDB(); >- if (nameParent instanceof IASTDeclarator) { >- IASTDeclarator declarator = (IASTDeclarator)nameParent; >- IType type = CPPVisitor.createType(declarator); >- PDOMNode typeNode = parent.getLinkageImpl().addType(this, type); >+ try { >+ // Find the type record >+ Database db = pdom.getDB(); >+ PDOMNode typeNode = parent.getLinkageImpl().addType(this, variable.getType()); > if (typeNode != null) > db.putInt(record + TYPE_OFFSET, typeNode.getRecord()); >- } >- try { >- db.putByte(record + ANNOTATIONS, PDOMCPPAnnotation.encodeAnnotation(name.resolveBinding())); >+ >+ db.putByte(record + ANNOTATIONS, PDOMCPPAnnotation.encodeAnnotation(variable)); > } catch (DOMException e) { > throw new CoreException(Util.createStatus(e)); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java,v >retrieving revision 1.15 >diff -u -r1.15 PDOMCPPNamespace.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java 20 Oct 2006 15:02:43 -0000 1.15 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespace.java 26 Oct 2006 10:21:22 -0000 >@@ -49,8 +49,8 @@ > > protected static final int RECORD_SIZE = PDOMBinding.RECORD_SIZE + 4; > >- public PDOMCPPNamespace(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException { >- super(pdom, parent, name); >+ public PDOMCPPNamespace(PDOM pdom, PDOMNode parent, ICPPNamespace namespace) throws CoreException { >+ super(pdom, parent, namespace.getNameCharArray()); > } > > public PDOMCPPNamespace(PDOM pdom, int record) throws CoreException { >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java,v >retrieving revision 1.4 >diff -u -r1.4 PDOMCPPEnumerator.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java 3 Oct 2006 11:32:52 -0000 1.4 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPEnumerator.java 26 Oct 2006 10:21:22 -0000 >@@ -13,7 +13,6 @@ > > 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 @@ > > 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); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java,v >retrieving revision 1.12 >diff -u -r1.12 PDOMCPPMethod.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java 20 Oct 2006 09:59:38 -0000 1.12 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPMethod.java 26 Oct 2006 10:21:22 -0000 >@@ -15,20 +15,13 @@ > > 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.ICPPClassType; > import org.eclipse.cdt.core.dom.ast.cpp.ICPPFunctionType; > import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod; >-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; >@@ -78,29 +71,24 @@ > */ > private static final int CV_OFFSET = 2; > >- public PDOMCPPMethod(PDOM pdom, PDOMNode parent, IASTName name) throws CoreException { >- super(pdom, parent, name); >- IASTNode parentNode = name.getParent(); >- byte annotation = 0; >+ public PDOMCPPMethod(PDOM pdom, PDOMNode parent, ICPPMethod method) throws CoreException { >+ super(pdom, parent, method.getNameCharArray()); >+ > Database db = pdom.getDB(); >- if (parentNode instanceof ICPPASTFunctionDeclarator) { >- ICPPASTFunctionDeclarator funcDecl = (ICPPASTFunctionDeclarator)parentNode; >- IASTParameterDeclaration[] params = funcDecl.getParameters(); >+ >+ try { >+ IParameter[] params = method.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(); >- ICPPParameter paramBinding = (ICPPParameter)binding; >- setFirstParameter(new PDOMCPPParameter(pdom, this, paramName, paramBinding)); >+ >+ for (int i=0; i<params.length; ++i) { >+ setFirstParameter(new PDOMCPPParameter(pdom, this, params[i])); > } >- annotation |= PDOMCAnnotation.encodeCVQualifiers(funcDecl) << CV_OFFSET; >- } >- try { >- IBinding binding = name.resolveBinding(); >- annotation |= PDOMCPPAnnotation.encodeExtraAnnotation(binding); >- db.putByte(record + ANNOTATION0, PDOMCPPAnnotation.encodeAnnotation(binding)); >- db.putByte(record + ANNOTATION1, annotation); >+ ICPPFunctionType type = (ICPPFunctionType) method.getType(); >+ byte annotation = 0; >+ annotation |= PDOMCAnnotation.encodeCVQualifiers(type) << CV_OFFSET; >+ annotation |= PDOMCPPAnnotation.encodeExtraAnnotation(method); >+ db.putByte(record + ANNOTATION0, PDOMCPPAnnotation.encodeAnnotation(method)); >+ db.putByte(record + ANNOTATION1, annotation); > } catch (DOMException e) { > throw new CoreException(Util.createStatus(e)); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java,v >retrieving revision 1.24 >diff -u -r1.24 PDOMCPPClassType.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java 20 Oct 2006 15:02:43 -0000 1.24 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPClassType.java 26 Oct 2006 10:21:22 -0000 >@@ -23,7 +23,6 @@ > 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 @@ > > 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)); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java,v >retrieving revision 1.5 >diff -u -r1.5 PDOMCPPTypedef.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java 18 Oct 2006 19:17:09 -0000 1.5 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPTypedef.java 26 Oct 2006 10:21:22 -0000 >@@ -34,7 +34,7 @@ > > public PDOMCPPTypedef(PDOM pdom, PDOMNode parent, IASTName name, ITypedef typedef) > throws CoreException { >- super(pdom, parent, name); >+ super(pdom, parent, name.toCharArray()); > try { > IType type = typedef.getType(); > PDOMNode typeNode = parent.getLinkageImpl().addType(this, type); >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPParameter.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPParameter.java,v >retrieving revision 1.6 >diff -u -r1.6 PDOMCPPParameter.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPParameter.java 18 Oct 2006 19:17:09 -0000 1.6 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPParameter.java 26 Oct 2006 10:21:22 -0000 >@@ -16,10 +16,9 @@ > 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; >-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; >@@ -33,7 +32,7 @@ > * > * @author Doug Schaefer > */ >-class PDOMCPPParameter extends PDOMNamedNode implements ICPPParameter { >+class PDOMCPPParameter extends PDOMNamedNode implements IParameter { > > /** > * Offset of pointer to the next parameter (relative to the >@@ -56,9 +55,9 @@ > super(pdom, record); > } > >- public PDOMCPPParameter(PDOM pdom, PDOMNode parent, IASTName name, ICPPParameter param) >+ public PDOMCPPParameter(PDOM pdom, PDOMNode parent, IParameter param) > throws CoreException { >- super(pdom, parent, name.toCharArray()); >+ super(pdom, parent, param.getNameCharArray()); > > Database db = pdom.getDB(); > >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java,v >retrieving revision 1.5 >diff -u -r1.5 PDOMCPPNamespaceAlias.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java 3 Oct 2006 11:32:52 -0000 1.5 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPNamespaceAlias.java 26 Oct 2006 10:21:22 -0000 >@@ -12,7 +12,6 @@ > package org.eclipse.cdt.internal.core.pdom.dom.cpp; > > 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.cpp.ICPPNamespaceAlias; > import org.eclipse.cdt.core.dom.ast.cpp.ICPPNamespaceScope; >@@ -28,9 +27,9 @@ > class PDOMCPPNamespaceAlias extends PDOMCPPBinding implements > ICPPNamespaceAlias { > >- public PDOMCPPNamespaceAlias(PDOM pdom, PDOMNode parent, >- IASTName name) throws CoreException { >- super(pdom, parent, name); >+ public PDOMCPPNamespaceAlias(PDOM pdom, PDOMNode parent, ICPPNamespaceAlias alias) >+ throws CoreException { >+ super(pdom, parent, alias.getNameCharArray()); > } > > public PDOMCPPNamespaceAlias(PDOM pdom, int record) { >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java,v >retrieving revision 1.44 >diff -u -r1.44 PDOMCPPLinkage.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java 25 Oct 2006 14:32:43 -0000 1.44 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/cpp/PDOMCPPLinkage.java 26 Oct 2006 10:21:22 -0000 >@@ -119,7 +119,7 @@ > return null; > > IBinding binding = name.resolveBinding(); >- >+ > if (binding == null || binding instanceof IProblemBinding) > // Can't tell what it is > return null; >@@ -132,50 +132,51 @@ > try { > if (pdomBinding == null) { > PDOMNode parent = getAdaptedParent(binding); >- if (parent != null) { >- if (binding instanceof ICPPField && parent instanceof PDOMCPPClassType) >- pdomBinding = new PDOMCPPField(pdom, (PDOMCPPClassType)parent, name); >- else if (binding instanceof ICPPVariable) { >- if (!(binding.getScope() instanceof CPPBlockScope)) { >- ICPPVariable var= (ICPPVariable) binding; >- if (!var.isStatic()) { // bug 161216 >- pdomBinding = new PDOMCPPVariable(pdom, parent, name); >- } >- } >- } else if (binding instanceof ICPPMethod && parent instanceof PDOMCPPClassType) { >- pdomBinding = new PDOMCPPMethod(pdom, parent, name); >- } else if (binding instanceof CPPImplicitMethod && parent instanceof PDOMCPPClassType) { >- if(!name.isReference()) { >- //because we got the implicit method off of an IASTName that is not a reference, >- //it is no longer completly implicit and it should be treated as a normal method. >- pdomBinding = new PDOMCPPMethod(pdom, parent, name); >+ if (parent == null) >+ return null; >+ >+ if (binding instanceof ICPPField && parent instanceof PDOMCPPClassType) >+ pdomBinding = new PDOMCPPField(pdom, (PDOMCPPClassType)parent, (ICPPField) binding); >+ else if (binding instanceof ICPPVariable && !(binding.getScope() instanceof CPPBlockScope)) { >+ if (!(binding.getScope() instanceof CPPBlockScope)) { >+ ICPPVariable var= (ICPPVariable) binding; >+ if (!var.isStatic()) { // bug 161216 >+ pdomBinding = new PDOMCPPVariable(pdom, parent, var); > } >- } else if (binding instanceof ICPPFunction) { >- ICPPFunction func= (ICPPFunction) binding; >- if (!func.isStatic()) { // bug 161216 >- pdomBinding = new PDOMCPPFunction(pdom, parent, name); >- } >- } else if (binding instanceof ICPPClassType) { >- pdomBinding = new PDOMCPPClassType(pdom, parent, name); >- } else if (binding instanceof ICPPNamespaceAlias) { >- pdomBinding = new PDOMCPPNamespaceAlias(pdom, parent, name); >- } else if (binding instanceof ICPPNamespace) { >- pdomBinding = new PDOMCPPNamespace(pdom, parent, name); >- } else if (binding instanceof IEnumeration) { >- pdomBinding = new PDOMCPPEnumeration(pdom, parent, name); >- } else if (binding instanceof IEnumerator) { >- IEnumeration enumeration = (IEnumeration)((IEnumerator)binding).getType(); >- PDOMBinding pdomEnumeration = adaptBinding(enumeration); >- if (pdomEnumeration instanceof PDOMCPPEnumeration) >- pdomBinding = new PDOMCPPEnumerator(pdom, parent, name, >- (PDOMCPPEnumeration)pdomEnumeration); >- } else if (binding instanceof ITypedef) { >- pdomBinding = new PDOMCPPTypedef(pdom, parent, name, (ITypedef)binding); > } >- >- if(pdomBinding!=null) { >- parent.addChild(pdomBinding); >+ } else if (parent instanceof PDOMCPPClassType && binding instanceof ICPPMethod) { >+ pdomBinding = new PDOMCPPMethod(pdom, parent, (ICPPMethod)binding); >+ } else if (binding instanceof CPPImplicitMethod && parent instanceof PDOMCPPClassType) { >+ if(!name.isReference()) { >+ //because we got the implicit method off of an IASTName that is not a reference, >+ //it is no longer completly implicit and it should be treated as a normal method. >+ pdomBinding = new PDOMCPPMethod(pdom, parent, (ICPPMethod)binding); >+ } >+ } else if (binding instanceof ICPPFunction) { >+ ICPPFunction func= (ICPPFunction) binding; >+ if (!func.isStatic()) { // bug 161216 >+ pdomBinding = new PDOMCPPFunction(pdom, parent, func); > } >+ } else if (binding instanceof ICPPClassType) { >+ pdomBinding = new PDOMCPPClassType(pdom, parent, (ICPPClassType) binding); >+ } else if (binding instanceof ICPPNamespaceAlias) { >+ pdomBinding = new PDOMCPPNamespaceAlias(pdom, parent, (ICPPNamespaceAlias) binding); >+ } else if (binding instanceof ICPPNamespace) { >+ pdomBinding = new PDOMCPPNamespace(pdom, parent, (ICPPNamespace) binding); >+ } else if (binding instanceof IEnumeration) { >+ pdomBinding = new PDOMCPPEnumeration(pdom, parent, (IEnumeration) binding); >+ } else if (binding instanceof IEnumerator) { >+ IEnumeration enumeration = (IEnumeration)((IEnumerator)binding).getType(); >+ PDOMBinding pdomEnumeration = adaptBinding(enumeration); >+ if (pdomEnumeration instanceof PDOMCPPEnumeration) >+ pdomBinding = new PDOMCPPEnumerator(pdom, parent, (IEnumerator) binding, >+ (PDOMCPPEnumeration)pdomEnumeration); >+ } else if (binding instanceof ITypedef) { >+ pdomBinding = new PDOMCPPTypedef(pdom, parent, name, (ITypedef)binding); >+ } >+ >+ if(pdomBinding!=null) { >+ parent.addChild(pdomBinding); > } > } > } catch(DOMException e) { >@@ -460,11 +461,10 @@ > if (type instanceof ICPPBasicType) { > return new PDOMCPPBasicType(pdom, parent, (ICPPBasicType)type); > } else if (type instanceof ICPPClassType) { >- // aftodo: please review, the binding may be nested in a namespace bug 162011 >- // it might be necessary to create the binding for the class here. >- PDOMBinding binding= adaptBinding((ICPPClassType) type); >- if (binding != null) { >- return binding; >+ FindEquivalentBinding feb = new FindEquivalentBinding(this,(ICPPClassType)type); >+ getIndex().accept(feb); >+ if(feb.getResult()!=null) { >+ return feb.getResult(); > } > } > return super.addType(parent, type); >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java,v >retrieving revision 1.16 >diff -u -r1.16 PDOMBinding.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java 20 Oct 2006 09:59:38 -0000 1.16 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMBinding.java 26 Oct 2006 10:21:22 -0000 >@@ -14,7 +14,6 @@ > > 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 @@ > > 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); > } >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java,v >retrieving revision 1.21 >diff -u -r1.21 PDOMLinkage.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java 25 Oct 2006 13:43:31 -0000 1.21 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMLinkage.java 26 Oct 2006 10:21:22 -0000 >@@ -177,8 +177,10 @@ > /** > * > * @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 <ul><li> null - skip this binding (don't add to pdom) >+ * <li>this - for filescope >+ * <li>a PDOMBinding instance - parent adapted binding >+ * </ul> > * @throws CoreException > */ > public PDOMNode getAdaptedParent(IBinding binding) throws CoreException { >Index: parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java >=================================================================== >RCS file: /cvsroot/tools/org.eclipse.cdt/all/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java,v >retrieving revision 1.3 >diff -u -r1.3 PDOMNamedNode.java >--- parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java 20 Oct 2006 09:59:38 -0000 1.3 >+++ parser/org/eclipse/cdt/internal/core/pdom/dom/PDOMNamedNode.java 26 Oct 2006 10:21:22 -0000 >@@ -16,7 +16,6 @@ > 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 @@ > 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 @@ > 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.
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
cdtdoug
:
iplog+
Actions:
View
|
Diff
Attachments on
bug 162217
: 52729