diff options
Diffstat (limited to 'core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java')
-rw-r--r-- | core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java | 227 |
1 files changed, 117 insertions, 110 deletions
diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java index 7efa953e635..a63501997c9 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/internal/core/dom/parser/cpp/CPPASTTemplateId.java @@ -43,9 +43,9 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.semantics.CPPVisitor; */ public class CPPASTTemplateId extends CPPASTNameBase implements ICPPASTTemplateId, IASTAmbiguityParent { private IASTName templateName; - private IASTNode[] templateArguments = IASTNode.EMPTY_NODE_ARRAY; + private IASTNode[] templateArguments = IASTNode.EMPTY_NODE_ARRAY; - public CPPASTTemplateId() { + public CPPASTTemplateId() { } public CPPASTTemplateId(IASTName templateName) { @@ -59,8 +59,7 @@ public class CPPASTTemplateId extends CPPASTNameBase implements ICPPASTTemplateI @Override public CPPASTTemplateId copy(CopyStyle style) { - CPPASTTemplateId copy = - new CPPASTTemplateId(templateName == null ? null : templateName.copy(style)); + CPPASTTemplateId copy = new CPPASTTemplateId(templateName == null ? null : templateName.copy(style)); for (IASTNode arg : getTemplateArguments()) { copy.internalAddTemplateArgument(arg == null ? null : arg.copy(style)); } @@ -79,122 +78,130 @@ public class CPPASTTemplateId extends CPPASTNameBase implements ICPPASTTemplateI @Override public IASTName getTemplateName() { - return templateName; - } + return templateName; + } - @Override + @Override public void setTemplateName(IASTName name) { - assertNotFrozen(); - assert !(name instanceof ICPPASTQualifiedName) && !(name instanceof ICPPASTTemplateId); - templateName = name; - if (name != null) { + assertNotFrozen(); + assert !(name instanceof ICPPASTQualifiedName) && !(name instanceof ICPPASTTemplateId); + templateName = name; + if (name != null) { name.setParent(this); name.setPropertyInParent(TEMPLATE_NAME); } - } + } - private void internalAddTemplateArgument(IASTNode node) { + private void internalAddTemplateArgument(IASTNode node) { assertNotFrozen(); - templateArguments = ArrayUtil.append(templateArguments, node); - if (node != null) { - node.setParent(this); - node.setPropertyInParent(TEMPLATE_ID_ARGUMENT); - } - } - - @Override + templateArguments = ArrayUtil.append(templateArguments, node); + if (node != null) { + node.setParent(this); + node.setPropertyInParent(TEMPLATE_ID_ARGUMENT); + } + } + + @Override public void addTemplateArgument(IASTTypeId typeId) { - internalAddTemplateArgument(typeId); - } + internalAddTemplateArgument(typeId); + } - @Override + @Override public void addTemplateArgument(IASTExpression expression) { - internalAddTemplateArgument(expression); - } + internalAddTemplateArgument(expression); + } - @Override + @Override public void addTemplateArgument(ICPPASTAmbiguousTemplateArgument ata) { - internalAddTemplateArgument(ata); - } + internalAddTemplateArgument(ata); + } - @Override + @Override public IASTNode[] getTemplateArguments() { - return ArrayUtil.trim(templateArguments); - } + return ArrayUtil.trim(templateArguments); + } - @Override + @Override protected IBinding createIntermediateBinding() { - return CPPTemplates.createBinding(this); - } + return CPPTemplates.createBinding(this); + } - @Override + @Override public char[] toCharArray() { - assert sAllowNameComputation; - - StringBuilder buf= new StringBuilder(); - buf.append(getTemplateName().toCharArray()); - buf.append('<'); - boolean needComma= false; - boolean cleanupWhitespace= false; - final IASTNode[] args= getTemplateArguments(); - for (IASTNode arg : args) { - if (needComma) - buf.append(", "); //$NON-NLS-1$ - needComma= true; - IASTNodeLocation[] nodeLocs = arg.getNodeLocations(); - if (nodeLocs.length == 1 && nodeLocs[0] instanceof IASTFileLocation) { - buf.append(arg.getRawSignature()); - cleanupWhitespace= true; - } else if (arg instanceof IASTExpression) { - IValue value= ValueFactory.create((IASTExpression) arg); - if (value != IntegralValue.UNKNOWN && !IntegralValue.isDependentValue(value)) { - buf.append(value.getSignature()); - } else { - buf.append(arg.getRawSignature()); - cleanupWhitespace= true; - } - } else if (arg instanceof IASTTypeId) { - IType type= CPPVisitor.createType((IASTTypeId) arg); - if (type instanceof ISemanticProblem) { - buf.append(arg.getRawSignature()); - } else { - ASTTypeUtil.appendType(type, false, buf); - } - } - if (cleanupWhitespace) - WHITESPACE_SEQ.matcher(buf).replaceAll(" "); //$NON-NLS-1$ - } - buf.append('>'); - final int len= buf.length(); - final char[] result= new char[len]; - buf.getChars(0, len, result, 0); - return result; - } - - @Override + assert sAllowNameComputation; + + StringBuilder buf = new StringBuilder(); + buf.append(getTemplateName().toCharArray()); + buf.append('<'); + boolean needComma = false; + boolean cleanupWhitespace = false; + final IASTNode[] args = getTemplateArguments(); + for (IASTNode arg : args) { + if (needComma) + buf.append(", "); //$NON-NLS-1$ + needComma = true; + IASTNodeLocation[] nodeLocs = arg.getNodeLocations(); + if (nodeLocs.length == 1 && nodeLocs[0] instanceof IASTFileLocation) { + buf.append(arg.getRawSignature()); + cleanupWhitespace = true; + } else if (arg instanceof IASTExpression) { + IValue value = ValueFactory.create((IASTExpression) arg); + if (value != IntegralValue.UNKNOWN && !IntegralValue.isDependentValue(value)) { + buf.append(value.getSignature()); + } else { + buf.append(arg.getRawSignature()); + cleanupWhitespace = true; + } + } else if (arg instanceof IASTTypeId) { + IType type = CPPVisitor.createType((IASTTypeId) arg); + if (type instanceof ISemanticProblem) { + buf.append(arg.getRawSignature()); + } else { + ASTTypeUtil.appendType(type, false, buf); + } + } + if (cleanupWhitespace) + WHITESPACE_SEQ.matcher(buf).replaceAll(" "); //$NON-NLS-1$ + } + buf.append('>'); + final int len = buf.length(); + final char[] result = new char[len]; + buf.getChars(0, len, result, 0); + return result; + } + + @Override public boolean accept(ASTVisitor action) { - if (action.shouldVisitNames) { - switch (action.visit(this)) { - case ASTVisitor.PROCESS_ABORT: return false; - case ASTVisitor.PROCESS_SKIP: return true; - default: break; - } + if (action.shouldVisitNames) { + switch (action.visit(this)) { + case ASTVisitor.PROCESS_ABORT: + return false; + case ASTVisitor.PROCESS_SKIP: + return true; + default: + break; + } + } + if (templateName != null && !templateName.accept(action)) + return false; + + IASTNode[] nodes = getTemplateArguments(); + for (int i = 0; i < nodes.length; i++) { + if (!nodes[i].accept(action)) + return false; } - if (templateName != null && !templateName.accept(action)) return false; - - IASTNode[] nodes = getTemplateArguments(); - for (int i = 0; i < nodes.length; i++) { - if (!nodes[i].accept(action)) return false; - } - if (action.shouldVisitNames) { - switch (action.leave(this)) { - case ASTVisitor.PROCESS_ABORT: return false; - case ASTVisitor.PROCESS_SKIP: return true; - default: break; - } + if (action.shouldVisitNames) { + switch (action.leave(this)) { + case ASTVisitor.PROCESS_ABORT: + return false; + case ASTVisitor.PROCESS_SKIP: + return true; + default: + break; + } } - return true; - } + return true; + } @Override public int getRoleForName(IASTName n) { @@ -203,16 +210,16 @@ public class CPPASTTemplateId extends CPPASTNameBase implements ICPPASTTemplateI return r_unclear; } - @Override + @Override public void replace(IASTNode child, IASTNode other) { - if (templateArguments == null) - return; - for (int i = 0; i < templateArguments.length; ++i) { - if (child == templateArguments[i]) { - other.setPropertyInParent(child.getPropertyInParent()); - other.setParent(child.getParent()); - templateArguments[i] = other; - } - } - } + if (templateArguments == null) + return; + for (int i = 0; i < templateArguments.length; ++i) { + if (child == templateArguments[i]) { + other.setPropertyInParent(child.getPropertyInParent()); + other.setParent(child.getParent()); + templateArguments[i] = other; + } + } + } } |