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 21:10:52 +00:00
parent 0442096272
commit d7b4ba9d15
6 changed files with 111 additions and 121 deletions

View file

@ -7,14 +7,14 @@
* 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.core.parser.tests.rewrite.changegenerator; package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator;
import org.eclipse.cdt.core.CCorePlugin; import org.eclipse.cdt.core.CCorePlugin;
import org.eclipse.cdt.core.dom.CDOM; import org.eclipse.cdt.core.dom.CDOM;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
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.index.IIndexManager; import org.eclipse.cdt.core.index.IIndexManager;
import org.eclipse.cdt.core.model.CoreModelUtil; import org.eclipse.cdt.core.model.CoreModelUtil;
import org.eclipse.cdt.core.parser.tests.rewrite.TestHelper; import org.eclipse.cdt.core.parser.tests.rewrite.TestHelper;
@ -25,14 +25,12 @@ import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.text.Document; import org.eclipse.jface.text.Document;
import org.eclipse.ltk.core.refactoring.Change; import org.eclipse.ltk.core.refactoring.Change;
import org.eclipse.ltk.core.refactoring.CompositeChange; import org.eclipse.ltk.core.refactoring.CompositeChange;
import org.eclipse.ltk.core.refactoring.TextFileChange; import org.eclipse.ltk.core.refactoring.TextFileChange;
public abstract class ChangeGeneratorTest extends BaseTestFramework { public abstract class ChangeGeneratorTest extends BaseTestFramework {
protected String source; protected String source;
protected String expectedSource; protected String expectedSource;
@ -52,7 +50,7 @@ public abstract class ChangeGeneratorTest extends BaseTestFramework {
final ChangeGenerator changegenartor = new ChangeGenerator(modStore); final ChangeGenerator changegenartor = new ChangeGenerator(modStore);
IFile testFile = importFile("source.h", source); //$NON-NLS-1$ IFile testFile = importFile("source.h", source); //$NON-NLS-1$
CPPASTVisitor visitor = createModificator(modStore); ASTVisitor visitor = createModificator(modStore);
CCorePlugin.getIndexManager().reindex(cproject); CCorePlugin.getIndexManager().reindex(cproject);
@ -66,7 +64,7 @@ public abstract class ChangeGeneratorTest extends BaseTestFramework {
changegenartor.generateChange(unit); changegenartor.generateChange(unit);
Document doc = new Document(source); Document doc = new Document(source);
for(Change curChange : ((CompositeChange)changegenartor.getChange()).getChildren()){ for (Change curChange : ((CompositeChange)changegenartor.getChange()).getChildren()){
if (curChange instanceof TextFileChange) { if (curChange instanceof TextFileChange) {
TextFileChange textChange = (TextFileChange) curChange; TextFileChange textChange = (TextFileChange) curChange;
textChange.getEdit().apply(doc); textChange.getEdit().apply(doc);
@ -75,7 +73,7 @@ public abstract class ChangeGeneratorTest extends BaseTestFramework {
assertEquals(TestHelper.unifyNewLines(expectedSource), TestHelper.unifyNewLines(doc.get())); assertEquals(TestHelper.unifyNewLines(expectedSource), TestHelper.unifyNewLines(doc.get()));
} }
protected abstract CPPASTVisitor createModificator(ASTModificationStore modStore); protected abstract ASTVisitor createModificator(ASTModificationStore modStore);
public ChangeGeneratorTest(String name) { public ChangeGeneratorTest(String name) {
super(name); super(name);
@ -87,5 +85,4 @@ public abstract class ChangeGeneratorTest extends BaseTestFramework {
fileManager.closeAllFiles(); fileManager.closeAllFiles();
super.tearDown(); super.tearDown();
} }
} }

View file

@ -7,17 +7,17 @@
* 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.core.parser.tests.rewrite.changegenerator.append; package org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.append;
import junit.framework.Test; import junit.framework.Test;
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.IASTDeclarator; import org.eclipse.cdt.core.dom.ast.IASTDeclarator;
import org.eclipse.cdt.core.dom.ast.IASTExpression; import org.eclipse.cdt.core.dom.ast.IASTExpression;
import org.eclipse.cdt.core.dom.ast.cpp.CPPASTVisitor;
import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest; import org.eclipse.cdt.core.parser.tests.rewrite.changegenerator.ChangeGeneratorTest;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTArrayModifier; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTArrayModifier;
import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTLiteralExpression; import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTLiteralExpression;
@ -33,17 +33,14 @@ public class ArrayModifierTest extends ChangeGeneratorTest {
@Override @Override
protected void setUp() throws Exception { protected void setUp() throws Exception {
source = "int *pi[5];"; //$NON-NLS-1$ source = "int *pi[5];"; //$NON-NLS-1$
expectedSource = "int *pi[5][3];"; //$NON-NLS-1$ expectedSource = "int *pi[5][3];"; //$NON-NLS-1$
super.setUp(); super.setUp();
} }
@Override @Override
protected CPPASTVisitor createModificator( protected ASTVisitor createModificator(final ASTModificationStore modStore) {
final ASTModificationStore modStore) { return new ASTVisitor() {
return new CPPASTVisitor() {
{ {
shouldVisitDeclarators = true; shouldVisitDeclarators = true;
} }
@ -66,6 +63,5 @@ public class ArrayModifierTest extends ChangeGeneratorTest {
public static Test suite() { public static Test suite() {
return new ArrayModifierTest(); return new ArrayModifierTest();
} }
} }

View file

@ -42,7 +42,6 @@ import org.eclipse.cdt.internal.core.dom.rewrite.commenthandler.NodeCommentMap;
* @author Emanuel Graf IFS * @author Emanuel Graf IFS
*/ */
public class ASTWriterVisitor extends ASTVisitor { public class ASTWriterVisitor extends ASTVisitor {
protected Scribe scribe = new Scribe(); protected Scribe scribe = new Scribe();
protected NodeCommentMap commentMap; protected NodeCommentMap commentMap;
protected ExpressionWriter expWriter; protected ExpressionWriter expWriter;

View file

@ -7,7 +7,7 @@
* 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.commenthandler; package org.eclipse.cdt.internal.core.dom.rewrite.commenthandler;
@ -32,7 +32,6 @@ 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.IASTTypeId; import org.eclipse.cdt.core.dom.ast.IASTTypeId;
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.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.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
@ -56,8 +55,7 @@ import org.eclipse.core.runtime.Path;
*/ */
public class ASTCommenter { public class ASTCommenter {
private static final class PPRangeChecker extends CPPASTVisitor { private static final class PPRangeChecker extends ASTVisitor {
int ppOffset; int ppOffset;
int commentOffset; int commentOffset;
boolean isPrePPComment = true; boolean isPrePPComment = true;
@ -72,12 +70,12 @@ public class ASTCommenter {
int offset = ((ASTNode)node).getOffset(); int offset = ((ASTNode)node).getOffset();
int status = ASTVisitor.PROCESS_CONTINUE; int status = ASTVisitor.PROCESS_CONTINUE;
if(offset > commentOffset && offset < ppOffset) { if (offset > commentOffset && offset < ppOffset) {
isPrePPComment = false; isPrePPComment = false;
status = ASTVisitor.PROCESS_ABORT; status = ASTVisitor.PROCESS_ABORT;
}else if ((offset + ((ASTNode)node).getLength() < commentOffset)) { } else if ((offset + ((ASTNode)node).getLength() < commentOffset)) {
status = ASTVisitor.PROCESS_SKIP; status = ASTVisitor.PROCESS_SKIP;
}else if(offset > ppOffset) { } else if (offset > ppOffset) {
status = ASTVisitor.PROCESS_ABORT; status = ASTVisitor.PROCESS_ABORT;
} }
@ -165,7 +163,6 @@ public class ASTCommenter {
} }
} }
/** /**
* Creates a NodeCommentMap for the given TranslationUnit. This is the only way * Creates a NodeCommentMap for the given TranslationUnit. This is the only way
* to get a NodeCommentMap which contains all the comments mapped against nodes. * to get a NodeCommentMap which contains all the comments mapped against nodes.
@ -174,11 +171,11 @@ public class ASTCommenter {
* @return NodeCommentMap * @return NodeCommentMap
*/ */
public static NodeCommentMap getCommentedNodeMap(IASTTranslationUnit transUnit){ public static NodeCommentMap getCommentedNodeMap(IASTTranslationUnit transUnit){
if(transUnit== null) { if (transUnit== null) {
return new NodeCommentMap(); return new NodeCommentMap();
} }
ArrayList<IASTComment> comments = removeNotNeededComments(transUnit); ArrayList<IASTComment> comments = removeNotNeededComments(transUnit);
if(comments == null || comments.size() == 0) { if (comments == null || comments.size() == 0) {
return new NodeCommentMap(); return new NodeCommentMap();
} }
return addCommentsToCommentMap(transUnit, comments); return addCommentsToCommentMap(transUnit, comments);
@ -219,7 +216,7 @@ public class ASTCommenter {
String fileName = statement.getFileLocation().getFileName(); String fileName = statement.getFileLocation().getFileName();
treeOfPreProcessorLines.put(OffsetHelper.getStartingLineNumber(statement), fileName); treeOfPreProcessorLines.put(OffsetHelper.getStartingLineNumber(statement), fileName);
ArrayList<Integer> offsetList = ppOffsetForFiles.get(fileName); ArrayList<Integer> offsetList = ppOffsetForFiles.get(fileName);
if(offsetList == null) { if (offsetList == null) {
offsetList = new ArrayList<Integer>(); offsetList = new ArrayList<Integer>();
ppOffsetForFiles.put(fileName, offsetList); ppOffsetForFiles.put(fileName, offsetList);
} }
@ -236,7 +233,7 @@ public class ASTCommenter {
)) { )) {
continue; continue;
} }
if(commentIsAtTheBeginningBeforePreprocessorStatements(comment, ppOffsetForFiles.get(fileName), tu)) { if (commentIsAtTheBeginningBeforePreprocessorStatements(comment, ppOffsetForFiles.get(fileName), tu)) {
continue; continue;
} }
commentsInCode.add(comment); commentsInCode.add(comment);
@ -244,33 +241,32 @@ public class ASTCommenter {
return commentsInCode; return commentsInCode;
} }
private static boolean commentIsAtTheBeginningBeforePreprocessorStatements( private static boolean commentIsAtTheBeginningBeforePreprocessorStatements(IASTComment comment,
IASTComment comment,
ArrayList<Integer> listOfPreProcessorOffset, IASTTranslationUnit tu) { ArrayList<Integer> listOfPreProcessorOffset, IASTTranslationUnit tu) {
if(listOfPreProcessorOffset == null) { if (listOfPreProcessorOffset == null) {
return false; return false;
} }
if(comment.getTranslationUnit()==null || comment.getTranslationUnit().getDeclarations().length < 1) { if (comment.getTranslationUnit()==null || comment.getTranslationUnit().getDeclarations().length < 1) {
return true; return true;
} }
IASTDeclaration decl = comment.getTranslationUnit().getDeclarations()[0]; IASTDeclaration decl = comment.getTranslationUnit().getDeclarations()[0];
String commentFileName = comment.getFileLocation().getFileName(); String commentFileName = comment.getFileLocation().getFileName();
boolean sameFile = decl.getFileLocation().getFileName().equals(commentFileName); boolean sameFile = decl.getFileLocation().getFileName().equals(commentFileName);
int commentNodeOffset = ((ASTNode)comment).getOffset(); int commentNodeOffset = ((ASTNode)comment).getOffset();
if(sameFile) { if (sameFile) {
if(decl.getFileLocation().getNodeOffset() < commentNodeOffset) { if (decl.getFileLocation().getNodeOffset() < commentNodeOffset) {
return false; return false;
} }
} }
Collections.sort(listOfPreProcessorOffset); Collections.sort(listOfPreProcessorOffset);
int nextPPOfset = -1; int nextPPOfset = -1;
for (Integer integer : listOfPreProcessorOffset) { for (Integer integer : listOfPreProcessorOffset) {
if(integer > commentNodeOffset) { if (integer > commentNodeOffset) {
nextPPOfset = integer; nextPPOfset = integer;
PPRangeChecker visti = new PPRangeChecker(true, nextPPOfset, commentNodeOffset); PPRangeChecker visti = new PPRangeChecker(true, nextPPOfset, commentNodeOffset);
tu.accept(visti); tu.accept(visti);
if(visti.isPrePPComment) { if (visti.isPrePPComment) {
return true; return true;
} }
} }
@ -283,21 +279,18 @@ public class ASTCommenter {
IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects();
IPath nodePath = new Path(node.getContainingFilename()); IPath nodePath = new Path(node.getContainingFilename());
for (IProject project : projects) { for (IProject project : projects) {
if(project.getLocation().isPrefixOf(nodePath)) return true; if (project.getLocation().isPrefixOf(nodePath)) return true;
} }
return false; return false;
} }
private static NodeCommentMap addCommentsToCommentMap(IASTTranslationUnit rootNode, ArrayList<IASTComment> comments){ private static NodeCommentMap addCommentsToCommentMap(IASTTranslationUnit rootNode, ArrayList<IASTComment> comments){
NodeCommentMap commentMap = new NodeCommentMap(); NodeCommentMap commentMap = new NodeCommentMap();
CommentHandler commHandler = new CommentHandler(comments); CommentHandler commHandler = new CommentHandler(comments);
IASTDeclaration[] declarations = rootNode.getDeclarations(); IASTDeclaration[] declarations = rootNode.getDeclarations();
for (int i = 0; i < declarations.length; i++) { for (int i = 0; i < declarations.length; i++) {
if (isInWorkspace(declarations[i])) { if (isInWorkspace(declarations[i])) {
ASTCommenterVisitor commenter = new ASTCommenterVisitor(commHandler, commentMap); ASTCommenterVisitor commenter = new ASTCommenterVisitor(commHandler, commentMap);
declarations[i].accept(commenter); declarations[i].accept(commenter);

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.commenthandler; package org.eclipse.cdt.internal.core.dom.rewrite.commenthandler;
import org.eclipse.cdt.core.dom.ast.ASTVisitor;
import org.eclipse.cdt.core.dom.ast.IASTComment; import org.eclipse.cdt.core.dom.ast.IASTComment;
import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement; import org.eclipse.cdt.core.dom.ast.IASTCompoundStatement;
import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier; import org.eclipse.cdt.core.dom.ast.IASTDeclSpecifier;
@ -25,7 +26,6 @@ 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.IASTTypeId; import org.eclipse.cdt.core.dom.ast.IASTTypeId;
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.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.internal.core.dom.parser.ASTNode; import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
@ -38,8 +38,7 @@ import org.eclipse.cdt.internal.core.dom.parser.cpp.CPPASTCompositeTypeSpecifier
* *
* @author Guido Zgraggen IFS * @author Guido Zgraggen IFS
*/ */
public class ASTCommenterVisitor extends CPPASTVisitor { public class ASTCommenterVisitor extends ASTVisitor {
protected CommentHandler commHandler; protected CommentHandler commHandler;
protected NodeCommentMap commentMap; protected NodeCommentMap commentMap;
@ -69,136 +68,146 @@ public class ASTCommenterVisitor extends CPPASTVisitor {
nodeCommenter = new NodeCommenter(this, commHandler, commentMap); nodeCommenter = new NodeCommenter(this, commHandler, commentMap);
} }
public void addRemainingComments(IASTDeclaration declaration) { public void addRemainingComments(IASTDeclaration declaration) {
nodeCommenter.appendRemainingComments(declaration); nodeCommenter.appendRemainingComments(declaration);
} }
@Override @Override
public int visit(IASTName name) { public int visit(IASTName name) {
return nodeCommenter.appendComments((ASTNode)name); return nodeCommenter.appendComments((ASTNode) name);
} }
@Override @Override
public int visit(IASTDeclSpecifier declSpec) { public int visit(IASTDeclSpecifier declSpec) {
return nodeCommenter.appendComments((ASTNode)declSpec); return nodeCommenter.appendComments((ASTNode) declSpec);
} }
@Override @Override
public int visit(IASTExpression expression) { public int visit(IASTExpression expression) {
return nodeCommenter.appendComments((ASTNode)expression); return nodeCommenter.appendComments((ASTNode) expression);
} }
@Override @Override
public int visit(IASTStatement statement) { public int visit(IASTStatement statement) {
return nodeCommenter.appendComments((ASTNode)statement); return nodeCommenter.appendComments((ASTNode) statement);
} }
@Override @Override
public int visit(IASTDeclaration declaration) { public int visit(IASTDeclaration declaration) {
return nodeCommenter.appendComments((ASTNode)declaration); return nodeCommenter.appendComments((ASTNode) declaration);
} }
@Override @Override
public int visit(IASTDeclarator declarator) { public int visit(IASTDeclarator declarator) {
return nodeCommenter.appendComments((ASTNode)declarator); return nodeCommenter.appendComments((ASTNode) declarator);
} }
@Override @Override
public int visit(IASTInitializer initializer) { public int visit(IASTInitializer initializer) {
return nodeCommenter.appendComments((ASTNode)initializer); return nodeCommenter.appendComments((ASTNode) initializer);
} }
@Override @Override
public int visit(IASTParameterDeclaration parameterDeclaration) { public int visit(IASTParameterDeclaration parameterDeclaration) {
return nodeCommenter.appendComments((ASTNode)parameterDeclaration); return nodeCommenter.appendComments((ASTNode) parameterDeclaration);
} }
@Override @Override
public int visit(ICPPASTNamespaceDefinition namespace) { public int visit(ICPPASTNamespaceDefinition namespace) {
return nodeCommenter.appendComments((ASTNode)namespace); return nodeCommenter.appendComments((ASTNode) namespace);
} }
@Override @Override
public int visit(ICPPASTTemplateParameter parameter) { public int visit(ICPPASTTemplateParameter parameter) {
return nodeCommenter.appendComments((ASTNode)parameter); return nodeCommenter.appendComments((ASTNode) parameter);
} }
@Override @Override
public int leave(IASTTranslationUnit tu) { public int leave(IASTTranslationUnit tu) {
nodeCommenter.appendComments((ASTNode)tu); nodeCommenter.appendComments((ASTNode) tu);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTName name) { public int leave(IASTName name) {
nodeCommenter.appendComments((ASTNode)name); nodeCommenter.appendComments((ASTNode) name);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTDeclaration declaration) { public int leave(IASTDeclaration declaration) {
nodeCommenter.appendComments((ASTNode)declaration); nodeCommenter.appendComments((ASTNode) declaration);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(ICPPASTNamespaceDefinition namespaceDefinition) { public int leave(ICPPASTNamespaceDefinition namespaceDefinition) {
return nodeCommenter.appendFreestandingComments((ASTNode)namespaceDefinition); return nodeCommenter.appendFreestandingComments((ASTNode) namespaceDefinition);
} }
@Override @Override
public int leave(IASTInitializer initializer) { public int leave(IASTInitializer initializer) {
nodeCommenter.appendComments((ASTNode)initializer); nodeCommenter.appendComments((ASTNode) initializer);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTParameterDeclaration parameterDeclaration) { public int leave(IASTParameterDeclaration parameterDeclaration) {
nodeCommenter.appendComments((ASTNode)parameterDeclaration); nodeCommenter.appendComments((ASTNode) parameterDeclaration);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTDeclarator declarator) { public int leave(IASTDeclarator declarator) {
nodeCommenter.appendComments((ASTNode)declarator); nodeCommenter.appendComments((ASTNode) declarator);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTDeclSpecifier declSpec) { public int leave(IASTDeclSpecifier declSpec) {
if(declSpec instanceof CPPASTCompositeTypeSpecifier) { if(declSpec instanceof CPPASTCompositeTypeSpecifier) {
return nodeCommenter.appendFreestandingComments((ASTNode)declSpec); return nodeCommenter.appendFreestandingComments((ASTNode) declSpec);
} }
nodeCommenter.appendComments((ASTNode)declSpec); nodeCommenter.appendComments((ASTNode) declSpec);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTExpression expression) { public int leave(IASTExpression expression) {
nodeCommenter.appendComments((ASTNode)expression); nodeCommenter.appendComments((ASTNode) expression);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTStatement statement) { public int leave(IASTStatement statement) {
if(statement instanceof IASTCompoundStatement) { if(statement instanceof IASTCompoundStatement) {
return nodeCommenter.appendFreestandingComments((ASTNode)statement); return nodeCommenter.appendFreestandingComments((ASTNode) statement);
} }
nodeCommenter.appendComments((ASTNode)statement); nodeCommenter.appendComments((ASTNode) statement);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTTypeId typeId) { public int leave(IASTTypeId typeId) {
nodeCommenter.appendComments((ASTNode)typeId); nodeCommenter.appendComments((ASTNode) typeId);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTEnumerator enumerator) { public int leave(IASTEnumerator enumerator) {
nodeCommenter.appendComments((ASTNode)enumerator); nodeCommenter.appendComments((ASTNode) enumerator);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave(IASTProblem problem){ public int leave(IASTProblem problem){
nodeCommenter.appendComments((ASTNode)problem); nodeCommenter.appendComments((ASTNode) problem);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
@Override @Override
public int leave( IASTComment comment){ public int leave( IASTComment comment){
nodeCommenter.appendComments((ASTNode)comment); nodeCommenter.appendComments((ASTNode) comment);
return PROCESS_CONTINUE; return PROCESS_CONTINUE;
} }
} }

View file

@ -19,7 +19,6 @@ import org.eclipse.cdt.core.dom.ast.IASTComment;
import org.eclipse.cdt.core.dom.ast.IASTDeclaration; import org.eclipse.cdt.core.dom.ast.IASTDeclaration;
import org.eclipse.cdt.core.dom.ast.IASTNode; import org.eclipse.cdt.core.dom.ast.IASTNode;
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.ICPPASTTemplateDeclaration; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTTemplateDeclaration;
import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier; import org.eclipse.cdt.core.dom.ast.cpp.ICPPASTCompositeTypeSpecifier.ICPPASTBaseSpecifier;
import org.eclipse.cdt.internal.core.dom.parser.ASTNode; import org.eclipse.cdt.internal.core.dom.parser.ASTNode;
@ -63,13 +62,12 @@ import org.eclipse.core.runtime.Path;
* @author Guido Zgraggen IFS * @author Guido Zgraggen IFS
*/ */
public class NodeCommenter { public class NodeCommenter {
protected ASTVisitor visitor;
protected CPPASTVisitor visitor;
protected CommentHandler commHandler; protected CommentHandler commHandler;
protected NodeCommentMap commentMap; protected NodeCommentMap commentMap;
protected Vector<IASTNode> children; protected Vector<IASTNode> children;
public NodeCommenter(CPPASTVisitor visitor, CommentHandler commHandler, NodeCommentMap commentMap) { public NodeCommenter(ASTVisitor visitor, CommentHandler commHandler, NodeCommentMap commentMap) {
this.visitor = visitor; this.visitor = visitor;
this.commHandler = commHandler; this.commHandler = commHandler;
this.commentMap = commentMap; this.commentMap = commentMap;
@ -77,13 +75,13 @@ public class NodeCommenter {
} }
protected void writeNodeList(IASTNode[] nodes) { protected void writeNodeList(IASTNode[] nodes) {
for(int i = 0; i < nodes.length; ++i) { for (int i = 0; i < nodes.length; ++i) {
nodes[i].accept(visitor); nodes[i].accept(visitor);
} }
} }
protected void visitNodeIfNotNull(IASTNode node){ protected void visitNodeIfNotNull(IASTNode node){
if(node != null){ if (node != null){
node.accept(visitor); node.accept(visitor);
} }
} }
@ -91,19 +89,18 @@ public class NodeCommenter {
protected boolean appendComment(ASTNode node, IASTComment comment) { protected boolean appendComment(ASTNode node, IASTComment comment) {
ASTNode com = (ASTNode) comment; ASTNode com = (ASTNode) comment;
if(node.getFileLocation() == null) { if (node.getFileLocation() == null) {
//MacroExpansions have no Filelocation //MacroExpansions have no FileLocation
return false; return false;
} }
int nodeLineNumber = OffsetHelper.getEndingLineNumber(node); int nodeLineNumber = OffsetHelper.getEndingLineNumber(node);
int commentLineNumber= OffsetHelper.getStartingLineNumber(comment); int commentLineNumber= OffsetHelper.getStartingLineNumber(comment);
if(OffsetHelper.getNodeEndPoint(com) <= OffsetHelper.getNodeOffset(node)) { if (OffsetHelper.getNodeEndPoint(com) <= OffsetHelper.getNodeOffset(node)) {
addLeadingCommentToMap(node, comment); addLeadingCommentToMap(node, comment);
return true; return true;
} } else if (isTrailing(node, com, nodeLineNumber, commentLineNumber)) {
else if(isTrailing(node, com, nodeLineNumber, commentLineNumber)) {
addTrailingCommentToMap(node, comment); addTrailingCommentToMap(node, comment);
return true; return true;
} }
@ -113,11 +110,11 @@ public class NodeCommenter {
protected boolean appendFreestandingComment(ASTNode node, IASTComment comment) { protected boolean appendFreestandingComment(ASTNode node, IASTComment comment) {
ASTNode com = (ASTNode) comment; ASTNode com = (ASTNode) comment;
if(node.getFileLocation() == null) { if (node.getFileLocation() == null) {
//MacroExpansions have no Filelocation //MacroExpansions have no Filelocation
return false; return false;
} }
if(OffsetHelper.getNodeEndPoint(com) <= OffsetHelper.getNodeEndPoint(node)) { if (OffsetHelper.getNodeEndPoint(com) <= OffsetHelper.getNodeEndPoint(node)) {
addFreestandingCommentToMap(node, comment); addFreestandingCommentToMap(node, comment);
return true; return true;
} }
@ -140,12 +137,11 @@ public class NodeCommenter {
} }
private boolean isTrailing(ASTNode node, ASTNode com, int nodeLineNumber, int commentLineNumber) { private boolean isTrailing(ASTNode node, ASTNode com, int nodeLineNumber, int commentLineNumber) {
if(nodeLineNumber == commentLineNumber if (nodeLineNumber == commentLineNumber
&& OffsetHelper.getNodeOffset(com) >= OffsetHelper.getNodeEndPoint(node) && OffsetHelper.getNodeOffset(com) >= OffsetHelper.getNodeEndPoint(node)
&& canNotBeAddedToParent(node,com) && canNotBeAddedToParent(node,com)
&& !mustBeAddToSubnodes(node)) { && !mustBeAddToSubnodes(node)) {
if (OffsetHelper.getNodeOffset(com) < OffsetHelper.getNodeEndPoint(node) + 2) {
if(OffsetHelper.getNodeOffset(com) < OffsetHelper.getNodeEndPoint(node) + 2) {
return true; return true;
} }
IPath path = new Path(node.getContainingFilename()); IPath path = new Path(node.getContainingFilename());
@ -159,15 +155,15 @@ public class NodeCommenter {
byte[] b = new byte[length]; byte[] b = new byte[length];
long count = is.skip(OffsetHelper.getEndOffsetWithoutComments(node)); long count = is.skip(OffsetHelper.getEndOffsetWithoutComments(node));
if(count < OffsetHelper.getEndOffsetWithoutComments(node)) { if (count < OffsetHelper.getEndOffsetWithoutComments(node)) {
return false; return false;
} }
if(is.read(b, 0, length) == -1) { if (is.read(b, 0, length) == -1) {
return false; return false;
} }
for(byte bb : b) { for (byte bb : b) {
if(!Character.isWhitespace(bb)) { if (!Character.isWhitespace(bb)) {
is.close(); is.close();
return false; return false;
} }
@ -185,15 +181,15 @@ public class NodeCommenter {
private boolean canNotBeAddedToParent(ASTNode node, ASTNode com) { private boolean canNotBeAddedToParent(ASTNode node, ASTNode com) {
ASTNode parent = (ASTNode) node.getParent(); ASTNode parent = (ASTNode) node.getParent();
if(hasNodeSameEndingAsSubnode(parent)) { if (hasNodeSameEndingAsSubnode(parent)) {
return true; return true;
}else if(parent instanceof IASTTranslationUnit) { } else if (parent instanceof IASTTranslationUnit) {
return true; return true;
}else if(parent instanceof ICPPASTTemplateDeclaration) { } else if (parent instanceof ICPPASTTemplateDeclaration) {
return true; return true;
}else if(parent instanceof CPPASTIfStatement) { } else if (parent instanceof CPPASTIfStatement) {
return true; return true;
}else if(parent instanceof ICPPASTBaseSpecifier) { } else if (parent instanceof ICPPASTBaseSpecifier) {
parent = (ASTNode) parent.getParent(); parent = (ASTNode) parent.getParent();
} }
return !(OffsetHelper.getNodeOffset(com) >= OffsetHelper.getNodeEndPoint(parent)); return !(OffsetHelper.getNodeOffset(com) >= OffsetHelper.getNodeEndPoint(parent));
@ -204,39 +200,39 @@ public class NodeCommenter {
} }
private boolean hasNodeSameEndingAsSubnode(ASTNode node) { private boolean hasNodeSameEndingAsSubnode(ASTNode node) {
if(node instanceof CPPASTFunctionDefinition) { if (node instanceof CPPASTFunctionDefinition) {
return true; return true;
}else if(node instanceof CPPASTDeclarationStatement) { } else if (node instanceof CPPASTDeclarationStatement) {
return true; return true;
}else if(node instanceof CPPASTForStatement) { } else if (node instanceof CPPASTForStatement) {
return true; return true;
}else if(node instanceof CPPASTLabelStatement) { } else if (node instanceof CPPASTLabelStatement) {
return true; return true;
}else if(node instanceof CPPASTIfStatement) { } else if (node instanceof CPPASTIfStatement) {
return true; return true;
}else if(node instanceof CPPASTSwitchStatement) { } else if (node instanceof CPPASTSwitchStatement) {
return true; return true;
}else if(node instanceof CPPASTWhileStatement) { } else if (node instanceof CPPASTWhileStatement) {
return true; return true;
}else if(node instanceof CPPASTTemplateDeclaration) { } else if (node instanceof CPPASTTemplateDeclaration) {
return true; return true;
}else if(node instanceof CPPASTLinkageSpecification) { } else if (node instanceof CPPASTLinkageSpecification) {
return true; return true;
}else if(node instanceof CPPASTExplicitTemplateInstantiation) { } else if (node instanceof CPPASTExplicitTemplateInstantiation) {
return true; return true;
} }
return false; return false;
} }
protected int appendComments(ASTNode node) { protected int appendComments(ASTNode node) {
while(commHandler.hasMore()) { while (commHandler.hasMore()) {
IASTComment comment = commHandler.getFirst(); IASTComment comment = commHandler.getFirst();
if(isNotSameFile(node, comment)) { if (isNotSameFile(node, comment)) {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
if(!appendComment(node, comment)) { if (!appendComment(node, comment)) {
return ASTVisitor.PROCESS_CONTINUE; return ASTVisitor.PROCESS_CONTINUE;
} }
} }
@ -244,18 +240,18 @@ public class NodeCommenter {
} }
protected int appendFreestandingComments(ASTNode node) { protected int appendFreestandingComments(ASTNode node) {
while(commHandler.hasMore()) { while (commHandler.hasMore()) {
IASTComment comment = commHandler.getFirst(); IASTComment comment = commHandler.getFirst();
if(isNotSameFile(node, comment)) { if (isNotSameFile(node, comment)) {
return ASTVisitor.PROCESS_SKIP; return ASTVisitor.PROCESS_SKIP;
} }
if(appendComment(node, comment)) { if (appendComment(node, comment)) {
return ASTVisitor.PROCESS_CONTINUE; return ASTVisitor.PROCESS_CONTINUE;
} }
if(!appendFreestandingComment(node, comment)) { if (!appendFreestandingComment(node, comment)) {
return ASTVisitor.PROCESS_CONTINUE; return ASTVisitor.PROCESS_CONTINUE;
} }
} }
@ -263,9 +259,9 @@ public class NodeCommenter {
} }
public void appendRemainingComments(IASTDeclaration declaration) { public void appendRemainingComments(IASTDeclaration declaration) {
while(commHandler.hasMore()) { while (commHandler.hasMore()) {
IASTComment comment = commHandler.getFirst(); IASTComment comment = commHandler.getFirst();
if(appendComment((ASTNode)declaration, comment)) { if (appendComment((ASTNode)declaration, comment)) {
continue; continue;
} }
addFreestandingCommentToMap((ASTNode) declaration, comment); addFreestandingCommentToMap((ASTNode) declaration, comment);
@ -273,7 +269,7 @@ public class NodeCommenter {
} }
private boolean isNotSameFile(IASTNode node, IASTComment comment) { private boolean isNotSameFile(IASTNode node, IASTComment comment) {
if(node.getFileLocation()==null) { if (node.getFileLocation() == null) {
return true; return true;
} }
return !node.getFileLocation().getFileName().equals(comment.getFileLocation().getFileName()); return !node.getFileLocation().getFileName().equals(comment.getFileLocation().getFileName());