001    // Copyright (c) 2011, the Dart project authors.  Please see the AUTHORS file
002    // for details. All rights reserved. Use of this source code is governed by a
003    // BSD-style license that can be found in the LICENSE file.
004    
005    package com.google.dart.compiler.backend.js.ast;
006    
007    import com.intellij.util.SmartList;
008    
009    import java.util.List;
010    
011    public final class JsObjectLiteral extends JsLiteral {
012        private final List<JsPropertyInitializer> properties;
013    
014        private final boolean multiline;
015    
016        public JsObjectLiteral() {
017            this(new SmartList<JsPropertyInitializer>());
018        }
019    
020        public JsObjectLiteral(boolean multiline) {
021            this(new SmartList<JsPropertyInitializer>(), multiline);
022        }
023    
024        public boolean isMultiline() {
025            return multiline;
026        }
027    
028        public JsObjectLiteral(List<JsPropertyInitializer> properties) {
029            this(properties, false);
030        }
031    
032        public JsObjectLiteral(List<JsPropertyInitializer> properties, boolean multiline) {
033            this.properties = properties;
034            this.multiline = multiline;
035        }
036    
037        public List<JsPropertyInitializer> getPropertyInitializers() {
038            return properties;
039        }
040    
041        @Override
042        public void accept(JsVisitor v) {
043            v.visitObjectLiteral(this);
044        }
045    
046        @Override
047        public void acceptChildren(JsVisitor visitor) {
048            visitor.acceptWithInsertRemove(properties);
049        }
050    }