Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSergey Prigogin2008-03-08 23:00:47 +0000
committerSergey Prigogin2008-03-08 23:00:47 +0000
commit7cdbcfc0f9b61b1040feb1cd008db2c4c82d8416 (patch)
tree2051a8131145e65af84f2357ec83576339541160 /core/org.eclipse.cdt.core/parser
parent934ea2e952d36d4f89a1786f4242399fa224c59e (diff)
downloadorg.eclipse.cdt-7cdbcfc0f9b61b1040feb1cd008db2c4c82d8416.tar.gz
org.eclipse.cdt-7cdbcfc0f9b61b1040feb1cd008db2c4c82d8416.tar.xz
org.eclipse.cdt-7cdbcfc0f9b61b1040feb1cd008db2c4c82d8416.zip
Added toString methods.
Diffstat (limited to 'core/org.eclipse.cdt.core/parser')
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstance.java61
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java285
-rw-r--r--core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameter.java102
3 files changed, 263 insertions, 185 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstance.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstance.java
index 41bad61f301..f36f2320c40 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstance.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPClassInstance.java
@@ -12,6 +12,9 @@
*******************************************************************************/
package org.eclipse.cdt.internal.core.dom.parser.cpp;
+import java.util.ArrayList;
+import java.util.List;
+
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.IField;
@@ -25,6 +28,7 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPDeferredTemplateInstance;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPField;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPMethod;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPScope;
+import org.eclipse.cdt.core.dom.ast.cpp.ICPPSpecialization;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPTemplateInstance;
import org.eclipse.cdt.core.parser.util.ArrayUtil;
import org.eclipse.cdt.core.parser.util.ObjectMap;
@@ -201,6 +205,63 @@ public class CPPClassInstance extends CPPInstance implements ICPPClassType, ICPP
return ICPPMethod.EMPTY_CPPMETHOD_ARRAY;
}
+ /**
+ * Returns a combined argument map of this class and all its base template classes.
+ * This combined map helps with instantiation of members of template classes that subclass
+ * other template classes (see AST2TemplateTests#testRebindPattern_214017_2()).
+ */
+ @Override
+ public ObjectMap getArgumentMap() {
+ ObjectMap argMap = argumentMap;
+ List<ICPPSpecialization> bases = null;
+ try {
+ for (ICPPBase base : getBases()) {
+ IBinding baseClass = base.getBaseClass();
+ if (baseClass instanceof ICPPSpecialization) {
+ if (bases == null) {
+ bases = new ArrayList<ICPPSpecialization>();
+ }
+ bases.add((ICPPSpecialization) baseClass);
+ }
+ }
+ if (bases != null) {
+ for (int i = 0; i < bases.size(); i++) {
+ for (ICPPBase base : ((ICPPClassType) bases.get(i)).getBases()) {
+ IBinding baseClass = base.getBaseClass();
+ if (baseClass instanceof ICPPSpecialization) {
+ bases.add((ICPPSpecialization) baseClass);
+ }
+ }
+ if (bases.size() > 20) { // Protect against cyclic inheritance.
+ break;
+ }
+ }
+ }
+ } catch (DOMException e) {
+ // Ignore
+ }
+
+ if (bases != null) {
+ for (ICPPSpecialization base : bases) {
+ // Protect against infinite recursion.
+ ObjectMap baseArgMap = base instanceof CPPClassInstance ?
+ ((CPPClassInstance) base).argumentMap : base.getArgumentMap();
+ if (!baseArgMap.isEmpty()) {
+ if (argMap == argumentMap) {
+ argMap = (ObjectMap) argumentMap.clone();
+ }
+ for (int i = 0; i < baseArgMap.size(); i++) {
+ Object key = baseArgMap.keyAt(i);
+ if (!argMap.containsKey(key)) {
+ argMap.put(key, baseArgMap.getAt(i));
+ }
+ }
+ }
+ }
+ }
+ return argMap;
+ }
+
@Override
public boolean equals(Object obj) {
return obj instanceof ICPPClassType && isSameType((ICPPClassType) obj);
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
index 0b1a4dde4e8..ae013888c56 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPFunction.java
@@ -12,6 +12,7 @@
package org.eclipse.cdt.internal.core.dom.parser.cpp;
import org.eclipse.cdt.core.dom.ILinkage;
+import org.eclipse.cdt.core.dom.ast.ASTTypeUtil;
import org.eclipse.cdt.core.dom.ast.DOMException;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@@ -47,57 +48,57 @@ import org.eclipse.core.runtime.PlatformObject;
public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInternalFunction {
public static class CPPFunctionProblem extends ProblemBinding implements ICPPFunction {
- public CPPFunctionProblem( IASTNode node, int id, char[] arg ) {
- super( node, id, arg );
+ public CPPFunctionProblem(IASTNode node, int id, char[] arg) {
+ super(node, id, arg);
}
public IParameter[] getParameters() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public IScope getFunctionScope() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public IFunctionType getType() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isStatic() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public String[] getQualifiedName() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public char[][] getQualifiedNameCharArray() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isGloballyQualified() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isMutable() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isInline() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isExternC() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isExtern() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isAuto() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isRegister() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean takesVarArgs() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
}
- protected ICPPASTFunctionDeclarator [] declarations;
+ protected ICPPASTFunctionDeclarator[] declarations;
protected ICPPASTFunctionDeclarator definition;
protected IFunctionType type = null;
@@ -105,28 +106,28 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
private static final int RESOLUTION_IN_PROGRESS = 1 << 1;
private int bits = 0;
- public CPPFunction( ICPPASTFunctionDeclarator declarator ){
- if( declarator != null ) {
+ public CPPFunction(ICPPASTFunctionDeclarator declarator) {
+ if (declarator != null) {
IASTNode parent = declarator.getParent();
- if( parent instanceof IASTFunctionDefinition )
+ if (parent instanceof IASTFunctionDefinition)
definition = declarator;
else
- declarations = new ICPPASTFunctionDeclarator [] { declarator };
+ declarations = new ICPPASTFunctionDeclarator[] { declarator };
IASTName name= getASTName();
- name.setBinding( this );
+ name.setBinding(this);
}
}
- private void resolveAllDeclarations(){
- if( (bits & (FULLY_RESOLVED | RESOLUTION_IN_PROGRESS)) == 0 ){
+ private void resolveAllDeclarations() {
+ if ((bits & (FULLY_RESOLVED | RESOLUTION_IN_PROGRESS)) == 0) {
bits |= RESOLUTION_IN_PROGRESS;
IASTTranslationUnit tu = null;
- if( definition != null )
+ if (definition != null) {
tu = definition.getTranslationUnit();
- else if( declarations != null )
+ } else if (declarations != null) {
tu = declarations[0].getTranslationUnit();
- else {
+ } else {
//implicit binding
IScope scope = getScope();
try {
@@ -134,13 +135,14 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
if (node != null) {
tu = node.getTranslationUnit();
}
- } catch ( DOMException e ) {
+ } catch (DOMException e) {
}
}
- if( tu != null ){
- CPPVisitor.getDeclarations( tu, this );
+ if (tu != null) {
+ CPPVisitor.getDeclarations(tu, this);
}
- declarations = (ICPPASTFunctionDeclarator[]) ArrayUtil.trim( ICPPASTFunctionDeclarator.class, declarations );
+ declarations = (ICPPASTFunctionDeclarator[]) ArrayUtil.trim(ICPPASTFunctionDeclarator.class,
+ declarations);
bits |= FULLY_RESOLVED;
bits &= ~RESOLUTION_IN_PROGRESS;
}
@@ -160,46 +162,48 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
return definition;
}
- public void addDefinition( IASTNode node ){
- if( node instanceof IASTName )
+ public void addDefinition(IASTNode node) {
+ if (node instanceof IASTName)
node = node.getParent();
- if( !(node instanceof ICPPASTFunctionDeclarator) )
+ if (!(node instanceof ICPPASTFunctionDeclarator))
return;
ICPPASTFunctionDeclarator dtor = (ICPPASTFunctionDeclarator) node;
- updateParameterBindings( dtor );
+ updateParameterBindings(dtor);
definition = dtor;
}
- public void addDeclaration( IASTNode node ){
- if( node instanceof IASTName )
+ public void addDeclaration(IASTNode node) {
+ if (node instanceof IASTName)
node = node.getParent();
- if( !(node instanceof ICPPASTFunctionDeclarator) )
+ if (!(node instanceof ICPPASTFunctionDeclarator))
return;
ICPPASTFunctionDeclarator dtor = (ICPPASTFunctionDeclarator) node;
- updateParameterBindings( dtor );
+ updateParameterBindings(dtor);
- if( declarations == null ){
- declarations = new ICPPASTFunctionDeclarator [] { dtor };
+ if (declarations == null) {
+ declarations = new ICPPASTFunctionDeclarator[] { dtor };
return;
}
- //keep the lowest offset declaration in [0]
- if( declarations.length > 0 && ((ASTNode)node).getOffset() < ((ASTNode)declarations[0]).getOffset() ){
- declarations = (ICPPASTFunctionDeclarator[]) ArrayUtil.prepend( ICPPASTFunctionDeclarator.class, declarations, dtor );
+ // Keep the lowest offset declaration in [0]
+ if (declarations.length > 0 && ((ASTNode)node).getOffset() < ((ASTNode)declarations[0]).getOffset()) {
+ declarations = (ICPPASTFunctionDeclarator[]) ArrayUtil.prepend(ICPPASTFunctionDeclarator.class,
+ declarations, dtor);
} else {
- declarations = (ICPPASTFunctionDeclarator[]) ArrayUtil.append( ICPPASTFunctionDeclarator.class, declarations, dtor );
+ declarations = (ICPPASTFunctionDeclarator[]) ArrayUtil.append(ICPPASTFunctionDeclarator.class,
+ declarations, dtor);
}
}
public void removeDeclaration(IASTNode node) {
- while( node instanceof IASTName ){
+ while (node instanceof IASTName) {
node = node.getParent();
}
- if( definition == node ){
+ if (definition == node) {
definition = null;
return;
}
- if( declarations != null ) {
+ if (declarations != null) {
ArrayUtil.remove(declarations, node);
}
}
@@ -207,13 +211,13 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IFunction#getParameters()
*/
- public IParameter [] getParameters() {
- IASTStandardFunctionDeclarator dtor = ( definition != null ) ? definition : declarations[0];
+ public IParameter[] getParameters() {
+ IASTStandardFunctionDeclarator dtor = (definition != null) ? definition : declarations[0];
IASTParameterDeclaration[] params = dtor.getParameters();
int size = params.length;
- IParameter [] result = new IParameter[ size ];
- if( size > 0 ){
- for( int i = 0; i < size; i++ ){
+ IParameter[] result = new IParameter[ size ];
+ if (size > 0) {
+ for (int i = 0; i < size; i++) {
IASTParameterDeclaration p = params[i];
final IASTName name = p.getDeclarator().getName();
final IBinding binding= name.resolveBinding();
@@ -221,7 +225,8 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
result[i]= (IParameter) binding;
}
else {
- result[i] = new CPPParameter.CPPParameterProblem(p, IProblemBinding.SEMANTIC_INVALID_TYPE, name.toCharArray());
+ result[i] = new CPPParameter.CPPParameterProblem(p, IProblemBinding.SEMANTIC_INVALID_TYPE,
+ name.toCharArray());
}
}
}
@@ -233,7 +238,7 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
*/
public IScope getFunctionScope() {
resolveAllDeclarations();
- if( definition != null ){
+ if (definition != null) {
return definition.getFunctionScope();
}
@@ -255,15 +260,15 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
}
private IASTName getASTName() {
- IASTDeclarator dtor = ( definition != null ) ? definition : declarations[0];
+ IASTDeclarator dtor = (definition != null) ? definition : declarations[0];
IASTDeclarator nested= dtor.getNestedDeclarator();
while (nested != null) {
dtor= nested;
nested= nested.getNestedDeclarator();
}
IASTName name= dtor.getName();
- if( name instanceof ICPPASTQualifiedName ){
- IASTName [] ns = ((ICPPASTQualifiedName)name).getNames();
+ if (name instanceof ICPPASTQualifiedName) {
+ IASTName[] ns = ((ICPPASTQualifiedName)name).getNames();
name = ns[ ns.length - 1 ];
}
return name;
@@ -274,29 +279,29 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
* @see org.eclipse.cdt.core.dom.ast.IBinding#getScope()
*/
public IScope getScope() {
- IASTName n= getASTName();
- IScope scope = CPPVisitor.getContainingScope( n );
- if( scope instanceof ICPPClassScope ){
+ IASTName n = getASTName();
+ IScope scope = CPPVisitor.getContainingScope(n);
+ if (scope instanceof ICPPClassScope) {
ICPPASTDeclSpecifier declSpec = null;
- if( definition != null ){
+ if (definition != null) {
IASTNode node = definition.getParent();
- while( node instanceof IASTDeclarator )
+ while (node instanceof IASTDeclarator)
node = node.getParent();
IASTFunctionDefinition def = (IASTFunctionDefinition) node;
declSpec = (ICPPASTDeclSpecifier) def.getDeclSpecifier();
} else {
IASTNode node = declarations[0].getParent();
- while( node instanceof IASTDeclarator )
+ while (node instanceof IASTDeclarator)
node = node.getParent();
IASTSimpleDeclaration decl = (IASTSimpleDeclaration)node;
declSpec = (ICPPASTDeclSpecifier) decl.getDeclSpecifier();
}
- if( declSpec.isFriend() ) {
+ if (declSpec.isFriend()) {
try {
- while( scope instanceof ICPPClassScope ){
+ while (scope instanceof ICPPClassScope) {
scope = scope.getParent();
}
- } catch ( DOMException e ) {
+ } catch (DOMException e) {
}
}
}
@@ -307,51 +312,51 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
* @see org.eclipse.cdt.core.dom.ast.IFunction#getType()
*/
public IFunctionType getType() {
- if( type == null )
- type = (IFunctionType) CPPVisitor.createType( ( definition != null ) ? definition : declarations[0] );
+ if (type == null)
+ type = (IFunctionType) CPPVisitor.createType((definition != null) ? definition : declarations[0]);
return type;
}
- public IBinding resolveParameter( IASTParameterDeclaration param ){
+ public IBinding resolveParameter(IASTParameterDeclaration param) {
IASTDeclarator dtor = param.getDeclarator();
- while( dtor.getNestedDeclarator() != null )
+ while (dtor.getNestedDeclarator() != null)
dtor = dtor.getNestedDeclarator();
IASTName name = dtor.getName();
IBinding binding = name.getBinding();
- if( binding != null )
+ if (binding != null)
return binding;
IASTStandardFunctionDeclarator fdtor = (IASTStandardFunctionDeclarator) param.getParent();
- IASTParameterDeclaration [] ps = fdtor.getParameters();
+ IASTParameterDeclaration[] ps = fdtor.getParameters();
int i = 0;
- for( ; i < ps.length; i++ ){
- if( param == ps[i] )
+ for (; i < ps.length; i++) {
+ if (param == ps[i])
break;
}
//create a new binding and set it for the corresponding parameter in all known defns and decls
- binding = new CPPParameter( name );
+ binding = new CPPParameter(name);
IASTParameterDeclaration temp = null;
- if( definition != null ){
+ if (definition != null) {
IASTParameterDeclaration[] paramDecls = definition.getParameters();
if (paramDecls.length > i) { // This will be less than i if we have a void parameter
temp = paramDecls[i];
IASTName n = temp.getDeclarator().getName();
- if( n != name ) {
- n.setBinding( binding );
- ((CPPParameter)binding).addDeclaration( n );
+ if (n != name) {
+ n.setBinding(binding);
+ ((CPPParameter)binding).addDeclaration(n);
}
}
}
- if( declarations != null ){
- for( int j = 0; j < declarations.length && declarations[j] != null; j++ ){
- IASTParameterDeclaration [] paramDecls = declarations[j].getParameters();
- if( paramDecls.length > i ) {
+ if (declarations != null) {
+ for (int j = 0; j < declarations.length && declarations[j] != null; j++) {
+ IASTParameterDeclaration[] paramDecls = declarations[j].getParameters();
+ if (paramDecls.length > i) {
temp = paramDecls[i];
IASTName n = temp.getDeclarator().getName();
- if( n != name ) {
- n.setBinding( binding );
- ((CPPParameter)binding).addDeclaration( n );
+ if (n != name) {
+ n.setBinding(binding);
+ ((CPPParameter)binding).addDeclaration(n);
}
}
}
@@ -359,20 +364,20 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
return binding;
}
- protected void updateParameterBindings( ICPPASTFunctionDeclarator fdtor ){
+ protected void updateParameterBindings(ICPPASTFunctionDeclarator fdtor) {
ICPPASTFunctionDeclarator orig = definition != null ? definition : declarations[0];
- IASTParameterDeclaration [] ops = orig.getParameters();
- IASTParameterDeclaration [] nps = fdtor.getParameters();
+ IASTParameterDeclaration[] ops = orig.getParameters();
+ IASTParameterDeclaration[] nps = fdtor.getParameters();
CPPParameter temp = null;
- for( int i = 0; i < ops.length; i++ ){
+ for (int i = 0; i < ops.length; i++) {
temp = (CPPParameter) ops[i].getDeclarator().getName().getBinding();
- if( temp != null && nps.length > i ){ //length could be different, ie 0 or 1 with void
+ if (temp != null && nps.length > i) { //length could be different, ie 0 or 1 with void
IASTDeclarator dtor = nps[i].getDeclarator();
- while( dtor.getNestedDeclarator() != null )
+ while (dtor.getNestedDeclarator() != null)
dtor = dtor.getNestedDeclarator();
IASTName name = dtor.getName();
- name.setBinding( temp );
- temp.addDeclaration( name );
+ name.setBinding(temp);
+ temp.addDeclaration(name);
}
}
}
@@ -380,41 +385,41 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IFunction#isStatic()
*/
- public boolean isStatic( ) {
- return isStatic( true );
+ public boolean isStatic() {
+ return isStatic(true);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalFunction#isStatic(boolean)
*/
- public boolean isStatic( boolean resolveAll ) {
- if( resolveAll && (bits & FULLY_RESOLVED) == 0 ){
+ public boolean isStatic(boolean resolveAll) {
+ if (resolveAll && (bits & FULLY_RESOLVED) == 0) {
resolveAllDeclarations();
}
- return hasStorageClass( this, IASTDeclSpecifier.sc_static );
+ return hasStorageClass(this, IASTDeclSpecifier.sc_static);
}
-// }
+
// static public boolean isStatic
// //2 state bits, most significant = whether or not we've figure this out yet
// //least significant = whether or not we are static
-// int state = ( bits & IS_STATIC ) >> 2;
-// if( state > 1 ) return (state % 2 != 0);
+// int state = (bits & IS_STATIC) >> 2;
+// if (state > 1) return (state % 2 != 0);
//
// IASTDeclSpecifier declSpec = null;
// IASTFunctionDeclarator dtor = (IASTFunctionDeclarator) getDefinition();
-// if( dtor != null ){
+// if (dtor != null) {
// declSpec = ((IASTFunctionDefinition)dtor.getParent()).getDeclSpecifier();
-// if( declSpec.getStorageClass() == IASTDeclSpecifier.sc_static ){
+// if (declSpec.getStorageClass() == IASTDeclSpecifier.sc_static) {
// bits |= 3 << 2;
// return true;
// }
// }
//
// IASTFunctionDeclarator[] dtors = (IASTFunctionDeclarator[]) getDeclarations();
-// if( dtors != null ) {
-// for( int i = 0; i < dtors.length; i++ ){
+// if (dtors != null) {
+// for (int i = 0; i < dtors.length; i++) {
// IASTNode parent = dtors[i].getParent();
// declSpec = ((IASTSimpleDeclaration)parent).getDeclSpecifier();
-// if( declSpec.getStorageClass() == IASTDeclSpecifier.sc_static ){
+// if (declSpec.getStorageClass() == IASTDeclSpecifier.sc_static) {
// bits |= 3 << 2;
// return true;
// }
@@ -428,14 +433,14 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
* @see org.eclipse.cdt.core.dom.ast.IBinding#getFullyQualifiedName()
*/
public String[] getQualifiedName() {
- return CPPVisitor.getQualifiedName( this );
+ return CPPVisitor.getQualifiedName(this);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IBinding#getFullyQualifiedNameCharArray()
*/
public char[][] getQualifiedNameCharArray() {
- return CPPVisitor.getQualifiedNameCharArray( this );
+ return CPPVisitor.getQualifiedNameCharArray(this);
}
/* (non-Javadoc)
@@ -443,40 +448,41 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
*/
public boolean isGloballyQualified() throws DOMException {
IScope scope = getScope();
- while( scope != null ){
- if( scope instanceof ICPPBlockScope )
+ while (scope != null) {
+ if (scope instanceof ICPPBlockScope)
return false;
scope = scope.getParent();
}
return true;
}
- static public boolean hasStorageClass( ICPPInternalFunction function, int storage){
+ static public boolean hasStorageClass(ICPPInternalFunction function, int storage) {
ICPPASTFunctionDeclarator dtor = (ICPPASTFunctionDeclarator) function.getDefinition();
IASTNode[] ds = function.getDeclarations();
int i = -1;
- do{
- if( dtor != null ){
+ do {
+ if (dtor != null) {
IASTNode parent = dtor.getParent();
- while( !(parent instanceof IASTDeclaration) )
+ while (!(parent instanceof IASTDeclaration))
parent = parent.getParent();
IASTDeclSpecifier declSpec = null;
- if( parent instanceof IASTSimpleDeclaration )
+ if (parent instanceof IASTSimpleDeclaration) {
declSpec = ((IASTSimpleDeclaration)parent).getDeclSpecifier();
- else if( parent instanceof IASTFunctionDefinition )
+ } else if (parent instanceof IASTFunctionDefinition) {
declSpec = ((IASTFunctionDefinition)parent).getDeclSpecifier();
- if( declSpec.getStorageClass() == storage ) {
+ }
+ if (declSpec.getStorageClass() == storage) {
return true;
}
}
- if( ds != null && ++i < ds.length ) {
+ if (ds != null && ++i < ds.length) {
dtor = (ICPPASTFunctionDeclarator) ds[i];
- }
- else
+ } else {
break;
- } while( dtor != null );
+ }
+ } while (dtor != null);
return false;
}
@@ -494,26 +500,26 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
ICPPASTFunctionDeclarator dtor = (ICPPASTFunctionDeclarator) getDefinition();
ICPPASTFunctionDeclarator[] ds = (ICPPASTFunctionDeclarator[]) getDeclarations();
int i = -1;
- do{
- if( dtor != null ){
+ do {
+ if (dtor != null) {
IASTNode parent = dtor.getParent();
- while( !(parent instanceof IASTDeclaration) )
+ while (!(parent instanceof IASTDeclaration))
parent = parent.getParent();
IASTDeclSpecifier declSpec = null;
- if( parent instanceof IASTSimpleDeclaration )
+ if (parent instanceof IASTSimpleDeclaration)
declSpec = ((IASTSimpleDeclaration)parent).getDeclSpecifier();
- else if( parent instanceof IASTFunctionDefinition )
+ else if (parent instanceof IASTFunctionDefinition)
declSpec = ((IASTFunctionDefinition)parent).getDeclSpecifier();
- if( declSpec.isInline() )
+ if (declSpec.isInline())
return true;
}
- if( ds != null && ++i < ds.length )
+ if (ds != null && ++i < ds.length)
dtor = ds[i];
else
break;
- } while( dtor != null );
+ } while (dtor != null);
return false;
}
@@ -539,21 +545,21 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
* @see org.eclipse.cdt.core.dom.ast.IFunction#isExtern()
*/
public boolean isExtern() {
- return hasStorageClass( this, IASTDeclSpecifier.sc_extern );
+ return hasStorageClass(this, IASTDeclSpecifier.sc_extern);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IFunction#isAuto()
*/
public boolean isAuto() {
- return hasStorageClass( this, IASTDeclSpecifier.sc_auto );
+ return hasStorageClass(this, IASTDeclSpecifier.sc_auto);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IFunction#isRegister()
*/
public boolean isRegister() {
- return hasStorageClass( this, IASTDeclSpecifier.sc_register );
+ return hasStorageClass(this, IASTDeclSpecifier.sc_register);
}
/* (non-Javadoc)
@@ -561,11 +567,11 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
*/
public boolean takesVarArgs() {
ICPPASTFunctionDeclarator dtor = (ICPPASTFunctionDeclarator) getDefinition();
- if( dtor != null ){
+ if (dtor != null) {
return dtor.takesVarArgs();
}
- ICPPASTFunctionDeclarator [] ds = (ICPPASTFunctionDeclarator[]) getDeclarations();
- if( ds != null && ds.length > 0 ){
+ ICPPASTFunctionDeclarator[] ds = (ICPPASTFunctionDeclarator[]) getDeclarations();
+ if (ds != null && ds.length > 0) {
return ds[0].takesVarArgs();
}
return false;
@@ -574,4 +580,9 @@ public class CPPFunction extends PlatformObject implements ICPPFunction, ICPPInt
public ILinkage getLinkage() {
return Linkage.CPP_LINKAGE;
}
+
+ @Override
+ public String toString() {
+ return getName() + ASTTypeUtil.getParameterTypeString(getType()); //$NON-NLS-1$
+ }
}
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameter.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameter.java
index eeb864075e8..1af477f6d9f 100644
--- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameter.java
+++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPParameter.java
@@ -35,38 +35,38 @@ import org.eclipse.core.runtime.PlatformObject;
*/
public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPInternalBinding {
public static class CPPParameterProblem extends ProblemBinding implements ICPPParameter {
- public CPPParameterProblem( IASTNode node, int id, char[] arg ) {
- super( node, id, arg );
+ public CPPParameterProblem(IASTNode node, int id, char[] arg) {
+ super(node, id, arg);
}
public IType getType() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isStatic() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isExtern() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isAuto() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isRegister() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean hasDefaultValue() {
return false;
}
public boolean isMutable() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public String[] getQualifiedName() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public char[][] getQualifiedNameCharArray() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isGloballyQualified() throws DOMException {
- throw new DOMException( this );
+ throw new DOMException(this);
}
public boolean isExternC() {
return false;
@@ -74,14 +74,14 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
}
private IType type = null;
- private IASTName [] declarations = null;
+ private IASTName[] declarations = null;
- public CPPParameter( IASTName name ){
- this.declarations = new IASTName [] { name };
+ public CPPParameter(IASTName name) {
+ this.declarations = new IASTName[] { name };
}
- public CPPParameter( IType type ){
+ public CPPParameter(IType type) {
this.type = type;
}
@@ -99,18 +99,18 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
return null;
}
- public void addDeclaration( IASTNode node ){
- if( !(node instanceof IASTName ) )
+ public void addDeclaration(IASTNode node) {
+ if (!(node instanceof IASTName))
return;
IASTName name = (IASTName) node;
- if( declarations == null )
+ if (declarations == null) {
declarations = new IASTName[] { name };
- else {
- //keep the lowest offset declaration in [0]
- if( declarations.length > 0 && ((ASTNode)node).getOffset() < ((ASTNode)declarations[0]).getOffset() ){
- declarations = (IASTName[]) ArrayUtil.prepend( IASTName.class, declarations, name );
+ } else {
+ //keep the lowest offset declaration in[0]
+ if (declarations.length > 0 && ((ASTNode)node).getOffset() < ((ASTNode)declarations[0]).getOffset()) {
+ declarations = (IASTName[]) ArrayUtil.prepend(IASTName.class, declarations, name);
} else {
- declarations = (IASTName[]) ArrayUtil.append( IASTName.class, declarations, name );
+ declarations = (IASTName[]) ArrayUtil.append(IASTName.class, declarations, name);
}
}
}
@@ -119,14 +119,14 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
ArrayUtil.remove(declarations, node);
}
- private IASTName getPrimaryDeclaration(){
- if( declarations != null ){
- for( int i = 0; i < declarations.length && declarations[i] != null; i++ ){
+ private IASTName getPrimaryDeclaration() {
+ if (declarations != null) {
+ for (int i = 0; i < declarations.length && declarations[i] != null; i++) {
IASTNode node = declarations[i].getParent();
- while( !(node instanceof IASTDeclaration) )
+ while (!(node instanceof IASTDeclaration))
node = node.getParent();
- if( node instanceof IASTFunctionDefinition )
+ if (node instanceof IASTFunctionDefinition)
return declarations[i];
}
return declarations[0];
@@ -138,7 +138,7 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
*/
public String getName() {
IASTName name = getPrimaryDeclaration();
- if( name != null )
+ if (name != null)
return name.toString();
return CPPSemantics.EMPTY_NAME;
}
@@ -148,7 +148,7 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
*/
public char[] getNameCharArray() {
IASTName name = getPrimaryDeclaration();
- if( name != null )
+ if (name != null)
return name.toCharArray();
return CPPSemantics.EMPTY_NAME_ARRAY;
}
@@ -157,14 +157,14 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
* @see org.eclipse.cdt.core.dom.ast.IBinding#getScope()
*/
public IScope getScope() {
- return CPPVisitor.getContainingScope( getPrimaryDeclaration() );
+ return CPPVisitor.getContainingScope(getPrimaryDeclaration());
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IBinding#getPhysicalNode()
*/
public IASTNode getPhysicalNode() {
- if( declarations != null )
+ if (declarations != null)
return declarations[0];
return null;
}
@@ -173,8 +173,8 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
* @see org.eclipse.cdt.core.dom.ast.IVariable#getType()
*/
public IType getType() {
- if( type == null && declarations != null ){
- type = CPPVisitor.createType( (IASTDeclarator) declarations[0].getParent() );
+ if (type == null && declarations != null) {
+ type = CPPVisitor.createType((IASTDeclarator) declarations[0].getParent());
}
return type;
}
@@ -190,14 +190,14 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
* @see org.eclipse.cdt.core.dom.ast.IBinding#getFullyQualifiedName()
*/
public String[] getQualifiedName() {
- return new String [] { getName() };
+ return new String[] { getName() };
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IBinding#getFullyQualifiedNameCharArray()
*/
public char[][] getQualifiedNameCharArray() {
- return new char[][]{ getNameCharArray() };
+ return new char[][] { getNameCharArray() };
}
/* (non-Javadoc)
@@ -211,7 +211,7 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
* @see org.eclipse.cdt.internal.core.dom.parser.cpp.ICPPInternalBinding#addDefinition(org.eclipse.cdt.core.dom.ast.IASTNode)
*/
public void addDefinition(IASTNode node) {
- addDeclaration( node );
+ addDeclaration(node);
}
/* (non-Javadoc)
@@ -234,29 +234,29 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
* @see org.eclipse.cdt.core.dom.ast.IVariable#isAuto()
*/
public boolean isAuto() {
- return hasStorageClass( IASTDeclSpecifier.sc_auto );
+ return hasStorageClass(IASTDeclSpecifier.sc_auto);
}
/* (non-Javadoc)
* @see org.eclipse.cdt.core.dom.ast.IVariable#isRegister()
*/
public boolean isRegister() {
- return hasStorageClass( IASTDeclSpecifier.sc_register );
+ return hasStorageClass(IASTDeclSpecifier.sc_register);
}
- public boolean hasStorageClass( int storage ){
+ public boolean hasStorageClass(int storage) {
IASTNode[] ns = getDeclarations();
- if( ns == null )
+ if (ns == null)
return false;
- for( int i = 0; i < ns.length && ns[i] != null; i++ ){
+ for (int i = 0; i < ns.length && ns[i] != null; i++) {
IASTNode parent = ns[i].getParent();
- while( !(parent instanceof IASTDeclaration) )
+ while (!(parent instanceof IASTDeclaration))
parent = parent.getParent();
- if( parent instanceof IASTSimpleDeclaration ){
+ if (parent instanceof IASTSimpleDeclaration) {
IASTDeclSpecifier declSpec = ((IASTSimpleDeclaration)parent).getDeclSpecifier();
- if( declSpec.getStorageClass() == storage )
+ if (declSpec.getStorageClass() == storage)
return true;
}
}
@@ -264,14 +264,14 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
}
public IASTInitializer getDefaultValue() {
- if( declarations == null )
+ if (declarations == null)
return null;
for (int i = 0; i < declarations.length && declarations[i] != null; i++) {
IASTNode parent = declarations[i].getParent();
- while( parent.getPropertyInParent() == IASTDeclarator.NESTED_DECLARATOR )
+ while (parent.getPropertyInParent() == IASTDeclarator.NESTED_DECLARATOR)
parent = parent.getParent();
IASTInitializer init = ((IASTDeclarator)parent).getInitializer();
- if( init != null )
+ if (init != null)
return init;
}
return null;
@@ -288,4 +288,10 @@ public class CPPParameter extends PlatformObject implements ICPPParameter, ICPPI
public boolean isExternC() {
return false;
}
+
+ @Override
+ public String toString() {
+ String name = getName();
+ return name.length() != 0 ? name : "<unnamed>"; //$NON-NLS-1$
+ }
}

Back to the top