1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-29 19:45:01 +02:00

Removed uses of a deprecated class.

This commit is contained in:
Sergey Prigogin 2011-03-06 20:57:11 +00:00
parent 0f9084562e
commit 0442096272
13 changed files with 124 additions and 237 deletions

View file

@ -7,8 +7,8 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Institute for Software - initial API and implementation * Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems) * Markus Schorn (Wind River Systems)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter; package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
@ -26,7 +26,6 @@ import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression; import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTCompoundStatementExpression;
@ -34,7 +33,6 @@ import org.eclipse.cdt.internal.core.dom.rewrite.ASTLiteralNode;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/** /**
*
* Visits all nodes, prints leading comments and handles macro expansions. The * Visits all nodes, prints leading comments and handles macro expansions. The
* source code generation is delegated to severals <code>NodeWriters</code>. * source code generation is delegated to severals <code>NodeWriters</code>.
* *
@ -42,9 +40,8 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
* @see MacroExpansionHandler * @see MacroExpansionHandler
* *
* @author Emanuel Graf IFS * @author Emanuel Graf IFS
*
*/ */
public class ASTWriterVisitor extends CPPASTVisitor { public class ASTWriterVisitor extends ASTVisitor {
protected Scribe scribe = new Scribe(); protected Scribe scribe = new Scribe();
protected NodeCommentMap commentMap; protected NodeCommentMap commentMap;
@ -57,42 +54,27 @@ public class ASTWriterVisitor extends CPPASTVisitor {
protected NameWriter nameWriter; protected NameWriter nameWriter;
protected TemplateParameterWriter tempParameterWriter; protected TemplateParameterWriter tempParameterWriter;
protected MacroExpansionHandler macroHandler; protected MacroExpansionHandler macroHandler;
{ {
shouldVisitExpressions = true; shouldVisitExpressions = true;
shouldVisitStatements = true; shouldVisitStatements = true;
shouldVisitNames = true; shouldVisitNames = true;
shouldVisitDeclarations = true; shouldVisitDeclarations = true;
shouldVisitDeclSpecifiers = true; shouldVisitDeclSpecifiers = true;
shouldVisitDeclarators = true; shouldVisitDeclarators = true;
shouldVisitArrayModifiers= true; shouldVisitArrayModifiers= true;
shouldVisitInitializers = true; shouldVisitInitializers = true;
shouldVisitBaseSpecifiers = true; shouldVisitBaseSpecifiers = true;
shouldVisitNamespaces = true; shouldVisitNamespaces = true;
shouldVisitTemplateParameters = true; shouldVisitTemplateParameters = true;
shouldVisitParameterDeclarations = true; shouldVisitParameterDeclarations = true;
shouldVisitTranslationUnit = true; shouldVisitTranslationUnit = true;
} }
public ASTWriterVisitor(NodeCommentMap commentMap) { public ASTWriterVisitor(NodeCommentMap commentMap) {
this("", commentMap); //$NON-NLS-1$ this("", commentMap); //$NON-NLS-1$
} }
public ASTWriterVisitor(String givenIndentation, NodeCommentMap commentMap) { public ASTWriterVisitor(String givenIndentation, NodeCommentMap commentMap) {
super(); super();
scribe.setGivenIndentation(givenIndentation); scribe.setGivenIndentation(givenIndentation);
@ -103,14 +85,14 @@ public class ASTWriterVisitor extends CPPASTVisitor {
private void init(NodeCommentMap commentMap) { private void init(NodeCommentMap commentMap) {
macroHandler = new MacroExpansionHandler(scribe); macroHandler = new MacroExpansionHandler(scribe);
statementWriter = new StatementWriter(scribe,this, commentMap); statementWriter = new StatementWriter(scribe, this, commentMap);
declaratorWriter = new DeclaratorWriter(scribe,this, commentMap); declaratorWriter = new DeclaratorWriter(scribe, this, commentMap);
declarationWriter = new DeclarationWriter(scribe,this, commentMap); declarationWriter = new DeclarationWriter(scribe, this, commentMap);
declSpecWriter = new DeclSpecWriter(scribe,this, commentMap); declSpecWriter = new DeclSpecWriter(scribe, this, commentMap);
expWriter = new ExpressionWriter(scribe,this, macroHandler, commentMap); expWriter = new ExpressionWriter(scribe, this, macroHandler, commentMap);
initializerWriter = new InitializerWriter (scribe,this, commentMap); initializerWriter = new InitializerWriter (scribe, this, commentMap);
// ppStmtWriter = new PreprocessorStatementWriter(scribe, this, commentMap); // ppStmtWriter = new PreprocessorStatementWriter(scribe, this, commentMap);
nameWriter = new NameWriter(scribe,this, commentMap); nameWriter = new NameWriter(scribe, this, commentMap);
tempParameterWriter = new TemplateParameterWriter(scribe, this, commentMap); tempParameterWriter = new TemplateParameterWriter(scribe, this, commentMap);
} }
@ -148,8 +130,6 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
@Override @Override
public int visit(IASTDeclSpecifier declSpec) { public int visit(IASTDeclSpecifier declSpec) {
writeLeadingComments(declSpec); writeLeadingComments(declSpec);
@ -157,8 +137,6 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
@Override @Override
public int visit(IASTExpression expression) { public int visit(IASTExpression expression) {
writeLeadingComments(expression); writeLeadingComments(expression);
@ -173,8 +151,6 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
@Override @Override
public int visit(IASTStatement statement) { public int visit(IASTStatement statement) {
writeLeadingComments(statement); writeLeadingComments(statement);
@ -187,7 +163,6 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return statementWriter.writeStatement(statement, true); return statementWriter.writeStatement(statement, true);
} }
@Override @Override
public int visit(IASTDeclaration declaration) { public int visit(IASTDeclaration declaration) {
writeLeadingComments(declaration); writeLeadingComments(declaration);
@ -197,8 +172,6 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
@Override @Override
public int visit(IASTDeclarator declarator) { public int visit(IASTDeclarator declarator) {
writeLeadingComments(declarator); writeLeadingComments(declarator);
@ -216,7 +189,6 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
@Override @Override
public int visit(IASTInitializer initializer) { public int visit(IASTInitializer initializer) {
writeLeadingComments(initializer); writeLeadingComments(initializer);
@ -226,8 +198,6 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
@Override @Override
public int visit(IASTParameterDeclaration parameterDeclaration) { public int visit(IASTParameterDeclaration parameterDeclaration) {
writeLeadingComments(parameterDeclaration); writeLeadingComments(parameterDeclaration);
@ -243,13 +213,10 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
protected IASTName getParameterName(IASTDeclarator declarator) { protected IASTName getParameterName(IASTDeclarator declarator) {
return declarator.getName(); return declarator.getName();
} }
protected IASTDeclarator getParameterDeclarator( protected IASTDeclarator getParameterDeclarator(
IASTParameterDeclaration parameterDeclaration) { IASTParameterDeclaration parameterDeclaration) {
return parameterDeclaration.getDeclarator(); return parameterDeclaration.getDeclarator();
@ -273,10 +240,8 @@ public class ASTWriterVisitor extends CPPASTVisitor {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
public void cleanCache() { public void cleanCache() {
scribe.cleanCache(); scribe.cleanCache();
macroHandler.reset(); macroHandler.reset();
} }
} }

View file

@ -7,10 +7,11 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Institute for Software - initial API and implementation * Institute for Software - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter; package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@ -26,7 +27,6 @@ import org.eclipse.cdt.core.dom.ast.c.ICASTElaboratedTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.c.ICASTEnumerationSpecifier; import org.eclipse.cdt.core.dom.ast.c.ICASTEnumerationSpecifier;
import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier; import org.eclipse.cdt.core.dom.ast.c.ICASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.dom.ast.c.ICASTTypedefNameSpecifier; import org.eclipse.cdt.core.dom.ast.c.ICASTTypedefNameSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTDeclSpecifier;
@ -36,16 +36,13 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleDeclSpecifier;
import org.eclipse.cdt.core.parser.Keywords; import org.eclipse.cdt.core.parser.Keywords;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/** /**
*
* Generates source code of declaration specifier nodes. The actual string operations are delegated * Generates source code of declaration specifier nodes. The actual string operations are delegated
* to the <code>Scribe</code> class. * to the <code>Scribe</code> class.
* *
* @see Scribe * @see Scribe
* @see IASTDeclSpecifier * @see IASTDeclSpecifier
* @author Emanuel Graf IFS * @author Emanuel Graf IFS
*
*/ */
public class DeclSpecWriter extends NodeWriter { public class DeclSpecWriter extends NodeWriter {
private static final String MUTABLE = "mutable "; //$NON-NLS-1$ private static final String MUTABLE = "mutable "; //$NON-NLS-1$
@ -65,9 +62,8 @@ public class DeclSpecWriter extends NodeWriter {
private static final String ENUM = "enum "; //$NON-NLS-1$ private static final String ENUM = "enum "; //$NON-NLS-1$
private static final String _BOOL = "_Bool"; //$NON-NLS-1$ private static final String _BOOL = "_Bool"; //$NON-NLS-1$
public DeclSpecWriter(Scribe scribe, CPPASTVisitor visitor, NodeCommentMap commentMap) { public DeclSpecWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
} }
protected void writeDelcSpec(IASTDeclSpecifier declSpec) { protected void writeDelcSpec(IASTDeclSpecifier declSpec) {
@ -75,7 +71,7 @@ public class DeclSpecWriter extends NodeWriter {
writeDeclSpec(declSpec); writeDeclSpec(declSpec);
if (declSpec instanceof ICPPASTDeclSpecifier) { if (declSpec instanceof ICPPASTDeclSpecifier) {
writeCPPDeclSpec((ICPPASTDeclSpecifier) declSpec); writeCPPDeclSpec((ICPPASTDeclSpecifier) declSpec);
}else if (declSpec instanceof ICASTDeclSpecifier) { } else if (declSpec instanceof ICASTDeclSpecifier) {
writeCDeclSpec((ICASTDeclSpecifier) declSpec); writeCDeclSpec((ICASTDeclSpecifier) declSpec);
} }
} }
@ -88,9 +84,7 @@ public class DeclSpecWriter extends NodeWriter {
return getASTSimpleDecSpecifier(simpDeclSpec.getType(), false); return getASTSimpleDecSpecifier(simpDeclSpec.getType(), false);
} }
private String getASTSimpleDecSpecifier(int type, boolean isCpp) { private String getASTSimpleDecSpecifier(int type, boolean isCpp) {
switch (type) { switch (type) {
case IASTSimpleDeclSpecifier.t_unspecified: case IASTSimpleDeclSpecifier.t_unspecified:
return ""; //$NON-NLS-1$ return ""; //$NON-NLS-1$
@ -140,25 +134,25 @@ public class DeclSpecWriter extends NodeWriter {
} }
private void writeCDeclSpec(ICASTDeclSpecifier cDeclSpec) { private void writeCDeclSpec(ICASTDeclSpecifier cDeclSpec) {
if(cDeclSpec.isRestrict()) { if (cDeclSpec.isRestrict()) {
scribe.print(RESTRICT); scribe.print(RESTRICT);
} }
if (cDeclSpec instanceof ICASTCompositeTypeSpecifier) { if (cDeclSpec instanceof ICASTCompositeTypeSpecifier) {
writeCompositeTypeSpecifier((ICASTCompositeTypeSpecifier) cDeclSpec); writeCompositeTypeSpecifier((ICASTCompositeTypeSpecifier) cDeclSpec);
}else if (cDeclSpec instanceof ICASTEnumerationSpecifier) { } else if (cDeclSpec instanceof ICASTEnumerationSpecifier) {
writeEnumSpec((ICASTEnumerationSpecifier) cDeclSpec); writeEnumSpec((ICASTEnumerationSpecifier) cDeclSpec);
}else if (cDeclSpec instanceof ICASTElaboratedTypeSpecifier) { } else if (cDeclSpec instanceof ICASTElaboratedTypeSpecifier) {
writeElaboratedTypeSec((ICASTElaboratedTypeSpecifier) cDeclSpec); writeElaboratedTypeSec((ICASTElaboratedTypeSpecifier) cDeclSpec);
}else if (cDeclSpec instanceof ICASTSimpleDeclSpecifier) { } else if (cDeclSpec instanceof ICASTSimpleDeclSpecifier) {
writeCSimpleDeclSpec((ICASTSimpleDeclSpecifier) cDeclSpec); writeCSimpleDeclSpec((ICASTSimpleDeclSpecifier) cDeclSpec);
}else if (cDeclSpec instanceof ICASTTypedefNameSpecifier) { } else if (cDeclSpec instanceof ICASTTypedefNameSpecifier) {
writeNamedTypeSpecifier((ICASTTypedefNameSpecifier) cDeclSpec); writeNamedTypeSpecifier((ICASTTypedefNameSpecifier) cDeclSpec);
} }
} }
private void writeNamedTypeSpecifier(ICPPASTNamedTypeSpecifier namedSpc) { private void writeNamedTypeSpecifier(ICPPASTNamedTypeSpecifier namedSpc) {
if( namedSpc.isTypename() ){ if ( namedSpc.isTypename() ){
scribe.print(TYPENAME); scribe.print(TYPENAME);
} }
namedSpc.getName().accept(visitor); namedSpc.getName().accept(visitor);
@ -168,15 +162,11 @@ public class DeclSpecWriter extends NodeWriter {
namedSpc.getName().accept(visitor); namedSpc.getName().accept(visitor);
} }
private void writeElaboratedTypeSec(IASTElaboratedTypeSpecifier elabType) { private void writeElaboratedTypeSec(IASTElaboratedTypeSpecifier elabType) {
scribe.print(getElabTypeString(elabType.getKind())); scribe.print(getElabTypeString(elabType.getKind()));
elabType.getName().accept(visitor); elabType.getName().accept(visitor);
} }
private String getElabTypeString(int kind) { private String getElabTypeString(int kind) {
switch(kind) { switch(kind) {
case IASTElaboratedTypeSpecifier.k_enum: case IASTElaboratedTypeSpecifier.k_enum:
@ -194,46 +184,42 @@ public class DeclSpecWriter extends NodeWriter {
} }
} }
private void writeCPPDeclSpec(ICPPASTDeclSpecifier cppDelcSpec) { private void writeCPPDeclSpec(ICPPASTDeclSpecifier cppDelcSpec) {
if (cppDelcSpec.isVirtual()) { if (cppDelcSpec.isVirtual()) {
scribe.print(VIRTUAL); scribe.print(VIRTUAL);
} }
if(cppDelcSpec.isExplicit()) { if (cppDelcSpec.isExplicit()) {
scribe.print(EXPLICIT); scribe.print(EXPLICIT);
} }
if(cppDelcSpec.isFriend()) { if (cppDelcSpec.isFriend()) {
scribe.print(FRIEND); scribe.print(FRIEND);
} }
if(cppDelcSpec.getStorageClass() == IASTDeclSpecifier.sc_mutable) { if (cppDelcSpec.getStorageClass() == IASTDeclSpecifier.sc_mutable) {
scribe.print(MUTABLE); scribe.print(MUTABLE);
} }
if (cppDelcSpec instanceof ICPPASTCompositeTypeSpecifier) { if (cppDelcSpec instanceof ICPPASTCompositeTypeSpecifier) {
writeCompositeTypeSpecifier((ICPPASTCompositeTypeSpecifier) cppDelcSpec); writeCompositeTypeSpecifier((ICPPASTCompositeTypeSpecifier) cppDelcSpec);
}else if (cppDelcSpec instanceof IASTEnumerationSpecifier) { } else if (cppDelcSpec instanceof IASTEnumerationSpecifier) {
writeEnumSpec((IASTEnumerationSpecifier) cppDelcSpec); writeEnumSpec((IASTEnumerationSpecifier) cppDelcSpec);
}else if (cppDelcSpec instanceof ICPPASTElaboratedTypeSpecifier) { } else if (cppDelcSpec instanceof ICPPASTElaboratedTypeSpecifier) {
writeElaboratedTypeSec((ICPPASTElaboratedTypeSpecifier) cppDelcSpec); writeElaboratedTypeSec((ICPPASTElaboratedTypeSpecifier) cppDelcSpec);
}else if (cppDelcSpec instanceof ICPPASTSimpleDeclSpecifier) { } else if (cppDelcSpec instanceof ICPPASTSimpleDeclSpecifier) {
writeCPPSimpleDeclSpec((ICPPASTSimpleDeclSpecifier) cppDelcSpec); writeCPPSimpleDeclSpec((ICPPASTSimpleDeclSpecifier) cppDelcSpec);
}else if (cppDelcSpec instanceof ICPPASTNamedTypeSpecifier) { } else if (cppDelcSpec instanceof ICPPASTNamedTypeSpecifier) {
writeNamedTypeSpecifier((ICPPASTNamedTypeSpecifier) cppDelcSpec); writeNamedTypeSpecifier((ICPPASTNamedTypeSpecifier) cppDelcSpec);
} }
} }
private void writeEnumSpec(IASTEnumerationSpecifier enumSpec) { private void writeEnumSpec(IASTEnumerationSpecifier enumSpec) {
scribe.print(ENUM); scribe.print(ENUM);
enumSpec.getName().accept(visitor); enumSpec.getName().accept(visitor);
scribe.print('{'); scribe.print('{');
scribe.printSpace(); scribe.printSpace();
IASTEnumerator[] enums = enumSpec.getEnumerators(); IASTEnumerator[] enums = enumSpec.getEnumerators();
for(int i = 0; i< enums.length;++i) { for (int i = 0; i< enums.length;++i) {
writeEnumerator(enums[i]); writeEnumerator(enums[i]);
if(i+1< enums.length) { if (i+1< enums.length) {
scribe.print(NodeWriter.COMMA_SPACE); scribe.print(NodeWriter.COMMA_SPACE);
} }
} }
@ -241,20 +227,16 @@ public class DeclSpecWriter extends NodeWriter {
} }
private void writeEnumerator(IASTEnumerator enumerator) { private void writeEnumerator(IASTEnumerator enumerator) {
enumerator.getName().accept(visitor); enumerator.getName().accept(visitor);
IASTExpression value = enumerator.getValue(); IASTExpression value = enumerator.getValue();
if(value != null) { if (value != null) {
scribe.print(EQUALS); scribe.print(EQUALS);
value.accept(visitor); value.accept(visitor);
} }
} }
private void writeCompositeTypeSpecifier(IASTCompositeTypeSpecifier compDeclSpec) { private void writeCompositeTypeSpecifier(IASTCompositeTypeSpecifier compDeclSpec) {
boolean hasTrailingComments = hasTrailingComments(compDeclSpec.getName()); boolean hasTrailingComments = hasTrailingComments(compDeclSpec.getName());
scribe.printStringSpace(getCPPCompositeTypeString(compDeclSpec.getKey())); scribe.printStringSpace(getCPPCompositeTypeString(compDeclSpec.getKey()));
@ -264,16 +246,16 @@ public class DeclSpecWriter extends NodeWriter {
ICPPASTBaseSpecifier[] baseSpecifiers = cppComp.getBaseSpecifiers(); ICPPASTBaseSpecifier[] baseSpecifiers = cppComp.getBaseSpecifiers();
if (baseSpecifiers.length > 0) { if (baseSpecifiers.length > 0) {
scribe.print(SPACE_COLON_SPACE); scribe.print(SPACE_COLON_SPACE);
for(int i = 0; i < baseSpecifiers.length;++i) { for (int i = 0; i < baseSpecifiers.length;++i) {
writeBaseSpecifiers(baseSpecifiers[i]); writeBaseSpecifiers(baseSpecifiers[i]);
if(i+1 < baseSpecifiers.length) { if (i+1 < baseSpecifiers.length) {
scribe.print(COMMA_SPACE); scribe.print(COMMA_SPACE);
} }
} }
hasTrailingComments = hasTrailingComments(baseSpecifiers[baseSpecifiers.length-1].getName()); hasTrailingComments = hasTrailingComments(baseSpecifiers[baseSpecifiers.length-1].getName());
} }
} }
if(!hasTrailingComments){ if (!hasTrailingComments){
scribe.newLine(); scribe.newLine();
} }
scribe.print('{'); scribe.print('{');
@ -281,19 +263,19 @@ public class DeclSpecWriter extends NodeWriter {
scribe.incrementIndentationLevel(); scribe.incrementIndentationLevel();
IASTDeclaration[] decls = getMembers(compDeclSpec); IASTDeclaration[] decls = getMembers(compDeclSpec);
if(decls.length > 0) { if (decls.length > 0) {
for (IASTDeclaration declaration : decls) { for (IASTDeclaration declaration : decls) {
declaration.accept(visitor); declaration.accept(visitor);
} }
} }
if(hasFreestandingComments(compDeclSpec)) { if (hasFreestandingComments(compDeclSpec)) {
writeFreeStandingComments(compDeclSpec); writeFreeStandingComments(compDeclSpec);
} }
scribe.decrementIndentationLevel(); scribe.decrementIndentationLevel();
scribe.print('}'); scribe.print('}');
if(hasTrailingComments(compDeclSpec)) { if (hasTrailingComments(compDeclSpec)) {
writeTrailingComments(compDeclSpec); writeTrailingComments(compDeclSpec);
} }
} }
@ -317,10 +299,8 @@ public class DeclSpecWriter extends NodeWriter {
specifier.getName().accept(visitor); specifier.getName().accept(visitor);
} }
private String getCPPCompositeTypeString(int key) { private String getCPPCompositeTypeString(int key) {
if(key <= IASTCompositeTypeSpecifier.k_last) { if (key <= IASTCompositeTypeSpecifier.k_last) {
return getCompositeTypeString(key); return getCompositeTypeString(key);
} }
switch (key) { switch (key) {
@ -332,8 +312,6 @@ public class DeclSpecWriter extends NodeWriter {
} }
} }
private String getCompositeTypeString(int key) { private String getCompositeTypeString(int key) {
switch (key) { switch (key) {
case IASTCompositeTypeSpecifier.k_struct: case IASTCompositeTypeSpecifier.k_struct:
@ -346,10 +324,8 @@ public class DeclSpecWriter extends NodeWriter {
} }
} }
private void writeDeclSpec(IASTDeclSpecifier declSpec) { private void writeDeclSpec(IASTDeclSpecifier declSpec) {
if(declSpec.isInline()) { if (declSpec.isInline()) {
scribe.print(INLINE); scribe.print(INLINE);
} }
switch(declSpec.getStorageClass()) { switch(declSpec.getStorageClass()) {
@ -375,8 +351,6 @@ public class DeclSpecWriter extends NodeWriter {
if (declSpec.isVolatile()) { if (declSpec.isVolatile()) {
scribe.printStringSpace(VOLATILE); scribe.printStringSpace(VOLATILE);
} }
} }
private void writeCPPSimpleDeclSpec(ICPPASTSimpleDeclSpecifier simpDeclSpec) { private void writeCPPSimpleDeclSpec(ICPPASTSimpleDeclSpecifier simpDeclSpec) {
@ -393,17 +367,17 @@ public class DeclSpecWriter extends NodeWriter {
} }
private void printQualifiers(IASTSimpleDeclSpecifier simpDeclSpec) { private void printQualifiers(IASTSimpleDeclSpecifier simpDeclSpec) {
if(simpDeclSpec.isSigned()) { if (simpDeclSpec.isSigned()) {
scribe.printStringSpace(SIGNED); scribe.printStringSpace(SIGNED);
}else if(simpDeclSpec.isUnsigned()){ } else if (simpDeclSpec.isUnsigned()){
scribe.printStringSpace(UNSIGNED); scribe.printStringSpace(UNSIGNED);
} }
if(simpDeclSpec.isShort()) { if (simpDeclSpec.isShort()) {
scribe.printStringSpace(SHORT); scribe.printStringSpace(SHORT);
}else if(simpDeclSpec.isLong()) { } else if (simpDeclSpec.isLong()) {
scribe.printStringSpace(LONG); scribe.printStringSpace(LONG);
}else if(simpDeclSpec.isLongLong()) { } else if (simpDeclSpec.isLongLong()) {
scribe.print(LONG_LONG); scribe.print(LONG_LONG);
} }
if (simpDeclSpec instanceof ICASTSimpleDeclSpecifier) { if (simpDeclSpec instanceof ICASTSimpleDeclSpecifier) {
@ -414,11 +388,8 @@ public class DeclSpecWriter extends NodeWriter {
} }
} }
private void writeCSimpleDeclSpec(ICASTSimpleDeclSpecifier simpDeclSpec) { private void writeCSimpleDeclSpec(ICASTSimpleDeclSpecifier simpDeclSpec) {
printQualifiers(simpDeclSpec); printQualifiers(simpDeclSpec);
scribe.print(getCSimpleDecSpecifier(simpDeclSpec)); scribe.print(getCSimpleDecSpecifier(simpDeclSpec));
} }
} }

View file

@ -7,11 +7,12 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Institute for Software - initial API and implementation * Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems) * Markus Schorn (Wind River Systems)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter; package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression; import org.eclipse.cdt.core.dom.ast.IASTArraySubscriptExpression;
import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.IASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.IASTCastExpression; import org.eclipse.cdt.core.dom.ast.IASTCastExpression;
@ -28,7 +29,6 @@ import org.eclipse.cdt.core.dom.ast.IASTProblemExpression;
import org.eclipse.cdt.core.dom.ast.IASTTypeId; import org.eclipse.cdt.core.dom.ast.IASTTypeId;
import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression; import org.eclipse.cdt.core.dom.ast.IASTTypeIdExpression;
import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression; import org.eclipse.cdt.core.dom.ast.IASTUnaryExpression;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTBinaryExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCapture; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCapture;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCastExpression;
@ -39,11 +39,9 @@ import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeConstructorExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeConstructorExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTypeIdExpression;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTUnaryExpression;
import org.eclipse.cdt.core.dom.ast.gnu.IGNUASTTypeIdExpression;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTBinaryExpression; import org.eclipse.cdt.core.dom.ast.gnu.cpp.IGPPASTBinaryExpression;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/** /**
* *
* Generates source code of expression nodes. The actual string operations are delegated * Generates source code of expression nodes. The actual string operations are delegated
@ -52,10 +50,8 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
* @see Scribe * @see Scribe
* @see IASTExpression * @see IASTExpression
* @author Emanuel Graf IFS * @author Emanuel Graf IFS
*
*/ */
public class ExpressionWriter extends NodeWriter{ public class ExpressionWriter extends NodeWriter{
private static final String VECTORED_DELETE_OP = "[] "; //$NON-NLS-1$ private static final String VECTORED_DELETE_OP = "[] "; //$NON-NLS-1$
private static final String DELETE = "delete "; //$NON-NLS-1$ private static final String DELETE = "delete "; //$NON-NLS-1$
private static final String STATIC_CAST_OP = "static_cast<"; //$NON-NLS-1$ private static final String STATIC_CAST_OP = "static_cast<"; //$NON-NLS-1$
@ -119,7 +115,7 @@ public class ExpressionWriter extends NodeWriter{
private static final String THIS = "this"; //$NON-NLS-1$ private static final String THIS = "this"; //$NON-NLS-1$
private final MacroExpansionHandler macroHandler; private final MacroExpansionHandler macroHandler;
public ExpressionWriter(Scribe scribe, CPPASTVisitor visitor, MacroExpansionHandler macroHandler, NodeCommentMap commentMap) { public ExpressionWriter(Scribe scribe, ASTVisitor visitor, MacroExpansionHandler macroHandler, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
this.macroHandler = macroHandler; this.macroHandler = macroHandler;
} }
@ -137,23 +133,23 @@ public class ExpressionWriter extends NodeWriter{
writeCastExpression((IASTCastExpression) expression); writeCastExpression((IASTCastExpression) expression);
} else if (expression instanceof ICPPASTNewExpression) { } else if (expression instanceof ICPPASTNewExpression) {
writeCPPNewExpression((ICPPASTNewExpression) expression); writeCPPNewExpression((ICPPASTNewExpression) expression);
}else if (expression instanceof IASTConditionalExpression) { } else if (expression instanceof IASTConditionalExpression) {
writeConditionalExpression((IASTConditionalExpression) expression); writeConditionalExpression((IASTConditionalExpression) expression);
}else if (expression instanceof IASTArraySubscriptExpression) { } else if (expression instanceof IASTArraySubscriptExpression) {
writeArraySubscriptExpression((IASTArraySubscriptExpression) expression); writeArraySubscriptExpression((IASTArraySubscriptExpression) expression);
}else if (expression instanceof IASTFieldReference) { } else if (expression instanceof IASTFieldReference) {
writeFieldReference((IASTFieldReference) expression); writeFieldReference((IASTFieldReference) expression);
}else if (expression instanceof IASTFunctionCallExpression) { } else if (expression instanceof IASTFunctionCallExpression) {
writeFunctionCallExpression((IASTFunctionCallExpression) expression); writeFunctionCallExpression((IASTFunctionCallExpression) expression);
}else if (expression instanceof IASTExpressionList) { } else if (expression instanceof IASTExpressionList) {
writeExpressionList((IASTExpressionList) expression); writeExpressionList((IASTExpressionList) expression);
}else if (expression instanceof IASTProblemExpression) { } else if (expression instanceof IASTProblemExpression) {
throw new ProblemRuntimeException(((IASTProblemExpression) expression)); throw new ProblemRuntimeException(((IASTProblemExpression) expression));
}else if (expression instanceof IASTTypeIdExpression) { } else if (expression instanceof IASTTypeIdExpression) {
writeTypeIdExpression((IASTTypeIdExpression) expression); writeTypeIdExpression((IASTTypeIdExpression) expression);
}else if (expression instanceof ICPPASTDeleteExpression) { } else if (expression instanceof ICPPASTDeleteExpression) {
writeDeleteExpression((ICPPASTDeleteExpression) expression); writeDeleteExpression((ICPPASTDeleteExpression) expression);
}else if (expression instanceof ICPPASTSimpleTypeConstructorExpression) { } else if (expression instanceof ICPPASTSimpleTypeConstructorExpression) {
writeSimpleTypeConstructorExpression((ICPPASTSimpleTypeConstructorExpression) expression); writeSimpleTypeConstructorExpression((ICPPASTSimpleTypeConstructorExpression) expression);
} else if (expression instanceof ICPPASTLambdaExpression) { } else if (expression instanceof ICPPASTLambdaExpression) {
writeLambdaExpression((ICPPASTLambdaExpression) expression); writeLambdaExpression((ICPPASTLambdaExpression) expression);
@ -161,7 +157,6 @@ public class ExpressionWriter extends NodeWriter{
} }
private String getBinaryExpressionOperator(int operator){ private String getBinaryExpressionOperator(int operator){
switch(operator){ switch(operator){
case IASTBinaryExpression.op_multiply: case IASTBinaryExpression.op_multiply:
return MULTIPLY_OP; return MULTIPLY_OP;
@ -235,7 +230,6 @@ public class ExpressionWriter extends NodeWriter{
System.err.println("Unknown unaryExpressionType: " + operator); //$NON-NLS-1$ System.err.println("Unknown unaryExpressionType: " + operator); //$NON-NLS-1$
throw new IllegalArgumentException("Unknown unaryExpressionType: " + operator); //$NON-NLS-1$ throw new IllegalArgumentException("Unknown unaryExpressionType: " + operator); //$NON-NLS-1$
} }
} }
private boolean isPrefixExpression(IASTUnaryExpression unExp) { private boolean isPrefixExpression(IASTUnaryExpression unExp) {
@ -339,7 +333,7 @@ public class ExpressionWriter extends NodeWriter{
operand1.accept(visitor); operand1.accept(visitor);
} }
IASTExpression operand2 = binExp.getOperand2(); IASTExpression operand2 = binExp.getOperand2();
if(macroHandler.checkisMacroExpansionNode(operand2, false)&& macroHandler.macroExpansionAlreadyPrinted(operand2)) { if (macroHandler.checkisMacroExpansionNode(operand2, false)&& macroHandler.macroExpansionAlreadyPrinted(operand2)) {
return; return;
} }
scribe.print(getBinaryExpressionOperator(binExp.getOperator())); scribe.print(getBinaryExpressionOperator(binExp.getOperator()));
@ -347,7 +341,7 @@ public class ExpressionWriter extends NodeWriter{
} }
private void writeCPPNewExpression(ICPPASTNewExpression newExp) { private void writeCPPNewExpression(ICPPASTNewExpression newExp) {
if(newExp.isGlobal()) { if (newExp.isGlobal()) {
scribe.print(COLON_COLON); scribe.print(COLON_COLON);
} }
scribe.print(NEW); scribe.print(NEW);
@ -387,11 +381,11 @@ public class ExpressionWriter extends NodeWriter{
} }
private void writeUnaryExpression(IASTUnaryExpression unExp) { private void writeUnaryExpression(IASTUnaryExpression unExp) {
if(isPrefixExpression(unExp )) { if (isPrefixExpression(unExp )) {
scribe.print(getPrefixOperator(unExp)); scribe.print(getPrefixOperator(unExp));
} }
visitNodeIfNotNull(unExp.getOperand()); visitNodeIfNotNull(unExp.getOperand());
if(isPostfixExpression(unExp)) { if (isPostfixExpression(unExp)) {
scribe.print(getPostfixOperator(unExp)); scribe.print(getPostfixOperator(unExp));
} }
} }
@ -422,19 +416,18 @@ public class ExpressionWriter extends NodeWriter{
private void writeFieldReference(IASTFieldReference fieldRef) { private void writeFieldReference(IASTFieldReference fieldRef) {
fieldRef.getFieldOwner().accept(visitor); fieldRef.getFieldOwner().accept(visitor);
if(fieldRef.isPointerDereference()) { if (fieldRef.isPointerDereference()) {
scribe.print(ARROW); scribe.print(ARROW);
}else { } else {
scribe.print('.'); scribe.print('.');
} }
if (fieldRef instanceof ICPPASTFieldReference) { if (fieldRef instanceof ICPPASTFieldReference) {
ICPPASTFieldReference cppFieldRef = (ICPPASTFieldReference) fieldRef; ICPPASTFieldReference cppFieldRef = (ICPPASTFieldReference) fieldRef;
if(cppFieldRef.isTemplate()) { if (cppFieldRef.isTemplate()) {
scribe.print(TEMPLATE); scribe.print(TEMPLATE);
} }
} }
fieldRef.getFieldName().accept(visitor); fieldRef.getFieldName().accept(visitor);
} }
private void writeFunctionCallExpression(IASTFunctionCallExpression funcCallExp) { private void writeFunctionCallExpression(IASTFunctionCallExpression funcCallExp) {
@ -487,7 +480,6 @@ public class ExpressionWriter extends NodeWriter{
} }
private void writeExpressionList(IASTExpressionList expList) { private void writeExpressionList(IASTExpressionList expList) {
IASTExpression[] expressions = expList.getExpressions(); IASTExpression[] expressions = expList.getExpressions();
writeExpressions(expList, expressions); writeExpressions(expList, expressions);
} }
@ -509,20 +501,20 @@ public class ExpressionWriter extends NodeWriter{
return SIZEOF_OP + "("; //$NON-NLS-1$ return SIZEOF_OP + "("; //$NON-NLS-1$
case ICPPASTTypeIdExpression.op_typeid: case ICPPASTTypeIdExpression.op_typeid:
return TYPEID_OP; return TYPEID_OP;
case IGNUASTTypeIdExpression.op_alignof: case IASTTypeIdExpression.op_alignof:
return ALIGNOF_OP + "("; //$NON-NLS-1$ return ALIGNOF_OP + "("; //$NON-NLS-1$
case IGNUASTTypeIdExpression.op_typeof: case IASTTypeIdExpression.op_typeof:
return TYPEOF_OP; return TYPEOF_OP;
} }
throw new IllegalArgumentException("Unknown TypeId Type"); //$NON-NLS-1$ throw new IllegalArgumentException("Unknown TypeId Type"); //$NON-NLS-1$
} }
private void writeDeleteExpression(ICPPASTDeleteExpression delExp) { private void writeDeleteExpression(ICPPASTDeleteExpression delExp) {
if(delExp.isGlobal()) { if (delExp.isGlobal()) {
scribe.print(COLON_COLON); scribe.print(COLON_COLON);
} }
scribe.print(DELETE); scribe.print(DELETE);
if(delExp.isVectored()) { if (delExp.isVectored()) {
scribe.print(VECTORED_DELETE_OP); scribe.print(VECTORED_DELETE_OP);
} }
delExp.getOperand().accept(visitor); delExp.getOperand().accept(visitor);
@ -571,6 +563,5 @@ public class ExpressionWriter extends NodeWriter{
capture.getIdentifier().accept(visitor); capture.getIdentifier().accept(visitor);
} }
} }
} }

View file

@ -7,11 +7,12 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Institute for Software - initial API and implementation * Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems) * Markus Schorn (Wind River Systems)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter; package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTEqualsInitializer; import org.eclipse.cdt.core.dom.ast.IASTEqualsInitializer;
import org.eclipse.cdt.core.dom.ast.IASTInitializer; import org.eclipse.cdt.core.dom.ast.IASTInitializer;
import org.eclipse.cdt.core.dom.ast.IASTInitializerClause; import org.eclipse.cdt.core.dom.ast.IASTInitializerClause;
@ -20,46 +21,41 @@ import org.eclipse.cdt.core.dom.ast.c.ICASTArrayDesignator;
import org.eclipse.cdt.core.dom.ast.c.ICASTDesignatedInitializer; import org.eclipse.cdt.core.dom.ast.c.ICASTDesignatedInitializer;
import org.eclipse.cdt.core.dom.ast.c.ICASTDesignator; import org.eclipse.cdt.core.dom.ast.c.ICASTDesignator;
import org.eclipse.cdt.core.dom.ast.c.ICASTFieldDesignator; import org.eclipse.cdt.core.dom.ast.c.ICASTFieldDesignator;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorInitializer; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorInitializer;
import org.eclipse.cdt.core.dom.ast.gnu.c.IGCCASTArrayRangeDesignator; import org.eclipse.cdt.core.dom.ast.gnu.c.IGCCASTArrayRangeDesignator;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/** /**
*
* Generates source code of initializer nodes. The actual string operations are delegated * Generates source code of initializer nodes. The actual string operations are delegated
* to the <code>Scribe</code> class. * to the <code>Scribe</code> class.
* *
* @see Scribe * @see Scribe
* @see IASTInitializer * @see IASTInitializer
* @author Emanuel Graf IFS * @author Emanuel Graf IFS
*
*/ */
public class InitializerWriter extends NodeWriter{ public class InitializerWriter extends NodeWriter{
public InitializerWriter(Scribe scribe, CPPASTVisitor visitor, NodeCommentMap commentMap) { public InitializerWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
} }
protected void writeInitializer(IASTInitializer initializer) { protected void writeInitializer(IASTInitializer initializer) {
if (initializer instanceof IASTEqualsInitializer) { if (initializer instanceof IASTEqualsInitializer) {
writeEqualsInitializer((IASTEqualsInitializer) initializer); writeEqualsInitializer((IASTEqualsInitializer) initializer);
}else if (initializer instanceof IASTInitializerList) { } else if (initializer instanceof IASTInitializerList) {
writeInitializerList((IASTInitializerList) initializer); writeInitializerList((IASTInitializerList) initializer);
}else if (initializer instanceof ICPPASTConstructorInitializer) { } else if (initializer instanceof ICPPASTConstructorInitializer) {
writeConstructorInitializer((ICPPASTConstructorInitializer) initializer); writeConstructorInitializer((ICPPASTConstructorInitializer) initializer);
}else if (initializer instanceof ICASTDesignatedInitializer) { } else if (initializer instanceof ICASTDesignatedInitializer) {
writeDesignatedInitializer((ICASTDesignatedInitializer) initializer); writeDesignatedInitializer((ICASTDesignatedInitializer) initializer);
}else if (initializer instanceof ICPPASTConstructorChainInitializer) { } else if (initializer instanceof ICPPASTConstructorChainInitializer) {
writeConstructorChainInitializer((ICPPASTConstructorChainInitializer) initializer); writeConstructorChainInitializer((ICPPASTConstructorChainInitializer) initializer);
} }
if (hasTrailingComments(initializer)) if (hasTrailingComments(initializer))
writeTrailingComments(initializer, false); writeTrailingComments(initializer, false);
} }
private void writeEqualsInitializer(IASTEqualsInitializer initializer) { private void writeEqualsInitializer(IASTEqualsInitializer initializer) {
scribe.print(EQUALS); scribe.print(EQUALS);
IASTInitializerClause init = initializer.getInitializerClause(); IASTInitializerClause init = initializer.getInitializerClause();
@ -100,16 +96,15 @@ public class InitializerWriter extends NodeWriter{
ICASTFieldDesignator fieldDes = (ICASTFieldDesignator) designator; ICASTFieldDesignator fieldDes = (ICASTFieldDesignator) designator;
scribe.print('.'); scribe.print('.');
fieldDes.getName().accept(visitor); fieldDes.getName().accept(visitor);
}else if (designator instanceof ICASTArrayDesignator) { } else if (designator instanceof ICASTArrayDesignator) {
ICASTArrayDesignator arrDes = (ICASTArrayDesignator) designator; ICASTArrayDesignator arrDes = (ICASTArrayDesignator) designator;
scribe.print('['); scribe.print('[');
arrDes.getSubscriptExpression().accept(visitor); arrDes.getSubscriptExpression().accept(visitor);
scribe.print(']'); scribe.print(']');
}else if (designator instanceof IGCCASTArrayRangeDesignator) { } else if (designator instanceof IGCCASTArrayRangeDesignator) {
//IGCCASTArrayRangeDesignator new_name = (IGCCASTArrayRangeDesignator) designator; //IGCCASTArrayRangeDesignator new_name = (IGCCASTArrayRangeDesignator) designator;
//TODO IGCCASTArrayRangeDesignator Bespiel zu parsen bringen //TODO IGCCASTArrayRangeDesignator Bespiel zu parsen bringen
throw new UnsupportedOperationException("Writing of GCC ArrayRangeDesignator is not yet implemented"); //$NON-NLS-1$ throw new UnsupportedOperationException("Writing of GCC ArrayRangeDesignator is not yet implemented"); //$NON-NLS-1$
} }
} }
} }

View file

@ -11,37 +11,32 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter; package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTName; import org.eclipse.cdt.core.dom.ast.IASTName;
import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.IBinding; import org.eclipse.cdt.core.dom.ast.IBinding;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConversionName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConversionName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTQualifiedName;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateId;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTypeParameter; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPTemplateTypeParameter;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/** /**
*
* Generates source code of name nodes. The actual string operations are delegated * Generates source code of name nodes. The actual string operations are delegated
* to the <code>Scribe</code> class. * to the <code>Scribe</code> class.
* *
* @see Scribe * @see Scribe
* @see IASTName * @see IASTName
* @author Emanuel Graf IFS * @author Emanuel Graf IFS
*
*/ */
public class NameWriter extends NodeWriter { public class NameWriter extends NodeWriter {
private static final String OPERATOR = "operator "; //$NON-NLS-1$ private static final String OPERATOR = "operator "; //$NON-NLS-1$
/** /**
* @param scribe * @param scribe
* @param visitor * @param visitor
*/ */
public NameWriter(Scribe scribe, CPPASTVisitor visitor, NodeCommentMap commentMap) { public NameWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
} }
@ -57,13 +52,13 @@ public class NameWriter extends NodeWriter {
scribe.print(name.toString()); scribe.print(name.toString());
} }
if(hasTrailingComments(name)) { if (hasTrailingComments(name)) {
writeTrailingComments(name); writeTrailingComments(name);
} }
} }
private void writeTempalteId(ICPPASTTemplateId tempId) { private void writeTempalteId(ICPPASTTemplateId tempId) {
if(needsTemplateQualifier(tempId)) { if (needsTemplateQualifier(tempId)) {
scribe.print(TEMPLATE); scribe.print(TEMPLATE);
} }
scribe.print(tempId.getTemplateName().toString()); scribe.print(tempId.getTemplateName().toString());
@ -71,12 +66,12 @@ public class NameWriter extends NodeWriter {
IASTNode[] nodes = tempId.getTemplateArguments(); IASTNode[] nodes = tempId.getTemplateArguments();
for (int i = 0; i < nodes.length; ++i) { for (int i = 0; i < nodes.length; ++i) {
nodes[i].accept(visitor); nodes[i].accept(visitor);
if(i + 1 < nodes.length) { if (i + 1 < nodes.length) {
scribe.print(','); scribe.print(',');
} }
} }
scribe.print('>'); scribe.print('>');
if(isNestedTemplateId(tempId)) { if (isNestedTemplateId(tempId)) {
scribe.printSpace(); scribe.printSpace();
} }
} }
@ -91,18 +86,16 @@ public class NameWriter extends NodeWriter {
private boolean isDependentName(ICPPASTQualifiedName qname, ICPPASTTemplateId tempId) { private boolean isDependentName(ICPPASTQualifiedName qname, ICPPASTTemplateId tempId) {
IASTName[] names = qname.getNames(); IASTName[] names = qname.getNames();
int i = 0; for (int i = 0; i < names.length; ++i){
for(;i < names.length; ++i){ if (names[i] == tempId){
if(names[i] == tempId){
return isDependentName(qname, tempId, i); return isDependentName(qname, tempId, i);
} }
} }
return false; return false;
} }
private boolean isDependentName(ICPPASTQualifiedName qname, private boolean isDependentName(ICPPASTQualifiedName qname, ICPPASTTemplateId tempId, int i) {
ICPPASTTemplateId tempId, int i) { if (i <= 0){
if(i <= 0){
return false; return false;
} }
if (qname.getNames()[i-1] instanceof ICPPASTTemplateId) { if (qname.getNames()[i-1] instanceof ICPPASTTemplateId) {
@ -116,7 +109,7 @@ public class NameWriter extends NodeWriter {
} }
private boolean isNestedTemplateId(IASTNode node) { private boolean isNestedTemplateId(IASTNode node) {
while((node = node.getParent()) != null) { while ((node = node.getParent()) != null) {
if (node instanceof ICPPASTTemplateId) { if (node instanceof ICPPASTTemplateId) {
return true; return true;
} }
@ -124,12 +117,11 @@ public class NameWriter extends NodeWriter {
return false; return false;
} }
private void writeQualifiedName(ICPPASTQualifiedName qname) { private void writeQualifiedName(ICPPASTQualifiedName qname) {
IASTName[] nodes = qname.getNames(); IASTName[] nodes = qname.getNames();
for (int i = 0; i < nodes.length; ++i) { for (int i = 0; i < nodes.length; ++i) {
nodes[i].accept(visitor); nodes[i].accept(visitor);
if(i + 1 < nodes.length) { if (i + 1 < nodes.length) {
scribe.print(COLON_COLON); scribe.print(COLON_COLON);
} }
} }

View file

@ -11,37 +11,31 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.astwriter; package org.eclipse.cdt.internal.core.dom.rewrite.astwriter;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTSimpleTypeTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateParameter;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplatedTypeTemplateParameter;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
/** /**
*
* Generates source code of template parameter nodes. The actual string operations are delegated * Generates source code of template parameter nodes. The actual string operations are delegated
* to the <code>Scribe</code> class. * to the <code>Scribe</code> class.
* *
* @see Scribe * @see Scribe
* @see ICPPASTTemplateParameter * @see ICPPASTTemplateParameter
* @author Emanuel Graf IFS * @author Emanuel Graf IFS
*
*/ */
public class TemplateParameterWriter extends NodeWriter { public class TemplateParameterWriter extends NodeWriter {
private static final String GREATER_THAN_CLASS = "> class"; //$NON-NLS-1$ private static final String GREATER_THAN_CLASS = "> class"; //$NON-NLS-1$
private static final String TEMPLATE_LESS_THAN = "template <"; //$NON-NLS-1$ private static final String TEMPLATE_LESS_THAN = "template <"; //$NON-NLS-1$
/** /**
* @param scribe * @param scribe
* @param visitor * @param visitor
*/ */
public TemplateParameterWriter(Scribe scribe, CPPASTVisitor visitor, NodeCommentMap commentMap) { public TemplateParameterWriter(Scribe scribe, ASTVisitor visitor, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
} }
@ -55,29 +49,24 @@ public class TemplateParameterWriter extends NodeWriter {
} }
} }
private void writeTemplatedTypeTemplateParameter(ICPPASTTemplatedTypeTemplateParameter templated) { private void writeTemplatedTypeTemplateParameter(ICPPASTTemplatedTypeTemplateParameter templated) {
scribe.print(TEMPLATE_LESS_THAN); scribe.print(TEMPLATE_LESS_THAN);
ICPPASTTemplateParameter[] params = templated.getTemplateParameters(); ICPPASTTemplateParameter[] params = templated.getTemplateParameters();
writeNodeList(params); writeNodeList(params);
scribe.print(GREATER_THAN_CLASS); scribe.print(GREATER_THAN_CLASS);
if(templated.getName()!=null){ if (templated.getName()!=null){
scribe.printSpace(); scribe.printSpace();
templated.getName().accept(visitor); templated.getName().accept(visitor);
} }
if(templated.getDefaultValue() != null){ if (templated.getDefaultValue() != null){
scribe.print(EQUALS); scribe.print(EQUALS);
templated.getDefaultValue().accept(visitor); templated.getDefaultValue().accept(visitor);
} }
} }
private void writeSimpleTypeTemplateParameter(ICPPASTSimpleTypeTemplateParameter simple) { private void writeSimpleTypeTemplateParameter(ICPPASTSimpleTypeTemplateParameter simple) {
switch (simple.getParameterType()) { switch (simple.getParameterType()) {
case ICPPASTSimpleTypeTemplateParameter.st_class: case ICPPASTSimpleTypeTemplateParameter.st_class:
@ -90,7 +79,7 @@ public class TemplateParameterWriter extends NodeWriter {
visitNodeIfNotNull(simple.getName()); visitNodeIfNotNull(simple.getName());
if(simple.getDefaultType() != null){ if (simple.getDefaultType() != null){
scribe.print(EQUALS); scribe.print(EQUALS);
simple.getDefaultType().accept(visitor); simple.getDefaultType().accept(visitor);
} }

View file

@ -95,8 +95,6 @@ public class ChangeGeneratorWriterVisitor extends ASTWriterVisitor {
statementWriter = new ModifiedASTStatementWriter(scribe, this, stack, commentMap); statementWriter = new ModifiedASTStatementWriter(scribe, this, stack, commentMap);
declSpecWriter = new ModifiedASTDeclSpecWriter(scribe, this, stack, commentMap); declSpecWriter = new ModifiedASTDeclSpecWriter(scribe, this, stack, commentMap);
declarationWriter = new ModifiedASTDeclarationWriter(scribe, this, stack, commentMap); declarationWriter = new ModifiedASTDeclarationWriter(scribe, this, stack, commentMap);
} }
@Override @Override

View file

@ -7,30 +7,29 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Institute for Software - initial API and implementation * Institute for Software - initial API and implementation
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator; package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.DeclSpecWriter; import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.DeclSpecWriter;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe; import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTDeclSpecWriter extends DeclSpecWriter { public class ModifiedASTDeclSpecWriter extends DeclSpecWriter {
private final ASTModificationHelper modificationHelper; private final ASTModificationHelper modificationHelper;
public ModifiedASTDeclSpecWriter(Scribe scribe, CPPASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) { public ModifiedASTDeclSpecWriter(Scribe scribe, ASTVisitor visitor, ModificationScopeStack stack,
NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
this.modificationHelper = new ASTModificationHelper(stack); this.modificationHelper = new ASTModificationHelper(stack);
} }
@Override @Override
protected IASTDeclaration[] getMembers( protected IASTDeclaration[] getMembers(IASTCompositeTypeSpecifier compDeclSpec) {
IASTCompositeTypeSpecifier compDeclSpec) { return modificationHelper.createModifiedChildArray(compDeclSpec, compDeclSpec.getMembers(),
return modificationHelper.createModifiedChildArray(compDeclSpec, compDeclSpec.getMembers(), IASTDeclaration.class); IASTDeclaration.class);
} }
} }

View file

@ -7,13 +7,13 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Institute for Software - initial API and implementation * Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems) * Markus Schorn (Wind River Systems)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator; package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTConstructorChainInitializer;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDefinition;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNamespaceDefinition;
@ -22,10 +22,9 @@ import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTDeclarationWriter extends DeclarationWriter { public class ModifiedASTDeclarationWriter extends DeclarationWriter {
private final ASTModificationHelper modificationHelper; private final ASTModificationHelper modificationHelper;
public ModifiedASTDeclarationWriter(Scribe scribe, CPPASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) { public ModifiedASTDeclarationWriter(Scribe scribe, ASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
this.modificationHelper = new ASTModificationHelper(stack); this.modificationHelper = new ASTModificationHelper(stack);
} }

View file

@ -7,11 +7,12 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Institute for Software - initial API and implementation * Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems) * Markus Schorn (Wind River Systems)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator; package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator; import org.eclipse.cdt.core.dom.ast.IASTArrayDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTArrayModifier; import org.eclipse.cdt.core.dom.ast.IASTArrayModifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
@ -22,30 +23,25 @@ import org.eclipse.cdt.core.dom.ast.IASTParameterDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTPointerOperator; import org.eclipse.cdt.core.dom.ast.IASTPointerOperator;
import org.eclipse.cdt.core.dom.ast.IASTStandardFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.IASTStandardFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTTypeId; import org.eclipse.cdt.core.dom.ast.IASTTypeId;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTFunctionDeclarator;
import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator; import org.eclipse.cdt.core.dom.ast.gnu.c.ICASTKnRFunctionDeclarator;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.DeclaratorWriter; import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.DeclaratorWriter;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe; import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTDeclaratorWriter extends DeclaratorWriter { public class ModifiedASTDeclaratorWriter extends DeclaratorWriter {
private final ASTModificationHelper modificationHelper; private final ASTModificationHelper modificationHelper;
public ModifiedASTDeclaratorWriter(Scribe scribe, CPPASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) { public ModifiedASTDeclaratorWriter(Scribe scribe, ASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
this.modificationHelper = new ASTModificationHelper(stack); this.modificationHelper = new ASTModificationHelper(stack);
} }
@Override @Override
protected void writeParameterDeclarations( protected void writeParameterDeclarations(IASTStandardFunctionDeclarator funcDec,
IASTStandardFunctionDeclarator funcDec,
IASTParameterDeclaration[] paraDecls) { IASTParameterDeclaration[] paraDecls) {
IASTParameterDeclaration[] modifiedParameters = modificationHelper.createModifiedChildArray(funcDec, paraDecls, IASTParameterDeclaration.class); IASTParameterDeclaration[] modifiedParameters = modificationHelper.createModifiedChildArray(funcDec, paraDecls, IASTParameterDeclaration.class);
super.writeParameterDeclarations(funcDec, modifiedParameters); super.writeParameterDeclarations(funcDec, modifiedParameters);
} }
@Override @Override
@ -54,7 +50,6 @@ public class ModifiedASTDeclaratorWriter extends DeclaratorWriter {
super.writePointerOperators(declarator, modifiedPointer); super.writePointerOperators(declarator, modifiedPointer);
} }
@Override @Override
protected void writeArrayModifiers(IASTArrayDeclarator arrDecl, protected void writeArrayModifiers(IASTArrayDeclarator arrDecl,
IASTArrayModifier[] arrMods) { IASTArrayModifier[] arrMods) {
@ -75,8 +70,6 @@ public class ModifiedASTDeclaratorWriter extends DeclaratorWriter {
super.writeExceptionSpecification(funcDec, modifiedExceptions); super.writeExceptionSpecification(funcDec, modifiedExceptions);
} }
@Override @Override
protected void writeKnRParameterDeclarations( protected void writeKnRParameterDeclarations(
ICASTKnRFunctionDeclarator knrFunct, ICASTKnRFunctionDeclarator knrFunct,

View file

@ -7,16 +7,16 @@
* http://www.eclipse.org/legal/epl-v10.html * http://www.eclipse.org/legal/epl-v10.html
* *
* Contributors: * Contributors:
* Institute for Software - initial API and implementation * Institute for Software - initial API and implementation
* Markus Schorn (Wind River Systems) * Markus Schorn (Wind River Systems)
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator; package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.IASTExpressionList; import org.eclipse.cdt.core.dom.ast.IASTExpressionList;
import org.eclipse.cdt.core.dom.ast.IASTInitializer; import org.eclipse.cdt.core.dom.ast.IASTInitializer;
import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTNode;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTNewExpression;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification; import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification;
import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind; import org.eclipse.cdt.internal.core.dom.rewrite.ASTModification.ModificationKind;
@ -26,19 +26,18 @@ import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTExpressionWriter extends ExpressionWriter { public class ModifiedASTExpressionWriter extends ExpressionWriter {
private final ASTModificationHelper modificationHelper; private final ASTModificationHelper modificationHelper;
public ModifiedASTExpressionWriter(Scribe scribe, CPPASTVisitor visitor, public ModifiedASTExpressionWriter(Scribe scribe, ASTVisitor visitor, MacroExpansionHandler macroHandler,
MacroExpansionHandler macroHandler, ModificationScopeStack stack, NodeCommentMap commentMap) { ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, macroHandler, commentMap); super(scribe, visitor, macroHandler, commentMap);
this.modificationHelper = new ASTModificationHelper(stack); this.modificationHelper = new ASTModificationHelper(stack);
} }
@Override @Override
protected void writeExpressions(IASTExpressionList expList, protected void writeExpressions(IASTExpressionList expList, IASTExpression[] expressions) {
IASTExpression[] expressions) { IASTExpression[] modifiedExpressions = modificationHelper.createModifiedChildArray(expList,
IASTExpression[] modifiedExpressions = modificationHelper.createModifiedChildArray(expList, expressions, IASTExpression.class); expressions, IASTExpression.class);
super.writeExpressions(expList, modifiedExpressions); super.writeExpressions(expList, modifiedExpressions);
} }

View file

@ -11,26 +11,24 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator; package org.eclipse.cdt.internal.core.dom.rewrite.changegenerator;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTStatement; import org.eclipse.cdt.core.dom.ast.IASTStatement;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe; import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.Scribe;
import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.StatementWriter; import org.eclipse.cdt.internal.core.dom.rewrite.astwriter.StatementWriter;
import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap; import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
public class ModifiedASTStatementWriter extends StatementWriter { public class ModifiedASTStatementWriter extends StatementWriter {
private final ASTModificationHelper modificationHelper; private final ASTModificationHelper modificationHelper;
public ModifiedASTStatementWriter(Scribe scribe, CPPASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) { public ModifiedASTStatementWriter(Scribe scribe, ASTVisitor visitor, ModificationScopeStack stack, NodeCommentMap commentMap) {
super(scribe, visitor, commentMap); super(scribe, visitor, commentMap);
this.modificationHelper = new ASTModificationHelper(stack); this.modificationHelper = new ASTModificationHelper(stack);
} }
@Override @Override
protected void writeBodyStatement(IASTStatement statement, protected void writeBodyStatement(IASTStatement statement, boolean isDoStatement) {
boolean isDoStatement) {
IASTStatement replacementNode = modificationHelper.getNodeAfterReplacement(statement); IASTStatement replacementNode = modificationHelper.getNodeAfterReplacement(statement);
super.writeBodyStatement(replacementNode, isDoStatement); super.writeBodyStatement(replacementNode, isDoStatement);
} }
@ -45,6 +43,4 @@ public class ModifiedASTStatementWriter extends StatementWriter {
protected IASTStatement[] getNestedStatements(IASTCompoundStatement compoundStatement) { protected IASTStatement[] getNestedStatements(IASTCompoundStatement compoundStatement) {
return modificationHelper.createModifiedChildArray(compoundStatement, compoundStatement.getStatements(), IASTStatement.class); return modificationHelper.createModifiedChildArray(compoundStatement, compoundStatement.getStatements(), IASTStatement.class);
} }
} }

View file

@ -17,6 +17,7 @@ import org.eclipse.compare.structuremergeviewer.DocumentRangeNode;
import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.Position; import org.eclipse.jface.text.Position;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration; import org.eclipse.cdt.core.dom.ast.IASTASMDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.IASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
@ -35,7 +36,6 @@ import org.eclipse.cdt.core.dom.ast.IASTProblemDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration; import org.eclipse.cdt.core.dom.ast.IASTSimpleDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit; import org.eclipse.cdt.core.dom.ast.IASTTranslationUnit;
import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator; import org.eclipse.cdt.core.dom.ast.IASTEnumerationSpecifier.IASTEnumerator;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTExplicitTemplateInstantiation;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTLinkageSpecification;
@ -58,7 +58,7 @@ import org.eclipse.cdt.internal.ui.CUIMessages;
* *
* @since 5.0 * @since 5.0
*/ */
class CStructureCreatorVisitor extends CPPASTVisitor { class CStructureCreatorVisitor extends ASTVisitor {
private static final String TRANSLATION_UNIT_NAME = CUIMessages.CStructureCreatorVisitor_translationUnitName; private static final String TRANSLATION_UNIT_NAME = CUIMessages.CStructureCreatorVisitor_translationUnitName;
private static final String ANONYMOUS_NAME= CoreModelMessages.getString("CElementLabels.anonymous"); //$NON-NLS-1$ private static final String ANONYMOUS_NAME= CoreModelMessages.getString("CElementLabels.anonymous"); //$NON-NLS-1$