| Index: pkg/compiler/lib/src/serialization/values.dart
|
| diff --git a/pkg/compiler/lib/src/serialization/values.dart b/pkg/compiler/lib/src/serialization/values.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..59107557e16f3eb726536c89a93ea1e2ca5c93cc
|
| --- /dev/null
|
| +++ b/pkg/compiler/lib/src/serialization/values.dart
|
| @@ -0,0 +1,156 @@
|
| +// Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +/// Class hiarchy for semantic wrapping of serializable values.
|
| +
|
| +library dart2js.serialization.values;
|
| +
|
| +import '../constants/expressions.dart';
|
| +import '../dart_types.dart';
|
| +import '../elements/elements.dart';
|
| +import 'keys.dart';
|
| +
|
| +abstract class ValueVisitor<R, A> {
|
| + R apply(Value value, A arg);
|
| +
|
| + R visitElement(ElementValue value, A arg);
|
| + R visitType(TypeValue value, A arg);
|
| + R visitConstant(ConstantValue value, A arg);
|
| + R visitBool(BoolValue value, A arg);
|
| + R visitInt(IntValue value, A arg);
|
| + R visitDouble(DoubleValue value, A arg);
|
| + R visitString(StringValue value, A arg);
|
| + R visitObject(ObjectValue value, A arg);
|
| + R visitMap(MapValue value, A arg);
|
| + R visitList(ListValue value, A arg);
|
| + R visitEnum(EnumValue value, A arg);
|
| + R visitUri(UriValue value, A arg);
|
| +}
|
| +
|
| +abstract class Value {
|
| + accept(ValueVisitor visitor, arg);
|
| +}
|
| +
|
| +class ElementValue implements Value {
|
| + final Element element;
|
| + final Value id;
|
| +
|
| + ElementValue(this.element, this.id);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitElement(this, arg);
|
| +
|
| + String toString() => element.toString();
|
| +}
|
| +
|
| +class TypeValue implements Value {
|
| + final DartType type;
|
| + final Value id;
|
| +
|
| + TypeValue(this.type, this.id);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitType(this, arg);
|
| +
|
| + String toString() => type.toString();
|
| +}
|
| +
|
| +class ConstantValue implements Value {
|
| + final ConstantExpression constant;
|
| + final Value id;
|
| +
|
| + ConstantValue(this.constant, this.id);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitConstant(this, arg);
|
| +
|
| + String toString() => constant.getText();
|
| +}
|
| +
|
| +abstract class PrimitiveValue implements Value {
|
| + get value;
|
| +
|
| + String toString() => value.toString();
|
| +}
|
| +
|
| +class BoolValue extends PrimitiveValue {
|
| + final bool value;
|
| +
|
| + BoolValue(this.value);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitBool(this, arg);
|
| +}
|
| +
|
| +class IntValue extends PrimitiveValue {
|
| + final int value;
|
| +
|
| + IntValue(this.value);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitInt(this, arg);
|
| +}
|
| +
|
| +class DoubleValue extends PrimitiveValue {
|
| + final double value;
|
| +
|
| + DoubleValue(this.value);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitDouble(this, arg);
|
| +}
|
| +
|
| +class StringValue extends PrimitiveValue {
|
| + final String value;
|
| +
|
| + StringValue(this.value);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitString(this, arg);
|
| +}
|
| +
|
| +class ObjectValue implements Value {
|
| + final Map<Key, Value> map;
|
| +
|
| + ObjectValue(this.map);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitObject(this, arg);
|
| +
|
| + String toString() => map.toString();
|
| +}
|
| +
|
| +class MapValue implements Value {
|
| + final Map<String, Value> map;
|
| +
|
| + MapValue(this.map);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitMap(this, arg);
|
| +
|
| + String toString() => map.toString();
|
| +}
|
| +
|
| +class ListValue implements Value {
|
| + final List<Value> values;
|
| +
|
| + ListValue(this.values);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitList(this, arg);
|
| +
|
| + String toString() => values.toString();
|
| +}
|
| +
|
| +class EnumValue implements Value {
|
| + final value;
|
| +
|
| + EnumValue(this.value);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitEnum(this, arg);
|
| +
|
| + String toString() => value.toString();
|
| +}
|
| +
|
| +class UriValue implements Value {
|
| + final Uri baseUri;
|
| + final Uri value;
|
| +
|
| + UriValue(this.baseUri, this.value);
|
| +
|
| + accept(ValueVisitor visitor, arg) => visitor.visitUri(this, arg);
|
| +
|
| + String toString() => value.toString();
|
| +}
|
| +
|
|
|