List of usage examples for org.eclipse.jdt.core.dom ForStatement setExpression
public void setExpression(Expression expression)
From source file:com.google.devtools.j2objc.translate.ASTFactory.java
License:Apache License
public static ForStatement newForStatement(AST ast, VariableDeclarationExpression decl, Expression cond, Expression updater, Statement body) { ForStatement forLoop = ast.newForStatement(); ASTUtil.getInitializers(forLoop).add(decl); forLoop.setExpression(cond); ASTUtil.getUpdaters(forLoop).add(updater); forLoop.setBody(body);/*from w w w . j a v a 2 s .c o m*/ return forLoop; }
From source file:java5totext.input.JDTVisitor.java
License:Open Source License
@Override public void endVisit(org.eclipse.jdt.core.dom.ForStatement node) { ForStatement element = (ForStatement) this.binding.get(node); this.initializeNode(element, node); if (this.binding.get(node.getExpression()) != null) element.setExpression((Expression) this.binding.get(node.getExpression())); for (Iterator<?> i = node.updaters().iterator(); i.hasNext();) { Expression itElement = (Expression) this.binding.get(i.next()); if (itElement != null) element.getUpdaters().add(itElement); }/*from w ww .j a va2 s.c om*/ for (Iterator<?> i = node.initializers().iterator(); i.hasNext();) { Expression itElement = (Expression) this.binding.get(i.next()); if (itElement != null) element.getInitializers().add(itElement); } if (this.binding.get(node.getBody()) != null) element.setBody((Statement) this.binding.get(node.getBody())); }
From source file:org.asup.dk.compiler.rpj.writer.JDTStatementWriter.java
License:Open Source License
@SuppressWarnings("unchecked") @Override// w w w . java2s.co m public boolean visit(QFor statement) { Block block = blocks.peek(); ForStatement forSt = ast.newForStatement(); // initialization QAssignmentExpression assignment = expressionParser.parseAssignment(statement.getInitialization()); forSt.initializers().add(buildAssignmentMethod(assignment)); // condition QPredicateExpression condition = expressionParser.parsePredicate(statement.getCondition()); Expression expression = buildExpression(ast, condition, CompilationContextHelper.getJavaClass(compilationUnit, condition)); forSt.setExpression(expression); // increment QAssignmentExpression increment = expressionParser.parseAssignment(statement.getIncrement()); forSt.updaters().add(buildAssignmentMethod(increment)); block.statements().add(forSt); // body Block bodyBlock = ast.newBlock(); forSt.setBody(bodyBlock); blocks.push(bodyBlock); return super.visit(statement); }
From source file:org.eclipse.jdt.core.dom.ASTConverter.java
License:Open Source License
public ForStatement convert(org.eclipse.jdt.internal.compiler.ast.ForStatement statement) { ForStatement forStatement = new ForStatement(this.ast); forStatement.setSourceRange(statement.sourceStart, statement.sourceEnd - statement.sourceStart + 1); org.eclipse.jdt.internal.compiler.ast.Statement[] initializations = statement.initializations; if (initializations != null) { // we know that we have at least one initialization if (initializations[0] instanceof org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) { org.eclipse.jdt.internal.compiler.ast.LocalDeclaration initialization = (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[0]; VariableDeclarationExpression variableDeclarationExpression = convertToVariableDeclarationExpression( initialization);//from w w w . ja va 2 s . c om int initializationsLength = initializations.length; for (int i = 1; i < initializationsLength; i++) { initialization = (org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[i]; variableDeclarationExpression.fragments() .add(convertToVariableDeclarationFragment(initialization)); } if (initializationsLength != 1) { int start = variableDeclarationExpression.getStartPosition(); int end = ((org.eclipse.jdt.internal.compiler.ast.LocalDeclaration) initializations[initializationsLength - 1]).declarationSourceEnd; variableDeclarationExpression.setSourceRange(start, end - start + 1); } forStatement.initializers().add(variableDeclarationExpression); } else { int initializationsLength = initializations.length; for (int i = 0; i < initializationsLength; i++) { Expression initializer = convertToExpression(initializations[i]); if (initializer != null) { forStatement.initializers().add(initializer); } else { forStatement.setFlags(forStatement.getFlags() | ASTNode.MALFORMED); } } } } if (statement.condition != null) { forStatement.setExpression(convert(statement.condition)); } org.eclipse.jdt.internal.compiler.ast.Statement[] increments = statement.increments; if (increments != null) { int incrementsLength = increments.length; for (int i = 0; i < incrementsLength; i++) { forStatement.updaters().add(convertToExpression(increments[i])); } } final Statement action = convert(statement.action); if (action == null) return null; forStatement.setBody(action); return forStatement; }
From source file:org.eclipse.modisco.java.discoverer.internal.io.java.JDTVisitor.java
License:Open Source License
@Override public void endVisit(final org.eclipse.jdt.core.dom.ForStatement node) { ForStatement element = (ForStatement) this.binding.get(node); initializeNode(element, node);//from w ww . j av a2 s . c o m if (this.binding.get(node.getExpression()) != null) { element.setExpression(JDTVisitorUtils.completeExpression(this.binding.get(node.getExpression()), this)); } for (Iterator<?> i = node.updaters().iterator(); i.hasNext();) { ASTNode itElement = this.binding.get(i.next()); if (itElement != null) { element.getUpdaters().add(JDTVisitorUtils.completeExpression(itElement, this)); } } for (Iterator<?> i = node.initializers().iterator(); i.hasNext();) { ASTNode itElement = this.binding.get(i.next()); if (itElement != null) { element.getInitializers().add(JDTVisitorUtils.completeExpression(itElement, this)); } } if (this.binding.get(node.getBody()) != null) { element.setBody((Statement) this.binding.get(node.getBody())); } }
From source file:org.mpi.vasco.sieve.staticanalysis.templatecreator.DatabaseTableClassCreator.java
License:Open Source License
/** * Creates the is contained function.// ww w. j a v a2s. c om * * @return the method declaration */ public MethodDeclaration createIsContainedFunction() { String methodName = "isContained"; MethodDeclaration methodDeclaration = super.createMethodDeclaration(PrimitiveType.BOOLEAN, methodName, ModifierKeyword.PUBLIC_KEYWORD); String recordName = tableInstance.get_Table_Name() + DatabaseRecordClassCreator.RECORDSTRING; SingleVariableDeclaration varDecl = super.createVariableDeclaration(recordName, recordName.toLowerCase(), false); methodDeclaration.parameters().add(varDecl); org.eclipse.jdt.core.dom.Block block = super.getASTNode().newBlock(); //add the index variable String indexVar = "i"; VariableDeclarationStatement varDeclStmt = super.createVariableDeclarationStatement(PrimitiveType.INT, indexVar, false, null); block.statements().add(varDeclStmt); //put a for loop here ForStatement forStmt = super.getASTNode().newForStatement(); //set initializer Assignment assignExpr = super.getASTNode().newAssignment(); assignExpr.setOperator(Assignment.Operator.ASSIGN); assignExpr.setLeftHandSide(super.getASTNode().newSimpleName(indexVar)); NumberLiteral initializedValue = super.getASTNode().newNumberLiteral("0"); assignExpr.setRightHandSide(initializedValue); forStmt.initializers().add(assignExpr); //set condition expression InfixExpression infixExpr = super.getASTNode().newInfixExpression(); infixExpr.setOperator(InfixExpression.Operator.LESS); infixExpr.setLeftOperand(super.getASTNode().newSimpleName(indexVar)); FieldAccess fieldA = super.getASTNode().newFieldAccess(); fieldA.setExpression(super.getASTNode().newThisExpression()); fieldA.setName(super.getASTNode().newSimpleName("size")); infixExpr.setRightOperand(fieldA); forStmt.setExpression(infixExpr); //set update PostfixExpression updateExpr = super.getASTNode().newPostfixExpression(); updateExpr.setOperator(PostfixExpression.Operator.INCREMENT); updateExpr.setOperand(super.getASTNode().newSimpleName(indexVar)); forStmt.updaters().add(updateExpr); //set for loop body org.eclipse.jdt.core.dom.Block forLoopBlock = super.getASTNode().newBlock(); //add a if statement IfStatement ifStmt = super.getASTNode().newIfStatement(); //set if condition InfixExpression ifCondExp = super.getASTNode().newInfixExpression(); //left expr is in the form: this.table[i] ArrayAccess arrayA = super.getASTNode().newArrayAccess(); FieldAccess tableFieldA = super.getASTNode().newFieldAccess(); tableFieldA.setExpression(super.getASTNode().newThisExpression()); tableFieldA.setName(super.getASTNode().newSimpleName("table")); arrayA.setArray(tableFieldA); arrayA.setIndex(super.getASTNode().newSimpleName(indexVar)); ifCondExp.setLeftOperand(arrayA); //equal operator ifCondExp.setOperator(InfixExpression.Operator.EQUALS); //right expr ifCondExp.setRightOperand(super.getASTNode().newSimpleName(recordName.toLowerCase())); ifStmt.setExpression(ifCondExp); //add block for ifStmt org.eclipse.jdt.core.dom.Block ifBlock = super.getASTNode().newBlock(); ReturnStatement trueReturnStmt = super.getASTNode().newReturnStatement(); BooleanLiteral trueValue = super.getASTNode().newBooleanLiteral(true); trueReturnStmt.setExpression(trueValue); ifBlock.statements().add(trueReturnStmt); ifStmt.setThenStatement(ifBlock); forLoopBlock.statements().add(ifStmt); forStmt.setBody(forLoopBlock); block.statements().add(forStmt); //return false ReturnStatement falseReturnStmt = super.getASTNode().newReturnStatement(); BooleanLiteral falseValue = super.getASTNode().newBooleanLiteral(false); falseReturnStmt.setExpression(falseValue); block.statements().add(falseReturnStmt); methodDeclaration.setBody(block); return methodDeclaration; }
From source file:org.mpi.vasco.sieve.staticanalysis.templatecreator.DatabaseTableClassCreator.java
License:Open Source License
/** * Creates the get index function.//from w w w.jav a 2 s . co m * * @return the method declaration */ public MethodDeclaration createGetIndexFunction() { String methodName = "getIndex"; MethodDeclaration methodDeclaration = super.createMethodDeclaration(PrimitiveType.INT, methodName, ModifierKeyword.PUBLIC_KEYWORD); String recordName = tableInstance.get_Table_Name() + DatabaseRecordClassCreator.RECORDSTRING; SingleVariableDeclaration varDecl = super.createVariableDeclaration(recordName, recordName.toLowerCase(), false); methodDeclaration.parameters().add(varDecl); org.eclipse.jdt.core.dom.Block block = super.getASTNode().newBlock(); //add the index variable String indexVar = "i"; VariableDeclarationStatement varDeclStmt = super.createVariableDeclarationStatement(PrimitiveType.INT, indexVar, false, null); block.statements().add(varDeclStmt); //put a for loop here ForStatement forStmt = super.getASTNode().newForStatement(); //set initializer Assignment assignExpr = super.getASTNode().newAssignment(); assignExpr.setOperator(Assignment.Operator.ASSIGN); assignExpr.setLeftHandSide(super.getASTNode().newSimpleName(indexVar)); NumberLiteral initializedValue = super.getASTNode().newNumberLiteral("0"); assignExpr.setRightHandSide(initializedValue); forStmt.initializers().add(assignExpr); //set condition expression InfixExpression infixExpr = super.getASTNode().newInfixExpression(); infixExpr.setOperator(InfixExpression.Operator.LESS); infixExpr.setLeftOperand(super.getASTNode().newSimpleName(indexVar)); FieldAccess fieldA = super.getASTNode().newFieldAccess(); fieldA.setExpression(super.getASTNode().newThisExpression()); fieldA.setName(super.getASTNode().newSimpleName("size")); infixExpr.setRightOperand(fieldA); forStmt.setExpression(infixExpr); //set update PostfixExpression updateExpr = super.getASTNode().newPostfixExpression(); updateExpr.setOperator(PostfixExpression.Operator.INCREMENT); updateExpr.setOperand(super.getASTNode().newSimpleName(indexVar)); forStmt.updaters().add(updateExpr); //set for loop body org.eclipse.jdt.core.dom.Block forLoopBlock = super.getASTNode().newBlock(); //add a if statement IfStatement ifStmt = super.getASTNode().newIfStatement(); //set if condition InfixExpression ifCondExp = super.getASTNode().newInfixExpression(); //left expr is in the form: this.table[i] ArrayAccess arrayA = super.getASTNode().newArrayAccess(); FieldAccess tableFieldA = super.getASTNode().newFieldAccess(); tableFieldA.setExpression(super.getASTNode().newThisExpression()); tableFieldA.setName(super.getASTNode().newSimpleName("table")); arrayA.setArray(tableFieldA); arrayA.setIndex(super.getASTNode().newSimpleName(indexVar)); ifCondExp.setLeftOperand(arrayA); //equal operator ifCondExp.setOperator(InfixExpression.Operator.EQUALS); //right expr ifCondExp.setRightOperand(super.getASTNode().newSimpleName(recordName.toLowerCase())); ifStmt.setExpression(ifCondExp); //add block for ifStmt org.eclipse.jdt.core.dom.Block ifBlock = super.getASTNode().newBlock(); ReturnStatement indexReturnStmt = super.getASTNode().newReturnStatement(); indexReturnStmt.setExpression(super.getASTNode().newSimpleName(indexVar)); ifBlock.statements().add(indexReturnStmt); ifStmt.setThenStatement(ifBlock); forLoopBlock.statements().add(ifStmt); forStmt.setBody(forLoopBlock); block.statements().add(forStmt); //return false ReturnStatement noIndexReturnStmt = super.getASTNode().newReturnStatement(); NumberLiteral noIndexValue = super.getASTNode().newNumberLiteral("-1"); noIndexReturnStmt.setExpression(noIndexValue); block.statements().add(noIndexReturnStmt); methodDeclaration.setBody(block); return methodDeclaration; }
From source file:org.smeup.sys.dk.compiler.rpj.writer.JDTStatementWriter.java
License:Open Source License
@SuppressWarnings("unchecked") @Override/*w w w . j a va 2s. c o m*/ public boolean visit(QFor statement) { Block block = blocks.peek(); ForStatement forSt = ast.newForStatement(); // initialization QAssignmentExpression assignment = expressionParser.parseAssignment(statement.getInitialization()); forSt.initializers().add(buildAssignmentMethod(assignment, false)); // condition QPredicateExpression condition = buildIterationCondition(statement.getCondition()); Expression expression = JDTStatementHelper.buildExpression(ast, compilationUnit, condition, RPJContextHelper.getTargetClass(compilationUnit, condition, true)); forSt.setExpression(expression); // increment QAssignmentExpression increment = expressionParser.parseAssignment(statement.getIncrement()); forSt.updaters().add(buildAssignmentMethod(increment, false)); block.statements().add(forSt); // body Block bodyBlock = ast.newBlock(); forSt.setBody(bodyBlock); blocks.push(bodyBlock); return super.visit(statement); }
From source file:org.whole.lang.java.util.JDTTransformerVisitor.java
License:Open Source License
public boolean visit(ForStatement node) { org.whole.lang.java.model.ForStatement forStm = lf.create(JavaEntityDescriptorEnum.ForStatement); Iterator<?> i = node.initializers().iterator(); while (i.hasNext()) { ((ASTNode) i.next()).accept(this); forStm.getInitializers().wAdd(exp); }/*from w ww .j a v a 2 s .c om*/ if (acceptChild(node.getExpression())) forStm.setExpression(exp); i = node.updaters().iterator(); while (i.hasNext()) { ((ASTNode) i.next()).accept(this); forStm.getUpdaters().wAdd(exp); } acceptChild(node.getBody()); forStm.setBody(stm); stm = forStm; return false; }
From source file:refactorer.Refactorer.java
License:Apache License
@SuppressWarnings("unchecked") protected void processTypeDeclaration(AbstractTypeDeclaration type) { if (type == null) return;/*from w ww . j a v a 2 s.co m*/ List<BodyDeclaration> bodies = type.bodyDeclarations(); for (BodyDeclaration body : bodies) { processBodyDeclaration(body); } if (type.getNodeType() == ASTNode.TYPE_DECLARATION) { TypeDeclaration typeDeclaration = (TypeDeclaration) type; if (typeDeclaration.getSuperclassType() != null) { ITypeBinding superclass = typeDeclaration.getSuperclassType().resolveBinding(); if (superclass != null) { if ("javax.media.opengl.GLCanvas".equals(superclass.getQualifiedName())) { addImportIfRequired("javax.media.opengl.awt.GLCanvas"); } else if ("javax.media.opengl.GLJPanel".equals(superclass.getQualifiedName())) { addImportIfRequired("javax.media.opengl.awt.GLJPanel"); } } } for (Type interfaceType : (List<Type>) typeDeclaration.superInterfaceTypes()) { ITypeBinding binding = interfaceType.resolveBinding(); if (binding != null) { String interfaceName = binding.getQualifiedName(); if ("javax.media.opengl.GLEventListener".equals(interfaceName)) { for (int i = bodies.size() - 1; i >= 0; i--) { BodyDeclaration body = bodies.get(i); if (body.getNodeType() == ASTNode.METHOD_DECLARATION) { MethodDeclaration methodDeclaration = (MethodDeclaration) body; if ("displayChanged".equals(methodDeclaration.getName().getFullyQualifiedName())) { bodies.remove(i); } } } AST ast = typeDeclaration.getAST(); MethodDeclaration methodDeclaration = ast.newMethodDeclaration(); methodDeclaration.setName(ast.newSimpleName("dispose")); methodDeclaration.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD)); methodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.VOID)); Block block = ast.newBlock(); methodDeclaration.setBody(block); SingleVariableDeclaration parameter = ast.newSingleVariableDeclaration(); parameter.setName(ast.newSimpleName("glDrawable")); parameter.setType(ast.newSimpleType(ast.newName("GLAutoDrawable"))); methodDeclaration.parameters().add(parameter); bodies.add(methodDeclaration); if ("performance.VBORenderer.GLDisplay.MyGLEventListener" .equals(type.resolveBinding().getQualifiedName())) { ForStatement forStatement = ast.newForStatement(); VariableDeclarationFragment forInitializerFragment = ast .newVariableDeclarationFragment(); forInitializerFragment.setName(ast.newSimpleName("i")); forInitializerFragment.setInitializer(ast.newNumberLiteral("0")); VariableDeclarationExpression forInitializer = ast .newVariableDeclarationExpression(forInitializerFragment); forInitializer.setType(ast.newPrimitiveType(PrimitiveType.INT)); forStatement.initializers().add(forInitializer); InfixExpression forExpression = ast.newInfixExpression(); forExpression.setLeftOperand(ast.newSimpleName("i")); forExpression.setOperator(InfixExpression.Operator.LESS); MethodInvocation rightOperand = ast.newMethodInvocation(); rightOperand.setExpression(ast.newSimpleName("eventListeners")); rightOperand.setName(ast.newSimpleName("size")); forExpression.setRightOperand(rightOperand); forStatement.setExpression(forExpression); PostfixExpression forUpdater = ast.newPostfixExpression(); forUpdater.setOperand(ast.newSimpleName("i")); forUpdater.setOperator(PostfixExpression.Operator.INCREMENT); forStatement.updaters().add(forUpdater); Block forBlock = ast.newBlock(); MethodInvocation mi1 = ast.newMethodInvocation(); mi1.setName(ast.newSimpleName("dispose")); mi1.arguments().add(ast.newName("glDrawable")); CastExpression castExpression = ast.newCastExpression(); castExpression.setType(ast.newSimpleType(ast.newName("GLEventListener"))); MethodInvocation mi2 = ast.newMethodInvocation(); mi2.setExpression(ast.newName("eventListeners")); mi2.setName(ast.newSimpleName("get")); mi2.arguments().add(ast.newName("i")); castExpression.setExpression(mi2); ParenthesizedExpression parenthesizedExpression = ast.newParenthesizedExpression(); parenthesizedExpression.setExpression(castExpression); mi1.setExpression(parenthesizedExpression); forBlock.statements().add(ast.newExpressionStatement(mi1)); forStatement.setBody(forBlock); block.statements().add(forStatement); } } else if ("com.sun.opengl.impl.packrect.BackingStoreManager".equals(interfaceName)) { AST ast = typeDeclaration.getAST(); MethodDeclaration newMethodDeclaration = ast.newMethodDeclaration(); newMethodDeclaration.setName(ast.newSimpleName("canCompact")); newMethodDeclaration.modifiers().add(ast.newModifier(ModifierKeyword.PUBLIC_KEYWORD)); newMethodDeclaration.setReturnType2(ast.newPrimitiveType(PrimitiveType.BOOLEAN)); Block block = ast.newBlock(); ReturnStatement returnStatement = ast.newReturnStatement(); returnStatement.setExpression(ast.newBooleanLiteral(false)); block.statements().add(returnStatement); newMethodDeclaration.setBody(block); bodies.add(newMethodDeclaration); if ("gov.nasa.worldwind.util.TextureAtlas.AtlasBackingStore" .equals(type.resolveBinding().getQualifiedName())) { for (BodyDeclaration body : (List<BodyDeclaration>) typeDeclaration .bodyDeclarations()) { if (body.getNodeType() == ASTNode.METHOD_DECLARATION) { MethodDeclaration methodDeclaration = (MethodDeclaration) body; if ("additionFailed" .equals(methodDeclaration.getName().getFullyQualifiedName())) { methodDeclaration .setReturnType2(ast.newPrimitiveType(PrimitiveType.BOOLEAN)); Block body2 = methodDeclaration.getBody(); if (!body2.statements().isEmpty()) { Statement firstStatement = (Statement) body2.statements().get(0); if (firstStatement.getNodeType() == ASTNode.IF_STATEMENT) { IfStatement ifStatement = (IfStatement) firstStatement; Expression expression = ifStatement.getExpression(); ifStatement.setExpression(ast.newBooleanLiteral(true)); ReturnStatement newReturnStatement = ast.newReturnStatement(); newReturnStatement.setExpression(expression); body2.statements().clear(); body2.statements().add(newReturnStatement); } } } } } } } } } } }