1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 package org.codehaus.groovy.ast.stmt;
47
48 import java.util.ArrayList;
49 import java.util.List;
50
51 import org.codehaus.groovy.ast.GroovyCodeVisitor;
52 import org.codehaus.groovy.ast.expr.Expression;
53
54 /***
55 * Represents a switch (object) { case value: ... case [1, 2, 3]: ... default: ... } statement in Groovy.
56 *
57 * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
58 * @version $Revision: 1.5 $
59 */
60 public class SwitchStatement extends Statement {
61
62 private Expression expression;
63 private List caseStatements = new ArrayList();
64 private Statement defaultStatement;
65
66
67 public SwitchStatement(Expression expression) {
68 this(expression, EmptyStatement.INSTANCE);
69 }
70
71 public SwitchStatement(Expression expression, Statement defaultStatement) {
72 this.expression = expression;
73 this.defaultStatement = defaultStatement;
74 }
75
76 public SwitchStatement(Expression expression, List caseStatements, Statement defaultStatement) {
77 this.expression = expression;
78 this.caseStatements = caseStatements;
79 this.defaultStatement = defaultStatement;
80 }
81
82 public void visit(GroovyCodeVisitor visitor) {
83 visitor.visitSwitch(this);
84 }
85
86 public List getCaseStatements() {
87 return caseStatements;
88 }
89
90 public Expression getExpression() {
91 return expression;
92 }
93
94 public void setExpression(Expression e) {
95 expression=e;
96 }
97
98 public Statement getDefaultStatement() {
99 return defaultStatement;
100 }
101
102 public void setDefaultStatement(Statement defaultStatement) {
103 this.defaultStatement = defaultStatement;
104 }
105
106 public void addCase(CaseStatement caseStatement) {
107 caseStatements.add(caseStatement);
108 }
109
110 /***
111 * @return the case statement of the given index or null
112 */
113 public CaseStatement getCaseStatement(int idx) {
114 if (idx >= 0 && idx < caseStatements.size()) {
115 return (CaseStatement) caseStatements.get(idx);
116 }
117 return null;
118 }
119 }