JavaParser Source Viewer

Home|JavaParser/com/github/javaparser/ast/nodeTypes/NodeWithStatements.java
1/*
2 * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2020 The JavaParser Team.
4 *
5 * This file is part of JavaParser.
6 *
7 * JavaParser can be used either under the terms of
8 * a) the GNU Lesser General Public License as published by
9 *     the Free Software Foundation, either version 3 of the License, or
10 *     (at your option) any later version.
11 * b) the terms of the Apache License
12 *
13 * You should have received a copy of both licenses in LICENCE.LGPL and
14 * LICENCE.APACHE. Please refer to those files for details.
15 *
16 * JavaParser is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License for more details.
20 */
21
22package com.github.javaparser.ast.nodeTypes;
23
24import com.github.javaparser.JavaParser;
25import com.github.javaparser.ast.Node;
26import com.github.javaparser.ast.NodeList;
27import com.github.javaparser.ast.expr.Expression;
28import com.github.javaparser.ast.expr.NameExpr;
29import com.github.javaparser.ast.stmt.ExpressionStmt;
30import com.github.javaparser.ast.stmt.Statement;
31
32import static com.github.javaparser.StaticJavaParser.parseStatement;
33
34/**
35 * A node that contains a list of statements.
36 */
37public interface NodeWithStatements<N extends Node> {
38    NodeList<StatementgetStatements();
39
40    default Statement getStatement(int i) {
41        return getStatements().get(i);
42    }
43
44    @SuppressWarnings("unchecked")
45    default N setStatement(int iStatement statement) {
46        getStatements().set(istatement);
47        return (N) this;
48    }
49
50    N setStatements(final NodeList<Statementstatements);
51
52    @SuppressWarnings("unchecked")
53    default N addStatement(Statement statement) {
54        getStatements().add(statement);
55        return (N) this;
56    }
57
58    @SuppressWarnings("unchecked")
59    default N addStatement(int indexfinal Statement statement) {
60        getStatements().add(indexstatement);
61        return (N) this;
62    }
63
64    default N addStatement(Expression expr) {
65        return addStatement(new ExpressionStmt(expr));
66    }
67
68    /**
69     * It will use {@link JavaParser#parseStatement(String)} inside, so it should end with a semicolon
70     */
71    default N addStatement(String statement) {
72        return addStatement(parseStatement(statement));
73    }
74
75    default N addStatement(int indexfinal Expression expr) {
76        Statement stmt = new ExpressionStmt(expr);
77        return addStatement(indexstmt);
78    }
79
80    default <A extends StatementA addAndGetStatement(A statement) {
81        getStatements().add(statement);
82        return statement;
83    }
84
85    default Statement addAndGetStatement(int indexfinal Statement statement) {
86        getStatements().add(indexstatement);
87        return statement;
88    }
89
90    default ExpressionStmt addAndGetStatement(Expression expr) {
91        ExpressionStmt statement = new ExpressionStmt(expr);
92        return addAndGetStatement(statement);
93    }
94
95    default ExpressionStmt addAndGetStatement(String statement) {
96        return addAndGetStatement(new NameExpr(statement));
97    }
98
99    /**
100     * @return true if there are no statements contained in this node.
101     */
102    default boolean isEmpty() {
103        return getStatements().isEmpty();
104    }
105
106    @SuppressWarnings("unchecked")
107    default N copyStatements(NodeList<StatementnodeList) {
108        for (Statement n : nodeList) {
109            addStatement(n.clone());
110        }
111        return (N) this;
112    }
113
114    default N copyStatements(NodeWithStatements<?> other) {
115        return copyStatements(other.getStatements());
116    }
117}
118
MembersX
NodeWithStatements:getStatements
NodeWithStatements:addStatement
NodeWithStatements:getStatement
NodeWithStatements:setStatement
NodeWithStatements:addAndGetStatement:Block:statement
NodeWithStatements:isEmpty
NodeWithStatements:addAndGetStatement
NodeWithStatements:setStatements
NodeWithStatements:copyStatements
NodeWithStatements:addStatement:Block:stmt
Members
X