blob: c972584307d539675f3df10021e031cd5d6ed238 [file] [log] [blame]
// Copyright (c) 2013, 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.
library polymer_expressions.filter;
typedef Object Filter(Object value);
abstract class Transformer<T, V> {
T forward(V v);
V reverse(T t);
Transformer<V, T> get inverse => new _InverseTransformer/*<V, T>*/(this);
}
// TODO(jmesserly): restore types when Issue 14094 is fixed.
class _InverseTransformer/*<V, T>*/ implements Transformer/*<V, T>*/ {
final Transformer/*<T, V>*/ _t;
_InverseTransformer(this._t);
/*V*/ forward(/*T*/ v) => _t.reverse(v);
/*T*/ reverse(/*V*/ t) => _t.forward(t);
Transformer/*<T, V>*/ get inverse => _t;
}