Package org.eclipse.jdt.core.dom

Examples of org.eclipse.jdt.core.dom.SwitchStatement


        // Return the result of the assignment.
        if (special && _assignOperators.containsKey(fieldType.getName())) {
            String[] operators = _assignOperators.get(fieldType.getName());

            SwitchStatement switchStatement = ast.newSwitchStatement();
            switchStatement.setExpression(ast.newSimpleName("operator"));

            boolean isPostfix = true;

            for (int i = 0; i < operators.length; i++) {
                String operator = operators[i];

                SwitchCase switchCase = ast.newSwitchCase();
                switchCase.setExpression(ast.newNumberLiteral(Integer
                        .toString(i)));
                switchStatement.statements().add(switchCase);

                ReturnStatement returnStatement = ast.newReturnStatement();

                if (operator.equals("=")) {
                    Assignment newAssignment = (Assignment) ASTNode
                            .copySubtree(ast, assignment);
                    returnStatement.setExpression(newAssignment);
                } else if (operator.equals("++") || operator.equals("--")) {
                    Expression expression;

                    if (isPostfix) {
                        PostfixExpression postfix = ast.newPostfixExpression();
                        postfix.setOperand((Expression) ASTNode.copySubtree(
                                ast, assignment.getLeftHandSide()));
                        postfix.setOperator(PostfixExpression.Operator
                                .toOperator(operator));
                        expression = postfix;

                        // Produce prefix operators next time.
                        if (operator.equals("--")) {
                            isPostfix = false;
                        }
                    } else {
                        PrefixExpression prefix = ast.newPrefixExpression();
                        prefix.setOperand((Expression) ASTNode.copySubtree(ast,
                                assignment.getLeftHandSide()));
                        prefix.setOperator(PrefixExpression.Operator
                                .toOperator(operator));
                        expression = prefix;
                    }

                    returnStatement.setExpression(expression);
                } else {
                    Assignment newAssignment = (Assignment) ASTNode
                            .copySubtree(ast, assignment);
                    newAssignment.setOperator(Assignment.Operator
                            .toOperator(operator));
                    returnStatement.setExpression(newAssignment);
                }

                switchStatement.statements().add(returnStatement);
            }

            // The default statement: just return the old value.
            // This case should not be reached.
            SwitchCase defaultCase = ast.newSwitchCase();
            defaultCase.setExpression(null);
            switchStatement.statements().add(defaultCase);

            ReturnStatement defaultReturn = ast.newReturnStatement();
            defaultReturn.setExpression((Expression) ASTNode.copySubtree(ast,
                    assignment.getLeftHandSide()));
            switchStatement.statements().add(defaultReturn);

            block.statements().add(switchStatement);
        } else {
            ReturnStatement returnStatement = ast.newReturnStatement();
            returnStatement.setExpression(assignment);
View Full Code Here


            Messages.ASTNodeProcessor_IllegalInfixExpression, op, node);
      break;
    }

    case ASTNode.SWITCH_STATEMENT: {
      final SwitchStatement sw = (SwitchStatement) node;
      this.processExpression(sw.getExpression());
      for (final Iterator it = sw.statements().iterator(); it.hasNext();) {
        final Object obj = it.next();
        if (obj instanceof SwitchCase) {
          final SwitchCase sc = (SwitchCase) obj;
          this.processExpression(sc.getExpression());
        }
View Full Code Here

TOP

Related Classes of org.eclipse.jdt.core.dom.SwitchStatement

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.