01: /*
02: * This file is part of PFIXCORE.
03: *
04: * PFIXCORE is free software; you can redistribute it and/or modify
05: * it under the terms of the GNU Lesser General Public License as published by
06: * the Free Software Foundation; either version 2 of the License, or
07: * (at your option) any later version.
08: *
09: * PFIXCORE is distributed in the hope that it will be useful,
10: * but WITHOUT ANY WARRANTY; without even the implied warranty of
11: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12: * GNU Lesser General Public License for more details.
13: *
14: * You should have received a copy of the GNU Lesser General Public License
15: * along with PFIXCORE; if not, write to the Free Software
16: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17: */
18:
19: package de.schlund.pfixcore.scriptedflow.compiler;
20:
21: import java.util.ArrayList;
22: import java.util.List;
23:
24: import de.schlund.pfixcore.scriptedflow.vm.Instruction;
25: import de.schlund.pfixcore.scriptedflow.vm.NopInstruction;
26:
27: /**
28: * Statement consisting of 1 to n substatements which are executed in order.
29: *
30: * @author Sebastian Marsching <sebastian.marsching@1und1.de>
31: */
32: public class BlockStatement extends AbstractStatement {
33: private List<Statement> childs = new ArrayList<Statement>();
34: private Instruction nop = new NopInstruction();
35:
36: public BlockStatement(Statement parent) {
37: super (parent);
38: }
39:
40: public void addStatement(Statement stmt) {
41: childs.add(stmt);
42: }
43:
44: public Instruction[] getInstructions() {
45: if (childs.size() == 0) {
46: return new Instruction[] { nop };
47: }
48: List<Instruction> temp = new ArrayList<Instruction>();
49: for (Statement child : childs) {
50: Instruction[] childInstr = child.getInstructions();
51: for (int i = 0; i < childInstr.length; i++) {
52: temp.add(childInstr[i]);
53: }
54: }
55: Instruction[] temp2 = new Instruction[temp.size()];
56: for (int i = 0; i < temp2.length; i++) {
57: temp2[i] = temp.get(i);
58: }
59: return temp2;
60: }
61:
62: }
|