01: /*
02: * Copyright 2007 Google Inc.
03: *
04: * Licensed under the Apache License, Version 2.0 (the "License"); you may not
05: * use this file except in compliance with the License. You may obtain a copy of
06: * the License at
07: *
08: * http://www.apache.org/licenses/LICENSE-2.0
09: *
10: * Unless required by applicable law or agreed to in writing, software
11: * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12: * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13: * License for the specific language governing permissions and limitations under
14: * the License.
15: */
16: package com.google.gwt.dev.js.ast;
17:
18: import java.util.ArrayList;
19: import java.util.Iterator;
20: import java.util.List;
21:
22: /**
23: * A JavaScript <code>var</code> statement.
24: */
25: public class JsVars extends JsStatement implements
26: Iterable<JsVars.JsVar> {
27:
28: /**
29: * A var declared using the JavaScript <code>var</code> statement.
30: */
31: public static class JsVar extends JsNode<JsVar> implements HasName {
32:
33: private JsExpression initExpr;
34:
35: private final JsName name;
36:
37: public JsVar(JsName name) {
38: this .name = name;
39: }
40:
41: public JsExpression getInitExpr() {
42: return initExpr;
43: }
44:
45: public JsName getName() {
46: return name;
47: }
48:
49: public void setInitExpr(JsExpression initExpr) {
50: this .initExpr = initExpr;
51: }
52:
53: public void traverse(JsVisitor v, JsContext<JsVar> ctx) {
54: if (v.visit(this , ctx)) {
55: if (initExpr != null) {
56: initExpr = v.accept(initExpr);
57: }
58: }
59: v.endVisit(this , ctx);
60: }
61: }
62:
63: private final List<JsVar> vars = new ArrayList<JsVar>();
64:
65: public JsVars() {
66: }
67:
68: public void add(JsVar var) {
69: vars.add(var);
70: }
71:
72: public boolean isEmpty() {
73: return vars.isEmpty();
74: }
75:
76: // Iterator returns JsVar objects
77: public Iterator<JsVar> iterator() {
78: return vars.iterator();
79: }
80:
81: public void traverse(JsVisitor v, JsContext<JsStatement> ctx) {
82: if (v.visit(this, ctx)) {
83: v.acceptWithInsertRemove(vars);
84: }
85: v.endVisit(this, ctx);
86: }
87: }
|