Home | History | Annotate | Download | only in nodeTypes
      1 package com.github.javaparser.ast.nodeTypes;
      2 
      3 import java.util.List;
      4 
      5 import com.github.javaparser.ast.Node;
      6 import com.github.javaparser.ast.expr.Expression;
      7 import com.github.javaparser.ast.expr.NameExpr;
      8 import com.github.javaparser.ast.stmt.ExpressionStmt;
      9 import com.github.javaparser.ast.stmt.Statement;
     10 
     11 public interface NodeWithStatements<T> {
     12     public List<Statement> getStmts();
     13 
     14     public T setStmts(final List<Statement> stmts);
     15 
     16     @SuppressWarnings("unchecked")
     17     public default T addStatement(Statement statement) {
     18         getStmts().add(statement);
     19         statement.setParentNode((Node) this);
     20         return (T) this;
     21     }
     22 
     23     @SuppressWarnings("unchecked")
     24     public default T addStatement(int index, final Statement statement) {
     25         getStmts().add(index, statement);
     26         statement.setParentNode((Node) this);
     27         return (T) this;
     28     }
     29 
     30     public default T addStatement(Expression expr) {
     31         ExpressionStmt statement = new ExpressionStmt(expr);
     32         expr.setParentNode(statement);
     33         return addStatement(statement);
     34     }
     35 
     36     public default T addStatement(String statement) {
     37         return addStatement(new NameExpr(statement));
     38     }
     39 
     40     public default T addStatement(int index, final Expression expr) {
     41         Statement stmt = new ExpressionStmt(expr);
     42         expr.setParentNode(stmt);
     43         return addStatement(index, stmt);
     44     }
     45 
     46 }
     47