01: /*
02: * The contents of this file are subject to the terms
03: * of the Common Development and Distribution License
04: * (the "License"). You may not use this file except
05: * in compliance with the License.
06: *
07: * You can obtain a copy of the license at
08: * https://jwsdp.dev.java.net/CDDLv1.0.html
09: * See the License for the specific language governing
10: * permissions and limitations under the License.
11: *
12: * When distributing Covered Code, include this CDDL
13: * HEADER in each file and include the License file at
14: * https://jwsdp.dev.java.net/CDDLv1.0.html If applicable,
15: * add the following below this CDDL HEADER, with the
16: * fields enclosed by brackets "[]" replaced with your
17: * own identifying information: Portions Copyright [yyyy]
18: * [name of copyright owner]
19: */
20: package com.sun.codemodel;
21:
22: /**
23: * Case statement
24: */
25: public final class JCase implements JStatement {
26:
27: /**
28: * label part of the case statement
29: */
30: private JExpression label;
31:
32: /**
33: * JBlock of statements which makes up body of this While statement
34: */
35: private JBlock body = null;
36:
37: /**
38: * is this a regular case statement or a default case statement?
39: */
40: private boolean isDefaultCase = false;
41:
42: /**
43: * Construct a case statement
44: */
45: JCase(JExpression label) {
46: this (label, false);
47: }
48:
49: /**
50: * Construct a case statement. If isDefaultCase is true, then
51: * label should be null since default cases don't have a label.
52: */
53: JCase(JExpression label, boolean isDefaultCase) {
54: this .label = label;
55: this .isDefaultCase = isDefaultCase;
56: }
57:
58: public JExpression label() {
59: return label;
60: }
61:
62: public JBlock body() {
63: if (body == null)
64: body = new JBlock(false, true);
65: return body;
66: }
67:
68: public void state(JFormatter f) {
69: f.i();
70: if (!isDefaultCase) {
71: f.p("case ").g(label).p(':').nl();
72: } else {
73: f.p("default:").nl();
74: }
75: if (body != null)
76: f.s(body);
77: f.o();
78: }
79: }
|