Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java227
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;
+ }
+ }
+ }
}

Back to the top