1 package net.sourceforge.jenesis4java; 2 3 /* 4 * #%L 5 * Jenesis 4 Java Code Generator 6 * %% 7 * Copyright (C) 2000 - 2015 jenesis4java 8 * %% 9 * This program is free software: you can redistribute it and/or modify 10 * it under the terms of the GNU Lesser General Public License as 11 * published by the Free Software Foundation, either version 3 of the 12 * License, or (at your option) any later version. 13 * 14 * This program is distributed in the hope that it will be useful, 15 * but WITHOUT ANY WARRANTY; without even the implied warranty of 16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 * GNU General Lesser Public License for more details. 18 * 19 * You should have received a copy of the GNU General Lesser Public 20 * License along with this program. If not, see 21 * <http://www.gnu.org/licenses/lgpl-3.0.html>. 22 * #L% 23 */ 24 25 import java.util.List; 26 27 /** 28 * Copyright (C) 2008, 2010 Richard van Nieuwenhoven - ritchie [at] gmx [dot] at 29 * Copyright (C) 2000, 2001 Paul Cody Johnston - pcj@inxar.org <br> 30 * This file is part of Jenesis4java. Jenesis4java is free software: you can 31 * redistribute it and/or modify it under the terms of the GNU Lesser General 32 * Public License as published by the Free Software Foundation, either version 3 33 * of the License, or (at your option) any later version.<br> 34 * Jenesis4java is distributed in the hope that it will be useful, but WITHOUT 35 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 36 * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more 37 * details.<br> 38 * You should have received a copy of the GNU Lesser General Public License 39 * along with Jenesis4java. If not, see <http://www.gnu.org/licenses/>. 40 */ 41 /** 42 * {@code Statement} subinterface for the {@code for} construct. It has an 43 * declaration statement, a conditional statement, and an update statement (all 44 * of which are optional). 45 */ 46 public interface For extends ConditionalStatement { 47 48 /** 49 * Adds this statement expression to the comma separated list of 50 * initialization expressions. 51 */ 52 For addInit(Expression expr); 53 54 /** 55 * Adds this declaration statement to the list of updates. 56 */ 57 For addUpdate(Expression update); 58 59 /** 60 * Gets the comma separated list of initialzers from this for statement as 61 * an List of {@code Expression} OR a single {@code Let} object (depending 62 * on how it was defined). One need check the RTTI to be sure. 63 */ 64 List<Codeable> getInits(); 65 66 /** 67 * Gets the comma separated list of updates from this for statement as an 68 * List of {@code Expression}. 69 */ 70 List<Codeable> getUpdates(); 71 72 /** 73 * Sets this declaration statement to a {@code Let} statement with the given 74 * {@code Type}. If any initialization expressions have previously been 75 * added through the {@code addInit(Expression)} method, they will all be 76 * overwritten. This is because the Java Language Specification allows the 77 * initialization section of the for statement to be a {@code Let} 78 * expression. 79 */ 80 Let setInit(Type type); 81 }