Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1881)

Unified Diff: lib/runtime/dart/collection.js

Issue 1879373004: Implement modular compilation (Closed) Base URL: git@github.com:dart-lang/dev_compiler.git@master
Patch Set: Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « lib/runtime/dart/async.js ('k') | lib/runtime/dart/convert.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: lib/runtime/dart/collection.js
diff --git a/lib/runtime/dart/collection.js b/lib/runtime/dart/collection.js
deleted file mode 100644
index 8e99104319430b768aaad69b79f797993b3ef64d..0000000000000000000000000000000000000000
--- a/lib/runtime/dart/collection.js
+++ /dev/null
@@ -1,5889 +0,0 @@
-dart_library.library('dart/collection', null, /* Imports */[
- 'dart/_runtime',
- 'dart/core'
-], /* Lazy imports */[
- 'dart/_internal',
- 'dart/_js_helper',
- 'dart/math'
-], function(exports, dart, core, _internal, _js_helper, math) {
- 'use strict';
- let dartx = dart.dartx;
- const _source = Symbol('_source');
- const UnmodifiableListView$ = dart.generic(function(E) {
- class UnmodifiableListView extends _internal.UnmodifiableListBase$(E) {
- UnmodifiableListView(source) {
- this[_source] = source;
- }
- get length() {
- return this[_source][dartx.length];
- }
- get(index) {
- return this[_source][dartx.elementAt](index);
- }
- }
- dart.setSignature(UnmodifiableListView, {
- constructors: () => ({UnmodifiableListView: [exports.UnmodifiableListView$(E), [core.Iterable$(E)]]}),
- methods: () => ({get: [E, [core.int]]})
- });
- dart.defineExtensionMembers(UnmodifiableListView, ['get', 'length']);
- return UnmodifiableListView;
- });
- dart.defineLazyClassGeneric(exports, 'UnmodifiableListView', {get: UnmodifiableListView$});
- function _defaultEquals(a, b) {
- return dart.equals(a, b);
- }
- dart.fn(_defaultEquals, core.bool, [core.Object, core.Object]);
- function _defaultHashCode(a) {
- return dart.hashCode(a);
- }
- dart.fn(_defaultHashCode, core.int, [core.Object]);
- const _Equality$ = dart.generic(function(K) {
- const _Equality = dart.typedef('_Equality', () => dart.functionType(core.bool, [K, K]));
- return _Equality;
- });
- let _Equality = _Equality$();
- const _Hasher$ = dart.generic(function(K) {
- const _Hasher = dart.typedef('_Hasher', () => dart.functionType(core.int, [K]));
- return _Hasher;
- });
- let _Hasher = _Hasher$();
- const HashMap$ = dart.generic(function(K, V) {
- class HashMap extends core.Object {
- static new(opts) {
- let equals = opts && 'equals' in opts ? opts.equals : null;
- let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
- let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
- if (isValidKey == null) {
- if (hashCode == null) {
- if (equals == null) {
- return new (_HashMap$(K, V))();
- }
- hashCode = _defaultHashCode;
- } else {
- if (core.identical(core.identityHashCode, hashCode) && core.identical(core.identical, equals)) {
- return new (_IdentityHashMap$(K, V))();
- }
- if (equals == null) {
- equals = _defaultEquals;
- }
- }
- } else {
- if (hashCode == null) {
- hashCode = _defaultHashCode;
- }
- if (equals == null) {
- equals = _defaultEquals;
- }
- }
- return new (_CustomHashMap$(K, V))(equals, hashCode, isValidKey);
- }
- static identity() {
- return new (_IdentityHashMap$(K, V))();
- }
- static from(other) {
- let result = HashMap$(K, V).new();
- other[dartx.forEach](dart.fn((k, v) => {
- result.set(dart.as(k, K), dart.as(v, V));
- }, dart.void, [dart.dynamic, dart.dynamic]));
- return result;
- }
- static fromIterable(iterable, opts) {
- let key = opts && 'key' in opts ? opts.key : null;
- let value = opts && 'value' in opts ? opts.value : null;
- let map = HashMap$(K, V).new();
- Maps._fillMapWithMappedIterable(map, iterable, key, value);
- return map;
- }
- static fromIterables(keys, values) {
- let map = HashMap$(K, V).new();
- Maps._fillMapWithIterables(map, keys, values);
- return map;
- }
- }
- HashMap[dart.implements] = () => [core.Map$(K, V)];
- dart.setSignature(HashMap, {
- constructors: () => ({
- new: [HashMap$(K, V), [], {equals: dart.functionType(core.bool, [K, K]), hashCode: dart.functionType(core.int, [K]), isValidKey: dart.functionType(core.bool, [core.Object])}],
- identity: [HashMap$(K, V), []],
- from: [HashMap$(K, V), [core.Map]],
- fromIterable: [HashMap$(K, V), [core.Iterable], {key: dart.functionType(K, [dart.dynamic]), value: dart.functionType(V, [dart.dynamic])}],
- fromIterables: [HashMap$(K, V), [core.Iterable$(K), core.Iterable$(V)]]
- })
- });
- return HashMap;
- });
- let HashMap = HashMap$();
- const _newSet = Symbol('_newSet');
- const SetMixin$ = dart.generic(function(E) {
- class SetMixin extends core.Object {
- [Symbol.iterator]() {
- return new dart.JsIterator(this.iterator);
- }
- get isEmpty() {
- return this.length == 0;
- }
- get isNotEmpty() {
- return this.length != 0;
- }
- clear() {
- this.removeAll(this.toList());
- }
- addAll(elements) {
- dart.as(elements, core.Iterable$(E));
- for (let element of elements)
- this.add(element);
- }
- removeAll(elements) {
- for (let element of elements)
- this.remove(element);
- }
- retainAll(elements) {
- let toRemove = this.toSet();
- for (let o of elements) {
- toRemove.remove(o);
- }
- this.removeAll(toRemove);
- }
- removeWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let toRemove = [];
- for (let element of this) {
- if (dart.notNull(test(element))) toRemove[dartx.add](element);
- }
- this.removeAll(toRemove);
- }
- retainWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let toRemove = [];
- for (let element of this) {
- if (!dart.notNull(test(element))) toRemove[dartx.add](element);
- }
- this.removeAll(toRemove);
- }
- containsAll(other) {
- for (let o of other) {
- if (!dart.notNull(this.contains(o))) return false;
- }
- return true;
- }
- union(other) {
- dart.as(other, core.Set$(E));
- let _ = this.toSet();
- _.addAll(other);
- return _;
- }
- intersection(other) {
- let result = this.toSet();
- for (let element of this) {
- if (!dart.notNull(other.contains(element))) result.remove(element);
- }
- return result;
- }
- difference(other) {
- let result = this.toSet();
- for (let element of this) {
- if (dart.notNull(other.contains(element))) result.remove(element);
- }
- return result;
- }
- toList(opts) {
- let growable = opts && 'growable' in opts ? opts.growable : true;
- let result = dart.notNull(growable) ? (() => {
- let _ = core.List$(E).new();
- _[dartx.length] = this.length;
- return _;
- })() : core.List$(E).new(this.length);
- let i = 0;
- for (let element of this)
- result[dartx.set](i++, element);
- return result;
- }
- map(f) {
- dart.as(f, dart.functionType(dart.dynamic, [E]));
- return new (_internal.EfficientLengthMappedIterable$(E, dart.dynamic))(this, f);
- }
- get single() {
- if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
- let it = this.iterator;
- if (!dart.notNull(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
- let result = it.current;
- return result;
- }
- toString() {
- return IterableBase.iterableToFullString(this, '{', '}');
- }
- where(f) {
- dart.as(f, dart.functionType(core.bool, [E]));
- return new (_internal.WhereIterable$(E))(this, f);
- }
- expand(f) {
- dart.as(f, dart.functionType(core.Iterable, [E]));
- return new (_internal.ExpandIterable$(E, dart.dynamic))(this, f);
- }
- forEach(f) {
- dart.as(f, dart.functionType(dart.void, [E]));
- for (let element of this)
- f(element);
- }
- reduce(combine) {
- dart.as(combine, dart.functionType(E, [E, E]));
- let iterator = this.iterator;
- if (!dart.notNull(iterator.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- let value = iterator.current;
- while (dart.notNull(iterator.moveNext())) {
- value = combine(value, iterator.current);
- }
- return value;
- }
- fold(initialValue, combine) {
- dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
- let value = initialValue;
- for (let element of this)
- value = combine(value, element);
- return value;
- }
- every(f) {
- dart.as(f, dart.functionType(core.bool, [E]));
- for (let element of this) {
- if (!dart.notNull(f(element))) return false;
- }
- return true;
- }
- join(separator) {
- if (separator === void 0) separator = "";
- let iterator = this.iterator;
- if (!dart.notNull(iterator.moveNext())) return "";
- let buffer = new core.StringBuffer();
- if (separator == null || separator == "") {
- do {
- buffer.write(`${iterator.current}`);
- } while (dart.notNull(iterator.moveNext()));
- } else {
- buffer.write(`${iterator.current}`);
- while (dart.notNull(iterator.moveNext())) {
- buffer.write(separator);
- buffer.write(`${iterator.current}`);
- }
- }
- return buffer.toString();
- }
- any(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- for (let element of this) {
- if (dart.notNull(test(element))) return true;
- }
- return false;
- }
- take(n) {
- return _internal.TakeIterable$(E).new(this, n);
- }
- takeWhile(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.TakeWhileIterable$(E))(this, test);
- }
- skip(n) {
- return _internal.SkipIterable$(E).new(this, n);
- }
- skipWhile(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.SkipWhileIterable$(E))(this, test);
- }
- get first() {
- let it = this.iterator;
- if (!dart.notNull(it.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- return it.current;
- }
- get last() {
- let it = this.iterator;
- if (!dart.notNull(it.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- let result = null;
- do {
- result = it.current;
- } while (dart.notNull(it.moveNext()));
- return result;
- }
- firstWhere(test, opts) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let orElse = opts && 'orElse' in opts ? opts.orElse : null;
- dart.as(orElse, dart.functionType(E, []));
- for (let element of this) {
- if (dart.notNull(test(element))) return element;
- }
- if (orElse != null) return orElse();
- dart.throw(_internal.IterableElementError.noElement());
- }
- lastWhere(test, opts) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let orElse = opts && 'orElse' in opts ? opts.orElse : null;
- dart.as(orElse, dart.functionType(E, []));
- let result = null;
- let foundMatching = false;
- for (let element of this) {
- if (dart.notNull(test(element))) {
- result = element;
- foundMatching = true;
- }
- }
- if (foundMatching) return result;
- if (orElse != null) return orElse();
- dart.throw(_internal.IterableElementError.noElement());
- }
- singleWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let result = null;
- let foundMatching = false;
- for (let element of this) {
- if (dart.notNull(test(element))) {
- if (foundMatching) {
- dart.throw(_internal.IterableElementError.tooMany());
- }
- result = element;
- foundMatching = true;
- }
- }
- if (foundMatching) return result;
- dart.throw(_internal.IterableElementError.noElement());
- }
- elementAt(index) {
- if (!(typeof index == 'number')) dart.throw(new core.ArgumentError.notNull("index"));
- core.RangeError.checkNotNegative(index, "index");
- let elementIndex = 0;
- for (let element of this) {
- if (index == elementIndex) return element;
- elementIndex++;
- }
- dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
- }
- }
- SetMixin[dart.implements] = () => [core.Set$(E)];
- dart.setSignature(SetMixin, {
- methods: () => ({
- clear: [dart.void, []],
- addAll: [dart.void, [core.Iterable$(E)]],
- removeAll: [dart.void, [core.Iterable$(core.Object)]],
- retainAll: [dart.void, [core.Iterable$(core.Object)]],
- removeWhere: [dart.void, [dart.functionType(core.bool, [E])]],
- retainWhere: [dart.void, [dart.functionType(core.bool, [E])]],
- containsAll: [core.bool, [core.Iterable$(core.Object)]],
- union: [core.Set$(E), [core.Set$(E)]],
- intersection: [core.Set$(E), [core.Set$(core.Object)]],
- difference: [core.Set$(E), [core.Set$(core.Object)]],
- toList: [core.List$(E), [], {growable: core.bool}],
- map: [core.Iterable, [dart.functionType(dart.dynamic, [E])]],
- where: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- expand: [core.Iterable, [dart.functionType(core.Iterable, [E])]],
- forEach: [dart.void, [dart.functionType(dart.void, [E])]],
- reduce: [E, [dart.functionType(E, [E, E])]],
- fold: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic, E])]],
- every: [core.bool, [dart.functionType(core.bool, [E])]],
- join: [core.String, [], [core.String]],
- any: [core.bool, [dart.functionType(core.bool, [E])]],
- take: [core.Iterable$(E), [core.int]],
- takeWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- skip: [core.Iterable$(E), [core.int]],
- skipWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- firstWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
- lastWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
- singleWhere: [E, [dart.functionType(core.bool, [E])]],
- elementAt: [E, [core.int]]
- })
- });
- dart.defineExtensionMembers(SetMixin, [
- 'toList',
- 'map',
- 'where',
- 'expand',
- 'forEach',
- 'reduce',
- 'fold',
- 'every',
- 'join',
- 'any',
- 'take',
- 'takeWhile',
- 'skip',
- 'skipWhile',
- 'firstWhere',
- 'lastWhere',
- 'singleWhere',
- 'elementAt',
- 'isEmpty',
- 'isNotEmpty',
- 'single',
- 'first',
- 'last'
- ]);
- return SetMixin;
- });
- let SetMixin = SetMixin$();
- const SetBase$ = dart.generic(function(E) {
- class SetBase extends SetMixin$(E) {
- static setToString(set) {
- return IterableBase.iterableToFullString(set, '{', '}');
- }
- }
- dart.setSignature(SetBase, {
- statics: () => ({setToString: [core.String, [core.Set]]}),
- names: ['setToString']
- });
- return SetBase;
- });
- let SetBase = SetBase$();
- const _HashSetBase$ = dart.generic(function(E) {
- class _HashSetBase extends SetBase$(E) {
- difference(other) {
- let result = this[_newSet]();
- for (let element of this) {
- if (!dart.notNull(other.contains(element))) result.add(element);
- }
- return result;
- }
- intersection(other) {
- let result = this[_newSet]();
- for (let element of this) {
- if (dart.notNull(other.contains(element))) result.add(element);
- }
- return result;
- }
- toSet() {
- return (() => {
- let _ = this[_newSet]();
- _.addAll(this);
- return _;
- })();
- }
- }
- dart.setSignature(_HashSetBase, {
- methods: () => ({
- difference: [core.Set$(E), [core.Set$(core.Object)]],
- intersection: [core.Set$(E), [core.Set$(core.Object)]],
- toSet: [core.Set$(E), []]
- })
- });
- dart.defineExtensionMembers(_HashSetBase, ['toSet']);
- return _HashSetBase;
- });
- let _HashSetBase = _HashSetBase$();
- const HashSet$ = dart.generic(function(E) {
- class HashSet extends core.Object {
- static new(opts) {
- let equals = opts && 'equals' in opts ? opts.equals : null;
- let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
- let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
- if (isValidKey == null) {
- if (hashCode == null) {
- if (equals == null) {
- return new (_HashSet$(E))();
- }
- hashCode = _defaultHashCode;
- } else {
- if (core.identical(core.identityHashCode, hashCode) && core.identical(core.identical, equals)) {
- return new (_IdentityHashSet$(E))();
- }
- if (equals == null) {
- equals = _defaultEquals;
- }
- }
- } else {
- if (hashCode == null) {
- hashCode = _defaultHashCode;
- }
- if (equals == null) {
- equals = _defaultEquals;
- }
- }
- return new (_CustomHashSet$(E))(equals, hashCode, isValidKey);
- }
- static identity() {
- return new (_IdentityHashSet$(E))();
- }
- static from(elements) {
- let result = HashSet$(E).new();
- for (let e of elements) {
- dart.as(e, E);
- result.add(e);
- }
- return result;
- }
- [Symbol.iterator]() {
- return new dart.JsIterator(this.iterator);
- }
- }
- HashSet[dart.implements] = () => [core.Set$(E)];
- dart.setSignature(HashSet, {
- constructors: () => ({
- new: [HashSet$(E), [], {equals: dart.functionType(core.bool, [E, E]), hashCode: dart.functionType(core.int, [E]), isValidKey: dart.functionType(core.bool, [core.Object])}],
- identity: [HashSet$(E), []],
- from: [HashSet$(E), [core.Iterable]]
- })
- });
- return HashSet;
- });
- let HashSet = HashSet$();
- const IterableMixin$ = dart.generic(function(E) {
- class IterableMixin extends core.Object {
- map(f) {
- dart.as(f, dart.functionType(dart.dynamic, [E]));
- return _internal.MappedIterable$(E, dart.dynamic).new(this, f);
- }
- where(f) {
- dart.as(f, dart.functionType(core.bool, [E]));
- return new (_internal.WhereIterable$(E))(this, f);
- }
- expand(f) {
- dart.as(f, dart.functionType(core.Iterable, [E]));
- return new (_internal.ExpandIterable$(E, dart.dynamic))(this, f);
- }
- contains(element) {
- for (let e of this) {
- if (dart.equals(e, element)) return true;
- }
- return false;
- }
- forEach(f) {
- dart.as(f, dart.functionType(dart.void, [E]));
- for (let element of this)
- f(element);
- }
- reduce(combine) {
- dart.as(combine, dart.functionType(E, [E, E]));
- let iterator = this.iterator;
- if (!dart.notNull(iterator.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- let value = iterator.current;
- while (dart.notNull(iterator.moveNext())) {
- value = combine(value, iterator.current);
- }
- return value;
- }
- fold(initialValue, combine) {
- dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
- let value = initialValue;
- for (let element of this)
- value = combine(value, element);
- return value;
- }
- every(f) {
- dart.as(f, dart.functionType(core.bool, [E]));
- for (let element of this) {
- if (!dart.notNull(f(element))) return false;
- }
- return true;
- }
- join(separator) {
- if (separator === void 0) separator = "";
- let iterator = this.iterator;
- if (!dart.notNull(iterator.moveNext())) return "";
- let buffer = new core.StringBuffer();
- if (separator == null || separator == "") {
- do {
- buffer.write(`${iterator.current}`);
- } while (dart.notNull(iterator.moveNext()));
- } else {
- buffer.write(`${iterator.current}`);
- while (dart.notNull(iterator.moveNext())) {
- buffer.write(separator);
- buffer.write(`${iterator.current}`);
- }
- }
- return buffer.toString();
- }
- any(f) {
- dart.as(f, dart.functionType(core.bool, [E]));
- for (let element of this) {
- if (dart.notNull(f(element))) return true;
- }
- return false;
- }
- toList(opts) {
- let growable = opts && 'growable' in opts ? opts.growable : true;
- return core.List$(E).from(this, {growable: growable});
- }
- toSet() {
- return core.Set$(E).from(this);
- }
- get length() {
- dart.assert(!dart.is(this, _internal.EfficientLength));
- let count = 0;
- let it = this[dartx.iterator];
- while (dart.notNull(it.moveNext())) {
- count++;
- }
- return count;
- }
- get isEmpty() {
- return !dart.notNull(this[dartx.iterator].moveNext());
- }
- get isNotEmpty() {
- return !dart.notNull(this.isEmpty);
- }
- take(n) {
- return _internal.TakeIterable$(E).new(this, n);
- }
- takeWhile(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.TakeWhileIterable$(E))(this, test);
- }
- skip(n) {
- return _internal.SkipIterable$(E).new(this, n);
- }
- skipWhile(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.SkipWhileIterable$(E))(this, test);
- }
- get first() {
- let it = this[dartx.iterator];
- if (!dart.notNull(it.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- return it.current;
- }
- get last() {
- let it = this[dartx.iterator];
- if (!dart.notNull(it.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- let result = null;
- do {
- result = it.current;
- } while (dart.notNull(it.moveNext()));
- return result;
- }
- get single() {
- let it = this[dartx.iterator];
- if (!dart.notNull(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
- let result = it.current;
- if (dart.notNull(it.moveNext())) dart.throw(_internal.IterableElementError.tooMany());
- return result;
- }
- firstWhere(test, opts) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let orElse = opts && 'orElse' in opts ? opts.orElse : null;
- dart.as(orElse, dart.functionType(E, []));
- for (let element of this) {
- if (dart.notNull(test(element))) return element;
- }
- if (orElse != null) return orElse();
- dart.throw(_internal.IterableElementError.noElement());
- }
- lastWhere(test, opts) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let orElse = opts && 'orElse' in opts ? opts.orElse : null;
- dart.as(orElse, dart.functionType(E, []));
- let result = null;
- let foundMatching = false;
- for (let element of this) {
- if (dart.notNull(test(element))) {
- result = element;
- foundMatching = true;
- }
- }
- if (foundMatching) return result;
- if (orElse != null) return orElse();
- dart.throw(_internal.IterableElementError.noElement());
- }
- singleWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let result = null;
- let foundMatching = false;
- for (let element of this) {
- if (dart.notNull(test(element))) {
- if (foundMatching) {
- dart.throw(_internal.IterableElementError.tooMany());
- }
- result = element;
- foundMatching = true;
- }
- }
- if (foundMatching) return result;
- dart.throw(_internal.IterableElementError.noElement());
- }
- elementAt(index) {
- if (!(typeof index == 'number')) dart.throw(new core.ArgumentError.notNull("index"));
- core.RangeError.checkNotNegative(index, "index");
- let elementIndex = 0;
- for (let element of this) {
- if (index == elementIndex) return element;
- elementIndex++;
- }
- dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
- }
- toString() {
- return IterableBase.iterableToShortString(this, '(', ')');
- }
- [Symbol.iterator]() {
- return new dart.JsIterator(this.iterator);
- }
- }
- IterableMixin[dart.implements] = () => [core.Iterable$(E)];
- dart.setSignature(IterableMixin, {
- methods: () => ({
- map: [core.Iterable, [dart.functionType(dart.dynamic, [E])]],
- where: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- expand: [core.Iterable, [dart.functionType(core.Iterable, [E])]],
- contains: [core.bool, [core.Object]],
- forEach: [dart.void, [dart.functionType(dart.void, [E])]],
- reduce: [E, [dart.functionType(E, [E, E])]],
- fold: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic, E])]],
- every: [core.bool, [dart.functionType(core.bool, [E])]],
- join: [core.String, [], [core.String]],
- any: [core.bool, [dart.functionType(core.bool, [E])]],
- toList: [core.List$(E), [], {growable: core.bool}],
- toSet: [core.Set$(E), []],
- take: [core.Iterable$(E), [core.int]],
- takeWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- skip: [core.Iterable$(E), [core.int]],
- skipWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- firstWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
- lastWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
- singleWhere: [E, [dart.functionType(core.bool, [E])]],
- elementAt: [E, [core.int]]
- })
- });
- dart.defineExtensionMembers(IterableMixin, [
- 'map',
- 'where',
- 'expand',
- 'contains',
- 'forEach',
- 'reduce',
- 'fold',
- 'every',
- 'join',
- 'any',
- 'toList',
- 'toSet',
- 'take',
- 'takeWhile',
- 'skip',
- 'skipWhile',
- 'firstWhere',
- 'lastWhere',
- 'singleWhere',
- 'elementAt',
- 'length',
- 'isEmpty',
- 'isNotEmpty',
- 'first',
- 'last',
- 'single'
- ]);
- return IterableMixin;
- });
- let IterableMixin = IterableMixin$();
- const IterableBase$ = dart.generic(function(E) {
- class IterableBase extends core.Object {
- IterableBase() {
- }
- map(f) {
- dart.as(f, dart.functionType(dart.dynamic, [E]));
- return _internal.MappedIterable$(E, dart.dynamic).new(this, f);
- }
- where(f) {
- dart.as(f, dart.functionType(core.bool, [E]));
- return new (_internal.WhereIterable$(E))(this, f);
- }
- expand(f) {
- dart.as(f, dart.functionType(core.Iterable, [E]));
- return new (_internal.ExpandIterable$(E, dart.dynamic))(this, f);
- }
- contains(element) {
- for (let e of this) {
- if (dart.equals(e, element)) return true;
- }
- return false;
- }
- forEach(f) {
- dart.as(f, dart.functionType(dart.void, [E]));
- for (let element of this)
- f(element);
- }
- reduce(combine) {
- dart.as(combine, dart.functionType(E, [E, E]));
- let iterator = this.iterator;
- if (!dart.notNull(iterator.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- let value = iterator.current;
- while (dart.notNull(iterator.moveNext())) {
- value = combine(value, iterator.current);
- }
- return value;
- }
- fold(initialValue, combine) {
- dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
- let value = initialValue;
- for (let element of this)
- value = combine(value, element);
- return value;
- }
- every(f) {
- dart.as(f, dart.functionType(core.bool, [E]));
- for (let element of this) {
- if (!dart.notNull(f(element))) return false;
- }
- return true;
- }
- join(separator) {
- if (separator === void 0) separator = "";
- let iterator = this.iterator;
- if (!dart.notNull(iterator.moveNext())) return "";
- let buffer = new core.StringBuffer();
- if (separator == null || separator == "") {
- do {
- buffer.write(`${iterator.current}`);
- } while (dart.notNull(iterator.moveNext()));
- } else {
- buffer.write(`${iterator.current}`);
- while (dart.notNull(iterator.moveNext())) {
- buffer.write(separator);
- buffer.write(`${iterator.current}`);
- }
- }
- return buffer.toString();
- }
- any(f) {
- dart.as(f, dart.functionType(core.bool, [E]));
- for (let element of this) {
- if (dart.notNull(f(element))) return true;
- }
- return false;
- }
- toList(opts) {
- let growable = opts && 'growable' in opts ? opts.growable : true;
- return core.List$(E).from(this, {growable: growable});
- }
- toSet() {
- return core.Set$(E).from(this);
- }
- get length() {
- dart.assert(!dart.is(this, _internal.EfficientLength));
- let count = 0;
- let it = this[dartx.iterator];
- while (dart.notNull(it.moveNext())) {
- count++;
- }
- return count;
- }
- get isEmpty() {
- return !dart.notNull(this[dartx.iterator].moveNext());
- }
- get isNotEmpty() {
- return !dart.notNull(this.isEmpty);
- }
- take(n) {
- return _internal.TakeIterable$(E).new(this, n);
- }
- takeWhile(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.TakeWhileIterable$(E))(this, test);
- }
- skip(n) {
- return _internal.SkipIterable$(E).new(this, n);
- }
- skipWhile(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.SkipWhileIterable$(E))(this, test);
- }
- get first() {
- let it = this[dartx.iterator];
- if (!dart.notNull(it.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- return it.current;
- }
- get last() {
- let it = this[dartx.iterator];
- if (!dart.notNull(it.moveNext())) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- let result = null;
- do {
- result = it.current;
- } while (dart.notNull(it.moveNext()));
- return result;
- }
- get single() {
- let it = this[dartx.iterator];
- if (!dart.notNull(it.moveNext())) dart.throw(_internal.IterableElementError.noElement());
- let result = it.current;
- if (dart.notNull(it.moveNext())) dart.throw(_internal.IterableElementError.tooMany());
- return result;
- }
- firstWhere(test, opts) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let orElse = opts && 'orElse' in opts ? opts.orElse : null;
- dart.as(orElse, dart.functionType(E, []));
- for (let element of this) {
- if (dart.notNull(test(element))) return element;
- }
- if (orElse != null) return orElse();
- dart.throw(_internal.IterableElementError.noElement());
- }
- lastWhere(test, opts) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let orElse = opts && 'orElse' in opts ? opts.orElse : null;
- dart.as(orElse, dart.functionType(E, []));
- let result = null;
- let foundMatching = false;
- for (let element of this) {
- if (dart.notNull(test(element))) {
- result = element;
- foundMatching = true;
- }
- }
- if (foundMatching) return result;
- if (orElse != null) return orElse();
- dart.throw(_internal.IterableElementError.noElement());
- }
- singleWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let result = null;
- let foundMatching = false;
- for (let element of this) {
- if (dart.notNull(test(element))) {
- if (foundMatching) {
- dart.throw(_internal.IterableElementError.tooMany());
- }
- result = element;
- foundMatching = true;
- }
- }
- if (foundMatching) return result;
- dart.throw(_internal.IterableElementError.noElement());
- }
- elementAt(index) {
- if (!(typeof index == 'number')) dart.throw(new core.ArgumentError.notNull("index"));
- core.RangeError.checkNotNegative(index, "index");
- let elementIndex = 0;
- for (let element of this) {
- if (index == elementIndex) return element;
- elementIndex++;
- }
- dart.throw(core.RangeError.index(index, this, "index", null, elementIndex));
- }
- toString() {
- return IterableBase$().iterableToShortString(this, '(', ')');
- }
- static iterableToShortString(iterable, leftDelimiter, rightDelimiter) {
- if (leftDelimiter === void 0) leftDelimiter = '(';
- if (rightDelimiter === void 0) rightDelimiter = ')';
- if (dart.notNull(IterableBase$()._isToStringVisiting(iterable))) {
- if (leftDelimiter == "(" && rightDelimiter == ")") {
- return "(...)";
- }
- return `${leftDelimiter}...${rightDelimiter}`;
- }
- let parts = [];
- IterableBase$()._toStringVisiting[dartx.add](iterable);
- try {
- IterableBase$()._iterablePartsToStrings(iterable, parts);
- } finally {
- dart.assert(core.identical(IterableBase$()._toStringVisiting[dartx.last], iterable));
- IterableBase$()._toStringVisiting[dartx.removeLast]();
- }
- return (() => {
- let _ = new core.StringBuffer(leftDelimiter);
- _.writeAll(parts, ", ");
- _.write(rightDelimiter);
- return _;
- })().toString();
- }
- static iterableToFullString(iterable, leftDelimiter, rightDelimiter) {
- if (leftDelimiter === void 0) leftDelimiter = '(';
- if (rightDelimiter === void 0) rightDelimiter = ')';
- if (dart.notNull(IterableBase$()._isToStringVisiting(iterable))) {
- return `${leftDelimiter}...${rightDelimiter}`;
- }
- let buffer = new core.StringBuffer(leftDelimiter);
- IterableBase$()._toStringVisiting[dartx.add](iterable);
- try {
- buffer.writeAll(iterable, ", ");
- } finally {
- dart.assert(core.identical(IterableBase$()._toStringVisiting[dartx.last], iterable));
- IterableBase$()._toStringVisiting[dartx.removeLast]();
- }
- buffer.write(rightDelimiter);
- return buffer.toString();
- }
- static _isToStringVisiting(o) {
- for (let i = 0; i < dart.notNull(IterableBase$()._toStringVisiting[dartx.length]); i++) {
- if (core.identical(o, IterableBase$()._toStringVisiting[dartx.get](i))) return true;
- }
- return false;
- }
- static _iterablePartsToStrings(iterable, parts) {
- let LENGTH_LIMIT = 80;
- let HEAD_COUNT = 3;
- let TAIL_COUNT = 2;
- let MAX_COUNT = 100;
- let OVERHEAD = 2;
- let ELLIPSIS_SIZE = 3;
- let length = 0;
- let count = 0;
- let it = iterable[dartx.iterator];
- while (dart.notNull(length) < LENGTH_LIMIT || count < HEAD_COUNT) {
- if (!dart.notNull(it.moveNext())) return;
- let next = `${it.current}`;
- parts[dartx.add](next);
- length = dart.notNull(length) + (dart.notNull(next[dartx.length]) + OVERHEAD);
- count++;
- }
- let penultimateString = null;
- let ultimateString = null;
- let penultimate = null;
- let ultimate = null;
- if (!dart.notNull(it.moveNext())) {
- if (count <= HEAD_COUNT + TAIL_COUNT) return;
- ultimateString = dart.as(parts[dartx.removeLast](), core.String);
- penultimateString = dart.as(parts[dartx.removeLast](), core.String);
- } else {
- penultimate = it.current;
- count++;
- if (!dart.notNull(it.moveNext())) {
- if (count <= HEAD_COUNT + 1) {
- parts[dartx.add](`${penultimate}`);
- return;
- }
- ultimateString = `${penultimate}`;
- penultimateString = dart.as(parts[dartx.removeLast](), core.String);
- length = dart.notNull(length) + (dart.notNull(ultimateString[dartx.length]) + OVERHEAD);
- } else {
- ultimate = it.current;
- count++;
- dart.assert(count < MAX_COUNT);
- while (dart.notNull(it.moveNext())) {
- penultimate = ultimate;
- ultimate = it.current;
- count++;
- if (count > MAX_COUNT) {
- while (dart.notNull(length) > LENGTH_LIMIT - ELLIPSIS_SIZE - OVERHEAD && count > HEAD_COUNT) {
- length = dart.notNull(length) - dart.notNull(dart.as(dart.dsend(dart.dload(parts[dartx.removeLast](), 'length'), '+', OVERHEAD), core.int));
- count--;
- }
- parts[dartx.add]("...");
- return;
- }
- }
- penultimateString = `${penultimate}`;
- ultimateString = `${ultimate}`;
- length = dart.notNull(length) + (dart.notNull(ultimateString[dartx.length]) + dart.notNull(penultimateString[dartx.length]) + 2 * OVERHEAD);
- }
- }
- let elision = null;
- if (count > dart.notNull(parts[dartx.length]) + TAIL_COUNT) {
- elision = "...";
- length = dart.notNull(length) + (ELLIPSIS_SIZE + OVERHEAD);
- }
- while (dart.notNull(length) > LENGTH_LIMIT && dart.notNull(parts[dartx.length]) > HEAD_COUNT) {
- length = dart.notNull(length) - dart.notNull(dart.as(dart.dsend(dart.dload(parts[dartx.removeLast](), 'length'), '+', OVERHEAD), core.int));
- if (elision == null) {
- elision = "...";
- length = dart.notNull(length) + (ELLIPSIS_SIZE + OVERHEAD);
- }
- }
- if (elision != null) {
- parts[dartx.add](elision);
- }
- parts[dartx.add](penultimateString);
- parts[dartx.add](ultimateString);
- }
- [Symbol.iterator]() {
- return new dart.JsIterator(this.iterator);
- }
- }
- IterableBase[dart.implements] = () => [core.Iterable$(E)];
- dart.setSignature(IterableBase, {
- constructors: () => ({IterableBase: [IterableBase$(E), []]}),
- methods: () => ({
- map: [core.Iterable, [dart.functionType(dart.dynamic, [E])]],
- where: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- expand: [core.Iterable, [dart.functionType(core.Iterable, [E])]],
- contains: [core.bool, [core.Object]],
- forEach: [dart.void, [dart.functionType(dart.void, [E])]],
- reduce: [E, [dart.functionType(E, [E, E])]],
- fold: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic, E])]],
- every: [core.bool, [dart.functionType(core.bool, [E])]],
- join: [core.String, [], [core.String]],
- any: [core.bool, [dart.functionType(core.bool, [E])]],
- toList: [core.List$(E), [], {growable: core.bool}],
- toSet: [core.Set$(E), []],
- take: [core.Iterable$(E), [core.int]],
- takeWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- skip: [core.Iterable$(E), [core.int]],
- skipWhile: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- firstWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
- lastWhere: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
- singleWhere: [E, [dart.functionType(core.bool, [E])]],
- elementAt: [E, [core.int]]
- }),
- statics: () => ({
- iterableToShortString: [core.String, [core.Iterable], [core.String, core.String]],
- iterableToFullString: [core.String, [core.Iterable], [core.String, core.String]],
- _isToStringVisiting: [core.bool, [core.Object]],
- _iterablePartsToStrings: [dart.void, [core.Iterable, core.List]]
- }),
- names: ['iterableToShortString', 'iterableToFullString', '_isToStringVisiting', '_iterablePartsToStrings']
- });
- dart.defineExtensionMembers(IterableBase, [
- 'map',
- 'where',
- 'expand',
- 'contains',
- 'forEach',
- 'reduce',
- 'fold',
- 'every',
- 'join',
- 'any',
- 'toList',
- 'toSet',
- 'take',
- 'takeWhile',
- 'skip',
- 'skipWhile',
- 'firstWhere',
- 'lastWhere',
- 'singleWhere',
- 'elementAt',
- 'length',
- 'isEmpty',
- 'isNotEmpty',
- 'first',
- 'last',
- 'single'
- ]);
- dart.defineLazyProperties(IterableBase, {
- get _toStringVisiting() {
- return [];
- }
- });
- return IterableBase;
- });
- let IterableBase = IterableBase$();
- const _iterator = Symbol('_iterator');
- const _state = Symbol('_state');
- const _move = Symbol('_move');
- const HasNextIterator$ = dart.generic(function(E) {
- class HasNextIterator extends core.Object {
- HasNextIterator(iterator) {
- this[_iterator] = iterator;
- this[_state] = HasNextIterator$()._NOT_MOVED_YET;
- }
- get hasNext() {
- if (this[_state] == HasNextIterator$()._NOT_MOVED_YET) this[_move]();
- return this[_state] == HasNextIterator$()._HAS_NEXT_AND_NEXT_IN_CURRENT;
- }
- next() {
- if (!dart.notNull(this.hasNext)) dart.throw(new core.StateError("No more elements"));
- dart.assert(this[_state] == HasNextIterator$()._HAS_NEXT_AND_NEXT_IN_CURRENT);
- let result = dart.as(this[_iterator].current, E);
- this[_move]();
- return result;
- }
- [_move]() {
- if (dart.notNull(this[_iterator].moveNext())) {
- this[_state] = HasNextIterator$()._HAS_NEXT_AND_NEXT_IN_CURRENT;
- } else {
- this[_state] = HasNextIterator$()._NO_NEXT;
- }
- }
- }
- dart.setSignature(HasNextIterator, {
- constructors: () => ({HasNextIterator: [HasNextIterator$(E), [core.Iterator]]}),
- methods: () => ({
- next: [E, []],
- [_move]: [dart.void, []]
- })
- });
- HasNextIterator._HAS_NEXT_AND_NEXT_IN_CURRENT = 0;
- HasNextIterator._NO_NEXT = 1;
- HasNextIterator._NOT_MOVED_YET = 2;
- return HasNextIterator;
- });
- let HasNextIterator = HasNextIterator$();
- const LinkedHashMap$ = dart.generic(function(K, V) {
- class LinkedHashMap extends core.Object {
- static new(opts) {
- let equals = opts && 'equals' in opts ? opts.equals : null;
- let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
- let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
- if (isValidKey == null) {
- if (hashCode == null) {
- if (equals == null) {
- return new (_LinkedHashMap$(K, V))();
- }
- hashCode = _defaultHashCode;
- } else {
- if (core.identical(core.identityHashCode, hashCode) && core.identical(core.identical, equals)) {
- return new (_LinkedIdentityHashMap$(K, V))();
- }
- if (equals == null) {
- equals = _defaultEquals;
- }
- }
- } else {
- if (hashCode == null) {
- hashCode = _defaultHashCode;
- }
- if (equals == null) {
- equals = _defaultEquals;
- }
- }
- return new (_LinkedCustomHashMap$(K, V))(equals, hashCode, isValidKey);
- }
- static identity() {
- return new (_LinkedIdentityHashMap$(K, V))();
- }
- static from(other) {
- let result = LinkedHashMap$(K, V).new();
- other[dartx.forEach](dart.fn((k, v) => {
- result.set(dart.as(k, K), dart.as(v, V));
- }, dart.void, [dart.dynamic, dart.dynamic]));
- return result;
- }
- static fromIterable(iterable, opts) {
- let key = opts && 'key' in opts ? opts.key : null;
- let value = opts && 'value' in opts ? opts.value : null;
- let map = LinkedHashMap$(K, V).new();
- Maps._fillMapWithMappedIterable(map, iterable, key, value);
- return map;
- }
- static fromIterables(keys, values) {
- let map = LinkedHashMap$(K, V).new();
- Maps._fillMapWithIterables(map, keys, values);
- return map;
- }
- static _literal(keyValuePairs) {
- return dart.as(_js_helper.fillLiteralMap(keyValuePairs, new (_LinkedHashMap$(K, V))()), LinkedHashMap$(K, V));
- }
- static _empty() {
- return new (_LinkedHashMap$(K, V))();
- }
- }
- LinkedHashMap[dart.implements] = () => [HashMap$(K, V)];
- dart.setSignature(LinkedHashMap, {
- constructors: () => ({
- new: [LinkedHashMap$(K, V), [], {equals: dart.functionType(core.bool, [K, K]), hashCode: dart.functionType(core.int, [K]), isValidKey: dart.functionType(core.bool, [core.Object])}],
- identity: [LinkedHashMap$(K, V), []],
- from: [LinkedHashMap$(K, V), [core.Map]],
- fromIterable: [LinkedHashMap$(K, V), [core.Iterable], {key: dart.functionType(K, [dart.dynamic]), value: dart.functionType(V, [dart.dynamic])}],
- fromIterables: [LinkedHashMap$(K, V), [core.Iterable$(K), core.Iterable$(V)]],
- _literal: [LinkedHashMap$(K, V), [core.List]],
- _empty: [LinkedHashMap$(K, V), []]
- })
- });
- return LinkedHashMap;
- });
- let LinkedHashMap = LinkedHashMap$();
- const LinkedHashSet$ = dart.generic(function(E) {
- class LinkedHashSet extends core.Object {
- static new(opts) {
- let equals = opts && 'equals' in opts ? opts.equals : null;
- let hashCode = opts && 'hashCode' in opts ? opts.hashCode : null;
- let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
- if (isValidKey == null) {
- if (hashCode == null) {
- if (equals == null) {
- return new (_LinkedHashSet$(E))();
- }
- hashCode = _defaultHashCode;
- } else {
- if (core.identical(core.identityHashCode, hashCode) && core.identical(core.identical, equals)) {
- return new (_LinkedIdentityHashSet$(E))();
- }
- if (equals == null) {
- equals = _defaultEquals;
- }
- }
- } else {
- if (hashCode == null) {
- hashCode = _defaultHashCode;
- }
- if (equals == null) {
- equals = _defaultEquals;
- }
- }
- return new (_LinkedCustomHashSet$(E))(equals, hashCode, isValidKey);
- }
- static identity() {
- return new (_LinkedIdentityHashSet$(E))();
- }
- static from(elements) {
- let result = LinkedHashSet$(E).new();
- for (let element of elements) {
- result.add(element);
- }
- return result;
- }
- [Symbol.iterator]() {
- return new dart.JsIterator(this.iterator);
- }
- }
- LinkedHashSet[dart.implements] = () => [HashSet$(E)];
- dart.setSignature(LinkedHashSet, {
- constructors: () => ({
- new: [LinkedHashSet$(E), [], {equals: dart.functionType(core.bool, [E, E]), hashCode: dart.functionType(core.int, [E]), isValidKey: dart.functionType(core.bool, [core.Object])}],
- identity: [LinkedHashSet$(E), []],
- from: [LinkedHashSet$(E), [core.Iterable$(E)]]
- })
- });
- return LinkedHashSet;
- });
- let LinkedHashSet = LinkedHashSet$();
- const _modificationCount = Symbol('_modificationCount');
- const _length = Symbol('_length');
- const _next = Symbol('_next');
- const _previous = Symbol('_previous');
- const _insertAfter = Symbol('_insertAfter');
- const _list = Symbol('_list');
- const _unlink = Symbol('_unlink');
- const LinkedList$ = dart.generic(function(E) {
- class LinkedList extends IterableBase$(E) {
- LinkedList() {
- this[_modificationCount] = 0;
- this[_length] = 0;
- this[_next] = null;
- this[_previous] = null;
- super.IterableBase();
- this[_next] = this[_previous] = this;
- }
- addFirst(entry) {
- dart.as(entry, E);
- this[_insertAfter](this, entry);
- }
- add(entry) {
- dart.as(entry, E);
- this[_insertAfter](this[_previous], entry);
- }
- addAll(entries) {
- dart.as(entries, core.Iterable$(E));
- entries[dartx.forEach](dart.fn(entry => {
- dart.as(entry, E);
- return this[_insertAfter](this[_previous], entry);
- }, dart.void, [E]));
- }
- remove(entry) {
- dart.as(entry, E);
- if (!dart.equals(entry[_list], this)) return false;
- this[_unlink](entry);
- return true;
- }
- get iterator() {
- return new (_LinkedListIterator$(E))(this);
- }
- get length() {
- return this[_length];
- }
- clear() {
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- let next = this[_next];
- while (!core.identical(next, this)) {
- let entry = dart.as(next, E);
- next = entry[_next];
- entry[_next] = entry[_previous] = entry[_list] = null;
- }
- this[_next] = this[_previous] = this;
- this[_length] = 0;
- }
- get first() {
- if (core.identical(this[_next], this)) {
- dart.throw(new core.StateError('No such element'));
- }
- return dart.as(this[_next], E);
- }
- get last() {
- if (core.identical(this[_previous], this)) {
- dart.throw(new core.StateError('No such element'));
- }
- return dart.as(this[_previous], E);
- }
- get single() {
- if (core.identical(this[_previous], this)) {
- dart.throw(new core.StateError('No such element'));
- }
- if (!core.identical(this[_previous], this[_next])) {
- dart.throw(new core.StateError('Too many elements'));
- }
- return dart.as(this[_next], E);
- }
- forEach(action) {
- dart.as(action, dart.functionType(dart.void, [E]));
- let modificationCount = this[_modificationCount];
- let current = this[_next];
- while (!core.identical(current, this)) {
- action(dart.as(current, E));
- if (modificationCount != this[_modificationCount]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- current = current[_next];
- }
- }
- get isEmpty() {
- return this[_length] == 0;
- }
- [_insertAfter](entry, newEntry) {
- dart.as(newEntry, E);
- if (newEntry.list != null) {
- dart.throw(new core.StateError('LinkedListEntry is already in a LinkedList'));
- }
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- newEntry[_list] = this;
- let predecessor = entry;
- let successor = entry[_next];
- successor[_previous] = newEntry;
- newEntry[_previous] = predecessor;
- newEntry[_next] = successor;
- predecessor[_next] = newEntry;
- this[_length] = dart.notNull(this[_length]) + 1;
- }
- [_unlink](entry) {
- dart.as(entry, LinkedListEntry$(E));
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- entry[_next][_previous] = entry[_previous];
- entry[_previous][_next] = entry[_next];
- this[_length] = dart.notNull(this[_length]) - 1;
- entry[_list] = entry[_next] = entry[_previous] = null;
- }
- }
- LinkedList[dart.implements] = () => [_LinkedListLink];
- dart.setSignature(LinkedList, {
- constructors: () => ({LinkedList: [LinkedList$(E), []]}),
- methods: () => ({
- addFirst: [dart.void, [E]],
- add: [dart.void, [E]],
- addAll: [dart.void, [core.Iterable$(E)]],
- remove: [core.bool, [E]],
- clear: [dart.void, []],
- forEach: [dart.void, [dart.functionType(dart.void, [E])]],
- [_insertAfter]: [dart.void, [_LinkedListLink, E]],
- [_unlink]: [dart.void, [LinkedListEntry$(E)]]
- })
- });
- dart.defineExtensionMembers(LinkedList, [
- 'forEach',
- 'iterator',
- 'length',
- 'first',
- 'last',
- 'single',
- 'isEmpty'
- ]);
- return LinkedList;
- });
- let LinkedList = LinkedList$();
- const _current = Symbol('_current');
- const _LinkedListIterator$ = dart.generic(function(E) {
- class _LinkedListIterator extends core.Object {
- _LinkedListIterator(list) {
- this[_list] = list;
- this[_modificationCount] = list[_modificationCount];
- this[_next] = list[_next];
- this[_current] = null;
- }
- get current() {
- return this[_current];
- }
- moveNext() {
- if (core.identical(this[_next], this[_list])) {
- this[_current] = null;
- return false;
- }
- if (this[_modificationCount] != this[_list][_modificationCount]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- this[_current] = dart.as(this[_next], E);
- this[_next] = this[_next][_next];
- return true;
- }
- }
- _LinkedListIterator[dart.implements] = () => [core.Iterator$(E)];
- dart.setSignature(_LinkedListIterator, {
- constructors: () => ({_LinkedListIterator: [_LinkedListIterator$(E), [LinkedList$(E)]]}),
- methods: () => ({moveNext: [core.bool, []]})
- });
- return _LinkedListIterator;
- });
- let _LinkedListIterator = _LinkedListIterator$();
- class _LinkedListLink extends core.Object {
- _LinkedListLink() {
- this[_next] = null;
- this[_previous] = null;
- }
- }
- const LinkedListEntry$ = dart.generic(function(E) {
- class LinkedListEntry extends core.Object {
- LinkedListEntry() {
- this[_list] = null;
- this[_next] = null;
- this[_previous] = null;
- }
- get list() {
- return this[_list];
- }
- unlink() {
- this[_list][_unlink](this);
- }
- get next() {
- if (core.identical(this[_next], this[_list])) return null;
- let result = dart.as(this[_next], E);
- return result;
- }
- get previous() {
- if (core.identical(this[_previous], this[_list])) return null;
- return dart.as(this[_previous], E);
- }
- insertAfter(entry) {
- dart.as(entry, E);
- this[_list][_insertAfter](this, entry);
- }
- insertBefore(entry) {
- dart.as(entry, E);
- this[_list][_insertAfter](this[_previous], entry);
- }
- }
- LinkedListEntry[dart.implements] = () => [_LinkedListLink];
- dart.setSignature(LinkedListEntry, {
- methods: () => ({
- unlink: [dart.void, []],
- insertAfter: [dart.void, [E]],
- insertBefore: [dart.void, [E]]
- })
- });
- return LinkedListEntry;
- });
- let LinkedListEntry = LinkedListEntry$();
- const ListMixin$ = dart.generic(function(E) {
- dart.defineExtensionNames([
- 'iterator',
- 'elementAt',
- 'forEach',
- 'isEmpty',
- 'isNotEmpty',
- 'first',
- 'last',
- 'single',
- 'contains',
- 'every',
- 'any',
- 'firstWhere',
- 'lastWhere',
- 'singleWhere',
- 'join',
- 'where',
- 'map',
- 'expand',
- 'reduce',
- 'fold',
- 'skip',
- 'skipWhile',
- 'take',
- 'takeWhile',
- 'toList',
- 'toSet',
- 'add',
- 'addAll',
- 'remove',
- 'removeWhere',
- 'retainWhere',
- 'clear',
- 'removeLast',
- 'sort',
- 'shuffle',
- 'asMap',
- 'sublist',
- 'getRange',
- 'removeRange',
- 'fillRange',
- 'setRange',
- 'replaceRange',
- 'indexOf',
- 'lastIndexOf',
- 'insert',
- 'removeAt',
- 'insertAll',
- 'setAll',
- 'reversed',
- 'toString'
- ]);
- class ListMixin extends core.Object {
- get [dartx.iterator]() {
- return new (_internal.ListIterator$(E))(this);
- }
- [Symbol.iterator]() {
- return new dart.JsIterator(this[dartx.iterator]);
- }
- [dartx.elementAt](index) {
- return this[dartx.get](index);
- }
- [dartx.forEach](action) {
- dart.as(action, dart.functionType(dart.void, [E]));
- let length = this[dartx.length];
- for (let i = 0; i < dart.notNull(length); i++) {
- action(this[dartx.get](i));
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- }
- get [dartx.isEmpty]() {
- return this[dartx.length] == 0;
- }
- get [dartx.isNotEmpty]() {
- return !dart.notNull(this[dartx.isEmpty]);
- }
- get [dartx.first]() {
- if (this[dartx.length] == 0) dart.throw(_internal.IterableElementError.noElement());
- return this[dartx.get](0);
- }
- get [dartx.last]() {
- if (this[dartx.length] == 0) dart.throw(_internal.IterableElementError.noElement());
- return this[dartx.get](dart.notNull(this[dartx.length]) - 1);
- }
- get [dartx.single]() {
- if (this[dartx.length] == 0) dart.throw(_internal.IterableElementError.noElement());
- if (dart.notNull(this[dartx.length]) > 1) dart.throw(_internal.IterableElementError.tooMany());
- return this[dartx.get](0);
- }
- [dartx.contains](element) {
- let length = this[dartx.length];
- for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
- if (dart.equals(this[dartx.get](i), element)) return true;
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- return false;
- }
- [dartx.every](test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let length = this[dartx.length];
- for (let i = 0; i < dart.notNull(length); i++) {
- if (!dart.notNull(test(this[dartx.get](i)))) return false;
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- return true;
- }
- [dartx.any](test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let length = this[dartx.length];
- for (let i = 0; i < dart.notNull(length); i++) {
- if (dart.notNull(test(this[dartx.get](i)))) return true;
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- return false;
- }
- [dartx.firstWhere](test, opts) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let orElse = opts && 'orElse' in opts ? opts.orElse : null;
- dart.as(orElse, dart.functionType(E, []));
- let length = this[dartx.length];
- for (let i = 0; i < dart.notNull(length); i++) {
- let element = this[dartx.get](i);
- if (dart.notNull(test(element))) return element;
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- if (orElse != null) return orElse();
- dart.throw(_internal.IterableElementError.noElement());
- }
- [dartx.lastWhere](test, opts) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let orElse = opts && 'orElse' in opts ? opts.orElse : null;
- dart.as(orElse, dart.functionType(E, []));
- let length = this[dartx.length];
- for (let i = dart.notNull(length) - 1; i >= 0; i--) {
- let element = this[dartx.get](i);
- if (dart.notNull(test(element))) return element;
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- if (orElse != null) return orElse();
- dart.throw(_internal.IterableElementError.noElement());
- }
- [dartx.singleWhere](test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let length = this[dartx.length];
- let match = null;
- let matchFound = false;
- for (let i = 0; i < dart.notNull(length); i++) {
- let element = this[dartx.get](i);
- if (dart.notNull(test(element))) {
- if (matchFound) {
- dart.throw(_internal.IterableElementError.tooMany());
- }
- matchFound = true;
- match = element;
- }
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- if (matchFound) return match;
- dart.throw(_internal.IterableElementError.noElement());
- }
- [dartx.join](separator) {
- if (separator === void 0) separator = "";
- if (this[dartx.length] == 0) return "";
- let buffer = new core.StringBuffer();
- buffer.writeAll(this, separator);
- return buffer.toString();
- }
- [dartx.where](test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.WhereIterable$(E))(this, test);
- }
- [dartx.map](f) {
- dart.as(f, dart.functionType(dart.dynamic, [E]));
- return new (_internal.MappedListIterable$(E, dart.dynamic))(this, f);
- }
- [dartx.expand](f) {
- dart.as(f, dart.functionType(core.Iterable, [E]));
- return new (_internal.ExpandIterable$(E, dart.dynamic))(this, f);
- }
- [dartx.reduce](combine) {
- dart.as(combine, dart.functionType(E, [E, E]));
- let length = this[dartx.length];
- if (length == 0) dart.throw(_internal.IterableElementError.noElement());
- let value = this[dartx.get](0);
- for (let i = 1; i < dart.notNull(length); i++) {
- value = combine(value, this[dartx.get](i));
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- return value;
- }
- [dartx.fold](initialValue, combine) {
- dart.as(combine, dart.functionType(dart.dynamic, [dart.dynamic, E]));
- let value = initialValue;
- let length = this[dartx.length];
- for (let i = 0; i < dart.notNull(length); i++) {
- value = combine(value, this[dartx.get](i));
- if (length != this[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- return value;
- }
- [dartx.skip](count) {
- return new (_internal.SubListIterable$(E))(this, count, null);
- }
- [dartx.skipWhile](test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.SkipWhileIterable$(E))(this, test);
- }
- [dartx.take](count) {
- return new (_internal.SubListIterable$(E))(this, 0, count);
- }
- [dartx.takeWhile](test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- return new (_internal.TakeWhileIterable$(E))(this, test);
- }
- [dartx.toList](opts) {
- let growable = opts && 'growable' in opts ? opts.growable : true;
- let result = null;
- if (dart.notNull(growable)) {
- result = core.List$(E).new();
- result[dartx.length] = this[dartx.length];
- } else {
- result = core.List$(E).new(this[dartx.length]);
- }
- for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
- result[dartx.set](i, this[dartx.get](i));
- }
- return result;
- }
- [dartx.toSet]() {
- let result = core.Set$(E).new();
- for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
- result.add(this[dartx.get](i));
- }
- return result;
- }
- [dartx.add](element) {
- dart.as(element, E);
- this[dartx.set]((() => {
- let x = this[dartx.length];
- this[dartx.length] = dart.notNull(x) + 1;
- return x;
- })(), element);
- }
- [dartx.addAll](iterable) {
- dart.as(iterable, core.Iterable$(E));
- for (let element of iterable) {
- this[dartx.set]((() => {
- let x = this[dartx.length];
- this[dartx.length] = dart.notNull(x) + 1;
- return x;
- })(), element);
- }
- }
- [dartx.remove](element) {
- for (let i = 0; i < dart.notNull(this[dartx.length]); i++) {
- if (dart.equals(this[dartx.get](i), element)) {
- this[dartx.setRange](i, dart.notNull(this[dartx.length]) - 1, this, i + 1);
- this[dartx.length] = dart.notNull(this[dartx.length]) - 1;
- return true;
- }
- }
- return false;
- }
- [dartx.removeWhere](test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- ListMixin$()._filter(this, test, false);
- }
- [dartx.retainWhere](test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- ListMixin$()._filter(this, test, true);
- }
- static _filter(source, test, retainMatching) {
- let retained = [];
- let length = source[dartx.length];
- for (let i = 0; i < dart.notNull(length); i++) {
- let element = source[dartx.get](i);
- if (dart.dcall(test, element) == retainMatching) {
- retained[dartx.add](element);
- }
- if (length != source[dartx.length]) {
- dart.throw(new core.ConcurrentModificationError(source));
- }
- }
- if (retained[dartx.length] != source[dartx.length]) {
- source[dartx.setRange](0, retained[dartx.length], retained);
- source[dartx.length] = retained[dartx.length];
- }
- }
- [dartx.clear]() {
- this[dartx.length] = 0;
- }
- [dartx.removeLast]() {
- if (this[dartx.length] == 0) {
- dart.throw(_internal.IterableElementError.noElement());
- }
- let result = this[dartx.get](dart.notNull(this[dartx.length]) - 1);
- this[dartx.length] = dart.notNull(this[dartx.length]) - 1;
- return result;
- }
- [dartx.sort](compare) {
- if (compare === void 0) compare = null;
- dart.as(compare, dart.functionType(core.int, [E, E]));
- _internal.Sort.sort(this, compare == null ? core.Comparable.compare : compare);
- }
- [dartx.shuffle](random) {
- if (random === void 0) random = null;
- if (random == null) random = math.Random.new();
- let length = this[dartx.length];
- while (dart.notNull(length) > 1) {
- let pos = random.nextInt(length);
- length = dart.notNull(length) - 1;
- let tmp = this[dartx.get](length);
- this[dartx.set](length, this[dartx.get](pos));
- this[dartx.set](pos, tmp);
- }
- }
- [dartx.asMap]() {
- return new (_internal.ListMapView$(E))(this);
- }
- [dartx.sublist](start, end) {
- if (end === void 0) end = null;
- let listLength = this[dartx.length];
- if (end == null) end = listLength;
- core.RangeError.checkValidRange(start, end, listLength);
- let length = dart.notNull(end) - dart.notNull(start);
- let result = core.List$(E).new();
- result[dartx.length] = length;
- for (let i = 0; i < length; i++) {
- result[dartx.set](i, this[dartx.get](dart.notNull(start) + i));
- }
- return result;
- }
- [dartx.getRange](start, end) {
- core.RangeError.checkValidRange(start, end, this[dartx.length]);
- return new (_internal.SubListIterable$(E))(this, start, end);
- }
- [dartx.removeRange](start, end) {
- core.RangeError.checkValidRange(start, end, this[dartx.length]);
- let length = dart.notNull(end) - dart.notNull(start);
- this[dartx.setRange](start, dart.notNull(this[dartx.length]) - length, this, end);
- this[dartx.length] = dart.notNull(this[dartx.length]) - length;
- }
- [dartx.fillRange](start, end, fill) {
- if (fill === void 0) fill = null;
- dart.as(fill, E);
- core.RangeError.checkValidRange(start, end, this[dartx.length]);
- for (let i = start; dart.notNull(i) < dart.notNull(end); i = dart.notNull(i) + 1) {
- this[dartx.set](i, fill);
- }
- }
- [dartx.setRange](start, end, iterable, skipCount) {
- dart.as(iterable, core.Iterable$(E));
- if (skipCount === void 0) skipCount = 0;
- core.RangeError.checkValidRange(start, end, this[dartx.length]);
- let length = dart.notNull(end) - dart.notNull(start);
- if (length == 0) return;
- core.RangeError.checkNotNegative(skipCount, "skipCount");
- let otherList = null;
- let otherStart = null;
- if (dart.is(iterable, core.List)) {
- otherList = dart.as(iterable, core.List);
- otherStart = skipCount;
- } else {
- otherList = iterable[dartx.skip](skipCount)[dartx.toList]({growable: false});
- otherStart = 0;
- }
- if (dart.notNull(otherStart) + length > dart.notNull(otherList[dartx.length])) {
- dart.throw(_internal.IterableElementError.tooFew());
- }
- if (dart.notNull(otherStart) < dart.notNull(start)) {
- for (let i = length - 1; i >= 0; i--) {
- this[dartx.set](dart.notNull(start) + i, dart.as(otherList[dartx.get](dart.notNull(otherStart) + i), E));
- }
- } else {
- for (let i = 0; i < length; i++) {
- this[dartx.set](dart.notNull(start) + i, dart.as(otherList[dartx.get](dart.notNull(otherStart) + i), E));
- }
- }
- }
- [dartx.replaceRange](start, end, newContents) {
- dart.as(newContents, core.Iterable$(E));
- core.RangeError.checkValidRange(start, end, this[dartx.length]);
- if (!dart.is(newContents, _internal.EfficientLength)) {
- newContents = newContents[dartx.toList]();
- }
- let removeLength = dart.notNull(end) - dart.notNull(start);
- let insertLength = newContents[dartx.length];
- if (removeLength >= dart.notNull(insertLength)) {
- let delta = removeLength - dart.notNull(insertLength);
- let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
- let newLength = dart.notNull(this[dartx.length]) - delta;
- this[dartx.setRange](start, insertEnd, newContents);
- if (delta != 0) {
- this[dartx.setRange](insertEnd, newLength, this, end);
- this[dartx.length] = newLength;
- }
- } else {
- let delta = dart.notNull(insertLength) - removeLength;
- let newLength = dart.notNull(this[dartx.length]) + delta;
- let insertEnd = dart.notNull(start) + dart.notNull(insertLength);
- this[dartx.length] = newLength;
- this[dartx.setRange](insertEnd, newLength, this, end);
- this[dartx.setRange](start, insertEnd, newContents);
- }
- }
- [dartx.indexOf](element, startIndex) {
- if (startIndex === void 0) startIndex = 0;
- if (dart.notNull(startIndex) >= dart.notNull(this[dartx.length])) {
- return -1;
- }
- if (dart.notNull(startIndex) < 0) {
- startIndex = 0;
- }
- for (let i = startIndex; dart.notNull(i) < dart.notNull(this[dartx.length]); i = dart.notNull(i) + 1) {
- if (dart.equals(this[dartx.get](i), element)) {
- return i;
- }
- }
- return -1;
- }
- [dartx.lastIndexOf](element, startIndex) {
- if (startIndex === void 0) startIndex = null;
- if (startIndex == null) {
- startIndex = dart.notNull(this[dartx.length]) - 1;
- } else {
- if (dart.notNull(startIndex) < 0) {
- return -1;
- }
- if (dart.notNull(startIndex) >= dart.notNull(this[dartx.length])) {
- startIndex = dart.notNull(this[dartx.length]) - 1;
- }
- }
- for (let i = startIndex; dart.notNull(i) >= 0; i = dart.notNull(i) - 1) {
- if (dart.equals(this[dartx.get](i), element)) {
- return i;
- }
- }
- return -1;
- }
- [dartx.insert](index, element) {
- dart.as(element, E);
- core.RangeError.checkValueInInterval(index, 0, this[dartx.length], "index");
- if (index == this[dartx.length]) {
- this[dartx.add](element);
- return;
- }
- if (!(typeof index == 'number')) dart.throw(new core.ArgumentError(index));
- this[dartx.length] = dart.notNull(this[dartx.length]) + 1;
- this[dartx.setRange](dart.notNull(index) + 1, this[dartx.length], this, index);
- this[dartx.set](index, element);
- }
- [dartx.removeAt](index) {
- let result = this[dartx.get](index);
- this[dartx.setRange](index, dart.notNull(this[dartx.length]) - 1, this, dart.notNull(index) + 1);
- this[dartx.length] = dart.notNull(this[dartx.length]) - 1;
- return result;
- }
- [dartx.insertAll](index, iterable) {
- dart.as(iterable, core.Iterable$(E));
- core.RangeError.checkValueInInterval(index, 0, this[dartx.length], "index");
- if (dart.is(iterable, _internal.EfficientLength)) {
- iterable = iterable[dartx.toList]();
- }
- let insertionLength = iterable[dartx.length];
- this[dartx.length] = dart.notNull(this[dartx.length]) + dart.notNull(insertionLength);
- this[dartx.setRange](dart.notNull(index) + dart.notNull(insertionLength), this[dartx.length], this, index);
- this[dartx.setAll](index, iterable);
- }
- [dartx.setAll](index, iterable) {
- dart.as(iterable, core.Iterable$(E));
- if (dart.is(iterable, core.List)) {
- this[dartx.setRange](index, dart.notNull(index) + dart.notNull(iterable[dartx.length]), iterable);
- } else {
- for (let element of iterable) {
- this[dartx.set]((() => {
- let x = index;
- index = dart.notNull(x) + 1;
- return x;
- })(), element);
- }
- }
- }
- get [dartx.reversed]() {
- return new (_internal.ReversedListIterable$(E))(this);
- }
- toString() {
- return IterableBase.iterableToFullString(this, '[', ']');
- }
- }
- ListMixin[dart.implements] = () => [core.List$(E)];
- dart.setSignature(ListMixin, {
- methods: () => ({
- [dartx.elementAt]: [E, [core.int]],
- [dartx.forEach]: [dart.void, [dart.functionType(dart.void, [E])]],
- [dartx.contains]: [core.bool, [core.Object]],
- [dartx.every]: [core.bool, [dart.functionType(core.bool, [E])]],
- [dartx.any]: [core.bool, [dart.functionType(core.bool, [E])]],
- [dartx.firstWhere]: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
- [dartx.lastWhere]: [E, [dart.functionType(core.bool, [E])], {orElse: dart.functionType(E, [])}],
- [dartx.singleWhere]: [E, [dart.functionType(core.bool, [E])]],
- [dartx.join]: [core.String, [], [core.String]],
- [dartx.where]: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- [dartx.map]: [core.Iterable, [dart.functionType(dart.dynamic, [E])]],
- [dartx.expand]: [core.Iterable, [dart.functionType(core.Iterable, [E])]],
- [dartx.reduce]: [E, [dart.functionType(E, [E, E])]],
- [dartx.fold]: [dart.dynamic, [dart.dynamic, dart.functionType(dart.dynamic, [dart.dynamic, E])]],
- [dartx.skip]: [core.Iterable$(E), [core.int]],
- [dartx.skipWhile]: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- [dartx.take]: [core.Iterable$(E), [core.int]],
- [dartx.takeWhile]: [core.Iterable$(E), [dart.functionType(core.bool, [E])]],
- [dartx.toList]: [core.List$(E), [], {growable: core.bool}],
- [dartx.toSet]: [core.Set$(E), []],
- [dartx.add]: [dart.void, [E]],
- [dartx.addAll]: [dart.void, [core.Iterable$(E)]],
- [dartx.remove]: [core.bool, [core.Object]],
- [dartx.removeWhere]: [dart.void, [dart.functionType(core.bool, [E])]],
- [dartx.retainWhere]: [dart.void, [dart.functionType(core.bool, [E])]],
- [dartx.clear]: [dart.void, []],
- [dartx.removeLast]: [E, []],
- [dartx.sort]: [dart.void, [], [dart.functionType(core.int, [E, E])]],
- [dartx.shuffle]: [dart.void, [], [math.Random]],
- [dartx.asMap]: [core.Map$(core.int, E), []],
- [dartx.sublist]: [core.List$(E), [core.int], [core.int]],
- [dartx.getRange]: [core.Iterable$(E), [core.int, core.int]],
- [dartx.removeRange]: [dart.void, [core.int, core.int]],
- [dartx.fillRange]: [dart.void, [core.int, core.int], [E]],
- [dartx.setRange]: [dart.void, [core.int, core.int, core.Iterable$(E)], [core.int]],
- [dartx.replaceRange]: [dart.void, [core.int, core.int, core.Iterable$(E)]],
- [dartx.indexOf]: [core.int, [core.Object], [core.int]],
- [dartx.lastIndexOf]: [core.int, [core.Object], [core.int]],
- [dartx.insert]: [dart.void, [core.int, E]],
- [dartx.removeAt]: [E, [core.int]],
- [dartx.insertAll]: [dart.void, [core.int, core.Iterable$(E)]],
- [dartx.setAll]: [dart.void, [core.int, core.Iterable$(E)]]
- }),
- statics: () => ({_filter: [dart.void, [core.List, dart.functionType(core.bool, [dart.dynamic]), core.bool]]}),
- names: ['_filter']
- });
- return ListMixin;
- });
- let ListMixin = ListMixin$();
- const ListBase$ = dart.generic(function(E) {
- class ListBase extends dart.mixin(core.Object, ListMixin$(E)) {
- static listToString(list) {
- return IterableBase.iterableToFullString(list, '[', ']');
- }
- }
- dart.setSignature(ListBase, {
- statics: () => ({listToString: [core.String, [core.List]]}),
- names: ['listToString']
- });
- return ListBase;
- });
- let ListBase = ListBase$();
- const MapMixin$ = dart.generic(function(K, V) {
- class MapMixin extends core.Object {
- forEach(action) {
- dart.as(action, dart.functionType(dart.void, [K, V]));
- for (let key of this.keys) {
- action(key, this.get(key));
- }
- }
- addAll(other) {
- dart.as(other, core.Map$(K, V));
- for (let key of other[dartx.keys]) {
- this.set(key, other[dartx.get](key));
- }
- }
- containsValue(value) {
- for (let key of this.keys) {
- if (dart.equals(this.get(key), value)) return true;
- }
- return false;
- }
- putIfAbsent(key, ifAbsent) {
- dart.as(key, K);
- dart.as(ifAbsent, dart.functionType(V, []));
- if (dart.notNull(this.keys[dartx.contains](key))) {
- return this.get(key);
- }
- return this.set(key, ifAbsent());
- }
- containsKey(key) {
- return this.keys[dartx.contains](key);
- }
- get length() {
- return this.keys[dartx.length];
- }
- get isEmpty() {
- return this.keys[dartx.isEmpty];
- }
- get isNotEmpty() {
- return this.keys[dartx.isNotEmpty];
- }
- get values() {
- return new (_MapBaseValueIterable$(V))(this);
- }
- toString() {
- return Maps.mapToString(this);
- }
- }
- MapMixin[dart.implements] = () => [core.Map$(K, V)];
- dart.setSignature(MapMixin, {
- methods: () => ({
- forEach: [dart.void, [dart.functionType(dart.void, [K, V])]],
- addAll: [dart.void, [core.Map$(K, V)]],
- containsValue: [core.bool, [core.Object]],
- putIfAbsent: [V, [K, dart.functionType(V, [])]],
- containsKey: [core.bool, [core.Object]]
- })
- });
- dart.defineExtensionMembers(MapMixin, [
- 'forEach',
- 'addAll',
- 'containsValue',
- 'putIfAbsent',
- 'containsKey',
- 'length',
- 'isEmpty',
- 'isNotEmpty',
- 'values'
- ]);
- return MapMixin;
- });
- let MapMixin = MapMixin$();
- const MapBase$ = dart.generic(function(K, V) {
- class MapBase extends dart.mixin(core.Object, MapMixin$(K, V)) {}
- return MapBase;
- });
- let MapBase = MapBase$();
- const _UnmodifiableMapMixin$ = dart.generic(function(K, V) {
- class _UnmodifiableMapMixin extends core.Object {
- set(key, value) {
- dart.as(key, K);
- dart.as(value, V);
- dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
- return value;
- }
- addAll(other) {
- dart.as(other, core.Map$(K, V));
- dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
- }
- clear() {
- dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
- }
- remove(key) {
- dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
- }
- putIfAbsent(key, ifAbsent) {
- dart.as(key, K);
- dart.as(ifAbsent, dart.functionType(V, []));
- dart.throw(new core.UnsupportedError("Cannot modify unmodifiable map"));
- }
- }
- _UnmodifiableMapMixin[dart.implements] = () => [core.Map$(K, V)];
- dart.setSignature(_UnmodifiableMapMixin, {
- methods: () => ({
- set: [dart.void, [K, V]],
- addAll: [dart.void, [core.Map$(K, V)]],
- clear: [dart.void, []],
- remove: [V, [core.Object]],
- putIfAbsent: [V, [K, dart.functionType(V, [])]]
- })
- });
- dart.defineExtensionMembers(_UnmodifiableMapMixin, [
- 'set',
- 'addAll',
- 'clear',
- 'remove',
- 'putIfAbsent'
- ]);
- return _UnmodifiableMapMixin;
- });
- let _UnmodifiableMapMixin = _UnmodifiableMapMixin$();
- const UnmodifiableMapBase$ = dart.generic(function(K, V) {
- class UnmodifiableMapBase extends dart.mixin(MapBase$(K, V), _UnmodifiableMapMixin$(K, V)) {
- UnmodifiableMapBase() {
- super.MapBase(...arguments);
- }
- }
- return UnmodifiableMapBase;
- });
- let UnmodifiableMapBase = UnmodifiableMapBase$();
- const _map = Symbol('_map');
- const _MapBaseValueIterable$ = dart.generic(function(V) {
- class _MapBaseValueIterable extends IterableBase$(V) {
- _MapBaseValueIterable(map) {
- this[_map] = map;
- super.IterableBase();
- }
- get length() {
- return this[_map][dartx.length];
- }
- get isEmpty() {
- return this[_map][dartx.isEmpty];
- }
- get isNotEmpty() {
- return this[_map][dartx.isNotEmpty];
- }
- get first() {
- return dart.as(this[_map][dartx.get](this[_map][dartx.keys][dartx.first]), V);
- }
- get single() {
- return dart.as(this[_map][dartx.get](this[_map][dartx.keys][dartx.single]), V);
- }
- get last() {
- return dart.as(this[_map][dartx.get](this[_map][dartx.keys][dartx.last]), V);
- }
- get iterator() {
- return new (_MapBaseValueIterator$(V))(this[_map]);
- }
- }
- _MapBaseValueIterable[dart.implements] = () => [_internal.EfficientLength];
- dart.setSignature(_MapBaseValueIterable, {
- constructors: () => ({_MapBaseValueIterable: [_MapBaseValueIterable$(V), [core.Map]]})
- });
- dart.defineExtensionMembers(_MapBaseValueIterable, [
- 'length',
- 'isEmpty',
- 'isNotEmpty',
- 'first',
- 'single',
- 'last',
- 'iterator'
- ]);
- return _MapBaseValueIterable;
- });
- let _MapBaseValueIterable = _MapBaseValueIterable$();
- const _keys = Symbol('_keys');
- const _MapBaseValueIterator$ = dart.generic(function(V) {
- class _MapBaseValueIterator extends core.Object {
- _MapBaseValueIterator(map) {
- this[_map] = map;
- this[_keys] = map[dartx.keys][dartx.iterator];
- this[_current] = null;
- }
- moveNext() {
- if (dart.notNull(this[_keys].moveNext())) {
- this[_current] = dart.as(this[_map][dartx.get](this[_keys].current), V);
- return true;
- }
- this[_current] = null;
- return false;
- }
- get current() {
- return this[_current];
- }
- }
- _MapBaseValueIterator[dart.implements] = () => [core.Iterator$(V)];
- dart.setSignature(_MapBaseValueIterator, {
- constructors: () => ({_MapBaseValueIterator: [_MapBaseValueIterator$(V), [core.Map]]}),
- methods: () => ({moveNext: [core.bool, []]})
- });
- return _MapBaseValueIterator;
- });
- let _MapBaseValueIterator = _MapBaseValueIterator$();
- const MapView$ = dart.generic(function(K, V) {
- class MapView extends core.Object {
- MapView(map) {
- this[_map] = map;
- }
- get(key) {
- return this[_map][dartx.get](key);
- }
- set(key, value) {
- dart.as(key, K);
- dart.as(value, V);
- this[_map][dartx.set](key, value);
- return value;
- }
- addAll(other) {
- dart.as(other, core.Map$(K, V));
- this[_map][dartx.addAll](other);
- }
- clear() {
- this[_map][dartx.clear]();
- }
- putIfAbsent(key, ifAbsent) {
- dart.as(key, K);
- dart.as(ifAbsent, dart.functionType(V, []));
- return this[_map][dartx.putIfAbsent](key, ifAbsent);
- }
- containsKey(key) {
- return this[_map][dartx.containsKey](key);
- }
- containsValue(value) {
- return this[_map][dartx.containsValue](value);
- }
- forEach(action) {
- dart.as(action, dart.functionType(dart.void, [K, V]));
- this[_map][dartx.forEach](action);
- }
- get isEmpty() {
- return this[_map][dartx.isEmpty];
- }
- get isNotEmpty() {
- return this[_map][dartx.isNotEmpty];
- }
- get length() {
- return this[_map][dartx.length];
- }
- get keys() {
- return this[_map][dartx.keys];
- }
- remove(key) {
- return this[_map][dartx.remove](key);
- }
- toString() {
- return dart.toString(this[_map]);
- }
- get values() {
- return this[_map][dartx.values];
- }
- }
- MapView[dart.implements] = () => [core.Map$(K, V)];
- dart.setSignature(MapView, {
- constructors: () => ({MapView: [MapView$(K, V), [core.Map$(K, V)]]}),
- methods: () => ({
- get: [V, [core.Object]],
- set: [dart.void, [K, V]],
- addAll: [dart.void, [core.Map$(K, V)]],
- clear: [dart.void, []],
- putIfAbsent: [V, [K, dart.functionType(V, [])]],
- containsKey: [core.bool, [core.Object]],
- containsValue: [core.bool, [core.Object]],
- forEach: [dart.void, [dart.functionType(dart.void, [K, V])]],
- remove: [V, [core.Object]]
- })
- });
- dart.defineExtensionMembers(MapView, [
- 'get',
- 'set',
- 'addAll',
- 'clear',
- 'putIfAbsent',
- 'containsKey',
- 'containsValue',
- 'forEach',
- 'remove',
- 'isEmpty',
- 'isNotEmpty',
- 'length',
- 'keys',
- 'values'
- ]);
- return MapView;
- });
- let MapView = MapView$();
- const UnmodifiableMapView$ = dart.generic(function(K, V) {
- class UnmodifiableMapView extends dart.mixin(MapView$(K, V), _UnmodifiableMapMixin$(K, V)) {
- UnmodifiableMapView() {
- super.MapView(...arguments);
- }
- }
- return UnmodifiableMapView;
- });
- let UnmodifiableMapView = UnmodifiableMapView$();
- class Maps extends core.Object {
- static containsValue(map, value) {
- for (let v of map[dartx.values]) {
- if (dart.equals(value, v)) {
- return true;
- }
- }
- return false;
- }
- static containsKey(map, key) {
- for (let k of map[dartx.keys]) {
- if (dart.equals(key, k)) {
- return true;
- }
- }
- return false;
- }
- static putIfAbsent(map, key, ifAbsent) {
- if (dart.notNull(map[dartx.containsKey](key))) {
- return map[dartx.get](key);
- }
- let v = ifAbsent();
- map[dartx.set](key, v);
- return v;
- }
- static clear(map) {
- for (let k of map[dartx.keys][dartx.toList]()) {
- map[dartx.remove](k);
- }
- }
- static forEach(map, f) {
- for (let k of map[dartx.keys]) {
- dart.dcall(f, k, map[dartx.get](k));
- }
- }
- static getValues(map) {
- return map[dartx.keys][dartx.map](dart.fn(key => map[dartx.get](key)));
- }
- static length(map) {
- return map[dartx.keys][dartx.length];
- }
- static isEmpty(map) {
- return map[dartx.keys][dartx.isEmpty];
- }
- static isNotEmpty(map) {
- return map[dartx.keys][dartx.isNotEmpty];
- }
- static mapToString(m) {
- if (dart.notNull(IterableBase._isToStringVisiting(m))) {
- return '{...}';
- }
- let result = new core.StringBuffer();
- try {
- IterableBase._toStringVisiting[dartx.add](m);
- result.write('{');
- let first = true;
- m[dartx.forEach](dart.fn((k, v) => {
- if (!first) {
- result.write(', ');
- }
- first = false;
- result.write(k);
- result.write(': ');
- result.write(v);
- }, dart.void, [dart.dynamic, dart.dynamic]));
- result.write('}');
- } finally {
- dart.assert(core.identical(IterableBase._toStringVisiting[dartx.last], m));
- IterableBase._toStringVisiting[dartx.removeLast]();
- }
- return result.toString();
- }
- static _id(x) {
- return x;
- }
- static _fillMapWithMappedIterable(map, iterable, key, value) {
- if (key == null) key = Maps._id;
- if (value == null) value = Maps._id;
- for (let element of iterable) {
- map[dartx.set](dart.dcall(key, element), dart.dcall(value, element));
- }
- }
- static _fillMapWithIterables(map, keys, values) {
- let keyIterator = keys[dartx.iterator];
- let valueIterator = values[dartx.iterator];
- let hasNextKey = keyIterator.moveNext();
- let hasNextValue = valueIterator.moveNext();
- while (dart.notNull(hasNextKey) && dart.notNull(hasNextValue)) {
- map[dartx.set](keyIterator.current, valueIterator.current);
- hasNextKey = keyIterator.moveNext();
- hasNextValue = valueIterator.moveNext();
- }
- if (dart.notNull(hasNextKey) || dart.notNull(hasNextValue)) {
- dart.throw(new core.ArgumentError("Iterables do not have same length."));
- }
- }
- }
- dart.setSignature(Maps, {
- statics: () => ({
- containsValue: [core.bool, [core.Map, dart.dynamic]],
- containsKey: [core.bool, [core.Map, dart.dynamic]],
- putIfAbsent: [dart.dynamic, [core.Map, dart.dynamic, dart.functionType(dart.dynamic, [])]],
- clear: [dart.dynamic, [core.Map]],
- forEach: [dart.dynamic, [core.Map, dart.functionType(dart.void, [dart.dynamic, dart.dynamic])]],
- getValues: [core.Iterable, [core.Map]],
- length: [core.int, [core.Map]],
- isEmpty: [core.bool, [core.Map]],
- isNotEmpty: [core.bool, [core.Map]],
- mapToString: [core.String, [core.Map]],
- _id: [dart.dynamic, [dart.dynamic]],
- _fillMapWithMappedIterable: [dart.void, [core.Map, core.Iterable, dart.functionType(dart.dynamic, [dart.dynamic]), dart.functionType(dart.dynamic, [dart.dynamic])]],
- _fillMapWithIterables: [dart.void, [core.Map, core.Iterable, core.Iterable]]
- }),
- names: ['containsValue', 'containsKey', 'putIfAbsent', 'clear', 'forEach', 'getValues', 'length', 'isEmpty', 'isNotEmpty', 'mapToString', '_id', '_fillMapWithMappedIterable', '_fillMapWithIterables']
- });
- const Queue$ = dart.generic(function(E) {
- class Queue extends core.Object {
- static new() {
- return new (ListQueue$(E))();
- }
- static from(elements) {
- return ListQueue$(E).from(elements);
- }
- [Symbol.iterator]() {
- return new dart.JsIterator(this.iterator);
- }
- }
- Queue[dart.implements] = () => [core.Iterable$(E), _internal.EfficientLength];
- dart.setSignature(Queue, {
- constructors: () => ({
- new: [Queue$(E), []],
- from: [Queue$(E), [core.Iterable]]
- })
- });
- return Queue;
- });
- let Queue = Queue$();
- const _element = Symbol('_element');
- const _link = Symbol('_link');
- const _asNonSentinelEntry = Symbol('_asNonSentinelEntry');
- const DoubleLinkedQueueEntry$ = dart.generic(function(E) {
- class DoubleLinkedQueueEntry extends core.Object {
- DoubleLinkedQueueEntry(e) {
- this[_element] = e;
- this[_previous] = null;
- this[_next] = null;
- }
- [_link](previous, next) {
- dart.as(previous, DoubleLinkedQueueEntry$(E));
- dart.as(next, DoubleLinkedQueueEntry$(E));
- this[_next] = next;
- this[_previous] = previous;
- previous[_next] = this;
- next[_previous] = this;
- }
- append(e) {
- dart.as(e, E);
- new (DoubleLinkedQueueEntry$(E))(e)[_link](this, this[_next]);
- }
- prepend(e) {
- dart.as(e, E);
- new (DoubleLinkedQueueEntry$(E))(e)[_link](this[_previous], this);
- }
- remove() {
- this[_previous][_next] = this[_next];
- this[_next][_previous] = this[_previous];
- this[_next] = null;
- this[_previous] = null;
- return this[_element];
- }
- [_asNonSentinelEntry]() {
- return this;
- }
- previousEntry() {
- return this[_previous][_asNonSentinelEntry]();
- }
- nextEntry() {
- return this[_next][_asNonSentinelEntry]();
- }
- get element() {
- return this[_element];
- }
- set element(e) {
- dart.as(e, E);
- this[_element] = e;
- }
- }
- dart.setSignature(DoubleLinkedQueueEntry, {
- constructors: () => ({DoubleLinkedQueueEntry: [DoubleLinkedQueueEntry$(E), [E]]}),
- methods: () => ({
- [_link]: [dart.void, [DoubleLinkedQueueEntry$(E), DoubleLinkedQueueEntry$(E)]],
- append: [dart.void, [E]],
- prepend: [dart.void, [E]],
- remove: [E, []],
- [_asNonSentinelEntry]: [DoubleLinkedQueueEntry$(E), []],
- previousEntry: [DoubleLinkedQueueEntry$(E), []],
- nextEntry: [DoubleLinkedQueueEntry$(E), []]
- })
- });
- return DoubleLinkedQueueEntry;
- });
- let DoubleLinkedQueueEntry = DoubleLinkedQueueEntry$();
- const _DoubleLinkedQueueEntrySentinel$ = dart.generic(function(E) {
- class _DoubleLinkedQueueEntrySentinel extends DoubleLinkedQueueEntry$(E) {
- _DoubleLinkedQueueEntrySentinel() {
- super.DoubleLinkedQueueEntry(null);
- this[_link](this, this);
- }
- remove() {
- dart.throw(_internal.IterableElementError.noElement());
- }
- [_asNonSentinelEntry]() {
- return null;
- }
- set element(e) {
- dart.as(e, E);
- dart.assert(false);
- }
- get element() {
- dart.throw(_internal.IterableElementError.noElement());
- }
- }
- dart.setSignature(_DoubleLinkedQueueEntrySentinel, {
- constructors: () => ({_DoubleLinkedQueueEntrySentinel: [_DoubleLinkedQueueEntrySentinel$(E), []]}),
- methods: () => ({
- remove: [E, []],
- [_asNonSentinelEntry]: [DoubleLinkedQueueEntry$(E), []]
- })
- });
- return _DoubleLinkedQueueEntrySentinel;
- });
- let _DoubleLinkedQueueEntrySentinel = _DoubleLinkedQueueEntrySentinel$();
- const _sentinel = Symbol('_sentinel');
- const _elementCount = Symbol('_elementCount');
- const _filter = Symbol('_filter');
- const DoubleLinkedQueue$ = dart.generic(function(E) {
- class DoubleLinkedQueue extends IterableBase$(E) {
- DoubleLinkedQueue() {
- this[_sentinel] = null;
- this[_elementCount] = 0;
- super.IterableBase();
- this[_sentinel] = new (_DoubleLinkedQueueEntrySentinel$(E))();
- }
- static from(elements) {
- let list = new (DoubleLinkedQueue$(E))();
- for (let e of elements) {
- dart.as(e, E);
- list.addLast(e);
- }
- return dart.as(list, DoubleLinkedQueue$(E));
- }
- get length() {
- return this[_elementCount];
- }
- addLast(value) {
- dart.as(value, E);
- this[_sentinel].prepend(value);
- this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
- }
- addFirst(value) {
- dart.as(value, E);
- this[_sentinel].append(value);
- this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
- }
- add(value) {
- dart.as(value, E);
- this[_sentinel].prepend(value);
- this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
- }
- addAll(iterable) {
- dart.as(iterable, core.Iterable$(E));
- for (let value of iterable) {
- this[_sentinel].prepend(value);
- this[_elementCount] = dart.notNull(this[_elementCount]) + 1;
- }
- }
- removeLast() {
- let result = this[_sentinel][_previous].remove();
- this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
- return result;
- }
- removeFirst() {
- let result = this[_sentinel][_next].remove();
- this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
- return result;
- }
- remove(o) {
- let entry = this[_sentinel][_next];
- while (!core.identical(entry, this[_sentinel])) {
- if (dart.equals(entry.element, o)) {
- entry.remove();
- this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
- return true;
- }
- entry = entry[_next];
- }
- return false;
- }
- [_filter](test, removeMatching) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let entry = this[_sentinel][_next];
- while (!core.identical(entry, this[_sentinel])) {
- let next = entry[_next];
- if (core.identical(removeMatching, test(entry.element))) {
- entry.remove();
- this[_elementCount] = dart.notNull(this[_elementCount]) - 1;
- }
- entry = next;
- }
- }
- removeWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- this[_filter](test, true);
- }
- retainWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- this[_filter](test, false);
- }
- get first() {
- return this[_sentinel][_next].element;
- }
- get last() {
- return this[_sentinel][_previous].element;
- }
- get single() {
- if (core.identical(this[_sentinel][_next], this[_sentinel][_previous])) {
- return this[_sentinel][_next].element;
- }
- dart.throw(_internal.IterableElementError.tooMany());
- }
- lastEntry() {
- return this[_sentinel].previousEntry();
- }
- firstEntry() {
- return this[_sentinel].nextEntry();
- }
- get isEmpty() {
- return core.identical(this[_sentinel][_next], this[_sentinel]);
- }
- clear() {
- this[_sentinel][_next] = this[_sentinel];
- this[_sentinel][_previous] = this[_sentinel];
- this[_elementCount] = 0;
- }
- forEachEntry(f) {
- dart.as(f, dart.functionType(dart.void, [DoubleLinkedQueueEntry$(E)]));
- let entry = this[_sentinel][_next];
- while (!core.identical(entry, this[_sentinel])) {
- let nextEntry = entry[_next];
- f(entry);
- entry = nextEntry;
- }
- }
- get iterator() {
- return new (_DoubleLinkedQueueIterator$(E))(this[_sentinel]);
- }
- toString() {
- return IterableBase.iterableToFullString(this, '{', '}');
- }
- }
- DoubleLinkedQueue[dart.implements] = () => [Queue$(E)];
- dart.setSignature(DoubleLinkedQueue, {
- constructors: () => ({
- DoubleLinkedQueue: [DoubleLinkedQueue$(E), []],
- from: [DoubleLinkedQueue$(E), [core.Iterable]]
- }),
- methods: () => ({
- addLast: [dart.void, [E]],
- addFirst: [dart.void, [E]],
- add: [dart.void, [E]],
- addAll: [dart.void, [core.Iterable$(E)]],
- removeLast: [E, []],
- removeFirst: [E, []],
- remove: [core.bool, [core.Object]],
- [_filter]: [dart.void, [dart.functionType(core.bool, [E]), core.bool]],
- removeWhere: [dart.void, [dart.functionType(core.bool, [E])]],
- retainWhere: [dart.void, [dart.functionType(core.bool, [E])]],
- lastEntry: [DoubleLinkedQueueEntry$(E), []],
- firstEntry: [DoubleLinkedQueueEntry$(E), []],
- clear: [dart.void, []],
- forEachEntry: [dart.void, [dart.functionType(dart.void, [DoubleLinkedQueueEntry$(E)])]]
- })
- });
- dart.defineExtensionMembers(DoubleLinkedQueue, [
- 'length',
- 'first',
- 'last',
- 'single',
- 'isEmpty',
- 'iterator'
- ]);
- return DoubleLinkedQueue;
- });
- let DoubleLinkedQueue = DoubleLinkedQueue$();
- const _nextEntry = Symbol('_nextEntry');
- const _DoubleLinkedQueueIterator$ = dart.generic(function(E) {
- class _DoubleLinkedQueueIterator extends core.Object {
- _DoubleLinkedQueueIterator(sentinel) {
- this[_sentinel] = sentinel;
- this[_nextEntry] = sentinel[_next];
- this[_current] = null;
- }
- moveNext() {
- if (!core.identical(this[_nextEntry], this[_sentinel])) {
- this[_current] = this[_nextEntry][_element];
- this[_nextEntry] = this[_nextEntry][_next];
- return true;
- }
- this[_current] = null;
- this[_nextEntry] = this[_sentinel] = null;
- return false;
- }
- get current() {
- return this[_current];
- }
- }
- _DoubleLinkedQueueIterator[dart.implements] = () => [core.Iterator$(E)];
- dart.setSignature(_DoubleLinkedQueueIterator, {
- constructors: () => ({_DoubleLinkedQueueIterator: [_DoubleLinkedQueueIterator$(E), [_DoubleLinkedQueueEntrySentinel$(E)]]}),
- methods: () => ({moveNext: [core.bool, []]})
- });
- return _DoubleLinkedQueueIterator;
- });
- let _DoubleLinkedQueueIterator = _DoubleLinkedQueueIterator$();
- const _head = Symbol('_head');
- const _tail = Symbol('_tail');
- const _table = Symbol('_table');
- const _checkModification = Symbol('_checkModification');
- const _writeToList = Symbol('_writeToList');
- const _add = Symbol('_add');
- const _preGrow = Symbol('_preGrow');
- const _remove = Symbol('_remove');
- const _filterWhere = Symbol('_filterWhere');
- const _grow = Symbol('_grow');
- const ListQueue$ = dart.generic(function(E) {
- class ListQueue extends IterableBase$(E) {
- ListQueue(initialCapacity) {
- if (initialCapacity === void 0) initialCapacity = null;
- this[_head] = 0;
- this[_tail] = 0;
- this[_table] = null;
- this[_modificationCount] = 0;
- super.IterableBase();
- if (initialCapacity == null || dart.notNull(initialCapacity) < dart.notNull(ListQueue$()._INITIAL_CAPACITY)) {
- initialCapacity = ListQueue$()._INITIAL_CAPACITY;
- } else if (!dart.notNull(ListQueue$()._isPowerOf2(initialCapacity))) {
- initialCapacity = ListQueue$()._nextPowerOf2(initialCapacity);
- }
- dart.assert(ListQueue$()._isPowerOf2(initialCapacity));
- this[_table] = core.List$(E).new(initialCapacity);
- }
- static from(elements) {
- if (dart.is(elements, core.List)) {
- let length = elements[dartx.length];
- let queue = new (ListQueue$(E))(dart.notNull(length) + 1);
- dart.assert(dart.notNull(queue[_table][dartx.length]) > dart.notNull(length));
- let sourceList = elements;
- queue[_table][dartx.setRange](0, length, dart.as(sourceList, core.Iterable$(E)), 0);
- queue[_tail] = length;
- return queue;
- } else {
- let capacity = ListQueue$()._INITIAL_CAPACITY;
- if (dart.is(elements, _internal.EfficientLength)) {
- capacity = elements[dartx.length];
- }
- let result = new (ListQueue$(E))(capacity);
- for (let element of elements) {
- dart.as(element, E);
- result.addLast(element);
- }
- return result;
- }
- }
- get iterator() {
- return new (_ListQueueIterator$(E))(this);
- }
- forEach(action) {
- dart.as(action, dart.functionType(dart.void, [E]));
- let modificationCount = this[_modificationCount];
- for (let i = this[_head]; i != this[_tail]; i = dart.notNull(i) + 1 & dart.notNull(this[_table][dartx.length]) - 1) {
- action(this[_table][dartx.get](i));
- this[_checkModification](modificationCount);
- }
- }
- get isEmpty() {
- return this[_head] == this[_tail];
- }
- get length() {
- return dart.notNull(this[_tail]) - dart.notNull(this[_head]) & dart.notNull(this[_table][dartx.length]) - 1;
- }
- get first() {
- if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
- return this[_table][dartx.get](this[_head]);
- }
- get last() {
- if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
- return this[_table][dartx.get](dart.notNull(this[_tail]) - 1 & dart.notNull(this[_table][dartx.length]) - 1);
- }
- get single() {
- if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
- if (dart.notNull(this.length) > 1) dart.throw(_internal.IterableElementError.tooMany());
- return this[_table][dartx.get](this[_head]);
- }
- elementAt(index) {
- core.RangeError.checkValidIndex(index, this);
- return this[_table][dartx.get](dart.notNull(this[_head]) + dart.notNull(index) & dart.notNull(this[_table][dartx.length]) - 1);
- }
- toList(opts) {
- let growable = opts && 'growable' in opts ? opts.growable : true;
- let list = null;
- if (dart.notNull(growable)) {
- list = core.List$(E).new();
- list[dartx.length] = this.length;
- } else {
- list = core.List$(E).new(this.length);
- }
- this[_writeToList](list);
- return list;
- }
- add(element) {
- dart.as(element, E);
- this[_add](element);
- }
- addAll(elements) {
- dart.as(elements, core.Iterable$(E));
- if (dart.is(elements, core.List)) {
- let list = dart.as(elements, core.List);
- let addCount = list[dartx.length];
- let length = this.length;
- if (dart.notNull(length) + dart.notNull(addCount) >= dart.notNull(this[_table][dartx.length])) {
- this[_preGrow](dart.notNull(length) + dart.notNull(addCount));
- this[_table][dartx.setRange](length, dart.notNull(length) + dart.notNull(addCount), dart.as(list, core.Iterable$(E)), 0);
- this[_tail] = dart.notNull(this[_tail]) + dart.notNull(addCount);
- } else {
- let endSpace = dart.notNull(this[_table][dartx.length]) - dart.notNull(this[_tail]);
- if (dart.notNull(addCount) < endSpace) {
- this[_table][dartx.setRange](this[_tail], dart.notNull(this[_tail]) + dart.notNull(addCount), dart.as(list, core.Iterable$(E)), 0);
- this[_tail] = dart.notNull(this[_tail]) + dart.notNull(addCount);
- } else {
- let preSpace = dart.notNull(addCount) - endSpace;
- this[_table][dartx.setRange](this[_tail], dart.notNull(this[_tail]) + endSpace, dart.as(list, core.Iterable$(E)), 0);
- this[_table][dartx.setRange](0, preSpace, dart.as(list, core.Iterable$(E)), endSpace);
- this[_tail] = preSpace;
- }
- }
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- } else {
- for (let element of elements)
- this[_add](element);
- }
- }
- remove(object) {
- for (let i = this[_head]; i != this[_tail]; i = dart.notNull(i) + 1 & dart.notNull(this[_table][dartx.length]) - 1) {
- let element = this[_table][dartx.get](i);
- if (dart.equals(element, object)) {
- this[_remove](i);
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- return true;
- }
- }
- return false;
- }
- [_filterWhere](test, removeMatching) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let index = this[_head];
- let modificationCount = this[_modificationCount];
- let i = this[_head];
- while (i != this[_tail]) {
- let element = this[_table][dartx.get](i);
- let remove = core.identical(removeMatching, test(element));
- this[_checkModification](modificationCount);
- if (remove) {
- i = this[_remove](i);
- modificationCount = this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- } else {
- i = dart.notNull(i) + 1 & dart.notNull(this[_table][dartx.length]) - 1;
- }
- }
- }
- removeWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- this[_filterWhere](test, true);
- }
- retainWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- this[_filterWhere](test, false);
- }
- clear() {
- if (this[_head] != this[_tail]) {
- for (let i = this[_head]; i != this[_tail]; i = dart.notNull(i) + 1 & dart.notNull(this[_table][dartx.length]) - 1) {
- this[_table][dartx.set](i, null);
- }
- this[_head] = this[_tail] = 0;
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- }
- }
- toString() {
- return IterableBase.iterableToFullString(this, "{", "}");
- }
- addLast(element) {
- dart.as(element, E);
- this[_add](element);
- }
- addFirst(element) {
- dart.as(element, E);
- this[_head] = dart.notNull(this[_head]) - 1 & dart.notNull(this[_table][dartx.length]) - 1;
- this[_table][dartx.set](this[_head], element);
- if (this[_head] == this[_tail]) this[_grow]();
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- }
- removeFirst() {
- if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- let result = this[_table][dartx.get](this[_head]);
- this[_table][dartx.set](this[_head], null);
- this[_head] = dart.notNull(this[_head]) + 1 & dart.notNull(this[_table][dartx.length]) - 1;
- return result;
- }
- removeLast() {
- if (this[_head] == this[_tail]) dart.throw(_internal.IterableElementError.noElement());
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- this[_tail] = dart.notNull(this[_tail]) - 1 & dart.notNull(this[_table][dartx.length]) - 1;
- let result = this[_table][dartx.get](this[_tail]);
- this[_table][dartx.set](this[_tail], null);
- return result;
- }
- static _isPowerOf2(number) {
- return (dart.notNull(number) & dart.notNull(number) - 1) == 0;
- }
- static _nextPowerOf2(number) {
- dart.assert(dart.notNull(number) > 0);
- number = (dart.notNull(number) << 1) - 1;
- for (;;) {
- let nextNumber = dart.notNull(number) & dart.notNull(number) - 1;
- if (nextNumber == 0) return number;
- number = nextNumber;
- }
- }
- [_checkModification](expectedModificationCount) {
- if (expectedModificationCount != this[_modificationCount]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- [_add](element) {
- dart.as(element, E);
- this[_table][dartx.set](this[_tail], element);
- this[_tail] = dart.notNull(this[_tail]) + 1 & dart.notNull(this[_table][dartx.length]) - 1;
- if (this[_head] == this[_tail]) this[_grow]();
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- }
- [_remove](offset) {
- let mask = dart.notNull(this[_table][dartx.length]) - 1;
- let startDistance = dart.notNull(offset) - dart.notNull(this[_head]) & mask;
- let endDistance = dart.notNull(this[_tail]) - dart.notNull(offset) & mask;
- if (startDistance < endDistance) {
- let i = offset;
- while (i != this[_head]) {
- let prevOffset = dart.notNull(i) - 1 & mask;
- this[_table][dartx.set](i, this[_table][dartx.get](prevOffset));
- i = prevOffset;
- }
- this[_table][dartx.set](this[_head], null);
- this[_head] = dart.notNull(this[_head]) + 1 & mask;
- return dart.notNull(offset) + 1 & mask;
- } else {
- this[_tail] = dart.notNull(this[_tail]) - 1 & mask;
- let i = offset;
- while (i != this[_tail]) {
- let nextOffset = dart.notNull(i) + 1 & mask;
- this[_table][dartx.set](i, this[_table][dartx.get](nextOffset));
- i = nextOffset;
- }
- this[_table][dartx.set](this[_tail], null);
- return offset;
- }
- }
- [_grow]() {
- let newTable = core.List$(E).new(dart.notNull(this[_table][dartx.length]) * 2);
- let split = dart.notNull(this[_table][dartx.length]) - dart.notNull(this[_head]);
- newTable[dartx.setRange](0, split, this[_table], this[_head]);
- newTable[dartx.setRange](split, split + dart.notNull(this[_head]), this[_table], 0);
- this[_head] = 0;
- this[_tail] = this[_table][dartx.length];
- this[_table] = newTable;
- }
- [_writeToList](target) {
- dart.as(target, core.List$(E));
- dart.assert(dart.notNull(target[dartx.length]) >= dart.notNull(this.length));
- if (dart.notNull(this[_head]) <= dart.notNull(this[_tail])) {
- let length = dart.notNull(this[_tail]) - dart.notNull(this[_head]);
- target[dartx.setRange](0, length, this[_table], this[_head]);
- return length;
- } else {
- let firstPartSize = dart.notNull(this[_table][dartx.length]) - dart.notNull(this[_head]);
- target[dartx.setRange](0, firstPartSize, this[_table], this[_head]);
- target[dartx.setRange](firstPartSize, firstPartSize + dart.notNull(this[_tail]), this[_table], 0);
- return dart.notNull(this[_tail]) + firstPartSize;
- }
- }
- [_preGrow](newElementCount) {
- dart.assert(dart.notNull(newElementCount) >= dart.notNull(this.length));
- newElementCount = dart.notNull(newElementCount) + (dart.notNull(newElementCount) >> 1);
- let newCapacity = ListQueue$()._nextPowerOf2(newElementCount);
- let newTable = core.List$(E).new(newCapacity);
- this[_tail] = this[_writeToList](newTable);
- this[_table] = newTable;
- this[_head] = 0;
- }
- }
- ListQueue[dart.implements] = () => [Queue$(E)];
- dart.setSignature(ListQueue, {
- constructors: () => ({
- ListQueue: [ListQueue$(E), [], [core.int]],
- from: [ListQueue$(E), [core.Iterable]]
- }),
- methods: () => ({
- forEach: [dart.void, [dart.functionType(dart.void, [E])]],
- elementAt: [E, [core.int]],
- toList: [core.List$(E), [], {growable: core.bool}],
- add: [dart.void, [E]],
- addAll: [dart.void, [core.Iterable$(E)]],
- remove: [core.bool, [core.Object]],
- [_filterWhere]: [dart.void, [dart.functionType(core.bool, [E]), core.bool]],
- removeWhere: [dart.void, [dart.functionType(core.bool, [E])]],
- retainWhere: [dart.void, [dart.functionType(core.bool, [E])]],
- clear: [dart.void, []],
- addLast: [dart.void, [E]],
- addFirst: [dart.void, [E]],
- removeFirst: [E, []],
- removeLast: [E, []],
- [_checkModification]: [dart.void, [core.int]],
- [_add]: [dart.void, [E]],
- [_remove]: [core.int, [core.int]],
- [_grow]: [dart.void, []],
- [_writeToList]: [core.int, [core.List$(E)]],
- [_preGrow]: [dart.void, [core.int]]
- }),
- statics: () => ({
- _isPowerOf2: [core.bool, [core.int]],
- _nextPowerOf2: [core.int, [core.int]]
- }),
- names: ['_isPowerOf2', '_nextPowerOf2']
- });
- dart.defineExtensionMembers(ListQueue, [
- 'forEach',
- 'elementAt',
- 'toList',
- 'iterator',
- 'isEmpty',
- 'length',
- 'first',
- 'last',
- 'single'
- ]);
- ListQueue._INITIAL_CAPACITY = 8;
- return ListQueue;
- });
- let ListQueue = ListQueue$();
- const _queue = Symbol('_queue');
- const _end = Symbol('_end');
- const _position = Symbol('_position');
- const _ListQueueIterator$ = dart.generic(function(E) {
- class _ListQueueIterator extends core.Object {
- _ListQueueIterator(queue) {
- this[_queue] = queue;
- this[_end] = queue[_tail];
- this[_modificationCount] = queue[_modificationCount];
- this[_position] = queue[_head];
- this[_current] = null;
- }
- get current() {
- return this[_current];
- }
- moveNext() {
- this[_queue][_checkModification](this[_modificationCount]);
- if (this[_position] == this[_end]) {
- this[_current] = null;
- return false;
- }
- this[_current] = dart.as(this[_queue][_table][dartx.get](this[_position]), E);
- this[_position] = dart.notNull(this[_position]) + 1 & dart.notNull(this[_queue][_table][dartx.length]) - 1;
- return true;
- }
- }
- _ListQueueIterator[dart.implements] = () => [core.Iterator$(E)];
- dart.setSignature(_ListQueueIterator, {
- constructors: () => ({_ListQueueIterator: [_ListQueueIterator$(E), [ListQueue]]}),
- methods: () => ({moveNext: [core.bool, []]})
- });
- return _ListQueueIterator;
- });
- let _ListQueueIterator = _ListQueueIterator$();
- const _Predicate$ = dart.generic(function(T) {
- const _Predicate = dart.typedef('_Predicate', () => dart.functionType(core.bool, [T]));
- return _Predicate;
- });
- let _Predicate = _Predicate$();
- const _SplayTreeNode$ = dart.generic(function(K) {
- class _SplayTreeNode extends core.Object {
- _SplayTreeNode(key) {
- this.key = key;
- this.left = null;
- this.right = null;
- }
- }
- dart.setSignature(_SplayTreeNode, {
- constructors: () => ({_SplayTreeNode: [_SplayTreeNode$(K), [K]]})
- });
- return _SplayTreeNode;
- });
- let _SplayTreeNode = _SplayTreeNode$();
- const _SplayTreeMapNode$ = dart.generic(function(K, V) {
- class _SplayTreeMapNode extends _SplayTreeNode$(K) {
- _SplayTreeMapNode(key, value) {
- this.value = value;
- super._SplayTreeNode(key);
- }
- }
- dart.setSignature(_SplayTreeMapNode, {
- constructors: () => ({_SplayTreeMapNode: [_SplayTreeMapNode$(K, V), [K, V]]})
- });
- return _SplayTreeMapNode;
- });
- let _SplayTreeMapNode = _SplayTreeMapNode$();
- const _dummy = Symbol('_dummy');
- const _root = Symbol('_root');
- const _count = Symbol('_count');
- const _splayCount = Symbol('_splayCount');
- const _compare = Symbol('_compare');
- const _splay = Symbol('_splay');
- const _splayMin = Symbol('_splayMin');
- const _splayMax = Symbol('_splayMax');
- const _addNewRoot = Symbol('_addNewRoot');
- const _first = Symbol('_first');
- const _last = Symbol('_last');
- const _clear = Symbol('_clear');
- const _SplayTree$ = dart.generic(function(K) {
- class _SplayTree extends core.Object {
- _SplayTree() {
- this[_dummy] = new (_SplayTreeNode$(K))(null);
- this[_root] = null;
- this[_count] = 0;
- this[_modificationCount] = 0;
- this[_splayCount] = 0;
- }
- [_splay](key) {
- dart.as(key, K);
- if (this[_root] == null) return -1;
- let left = this[_dummy];
- let right = this[_dummy];
- let current = this[_root];
- let comp = null;
- while (true) {
- comp = this[_compare](current.key, key);
- if (dart.notNull(comp) > 0) {
- if (current.left == null) break;
- comp = this[_compare](current.left.key, key);
- if (dart.notNull(comp) > 0) {
- let tmp = current.left;
- current.left = tmp.right;
- tmp.right = current;
- current = tmp;
- if (current.left == null) break;
- }
- right.left = current;
- right = current;
- current = current.left;
- } else if (dart.notNull(comp) < 0) {
- if (current.right == null) break;
- comp = this[_compare](current.right.key, key);
- if (dart.notNull(comp) < 0) {
- let tmp = current.right;
- current.right = tmp.left;
- tmp.left = current;
- current = tmp;
- if (current.right == null) break;
- }
- left.right = current;
- left = current;
- current = current.right;
- } else {
- break;
- }
- }
- left.right = current.left;
- right.left = current.right;
- current.left = this[_dummy].right;
- current.right = this[_dummy].left;
- this[_root] = current;
- this[_dummy].right = null;
- this[_dummy].left = null;
- this[_splayCount] = dart.notNull(this[_splayCount]) + 1;
- return comp;
- }
- [_splayMin](node) {
- dart.as(node, _SplayTreeNode$(K));
- let current = node;
- while (current.left != null) {
- let left = current.left;
- current.left = left.right;
- left.right = current;
- current = left;
- }
- return dart.as(current, _SplayTreeNode$(K));
- }
- [_splayMax](node) {
- dart.as(node, _SplayTreeNode$(K));
- let current = node;
- while (current.right != null) {
- let right = current.right;
- current.right = right.left;
- right.left = current;
- current = right;
- }
- return dart.as(current, _SplayTreeNode$(K));
- }
- [_remove](key) {
- dart.as(key, K);
- if (this[_root] == null) return null;
- let comp = this[_splay](key);
- if (comp != 0) return null;
- let result = this[_root];
- this[_count] = dart.notNull(this[_count]) - 1;
- if (this[_root].left == null) {
- this[_root] = this[_root].right;
- } else {
- let right = this[_root].right;
- this[_root] = this[_splayMax](this[_root].left);
- this[_root].right = right;
- }
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- return result;
- }
- [_addNewRoot](node, comp) {
- dart.as(node, _SplayTreeNode$(K));
- this[_count] = dart.notNull(this[_count]) + 1;
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- if (this[_root] == null) {
- this[_root] = node;
- return;
- }
- if (dart.notNull(comp) < 0) {
- node.left = this[_root];
- node.right = this[_root].right;
- this[_root].right = null;
- } else {
- node.right = this[_root];
- node.left = this[_root].left;
- this[_root].left = null;
- }
- this[_root] = node;
- }
- get [_first]() {
- if (this[_root] == null) return null;
- this[_root] = this[_splayMin](this[_root]);
- return this[_root];
- }
- get [_last]() {
- if (this[_root] == null) return null;
- this[_root] = this[_splayMax](this[_root]);
- return this[_root];
- }
- [_clear]() {
- this[_root] = null;
- this[_count] = 0;
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- }
- }
- dart.setSignature(_SplayTree, {
- methods: () => ({
- [_splay]: [core.int, [K]],
- [_splayMin]: [_SplayTreeNode$(K), [_SplayTreeNode$(K)]],
- [_splayMax]: [_SplayTreeNode$(K), [_SplayTreeNode$(K)]],
- [_remove]: [_SplayTreeNode, [K]],
- [_addNewRoot]: [dart.void, [_SplayTreeNode$(K), core.int]],
- [_clear]: [dart.void, []]
- })
- });
- return _SplayTree;
- });
- let _SplayTree = _SplayTree$();
- const _comparator = Symbol('_comparator');
- const _validKey = Symbol('_validKey');
- const SplayTreeMap$ = dart.generic(function(K, V) {
- class SplayTreeMap extends _SplayTree$(K) {
- SplayTreeMap(compare, isValidKey) {
- if (compare === void 0) compare = null;
- if (isValidKey === void 0) isValidKey = null;
- this[_comparator] = dart.as(compare == null ? core.Comparable.compare : compare, core.Comparator$(K));
- this[_validKey] = isValidKey != null ? isValidKey : dart.fn(v => dart.is(v, K), core.bool, [core.Object]);
- super._SplayTree();
- }
- static from(other, compare, isValidKey) {
- if (compare === void 0) compare = null;
- if (isValidKey === void 0) isValidKey = null;
- let result = new (SplayTreeMap$(K, V))();
- other[dartx.forEach](dart.fn((k, v) => {
- result.set(dart.as(k, K), dart.as(v, V));
- }, dart.void, [dart.dynamic, dart.dynamic]));
- return result;
- }
- static fromIterable(iterable, opts) {
- let key = opts && 'key' in opts ? opts.key : null;
- let value = opts && 'value' in opts ? opts.value : null;
- let compare = opts && 'compare' in opts ? opts.compare : null;
- let isValidKey = opts && 'isValidKey' in opts ? opts.isValidKey : null;
- let map = new (SplayTreeMap$(K, V))(compare, isValidKey);
- Maps._fillMapWithMappedIterable(map, iterable, key, value);
- return map;
- }
- static fromIterables(keys, values, compare, isValidKey) {
- if (compare === void 0) compare = null;
- if (isValidKey === void 0) isValidKey = null;
- let map = new (SplayTreeMap$(K, V))(compare, isValidKey);
- Maps._fillMapWithIterables(map, keys, values);
- return map;
- }
- [_compare](key1, key2) {
- dart.as(key1, K);
- dart.as(key2, K);
- return this[_comparator](key1, key2);
- }
- _internal() {
- this[_comparator] = null;
- this[_validKey] = null;
- super._SplayTree();
- }
- get(key) {
- if (key == null) dart.throw(new core.ArgumentError(key));
- if (!dart.notNull(this[_validKey](key))) return null;
- if (this[_root] != null) {
- let comp = this[_splay](dart.as(key, K));
- if (comp == 0) {
- let mapRoot = dart.as(this[_root], _SplayTreeMapNode);
- return dart.as(mapRoot.value, V);
- }
- }
- return null;
- }
- remove(key) {
- if (!dart.notNull(this[_validKey](key))) return null;
- let mapRoot = dart.as(this[_remove](dart.as(key, K)), _SplayTreeMapNode);
- if (mapRoot != null) return dart.as(mapRoot.value, V);
- return null;
- }
- set(key, value) {
- (() => {
- dart.as(key, K);
- dart.as(value, V);
- if (key == null) dart.throw(new core.ArgumentError(key));
- let comp = this[_splay](key);
- if (comp == 0) {
- let mapRoot = dart.as(this[_root], _SplayTreeMapNode);
- mapRoot.value = value;
- return;
- }
- this[_addNewRoot](new (_SplayTreeMapNode$(K, dart.dynamic))(key, value), comp);
- })();
- return value;
- }
- putIfAbsent(key, ifAbsent) {
- dart.as(key, K);
- dart.as(ifAbsent, dart.functionType(V, []));
- if (key == null) dart.throw(new core.ArgumentError(key));
- let comp = this[_splay](key);
- if (comp == 0) {
- let mapRoot = dart.as(this[_root], _SplayTreeMapNode);
- return dart.as(mapRoot.value, V);
- }
- let modificationCount = this[_modificationCount];
- let splayCount = this[_splayCount];
- let value = ifAbsent();
- if (modificationCount != this[_modificationCount]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- if (splayCount != this[_splayCount]) {
- comp = this[_splay](key);
- dart.assert(comp != 0);
- }
- this[_addNewRoot](new (_SplayTreeMapNode$(K, dart.dynamic))(key, value), comp);
- return value;
- }
- addAll(other) {
- dart.as(other, core.Map$(K, V));
- other[dartx.forEach](dart.fn((key, value) => {
- dart.as(key, K);
- dart.as(value, V);
- this.set(key, value);
- }, dart.void, [K, V]));
- }
- get isEmpty() {
- return this[_root] == null;
- }
- get isNotEmpty() {
- return !dart.notNull(this.isEmpty);
- }
- forEach(f) {
- dart.as(f, dart.functionType(dart.void, [K, V]));
- let nodes = new (_SplayTreeNodeIterator$(K))(this);
- while (dart.notNull(nodes.moveNext())) {
- let node = dart.as(nodes.current, _SplayTreeMapNode$(K, V));
- f(node.key, node.value);
- }
- }
- get length() {
- return this[_count];
- }
- clear() {
- this[_clear]();
- }
- containsKey(key) {
- return dart.notNull(this[_validKey](key)) && this[_splay](dart.as(key, K)) == 0;
- }
- containsValue(value) {
- let found = false;
- let initialSplayCount = this[_splayCount];
- const visit = (function(node) {
- while (node != null) {
- if (dart.equals(node.value, value)) return true;
- if (initialSplayCount != this[_splayCount]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- if (node.right != null && dart.notNull(visit(dart.as(node.right, _SplayTreeMapNode)))) return true;
- node = dart.as(node.left, _SplayTreeMapNode);
- }
- return false;
- }).bind(this);
- dart.fn(visit, core.bool, [_SplayTreeMapNode]);
- return visit(dart.as(this[_root], _SplayTreeMapNode));
- }
- get keys() {
- return new (_SplayTreeKeyIterable$(K))(this);
- }
- get values() {
- return new (_SplayTreeValueIterable$(K, V))(this);
- }
- toString() {
- return Maps.mapToString(this);
- }
- firstKey() {
- if (this[_root] == null) return null;
- return dart.as(this[_first].key, K);
- }
- lastKey() {
- if (this[_root] == null) return null;
- return dart.as(this[_last].key, K);
- }
- lastKeyBefore(key) {
- dart.as(key, K);
- if (key == null) dart.throw(new core.ArgumentError(key));
- if (this[_root] == null) return null;
- let comp = this[_splay](key);
- if (dart.notNull(comp) < 0) return this[_root].key;
- let node = this[_root].left;
- if (node == null) return null;
- while (node.right != null) {
- node = node.right;
- }
- return node.key;
- }
- firstKeyAfter(key) {
- dart.as(key, K);
- if (key == null) dart.throw(new core.ArgumentError(key));
- if (this[_root] == null) return null;
- let comp = this[_splay](key);
- if (dart.notNull(comp) > 0) return this[_root].key;
- let node = this[_root].right;
- if (node == null) return null;
- while (node.left != null) {
- node = node.left;
- }
- return node.key;
- }
- }
- SplayTreeMap[dart.implements] = () => [core.Map$(K, V)];
- dart.defineNamedConstructor(SplayTreeMap, '_internal');
- dart.setSignature(SplayTreeMap, {
- constructors: () => ({
- SplayTreeMap: [SplayTreeMap$(K, V), [], [dart.functionType(core.int, [K, K]), dart.functionType(core.bool, [core.Object])]],
- from: [SplayTreeMap$(K, V), [core.Map], [dart.functionType(core.int, [K, K]), dart.functionType(core.bool, [core.Object])]],
- fromIterable: [SplayTreeMap$(K, V), [core.Iterable], {key: dart.functionType(K, [dart.dynamic]), value: dart.functionType(V, [dart.dynamic]), compare: dart.functionType(core.int, [K, K]), isValidKey: dart.functionType(core.bool, [core.Object])}],
- fromIterables: [SplayTreeMap$(K, V), [core.Iterable$(K), core.Iterable$(V)], [dart.functionType(core.int, [K, K]), dart.functionType(core.bool, [core.Object])]],
- _internal: [SplayTreeMap$(K, V), []]
- }),
- methods: () => ({
- [_compare]: [core.int, [K, K]],
- get: [V, [core.Object]],
- remove: [V, [core.Object]],
- set: [dart.void, [K, V]],
- putIfAbsent: [V, [K, dart.functionType(V, [])]],
- addAll: [dart.void, [core.Map$(K, V)]],
- forEach: [dart.void, [dart.functionType(dart.void, [K, V])]],
- clear: [dart.void, []],
- containsKey: [core.bool, [core.Object]],
- containsValue: [core.bool, [core.Object]],
- firstKey: [K, []],
- lastKey: [K, []],
- lastKeyBefore: [K, [K]],
- firstKeyAfter: [K, [K]]
- })
- });
- dart.defineExtensionMembers(SplayTreeMap, [
- 'get',
- 'remove',
- 'set',
- 'putIfAbsent',
- 'addAll',
- 'forEach',
- 'clear',
- 'containsKey',
- 'containsValue',
- 'isEmpty',
- 'isNotEmpty',
- 'length',
- 'keys',
- 'values'
- ]);
- return SplayTreeMap;
- });
- let SplayTreeMap = SplayTreeMap$();
- const _workList = Symbol('_workList');
- const _tree = Symbol('_tree');
- const _currentNode = Symbol('_currentNode');
- const _findLeftMostDescendent = Symbol('_findLeftMostDescendent');
- const _getValue = Symbol('_getValue');
- const _rebuildWorkList = Symbol('_rebuildWorkList');
- const _SplayTreeIterator$ = dart.generic(function(T) {
- class _SplayTreeIterator extends core.Object {
- _SplayTreeIterator(tree) {
- this[_workList] = dart.list([], _SplayTreeNode);
- this[_tree] = tree;
- this[_modificationCount] = tree[_modificationCount];
- this[_splayCount] = tree[_splayCount];
- this[_currentNode] = null;
- this[_findLeftMostDescendent](tree[_root]);
- }
- startAt(tree, startKey) {
- this[_workList] = dart.list([], _SplayTreeNode);
- this[_tree] = tree;
- this[_modificationCount] = tree[_modificationCount];
- this[_splayCount] = null;
- this[_currentNode] = null;
- if (tree[_root] == null) return;
- let compare = tree[_splay](startKey);
- this[_splayCount] = tree[_splayCount];
- if (dart.notNull(compare) < 0) {
- this[_findLeftMostDescendent](tree[_root].right);
- } else {
- this[_workList][dartx.add](tree[_root]);
- }
- }
- get current() {
- if (this[_currentNode] == null) return null;
- return this[_getValue](dart.as(this[_currentNode], _SplayTreeMapNode));
- }
- [_findLeftMostDescendent](node) {
- while (node != null) {
- this[_workList][dartx.add](node);
- node = node.left;
- }
- }
- [_rebuildWorkList](currentNode) {
- dart.assert(!dart.notNull(this[_workList][dartx.isEmpty]));
- this[_workList][dartx.clear]();
- if (currentNode == null) {
- this[_findLeftMostDescendent](this[_tree][_root]);
- } else {
- this[_tree][_splay](currentNode.key);
- this[_findLeftMostDescendent](this[_tree][_root].right);
- dart.assert(!dart.notNull(this[_workList][dartx.isEmpty]));
- }
- }
- moveNext() {
- if (this[_modificationCount] != this[_tree][_modificationCount]) {
- dart.throw(new core.ConcurrentModificationError(this[_tree]));
- }
- if (dart.notNull(this[_workList][dartx.isEmpty])) {
- this[_currentNode] = null;
- return false;
- }
- if (this[_tree][_splayCount] != this[_splayCount] && this[_currentNode] != null) {
- this[_rebuildWorkList](this[_currentNode]);
- }
- this[_currentNode] = this[_workList][dartx.removeLast]();
- this[_findLeftMostDescendent](this[_currentNode].right);
- return true;
- }
- }
- _SplayTreeIterator[dart.implements] = () => [core.Iterator$(T)];
- dart.defineNamedConstructor(_SplayTreeIterator, 'startAt');
- dart.setSignature(_SplayTreeIterator, {
- constructors: () => ({
- _SplayTreeIterator: [_SplayTreeIterator$(T), [_SplayTree]],
- startAt: [_SplayTreeIterator$(T), [_SplayTree, dart.dynamic]]
- }),
- methods: () => ({
- [_findLeftMostDescendent]: [dart.void, [_SplayTreeNode]],
- [_rebuildWorkList]: [dart.void, [_SplayTreeNode]],
- moveNext: [core.bool, []]
- })
- });
- return _SplayTreeIterator;
- });
- let _SplayTreeIterator = _SplayTreeIterator$();
- const _copyNode = Symbol('_copyNode');
- const _SplayTreeKeyIterable$ = dart.generic(function(K) {
- class _SplayTreeKeyIterable extends IterableBase$(K) {
- _SplayTreeKeyIterable(tree) {
- this[_tree] = tree;
- super.IterableBase();
- }
- get length() {
- return this[_tree][_count];
- }
- get isEmpty() {
- return this[_tree][_count] == 0;
- }
- get iterator() {
- return new (_SplayTreeKeyIterator$(K))(this[_tree]);
- }
- toSet() {
- let setOrMap = this[_tree];
- let set = new (SplayTreeSet$(K))(setOrMap[_comparator], setOrMap[_validKey]);
- set[_count] = this[_tree][_count];
- set[_root] = set[_copyNode](this[_tree][_root]);
- return set;
- }
- }
- _SplayTreeKeyIterable[dart.implements] = () => [_internal.EfficientLength];
- dart.setSignature(_SplayTreeKeyIterable, {
- constructors: () => ({_SplayTreeKeyIterable: [_SplayTreeKeyIterable$(K), [_SplayTree$(K)]]}),
- methods: () => ({toSet: [core.Set$(K), []]})
- });
- dart.defineExtensionMembers(_SplayTreeKeyIterable, ['toSet', 'length', 'isEmpty', 'iterator']);
- return _SplayTreeKeyIterable;
- });
- let _SplayTreeKeyIterable = _SplayTreeKeyIterable$();
- const _SplayTreeValueIterable$ = dart.generic(function(K, V) {
- class _SplayTreeValueIterable extends IterableBase$(V) {
- _SplayTreeValueIterable(map) {
- this[_map] = map;
- super.IterableBase();
- }
- get length() {
- return this[_map][_count];
- }
- get isEmpty() {
- return this[_map][_count] == 0;
- }
- get iterator() {
- return new (_SplayTreeValueIterator$(K, V))(this[_map]);
- }
- }
- _SplayTreeValueIterable[dart.implements] = () => [_internal.EfficientLength];
- dart.setSignature(_SplayTreeValueIterable, {
- constructors: () => ({_SplayTreeValueIterable: [_SplayTreeValueIterable$(K, V), [SplayTreeMap$(K, V)]]})
- });
- dart.defineExtensionMembers(_SplayTreeValueIterable, ['length', 'isEmpty', 'iterator']);
- return _SplayTreeValueIterable;
- });
- let _SplayTreeValueIterable = _SplayTreeValueIterable$();
- const _SplayTreeKeyIterator$ = dart.generic(function(K) {
- class _SplayTreeKeyIterator extends _SplayTreeIterator$(K) {
- _SplayTreeKeyIterator(map) {
- super._SplayTreeIterator(map);
- }
- [_getValue](node) {
- return dart.as(node.key, K);
- }
- }
- dart.setSignature(_SplayTreeKeyIterator, {
- constructors: () => ({_SplayTreeKeyIterator: [_SplayTreeKeyIterator$(K), [_SplayTree$(K)]]}),
- methods: () => ({[_getValue]: [K, [_SplayTreeNode]]})
- });
- return _SplayTreeKeyIterator;
- });
- let _SplayTreeKeyIterator = _SplayTreeKeyIterator$();
- const _SplayTreeValueIterator$ = dart.generic(function(K, V) {
- class _SplayTreeValueIterator extends _SplayTreeIterator$(V) {
- _SplayTreeValueIterator(map) {
- super._SplayTreeIterator(map);
- }
- [_getValue](node) {
- return dart.as(node.value, V);
- }
- }
- dart.setSignature(_SplayTreeValueIterator, {
- constructors: () => ({_SplayTreeValueIterator: [_SplayTreeValueIterator$(K, V), [SplayTreeMap$(K, V)]]}),
- methods: () => ({[_getValue]: [V, [_SplayTreeMapNode]]})
- });
- return _SplayTreeValueIterator;
- });
- let _SplayTreeValueIterator = _SplayTreeValueIterator$();
- const _SplayTreeNodeIterator$ = dart.generic(function(K) {
- class _SplayTreeNodeIterator extends _SplayTreeIterator$(_SplayTreeNode$(K)) {
- _SplayTreeNodeIterator(tree) {
- super._SplayTreeIterator(tree);
- }
- startAt(tree, startKey) {
- super.startAt(tree, startKey);
- }
- [_getValue](node) {
- return dart.as(node, _SplayTreeNode$(K));
- }
- }
- dart.defineNamedConstructor(_SplayTreeNodeIterator, 'startAt');
- dart.setSignature(_SplayTreeNodeIterator, {
- constructors: () => ({
- _SplayTreeNodeIterator: [_SplayTreeNodeIterator$(K), [_SplayTree$(K)]],
- startAt: [_SplayTreeNodeIterator$(K), [_SplayTree$(K), dart.dynamic]]
- }),
- methods: () => ({[_getValue]: [_SplayTreeNode$(K), [_SplayTreeNode]]})
- });
- return _SplayTreeNodeIterator;
- });
- let _SplayTreeNodeIterator = _SplayTreeNodeIterator$();
- const _clone = Symbol('_clone');
- const SplayTreeSet$ = dart.generic(function(E) {
- class SplayTreeSet extends dart.mixin(_SplayTree$(E), IterableMixin$(E), SetMixin$(E)) {
- SplayTreeSet(compare, isValidKey) {
- if (compare === void 0) compare = null;
- if (isValidKey === void 0) isValidKey = null;
- this[_comparator] = dart.as(compare == null ? core.Comparable.compare : compare, core.Comparator$(E));
- this[_validKey] = isValidKey != null ? isValidKey : dart.fn(v => dart.is(v, E), core.bool, [core.Object]);
- super._SplayTree();
- }
- static from(elements, compare, isValidKey) {
- if (compare === void 0) compare = null;
- if (isValidKey === void 0) isValidKey = null;
- let result = new (SplayTreeSet$(E))(compare, isValidKey);
- for (let element of elements) {
- dart.as(element, E);
- result.add(element);
- }
- return result;
- }
- [_compare](e1, e2) {
- dart.as(e1, E);
- dart.as(e2, E);
- return this[_comparator](e1, e2);
- }
- get iterator() {
- return new (_SplayTreeKeyIterator$(E))(this);
- }
- get length() {
- return this[_count];
- }
- get isEmpty() {
- return this[_root] == null;
- }
- get isNotEmpty() {
- return this[_root] != null;
- }
- get first() {
- if (this[_count] == 0) dart.throw(_internal.IterableElementError.noElement());
- return dart.as(this[_first].key, E);
- }
- get last() {
- if (this[_count] == 0) dart.throw(_internal.IterableElementError.noElement());
- return dart.as(this[_last].key, E);
- }
- get single() {
- if (this[_count] == 0) dart.throw(_internal.IterableElementError.noElement());
- if (dart.notNull(this[_count]) > 1) dart.throw(_internal.IterableElementError.tooMany());
- return this[_root].key;
- }
- contains(object) {
- return dart.notNull(this[_validKey](object)) && this[_splay](dart.as(object, E)) == 0;
- }
- add(element) {
- dart.as(element, E);
- let compare = this[_splay](element);
- if (compare == 0) return false;
- this[_addNewRoot](new (_SplayTreeNode$(E))(element), compare);
- return true;
- }
- remove(object) {
- if (!dart.notNull(this[_validKey](object))) return false;
- return this[_remove](dart.as(object, E)) != null;
- }
- addAll(elements) {
- dart.as(elements, core.Iterable$(E));
- for (let element of elements) {
- let compare = this[_splay](element);
- if (compare != 0) {
- this[_addNewRoot](new (_SplayTreeNode$(E))(element), compare);
- }
- }
- }
- removeAll(elements) {
- for (let element of elements) {
- if (dart.notNull(this[_validKey](element))) this[_remove](dart.as(element, E));
- }
- }
- retainAll(elements) {
- let retainSet = new (SplayTreeSet$(E))(this[_comparator], this[_validKey]);
- let modificationCount = this[_modificationCount];
- for (let object of elements) {
- if (modificationCount != this[_modificationCount]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- if (dart.notNull(this[_validKey](object)) && this[_splay](dart.as(object, E)) == 0) retainSet.add(this[_root].key);
- }
- if (retainSet[_count] != this[_count]) {
- this[_root] = retainSet[_root];
- this[_count] = retainSet[_count];
- this[_modificationCount] = dart.notNull(this[_modificationCount]) + 1;
- }
- }
- lookup(object) {
- if (!dart.notNull(this[_validKey](object))) return null;
- let comp = this[_splay](dart.as(object, E));
- if (comp != 0) return null;
- return this[_root].key;
- }
- intersection(other) {
- let result = new (SplayTreeSet$(E))(this[_comparator], this[_validKey]);
- for (let element of this) {
- if (dart.notNull(other.contains(element))) result.add(element);
- }
- return result;
- }
- difference(other) {
- let result = new (SplayTreeSet$(E))(this[_comparator], this[_validKey]);
- for (let element of this) {
- if (!dart.notNull(other.contains(element))) result.add(element);
- }
- return result;
- }
- union(other) {
- dart.as(other, core.Set$(E));
- let _ = this[_clone]();
- _.addAll(other);
- return _;
- }
- [_clone]() {
- let set = new (SplayTreeSet$(E))(this[_comparator], this[_validKey]);
- set[_count] = this[_count];
- set[_root] = this[_copyNode](this[_root]);
- return set;
- }
- [_copyNode](node) {
- dart.as(node, _SplayTreeNode$(E));
- if (node == null) return null;
- let _ = new (_SplayTreeNode$(E))(node.key);
- _.left = this[_copyNode](node.left);
- _.right = this[_copyNode](node.right);
- return _;
- }
- clear() {
- this[_clear]();
- }
- toSet() {
- return this[_clone]();
- }
- toString() {
- return IterableBase.iterableToFullString(this, '{', '}');
- }
- }
- dart.setSignature(SplayTreeSet, {
- constructors: () => ({
- SplayTreeSet: [SplayTreeSet$(E), [], [dart.functionType(core.int, [E, E]), dart.functionType(core.bool, [core.Object])]],
- from: [SplayTreeSet$(E), [core.Iterable], [dart.functionType(core.int, [E, E]), dart.functionType(core.bool, [core.Object])]]
- }),
- methods: () => ({
- [_compare]: [core.int, [E, E]],
- contains: [core.bool, [core.Object]],
- add: [core.bool, [E]],
- remove: [core.bool, [core.Object]],
- addAll: [dart.void, [core.Iterable$(E)]],
- lookup: [E, [core.Object]],
- intersection: [core.Set$(E), [core.Set$(core.Object)]],
- difference: [core.Set$(E), [core.Set$(core.Object)]],
- union: [core.Set$(E), [core.Set$(E)]],
- [_clone]: [SplayTreeSet$(E), []],
- [_copyNode]: [_SplayTreeNode$(E), [_SplayTreeNode$(E)]],
- toSet: [core.Set$(E), []]
- })
- });
- dart.defineExtensionMembers(SplayTreeSet, [
- 'contains',
- 'toSet',
- 'iterator',
- 'length',
- 'isEmpty',
- 'isNotEmpty',
- 'first',
- 'last',
- 'single'
- ]);
- return SplayTreeSet;
- });
- let SplayTreeSet = SplayTreeSet$();
- const _strings = Symbol('_strings');
- const _nums = Symbol('_nums');
- const _rest = Symbol('_rest');
- const _containsKey = Symbol('_containsKey');
- const _getBucket = Symbol('_getBucket');
- const _findBucketIndex = Symbol('_findBucketIndex');
- const _computeKeys = Symbol('_computeKeys');
- const _get = Symbol('_get');
- const _addHashTableEntry = Symbol('_addHashTableEntry');
- const _set = Symbol('_set');
- const _computeHashCode = Symbol('_computeHashCode');
- const _removeHashTableEntry = Symbol('_removeHashTableEntry');
- const _HashMap$ = dart.generic(function(K, V) {
- class _HashMap extends core.Object {
- _HashMap() {
- this[_length] = 0;
- this[_strings] = null;
- this[_nums] = null;
- this[_rest] = null;
- this[_keys] = null;
- }
- get length() {
- return this[_length];
- }
- get isEmpty() {
- return this[_length] == 0;
- }
- get isNotEmpty() {
- return !dart.notNull(this.isEmpty);
- }
- get keys() {
- return new (HashMapKeyIterable$(K))(this);
- }
- get values() {
- return _internal.MappedIterable$(K, V).new(this.keys, dart.fn(each => {
- dart.as(each, K);
- return this.get(each);
- }, V, [K]));
- }
- containsKey(key) {
- if (dart.notNull(_HashMap$()._isStringKey(key))) {
- let strings = this[_strings];
- return strings == null ? false : _HashMap$()._hasTableEntry(strings, key);
- } else if (dart.notNull(_HashMap$()._isNumericKey(key))) {
- let nums = this[_nums];
- return nums == null ? false : _HashMap$()._hasTableEntry(nums, key);
- } else {
- return this[_containsKey](key);
- }
- }
- [_containsKey](key) {
- let rest = this[_rest];
- if (rest == null) return false;
- let bucket = this[_getBucket](rest, key);
- return dart.notNull(this[_findBucketIndex](bucket, key)) >= 0;
- }
- containsValue(value) {
- return this[_computeKeys]()[dartx.any](dart.fn(each => dart.equals(this.get(each), value), core.bool, [dart.dynamic]));
- }
- addAll(other) {
- dart.as(other, core.Map$(K, V));
- other[dartx.forEach](dart.fn((key, value) => {
- dart.as(key, K);
- dart.as(value, V);
- this.set(key, value);
- }, dart.void, [K, V]));
- }
- get(key) {
- if (dart.notNull(_HashMap$()._isStringKey(key))) {
- let strings = this[_strings];
- return dart.as(strings == null ? null : _HashMap$()._getTableEntry(strings, key), V);
- } else if (dart.notNull(_HashMap$()._isNumericKey(key))) {
- let nums = this[_nums];
- return dart.as(nums == null ? null : _HashMap$()._getTableEntry(nums, key), V);
- } else {
- return this[_get](key);
- }
- }
- [_get](key) {
- let rest = this[_rest];
- if (rest == null) return null;
- let bucket = this[_getBucket](rest, key);
- let index = this[_findBucketIndex](bucket, key);
- return dart.as(dart.notNull(index) < 0 ? null : bucket[dart.notNull(index) + 1], V);
- }
- set(key, value) {
- dart.as(key, K);
- dart.as(value, V);
- if (dart.notNull(_HashMap$()._isStringKey(key))) {
- let strings = this[_strings];
- if (strings == null) this[_strings] = strings = _HashMap$()._newHashTable();
- this[_addHashTableEntry](strings, key, value);
- } else if (dart.notNull(_HashMap$()._isNumericKey(key))) {
- let nums = this[_nums];
- if (nums == null) this[_nums] = nums = _HashMap$()._newHashTable();
- this[_addHashTableEntry](nums, key, value);
- } else {
- this[_set](key, value);
- }
- return value;
- }
- [_set](key, value) {
- dart.as(key, K);
- dart.as(value, V);
- let rest = this[_rest];
- if (rest == null) this[_rest] = rest = _HashMap$()._newHashTable();
- let hash = this[_computeHashCode](key);
- let bucket = rest[hash];
- if (bucket == null) {
- _HashMap$()._setTableEntry(rest, hash, [key, value]);
- this[_length] = dart.notNull(this[_length]) + 1;
- this[_keys] = null;
- } else {
- let index = this[_findBucketIndex](bucket, key);
- if (dart.notNull(index) >= 0) {
- bucket[dart.notNull(index) + 1] = value;
- } else {
- bucket.push(key, value);
- this[_length] = dart.notNull(this[_length]) + 1;
- this[_keys] = null;
- }
- }
- }
- putIfAbsent(key, ifAbsent) {
- dart.as(key, K);
- dart.as(ifAbsent, dart.functionType(V, []));
- if (dart.notNull(this.containsKey(key))) return this.get(key);
- let value = ifAbsent();
- this.set(key, value);
- return value;
- }
- remove(key) {
- if (dart.notNull(_HashMap$()._isStringKey(key))) {
- return this[_removeHashTableEntry](this[_strings], key);
- } else if (dart.notNull(_HashMap$()._isNumericKey(key))) {
- return this[_removeHashTableEntry](this[_nums], key);
- } else {
- return this[_remove](key);
- }
- }
- [_remove](key) {
- let rest = this[_rest];
- if (rest == null) return null;
- let bucket = this[_getBucket](rest, key);
- let index = this[_findBucketIndex](bucket, key);
- if (dart.notNull(index) < 0) return null;
- this[_length] = dart.notNull(this[_length]) - 1;
- this[_keys] = null;
- return dart.as(bucket.splice(index, 2)[1], V);
- }
- clear() {
- if (dart.notNull(this[_length]) > 0) {
- this[_strings] = this[_nums] = this[_rest] = this[_keys] = null;
- this[_length] = 0;
- }
- }
- forEach(action) {
- dart.as(action, dart.functionType(dart.void, [K, V]));
- let keys = this[_computeKeys]();
- for (let i = 0, length = keys[dartx.length]; i < dart.notNull(length); i++) {
- let key = keys[i];
- action(dart.as(key, K), this.get(key));
- if (keys !== this[_keys]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- }
- }
- [_computeKeys]() {
- if (this[_keys] != null) return this[_keys];
- let result = core.List.new(this[_length]);
- let index = 0;
- let strings = this[_strings];
- if (strings != null) {
- let names = Object.getOwnPropertyNames(strings);
- let entries = names.length;
- for (let i = 0; i < entries; i++) {
- let key = names[i];
- result[index] = key;
- index++;
- }
- }
- let nums = this[_nums];
- if (nums != null) {
- let names = Object.getOwnPropertyNames(nums);
- let entries = names.length;
- for (let i = 0; i < entries; i++) {
- let key = +names[i];
- result[index] = key;
- index++;
- }
- }
- let rest = this[_rest];
- if (rest != null) {
- let names = Object.getOwnPropertyNames(rest);
- let entries = names.length;
- for (let i = 0; i < entries; i++) {
- let key = names[i];
- let bucket = rest[key];
- let length = bucket.length;
- for (let i = 0; i < length; i = i + 2) {
- let key = bucket[i];
- result[index] = key;
- index++;
- }
- }
- }
- dart.assert(index == this[_length]);
- return this[_keys] = result;
- }
- [_addHashTableEntry](table, key, value) {
- dart.as(key, K);
- dart.as(value, V);
- if (!dart.notNull(_HashMap$()._hasTableEntry(table, key))) {
- this[_length] = dart.notNull(this[_length]) + 1;
- this[_keys] = null;
- }
- _HashMap$()._setTableEntry(table, key, value);
- }
- [_removeHashTableEntry](table, key) {
- if (table != null && dart.notNull(_HashMap$()._hasTableEntry(table, key))) {
- let value = dart.as(_HashMap$()._getTableEntry(table, key), V);
- _HashMap$()._deleteTableEntry(table, key);
- this[_length] = dart.notNull(this[_length]) - 1;
- this[_keys] = null;
- return value;
- } else {
- return null;
- }
- }
- static _isStringKey(key) {
- return typeof key == 'string' && key != '__proto__';
- }
- static _isNumericKey(key) {
- return typeof key == 'number' && (key & 0x3ffffff) === key;
- }
- [_computeHashCode](key) {
- return dart.hashCode(key) & 0x3ffffff;
- }
- static _hasTableEntry(table, key) {
- let entry = table[key];
- return entry != null;
- }
- static _getTableEntry(table, key) {
- let entry = table[key];
- return entry === table ? null : entry;
- }
- static _setTableEntry(table, key, value) {
- if (value == null) {
- table[key] = table;
- } else {
- table[key] = value;
- }
- }
- static _deleteTableEntry(table, key) {
- delete table[key];
- }
- [_getBucket](table, key) {
- let hash = this[_computeHashCode](key);
- return dart.as(table[hash], core.List);
- }
- [_findBucketIndex](bucket, key) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i = i + 2) {
- if (dart.equals(bucket[i], key)) return i;
- }
- return -1;
- }
- static _newHashTable() {
- let table = Object.create(null);
- let temporaryKey = '<non-identifier-key>';
- _HashMap$()._setTableEntry(table, temporaryKey, table);
- _HashMap$()._deleteTableEntry(table, temporaryKey);
- return table;
- }
- }
- _HashMap[dart.implements] = () => [HashMap$(K, V)];
- dart.setSignature(_HashMap, {
- constructors: () => ({_HashMap: [_HashMap$(K, V), []]}),
- methods: () => ({
- containsKey: [core.bool, [core.Object]],
- [_containsKey]: [core.bool, [core.Object]],
- containsValue: [core.bool, [core.Object]],
- addAll: [dart.void, [core.Map$(K, V)]],
- get: [V, [core.Object]],
- [_get]: [V, [core.Object]],
- set: [dart.void, [K, V]],
- [_set]: [dart.void, [K, V]],
- putIfAbsent: [V, [K, dart.functionType(V, [])]],
- remove: [V, [core.Object]],
- [_remove]: [V, [core.Object]],
- clear: [dart.void, []],
- forEach: [dart.void, [dart.functionType(dart.void, [K, V])]],
- [_computeKeys]: [core.List, []],
- [_addHashTableEntry]: [dart.void, [dart.dynamic, K, V]],
- [_removeHashTableEntry]: [V, [dart.dynamic, core.Object]],
- [_computeHashCode]: [core.int, [dart.dynamic]],
- [_getBucket]: [core.List, [dart.dynamic, dart.dynamic]],
- [_findBucketIndex]: [core.int, [dart.dynamic, dart.dynamic]]
- }),
- statics: () => ({
- _isStringKey: [core.bool, [dart.dynamic]],
- _isNumericKey: [core.bool, [dart.dynamic]],
- _hasTableEntry: [core.bool, [dart.dynamic, dart.dynamic]],
- _getTableEntry: [dart.dynamic, [dart.dynamic, dart.dynamic]],
- _setTableEntry: [dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]],
- _deleteTableEntry: [dart.void, [dart.dynamic, dart.dynamic]],
- _newHashTable: [dart.dynamic, []]
- }),
- names: ['_isStringKey', '_isNumericKey', '_hasTableEntry', '_getTableEntry', '_setTableEntry', '_deleteTableEntry', '_newHashTable']
- });
- dart.defineExtensionMembers(_HashMap, [
- 'containsKey',
- 'containsValue',
- 'addAll',
- 'get',
- 'set',
- 'putIfAbsent',
- 'remove',
- 'clear',
- 'forEach',
- 'length',
- 'isEmpty',
- 'isNotEmpty',
- 'keys',
- 'values'
- ]);
- return _HashMap;
- });
- let _HashMap = _HashMap$();
- const _IdentityHashMap$ = dart.generic(function(K, V) {
- class _IdentityHashMap extends _HashMap$(K, V) {
- _IdentityHashMap() {
- super._HashMap();
- }
- [_computeHashCode](key) {
- return core.identityHashCode(key) & 0x3ffffff;
- }
- [_findBucketIndex](bucket, key) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i = i + 2) {
- if (core.identical(bucket[i], key)) return i;
- }
- return -1;
- }
- }
- return _IdentityHashMap;
- });
- let _IdentityHashMap = _IdentityHashMap$();
- const _equals = Symbol('_equals');
- const _hashCode = Symbol('_hashCode');
- const _CustomHashMap$ = dart.generic(function(K, V) {
- class _CustomHashMap extends _HashMap$(K, V) {
- _CustomHashMap(equals, hashCode, validKey) {
- this[_equals] = equals;
- this[_hashCode] = hashCode;
- this[_validKey] = validKey != null ? validKey : dart.fn(v => dart.is(v, K), core.bool, [core.Object]);
- super._HashMap();
- }
- get(key) {
- if (!dart.notNull(this[_validKey](key))) return null;
- return super[_get](key);
- }
- set(key, value) {
- dart.as(key, K);
- dart.as(value, V);
- super[_set](key, value);
- return value;
- }
- containsKey(key) {
- if (!dart.notNull(this[_validKey](key))) return false;
- return super[_containsKey](key);
- }
- remove(key) {
- if (!dart.notNull(this[_validKey](key))) return null;
- return super[_remove](key);
- }
- [_computeHashCode](key) {
- return this[_hashCode](dart.as(key, K)) & 0x3ffffff;
- }
- [_findBucketIndex](bucket, key) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i = i + 2) {
- if (dart.notNull(this[_equals](dart.as(bucket[i], K), dart.as(key, K)))) return i;
- }
- return -1;
- }
- toString() {
- return Maps.mapToString(this);
- }
- }
- dart.setSignature(_CustomHashMap, {
- constructors: () => ({_CustomHashMap: [_CustomHashMap$(K, V), [_Equality$(K), _Hasher$(K), dart.functionType(core.bool, [core.Object])]]}),
- methods: () => ({
- get: [V, [core.Object]],
- set: [dart.void, [K, V]],
- remove: [V, [core.Object]]
- })
- });
- dart.defineExtensionMembers(_CustomHashMap, ['get', 'set', 'containsKey', 'remove']);
- return _CustomHashMap;
- });
- let _CustomHashMap = _CustomHashMap$();
- const HashMapKeyIterable$ = dart.generic(function(E) {
- class HashMapKeyIterable extends IterableBase$(E) {
- HashMapKeyIterable(map) {
- this[_map] = map;
- super.IterableBase();
- }
- get length() {
- return dart.as(dart.dload(this[_map], _length), core.int);
- }
- get isEmpty() {
- return dart.equals(dart.dload(this[_map], _length), 0);
- }
- get iterator() {
- return new (HashMapKeyIterator$(E))(this[_map], dart.as(dart.dsend(this[_map], _computeKeys), core.List));
- }
- contains(element) {
- return dart.as(dart.dsend(this[_map], 'containsKey', element), core.bool);
- }
- forEach(f) {
- dart.as(f, dart.functionType(dart.void, [E]));
- let keys = dart.as(dart.dsend(this[_map], _computeKeys), core.List);
- for (let i = 0, length = keys.length; i < length; i++) {
- f(dart.as(keys[i], E));
- if (keys !== dart.dload(this[_map], _keys)) {
- dart.throw(new core.ConcurrentModificationError(this[_map]));
- }
- }
- }
- }
- HashMapKeyIterable[dart.implements] = () => [_internal.EfficientLength];
- dart.setSignature(HashMapKeyIterable, {
- constructors: () => ({HashMapKeyIterable: [HashMapKeyIterable$(E), [dart.dynamic]]}),
- methods: () => ({forEach: [dart.void, [dart.functionType(dart.void, [E])]]})
- });
- dart.defineExtensionMembers(HashMapKeyIterable, [
- 'contains',
- 'forEach',
- 'length',
- 'isEmpty',
- 'iterator'
- ]);
- return HashMapKeyIterable;
- });
- let HashMapKeyIterable = HashMapKeyIterable$();
- const _offset = Symbol('_offset');
- const HashMapKeyIterator$ = dart.generic(function(E) {
- class HashMapKeyIterator extends core.Object {
- HashMapKeyIterator(map, keys) {
- this[_map] = map;
- this[_keys] = keys;
- this[_offset] = 0;
- this[_current] = null;
- }
- get current() {
- return this[_current];
- }
- moveNext() {
- let keys = this[_keys];
- let offset = this[_offset];
- if (keys !== dart.dload(this[_map], _keys)) {
- dart.throw(new core.ConcurrentModificationError(this[_map]));
- } else if (dart.notNull(offset) >= keys.length) {
- this[_current] = null;
- return false;
- } else {
- this[_current] = dart.as(keys[offset], E);
- this[_offset] = dart.notNull(offset) + 1;
- return true;
- }
- }
- }
- HashMapKeyIterator[dart.implements] = () => [core.Iterator$(E)];
- dart.setSignature(HashMapKeyIterator, {
- constructors: () => ({HashMapKeyIterator: [HashMapKeyIterator$(E), [dart.dynamic, core.List]]}),
- methods: () => ({moveNext: [core.bool, []]})
- });
- return HashMapKeyIterator;
- });
- let HashMapKeyIterator = HashMapKeyIterator$();
- const _modifications = Symbol('_modifications');
- const _value = Symbol('_value');
- const _newLinkedCell = Symbol('_newLinkedCell');
- const _unlinkCell = Symbol('_unlinkCell');
- const _modified = Symbol('_modified');
- const _key = Symbol('_key');
- const _LinkedHashMap$ = dart.generic(function(K, V) {
- class _LinkedHashMap extends core.Object {
- _LinkedHashMap() {
- this[_length] = 0;
- this[_strings] = null;
- this[_nums] = null;
- this[_rest] = null;
- this[_first] = null;
- this[_last] = null;
- this[_modifications] = 0;
- }
- get length() {
- return this[_length];
- }
- get isEmpty() {
- return this[_length] == 0;
- }
- get isNotEmpty() {
- return !dart.notNull(this.isEmpty);
- }
- get keys() {
- return new (LinkedHashMapKeyIterable$(K))(this);
- }
- get values() {
- return _internal.MappedIterable$(K, V).new(this.keys, dart.fn(each => {
- dart.as(each, K);
- return this.get(each);
- }, V, [K]));
- }
- containsKey(key) {
- if (dart.notNull(_LinkedHashMap$()._isStringKey(key))) {
- let strings = this[_strings];
- if (strings == null) return false;
- let cell = dart.as(_LinkedHashMap$()._getTableEntry(strings, key), LinkedHashMapCell);
- return cell != null;
- } else if (dart.notNull(_LinkedHashMap$()._isNumericKey(key))) {
- let nums = this[_nums];
- if (nums == null) return false;
- let cell = dart.as(_LinkedHashMap$()._getTableEntry(nums, key), LinkedHashMapCell);
- return cell != null;
- } else {
- return this[_containsKey](key);
- }
- }
- [_containsKey](key) {
- let rest = this[_rest];
- if (rest == null) return false;
- let bucket = this[_getBucket](rest, key);
- return dart.notNull(this[_findBucketIndex](bucket, key)) >= 0;
- }
- containsValue(value) {
- return this.keys[dartx.any](dart.fn(each => {
- dart.as(each, K);
- return dart.equals(this.get(each), value);
- }, core.bool, [K]));
- }
- addAll(other) {
- dart.as(other, core.Map$(K, V));
- other[dartx.forEach](dart.fn((key, value) => {
- dart.as(key, K);
- dart.as(value, V);
- this.set(key, value);
- }, dart.void, [K, V]));
- }
- get(key) {
- if (dart.notNull(_LinkedHashMap$()._isStringKey(key))) {
- let strings = this[_strings];
- if (strings == null) return null;
- let cell = dart.as(_LinkedHashMap$()._getTableEntry(strings, key), LinkedHashMapCell);
- return dart.as(cell == null ? null : cell[_value], V);
- } else if (dart.notNull(_LinkedHashMap$()._isNumericKey(key))) {
- let nums = this[_nums];
- if (nums == null) return null;
- let cell = dart.as(_LinkedHashMap$()._getTableEntry(nums, key), LinkedHashMapCell);
- return dart.as(cell == null ? null : cell[_value], V);
- } else {
- return this[_get](key);
- }
- }
- [_get](key) {
- let rest = this[_rest];
- if (rest == null) return null;
- let bucket = this[_getBucket](rest, key);
- let index = this[_findBucketIndex](bucket, key);
- if (dart.notNull(index) < 0) return null;
- let cell = dart.as(bucket[index], LinkedHashMapCell);
- return dart.as(cell[_value], V);
- }
- set(key, value) {
- dart.as(key, K);
- dart.as(value, V);
- if (dart.notNull(_LinkedHashMap$()._isStringKey(key))) {
- let strings = this[_strings];
- if (strings == null) this[_strings] = strings = _LinkedHashMap$()._newHashTable();
- this[_addHashTableEntry](strings, key, value);
- } else if (dart.notNull(_LinkedHashMap$()._isNumericKey(key))) {
- let nums = this[_nums];
- if (nums == null) this[_nums] = nums = _LinkedHashMap$()._newHashTable();
- this[_addHashTableEntry](nums, key, value);
- } else {
- this[_set](key, value);
- }
- return value;
- }
- [_set](key, value) {
- dart.as(key, K);
- dart.as(value, V);
- let rest = this[_rest];
- if (rest == null) this[_rest] = rest = _LinkedHashMap$()._newHashTable();
- let hash = this[_computeHashCode](key);
- let bucket = rest[hash];
- if (bucket == null) {
- let cell = this[_newLinkedCell](key, value);
- _LinkedHashMap$()._setTableEntry(rest, hash, [cell]);
- } else {
- let index = this[_findBucketIndex](bucket, key);
- if (dart.notNull(index) >= 0) {
- let cell = dart.as(bucket[index], LinkedHashMapCell);
- cell[_value] = value;
- } else {
- let cell = this[_newLinkedCell](key, value);
- bucket.push(cell);
- }
- }
- }
- putIfAbsent(key, ifAbsent) {
- dart.as(key, K);
- dart.as(ifAbsent, dart.functionType(V, []));
- if (dart.notNull(this.containsKey(key))) return this.get(key);
- let value = ifAbsent();
- this.set(key, value);
- return value;
- }
- remove(key) {
- if (dart.notNull(_LinkedHashMap$()._isStringKey(key))) {
- return this[_removeHashTableEntry](this[_strings], key);
- } else if (dart.notNull(_LinkedHashMap$()._isNumericKey(key))) {
- return this[_removeHashTableEntry](this[_nums], key);
- } else {
- return this[_remove](key);
- }
- }
- [_remove](key) {
- let rest = this[_rest];
- if (rest == null) return null;
- let bucket = this[_getBucket](rest, key);
- let index = this[_findBucketIndex](bucket, key);
- if (dart.notNull(index) < 0) return null;
- let cell = dart.as(bucket.splice(index, 1)[0], LinkedHashMapCell);
- this[_unlinkCell](cell);
- return dart.as(cell[_value], V);
- }
- clear() {
- if (dart.notNull(this[_length]) > 0) {
- this[_strings] = this[_nums] = this[_rest] = this[_first] = this[_last] = null;
- this[_length] = 0;
- this[_modified]();
- }
- }
- forEach(action) {
- dart.as(action, dart.functionType(dart.void, [K, V]));
- let cell = this[_first];
- let modifications = this[_modifications];
- while (cell != null) {
- action(dart.as(cell[_key], K), dart.as(cell[_value], V));
- if (modifications != this[_modifications]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- cell = cell[_next];
- }
- }
- [_addHashTableEntry](table, key, value) {
- dart.as(key, K);
- dart.as(value, V);
- let cell = dart.as(_LinkedHashMap$()._getTableEntry(table, key), LinkedHashMapCell);
- if (cell == null) {
- _LinkedHashMap$()._setTableEntry(table, key, this[_newLinkedCell](key, value));
- } else {
- cell[_value] = value;
- }
- }
- [_removeHashTableEntry](table, key) {
- if (table == null) return null;
- let cell = dart.as(_LinkedHashMap$()._getTableEntry(table, key), LinkedHashMapCell);
- if (cell == null) return null;
- this[_unlinkCell](cell);
- _LinkedHashMap$()._deleteTableEntry(table, key);
- return dart.as(cell[_value], V);
- }
- [_modified]() {
- this[_modifications] = dart.notNull(this[_modifications]) + 1 & 67108863;
- }
- [_newLinkedCell](key, value) {
- dart.as(key, K);
- dart.as(value, V);
- let cell = new LinkedHashMapCell(key, value);
- if (this[_first] == null) {
- this[_first] = this[_last] = cell;
- } else {
- let last = this[_last];
- cell[_previous] = last;
- this[_last] = last[_next] = cell;
- }
- this[_length] = dart.notNull(this[_length]) + 1;
- this[_modified]();
- return cell;
- }
- [_unlinkCell](cell) {
- let previous = cell[_previous];
- let next = cell[_next];
- if (previous == null) {
- dart.assert(dart.equals(cell, this[_first]));
- this[_first] = next;
- } else {
- previous[_next] = next;
- }
- if (next == null) {
- dart.assert(dart.equals(cell, this[_last]));
- this[_last] = previous;
- } else {
- next[_previous] = previous;
- }
- this[_length] = dart.notNull(this[_length]) - 1;
- this[_modified]();
- }
- static _isStringKey(key) {
- return typeof key == 'string' && key != '__proto__';
- }
- static _isNumericKey(key) {
- return typeof key == 'number' && (key & 0x3ffffff) === key;
- }
- [_computeHashCode](key) {
- return dart.hashCode(key) & 0x3ffffff;
- }
- static _getTableEntry(table, key) {
- return table[key];
- }
- static _setTableEntry(table, key, value) {
- dart.assert(value != null);
- table[key] = value;
- }
- static _deleteTableEntry(table, key) {
- delete table[key];
- }
- [_getBucket](table, key) {
- let hash = this[_computeHashCode](key);
- return dart.as(table[hash], core.List);
- }
- [_findBucketIndex](bucket, key) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- let cell = dart.as(bucket[i], LinkedHashMapCell);
- if (dart.equals(cell[_key], key)) return i;
- }
- return -1;
- }
- static _newHashTable() {
- let table = Object.create(null);
- let temporaryKey = '<non-identifier-key>';
- _LinkedHashMap$()._setTableEntry(table, temporaryKey, table);
- _LinkedHashMap$()._deleteTableEntry(table, temporaryKey);
- return table;
- }
- toString() {
- return Maps.mapToString(this);
- }
- }
- _LinkedHashMap[dart.implements] = () => [LinkedHashMap$(K, V), _js_helper.InternalMap];
- dart.setSignature(_LinkedHashMap, {
- constructors: () => ({_LinkedHashMap: [_LinkedHashMap$(K, V), []]}),
- methods: () => ({
- containsKey: [core.bool, [core.Object]],
- [_containsKey]: [core.bool, [core.Object]],
- containsValue: [core.bool, [core.Object]],
- addAll: [dart.void, [core.Map$(K, V)]],
- get: [V, [core.Object]],
- [_get]: [V, [core.Object]],
- set: [dart.void, [K, V]],
- [_set]: [dart.void, [K, V]],
- putIfAbsent: [V, [K, dart.functionType(V, [])]],
- remove: [V, [core.Object]],
- [_remove]: [V, [core.Object]],
- clear: [dart.void, []],
- forEach: [dart.void, [dart.functionType(dart.void, [K, V])]],
- [_addHashTableEntry]: [dart.void, [dart.dynamic, K, V]],
- [_removeHashTableEntry]: [V, [dart.dynamic, core.Object]],
- [_modified]: [dart.void, []],
- [_newLinkedCell]: [LinkedHashMapCell, [K, V]],
- [_unlinkCell]: [dart.void, [LinkedHashMapCell]],
- [_computeHashCode]: [core.int, [dart.dynamic]],
- [_getBucket]: [core.List, [dart.dynamic, dart.dynamic]],
- [_findBucketIndex]: [core.int, [dart.dynamic, dart.dynamic]]
- }),
- statics: () => ({
- _isStringKey: [core.bool, [dart.dynamic]],
- _isNumericKey: [core.bool, [dart.dynamic]],
- _getTableEntry: [dart.dynamic, [dart.dynamic, dart.dynamic]],
- _setTableEntry: [dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]],
- _deleteTableEntry: [dart.void, [dart.dynamic, dart.dynamic]],
- _newHashTable: [dart.dynamic, []]
- }),
- names: ['_isStringKey', '_isNumericKey', '_getTableEntry', '_setTableEntry', '_deleteTableEntry', '_newHashTable']
- });
- dart.defineExtensionMembers(_LinkedHashMap, [
- 'containsKey',
- 'containsValue',
- 'addAll',
- 'get',
- 'set',
- 'putIfAbsent',
- 'remove',
- 'clear',
- 'forEach',
- 'length',
- 'isEmpty',
- 'isNotEmpty',
- 'keys',
- 'values'
- ]);
- return _LinkedHashMap;
- });
- let _LinkedHashMap = _LinkedHashMap$();
- const _LinkedIdentityHashMap$ = dart.generic(function(K, V) {
- class _LinkedIdentityHashMap extends _LinkedHashMap$(K, V) {
- _LinkedIdentityHashMap() {
- super._LinkedHashMap();
- }
- [_computeHashCode](key) {
- return core.identityHashCode(key) & 0x3ffffff;
- }
- [_findBucketIndex](bucket, key) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- let cell = dart.as(bucket[i], LinkedHashMapCell);
- if (core.identical(cell[_key], key)) return i;
- }
- return -1;
- }
- }
- return _LinkedIdentityHashMap;
- });
- let _LinkedIdentityHashMap = _LinkedIdentityHashMap$();
- const _LinkedCustomHashMap$ = dart.generic(function(K, V) {
- class _LinkedCustomHashMap extends _LinkedHashMap$(K, V) {
- _LinkedCustomHashMap(equals, hashCode, validKey) {
- this[_equals] = equals;
- this[_hashCode] = hashCode;
- this[_validKey] = validKey != null ? validKey : dart.fn(v => dart.is(v, K), core.bool, [core.Object]);
- super._LinkedHashMap();
- }
- get(key) {
- if (!dart.notNull(this[_validKey](key))) return null;
- return super[_get](key);
- }
- set(key, value) {
- dart.as(key, K);
- dart.as(value, V);
- super[_set](key, value);
- return value;
- }
- containsKey(key) {
- if (!dart.notNull(this[_validKey](key))) return false;
- return super[_containsKey](key);
- }
- remove(key) {
- if (!dart.notNull(this[_validKey](key))) return null;
- return super[_remove](key);
- }
- [_computeHashCode](key) {
- return this[_hashCode](dart.as(key, K)) & 0x3ffffff;
- }
- [_findBucketIndex](bucket, key) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- let cell = dart.as(bucket[i], LinkedHashMapCell);
- if (dart.notNull(this[_equals](dart.as(cell[_key], K), dart.as(key, K)))) return i;
- }
- return -1;
- }
- }
- dart.setSignature(_LinkedCustomHashMap, {
- constructors: () => ({_LinkedCustomHashMap: [_LinkedCustomHashMap$(K, V), [_Equality$(K), _Hasher$(K), dart.functionType(core.bool, [core.Object])]]}),
- methods: () => ({
- get: [V, [core.Object]],
- set: [dart.void, [K, V]],
- remove: [V, [core.Object]]
- })
- });
- dart.defineExtensionMembers(_LinkedCustomHashMap, ['get', 'set', 'containsKey', 'remove']);
- return _LinkedCustomHashMap;
- });
- let _LinkedCustomHashMap = _LinkedCustomHashMap$();
- class LinkedHashMapCell extends core.Object {
- LinkedHashMapCell(key, value) {
- this[_key] = key;
- this[_value] = value;
- this[_next] = null;
- this[_previous] = null;
- }
- }
- dart.setSignature(LinkedHashMapCell, {
- constructors: () => ({LinkedHashMapCell: [LinkedHashMapCell, [dart.dynamic, dart.dynamic]]})
- });
- const LinkedHashMapKeyIterable$ = dart.generic(function(E) {
- class LinkedHashMapKeyIterable extends IterableBase$(E) {
- LinkedHashMapKeyIterable(map) {
- this[_map] = map;
- super.IterableBase();
- }
- get length() {
- return dart.as(dart.dload(this[_map], _length), core.int);
- }
- get isEmpty() {
- return dart.equals(dart.dload(this[_map], _length), 0);
- }
- get iterator() {
- return new (LinkedHashMapKeyIterator$(E))(this[_map], dart.as(dart.dload(this[_map], _modifications), core.int));
- }
- contains(element) {
- return dart.as(dart.dsend(this[_map], 'containsKey', element), core.bool);
- }
- forEach(f) {
- dart.as(f, dart.functionType(dart.void, [E]));
- let cell = dart.as(dart.dload(this[_map], _first), LinkedHashMapCell);
- let modifications = dart.as(dart.dload(this[_map], _modifications), core.int);
- while (cell != null) {
- f(dart.as(cell[_key], E));
- if (!dart.equals(modifications, dart.dload(this[_map], _modifications))) {
- dart.throw(new core.ConcurrentModificationError(this[_map]));
- }
- cell = cell[_next];
- }
- }
- }
- LinkedHashMapKeyIterable[dart.implements] = () => [_internal.EfficientLength];
- dart.setSignature(LinkedHashMapKeyIterable, {
- constructors: () => ({LinkedHashMapKeyIterable: [LinkedHashMapKeyIterable$(E), [dart.dynamic]]}),
- methods: () => ({forEach: [dart.void, [dart.functionType(dart.void, [E])]]})
- });
- dart.defineExtensionMembers(LinkedHashMapKeyIterable, [
- 'contains',
- 'forEach',
- 'length',
- 'isEmpty',
- 'iterator'
- ]);
- return LinkedHashMapKeyIterable;
- });
- let LinkedHashMapKeyIterable = LinkedHashMapKeyIterable$();
- const _cell = Symbol('_cell');
- const LinkedHashMapKeyIterator$ = dart.generic(function(E) {
- class LinkedHashMapKeyIterator extends core.Object {
- LinkedHashMapKeyIterator(map, modifications) {
- this[_map] = map;
- this[_modifications] = modifications;
- this[_cell] = null;
- this[_current] = null;
- this[_cell] = dart.as(dart.dload(this[_map], _first), LinkedHashMapCell);
- }
- get current() {
- return this[_current];
- }
- moveNext() {
- if (!dart.equals(this[_modifications], dart.dload(this[_map], _modifications))) {
- dart.throw(new core.ConcurrentModificationError(this[_map]));
- } else if (this[_cell] == null) {
- this[_current] = null;
- return false;
- } else {
- this[_current] = dart.as(this[_cell][_key], E);
- this[_cell] = this[_cell][_next];
- return true;
- }
- }
- }
- LinkedHashMapKeyIterator[dart.implements] = () => [core.Iterator$(E)];
- dart.setSignature(LinkedHashMapKeyIterator, {
- constructors: () => ({LinkedHashMapKeyIterator: [LinkedHashMapKeyIterator$(E), [dart.dynamic, core.int]]}),
- methods: () => ({moveNext: [core.bool, []]})
- });
- return LinkedHashMapKeyIterator;
- });
- let LinkedHashMapKeyIterator = LinkedHashMapKeyIterator$();
- const _elements = Symbol('_elements');
- const _computeElements = Symbol('_computeElements');
- const _contains = Symbol('_contains');
- const _lookup = Symbol('_lookup');
- const _HashSet$ = dart.generic(function(E) {
- class _HashSet extends _HashSetBase$(E) {
- _HashSet() {
- this[_length] = 0;
- this[_strings] = null;
- this[_nums] = null;
- this[_rest] = null;
- this[_elements] = null;
- }
- [_newSet]() {
- return new (_HashSet$(E))();
- }
- get iterator() {
- return new (HashSetIterator$(E))(this, this[_computeElements]());
- }
- get length() {
- return this[_length];
- }
- get isEmpty() {
- return this[_length] == 0;
- }
- get isNotEmpty() {
- return !dart.notNull(this.isEmpty);
- }
- contains(object) {
- if (dart.notNull(_HashSet$()._isStringElement(object))) {
- let strings = this[_strings];
- return strings == null ? false : _HashSet$()._hasTableEntry(strings, object);
- } else if (dart.notNull(_HashSet$()._isNumericElement(object))) {
- let nums = this[_nums];
- return nums == null ? false : _HashSet$()._hasTableEntry(nums, object);
- } else {
- return this[_contains](object);
- }
- }
- [_contains](object) {
- let rest = this[_rest];
- if (rest == null) return false;
- let bucket = this[_getBucket](rest, object);
- return dart.notNull(this[_findBucketIndex](bucket, object)) >= 0;
- }
- lookup(object) {
- if (dart.notNull(_HashSet$()._isStringElement(object)) || dart.notNull(_HashSet$()._isNumericElement(object))) {
- return dart.as(dart.notNull(this.contains(object)) ? object : null, E);
- }
- return this[_lookup](object);
- }
- [_lookup](object) {
- let rest = this[_rest];
- if (rest == null) return null;
- let bucket = this[_getBucket](rest, object);
- let index = this[_findBucketIndex](bucket, object);
- if (dart.notNull(index) < 0) return null;
- return dart.as(bucket[dartx.get](index), E);
- }
- add(element) {
- dart.as(element, E);
- if (dart.notNull(_HashSet$()._isStringElement(element))) {
- let strings = this[_strings];
- if (strings == null) this[_strings] = strings = _HashSet$()._newHashTable();
- return this[_addHashTableEntry](strings, element);
- } else if (dart.notNull(_HashSet$()._isNumericElement(element))) {
- let nums = this[_nums];
- if (nums == null) this[_nums] = nums = _HashSet$()._newHashTable();
- return this[_addHashTableEntry](nums, element);
- } else {
- return this[_add](element);
- }
- }
- [_add](element) {
- dart.as(element, E);
- let rest = this[_rest];
- if (rest == null) this[_rest] = rest = _HashSet$()._newHashTable();
- let hash = this[_computeHashCode](element);
- let bucket = rest[hash];
- if (bucket == null) {
- _HashSet$()._setTableEntry(rest, hash, [element]);
- } else {
- let index = this[_findBucketIndex](bucket, element);
- if (dart.notNull(index) >= 0) return false;
- bucket.push(element);
- }
- this[_length] = dart.notNull(this[_length]) + 1;
- this[_elements] = null;
- return true;
- }
- addAll(objects) {
- dart.as(objects, core.Iterable$(E));
- for (let each of objects) {
- this.add(each);
- }
- }
- remove(object) {
- if (dart.notNull(_HashSet$()._isStringElement(object))) {
- return this[_removeHashTableEntry](this[_strings], object);
- } else if (dart.notNull(_HashSet$()._isNumericElement(object))) {
- return this[_removeHashTableEntry](this[_nums], object);
- } else {
- return this[_remove](object);
- }
- }
- [_remove](object) {
- let rest = this[_rest];
- if (rest == null) return false;
- let bucket = this[_getBucket](rest, object);
- let index = this[_findBucketIndex](bucket, object);
- if (dart.notNull(index) < 0) return false;
- this[_length] = dart.notNull(this[_length]) - 1;
- this[_elements] = null;
- bucket.splice(index, 1);
- return true;
- }
- clear() {
- if (dart.notNull(this[_length]) > 0) {
- this[_strings] = this[_nums] = this[_rest] = this[_elements] = null;
- this[_length] = 0;
- }
- }
- [_computeElements]() {
- if (this[_elements] != null) return this[_elements];
- let result = core.List.new(this[_length]);
- let index = 0;
- let strings = this[_strings];
- if (strings != null) {
- let names = Object.getOwnPropertyNames(strings);
- let entries = names.length;
- for (let i = 0; i < entries; i++) {
- let element = names[i];
- result[index] = element;
- index++;
- }
- }
- let nums = this[_nums];
- if (nums != null) {
- let names = Object.getOwnPropertyNames(nums);
- let entries = names.length;
- for (let i = 0; i < entries; i++) {
- let element = +names[i];
- result[index] = element;
- index++;
- }
- }
- let rest = this[_rest];
- if (rest != null) {
- let names = Object.getOwnPropertyNames(rest);
- let entries = names.length;
- for (let i = 0; i < entries; i++) {
- let entry = names[i];
- let bucket = rest[entry];
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- result[index] = bucket[i];
- index++;
- }
- }
- }
- dart.assert(index == this[_length]);
- return this[_elements] = result;
- }
- [_addHashTableEntry](table, element) {
- dart.as(element, E);
- if (dart.notNull(_HashSet$()._hasTableEntry(table, element))) return false;
- _HashSet$()._setTableEntry(table, element, 0);
- this[_length] = dart.notNull(this[_length]) + 1;
- this[_elements] = null;
- return true;
- }
- [_removeHashTableEntry](table, element) {
- if (table != null && dart.notNull(_HashSet$()._hasTableEntry(table, element))) {
- _HashSet$()._deleteTableEntry(table, element);
- this[_length] = dart.notNull(this[_length]) - 1;
- this[_elements] = null;
- return true;
- } else {
- return false;
- }
- }
- static _isStringElement(element) {
- return typeof element == 'string' && element != '__proto__';
- }
- static _isNumericElement(element) {
- return typeof element == 'number' && (element & 0x3ffffff) === element;
- }
- [_computeHashCode](element) {
- return dart.hashCode(element) & 0x3ffffff;
- }
- static _hasTableEntry(table, key) {
- let entry = table[key];
- return entry != null;
- }
- static _setTableEntry(table, key, value) {
- dart.assert(value != null);
- table[key] = value;
- }
- static _deleteTableEntry(table, key) {
- delete table[key];
- }
- [_getBucket](table, element) {
- let hash = this[_computeHashCode](element);
- return dart.as(table[hash], core.List);
- }
- [_findBucketIndex](bucket, element) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- if (dart.equals(bucket[i], element)) return i;
- }
- return -1;
- }
- static _newHashTable() {
- let table = Object.create(null);
- let temporaryKey = '<non-identifier-key>';
- _HashSet$()._setTableEntry(table, temporaryKey, table);
- _HashSet$()._deleteTableEntry(table, temporaryKey);
- return table;
- }
- }
- _HashSet[dart.implements] = () => [HashSet$(E)];
- dart.setSignature(_HashSet, {
- constructors: () => ({_HashSet: [_HashSet$(E), []]}),
- methods: () => ({
- [_newSet]: [core.Set$(E), []],
- contains: [core.bool, [core.Object]],
- [_contains]: [core.bool, [core.Object]],
- lookup: [E, [core.Object]],
- [_lookup]: [E, [core.Object]],
- add: [core.bool, [E]],
- [_add]: [core.bool, [E]],
- addAll: [dart.void, [core.Iterable$(E)]],
- remove: [core.bool, [core.Object]],
- [_remove]: [core.bool, [core.Object]],
- [_computeElements]: [core.List, []],
- [_addHashTableEntry]: [core.bool, [dart.dynamic, E]],
- [_removeHashTableEntry]: [core.bool, [dart.dynamic, core.Object]],
- [_computeHashCode]: [core.int, [dart.dynamic]],
- [_getBucket]: [core.List, [dart.dynamic, dart.dynamic]],
- [_findBucketIndex]: [core.int, [dart.dynamic, dart.dynamic]]
- }),
- statics: () => ({
- _isStringElement: [core.bool, [dart.dynamic]],
- _isNumericElement: [core.bool, [dart.dynamic]],
- _hasTableEntry: [core.bool, [dart.dynamic, dart.dynamic]],
- _setTableEntry: [dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]],
- _deleteTableEntry: [dart.void, [dart.dynamic, dart.dynamic]],
- _newHashTable: [dart.dynamic, []]
- }),
- names: ['_isStringElement', '_isNumericElement', '_hasTableEntry', '_setTableEntry', '_deleteTableEntry', '_newHashTable']
- });
- dart.defineExtensionMembers(_HashSet, [
- 'contains',
- 'iterator',
- 'length',
- 'isEmpty',
- 'isNotEmpty'
- ]);
- return _HashSet;
- });
- let _HashSet = _HashSet$();
- const _IdentityHashSet$ = dart.generic(function(E) {
- class _IdentityHashSet extends _HashSet$(E) {
- _IdentityHashSet() {
- super._HashSet();
- }
- [_newSet]() {
- return new (_IdentityHashSet$(E))();
- }
- [_computeHashCode](key) {
- return core.identityHashCode(key) & 0x3ffffff;
- }
- [_findBucketIndex](bucket, element) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- if (core.identical(bucket[i], element)) return i;
- }
- return -1;
- }
- }
- dart.setSignature(_IdentityHashSet, {
- methods: () => ({[_newSet]: [core.Set$(E), []]})
- });
- return _IdentityHashSet;
- });
- let _IdentityHashSet = _IdentityHashSet$();
- const _equality = Symbol('_equality');
- const _hasher = Symbol('_hasher');
- const _CustomHashSet$ = dart.generic(function(E) {
- class _CustomHashSet extends _HashSet$(E) {
- _CustomHashSet(equality, hasher, validKey) {
- this[_equality] = equality;
- this[_hasher] = hasher;
- this[_validKey] = validKey != null ? validKey : dart.fn(x => dart.is(x, E), core.bool, [core.Object]);
- super._HashSet();
- }
- [_newSet]() {
- return new (_CustomHashSet$(E))(this[_equality], this[_hasher], this[_validKey]);
- }
- [_findBucketIndex](bucket, element) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- if (dart.notNull(this[_equality](dart.as(bucket[i], E), dart.as(element, E)))) return i;
- }
- return -1;
- }
- [_computeHashCode](element) {
- return this[_hasher](dart.as(element, E)) & 0x3ffffff;
- }
- add(object) {
- dart.as(object, E);
- return super[_add](object);
- }
- contains(object) {
- if (!dart.notNull(this[_validKey](object))) return false;
- return super[_contains](object);
- }
- lookup(object) {
- if (!dart.notNull(this[_validKey](object))) return null;
- return super[_lookup](object);
- }
- remove(object) {
- if (!dart.notNull(this[_validKey](object))) return false;
- return super[_remove](object);
- }
- }
- dart.setSignature(_CustomHashSet, {
- constructors: () => ({_CustomHashSet: [_CustomHashSet$(E), [_Equality$(E), _Hasher$(E), dart.functionType(core.bool, [core.Object])]]}),
- methods: () => ({
- [_newSet]: [core.Set$(E), []],
- add: [core.bool, [E]],
- lookup: [E, [core.Object]]
- })
- });
- dart.defineExtensionMembers(_CustomHashSet, ['contains']);
- return _CustomHashSet;
- });
- let _CustomHashSet = _CustomHashSet$();
- const HashSetIterator$ = dart.generic(function(E) {
- class HashSetIterator extends core.Object {
- HashSetIterator(set, elements) {
- this[_set] = set;
- this[_elements] = elements;
- this[_offset] = 0;
- this[_current] = null;
- }
- get current() {
- return this[_current];
- }
- moveNext() {
- let elements = this[_elements];
- let offset = this[_offset];
- if (elements !== dart.dload(this[_set], _elements)) {
- dart.throw(new core.ConcurrentModificationError(this[_set]));
- } else if (dart.notNull(offset) >= elements.length) {
- this[_current] = null;
- return false;
- } else {
- this[_current] = dart.as(elements[offset], E);
- this[_offset] = dart.notNull(offset) + 1;
- return true;
- }
- }
- }
- HashSetIterator[dart.implements] = () => [core.Iterator$(E)];
- dart.setSignature(HashSetIterator, {
- constructors: () => ({HashSetIterator: [HashSetIterator$(E), [dart.dynamic, core.List]]}),
- methods: () => ({moveNext: [core.bool, []]})
- });
- return HashSetIterator;
- });
- let HashSetIterator = HashSetIterator$();
- const _unsupported = Symbol('_unsupported');
- const _LinkedHashSet$ = dart.generic(function(E) {
- class _LinkedHashSet extends _HashSetBase$(E) {
- _LinkedHashSet() {
- this[_length] = 0;
- this[_strings] = null;
- this[_nums] = null;
- this[_rest] = null;
- this[_first] = null;
- this[_last] = null;
- this[_modifications] = 0;
- }
- [_newSet]() {
- return new (_LinkedHashSet$(E))();
- }
- [_unsupported](operation) {
- dart.throw(`LinkedHashSet: unsupported ${operation}`);
- }
- get iterator() {
- return new (LinkedHashSetIterator$(E))(this, this[_modifications]);
- }
- get length() {
- return this[_length];
- }
- get isEmpty() {
- return this[_length] == 0;
- }
- get isNotEmpty() {
- return !dart.notNull(this.isEmpty);
- }
- contains(object) {
- if (dart.notNull(_LinkedHashSet$()._isStringElement(object))) {
- let strings = this[_strings];
- if (strings == null) return false;
- let cell = dart.as(_LinkedHashSet$()._getTableEntry(strings, object), LinkedHashSetCell);
- return cell != null;
- } else if (dart.notNull(_LinkedHashSet$()._isNumericElement(object))) {
- let nums = this[_nums];
- if (nums == null) return false;
- let cell = dart.as(_LinkedHashSet$()._getTableEntry(nums, object), LinkedHashSetCell);
- return cell != null;
- } else {
- return this[_contains](object);
- }
- }
- [_contains](object) {
- let rest = this[_rest];
- if (rest == null) return false;
- let bucket = this[_getBucket](rest, object);
- return dart.notNull(this[_findBucketIndex](bucket, object)) >= 0;
- }
- lookup(object) {
- if (dart.notNull(_LinkedHashSet$()._isStringElement(object)) || dart.notNull(_LinkedHashSet$()._isNumericElement(object))) {
- return dart.as(dart.notNull(this.contains(object)) ? object : null, E);
- } else {
- return this[_lookup](object);
- }
- }
- [_lookup](object) {
- let rest = this[_rest];
- if (rest == null) return null;
- let bucket = this[_getBucket](rest, object);
- let index = this[_findBucketIndex](bucket, object);
- if (dart.notNull(index) < 0) return null;
- return dart.as(dart.dload(bucket[dartx.get](index), _element), E);
- }
- forEach(action) {
- dart.as(action, dart.functionType(dart.void, [E]));
- let cell = this[_first];
- let modifications = this[_modifications];
- while (cell != null) {
- action(dart.as(cell[_element], E));
- if (modifications != this[_modifications]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- cell = cell[_next];
- }
- }
- get first() {
- if (this[_first] == null) dart.throw(new core.StateError("No elements"));
- return dart.as(this[_first][_element], E);
- }
- get last() {
- if (this[_last] == null) dart.throw(new core.StateError("No elements"));
- return dart.as(this[_last][_element], E);
- }
- add(element) {
- dart.as(element, E);
- if (dart.notNull(_LinkedHashSet$()._isStringElement(element))) {
- let strings = this[_strings];
- if (strings == null) this[_strings] = strings = _LinkedHashSet$()._newHashTable();
- return this[_addHashTableEntry](strings, element);
- } else if (dart.notNull(_LinkedHashSet$()._isNumericElement(element))) {
- let nums = this[_nums];
- if (nums == null) this[_nums] = nums = _LinkedHashSet$()._newHashTable();
- return this[_addHashTableEntry](nums, element);
- } else {
- return this[_add](element);
- }
- }
- [_add](element) {
- dart.as(element, E);
- let rest = this[_rest];
- if (rest == null) this[_rest] = rest = _LinkedHashSet$()._newHashTable();
- let hash = this[_computeHashCode](element);
- let bucket = rest[hash];
- if (bucket == null) {
- let cell = this[_newLinkedCell](element);
- _LinkedHashSet$()._setTableEntry(rest, hash, [cell]);
- } else {
- let index = this[_findBucketIndex](bucket, element);
- if (dart.notNull(index) >= 0) return false;
- let cell = this[_newLinkedCell](element);
- bucket.push(cell);
- }
- return true;
- }
- remove(object) {
- if (dart.notNull(_LinkedHashSet$()._isStringElement(object))) {
- return this[_removeHashTableEntry](this[_strings], object);
- } else if (dart.notNull(_LinkedHashSet$()._isNumericElement(object))) {
- return this[_removeHashTableEntry](this[_nums], object);
- } else {
- return this[_remove](object);
- }
- }
- [_remove](object) {
- let rest = this[_rest];
- if (rest == null) return false;
- let bucket = this[_getBucket](rest, object);
- let index = this[_findBucketIndex](bucket, object);
- if (dart.notNull(index) < 0) return false;
- let cell = dart.as(bucket.splice(index, 1)[0], LinkedHashSetCell);
- this[_unlinkCell](cell);
- return true;
- }
- removeWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- this[_filterWhere](test, true);
- }
- retainWhere(test) {
- dart.as(test, dart.functionType(core.bool, [E]));
- this[_filterWhere](test, false);
- }
- [_filterWhere](test, removeMatching) {
- dart.as(test, dart.functionType(core.bool, [E]));
- let cell = this[_first];
- while (cell != null) {
- let element = dart.as(cell[_element], E);
- let next = cell[_next];
- let modifications = this[_modifications];
- let shouldRemove = removeMatching == test(element);
- if (modifications != this[_modifications]) {
- dart.throw(new core.ConcurrentModificationError(this));
- }
- if (shouldRemove) this.remove(element);
- cell = next;
- }
- }
- clear() {
- if (dart.notNull(this[_length]) > 0) {
- this[_strings] = this[_nums] = this[_rest] = this[_first] = this[_last] = null;
- this[_length] = 0;
- this[_modified]();
- }
- }
- [_addHashTableEntry](table, element) {
- dart.as(element, E);
- let cell = dart.as(_LinkedHashSet$()._getTableEntry(table, element), LinkedHashSetCell);
- if (cell != null) return false;
- _LinkedHashSet$()._setTableEntry(table, element, this[_newLinkedCell](element));
- return true;
- }
- [_removeHashTableEntry](table, element) {
- if (table == null) return false;
- let cell = dart.as(_LinkedHashSet$()._getTableEntry(table, element), LinkedHashSetCell);
- if (cell == null) return false;
- this[_unlinkCell](cell);
- _LinkedHashSet$()._deleteTableEntry(table, element);
- return true;
- }
- [_modified]() {
- this[_modifications] = dart.notNull(this[_modifications]) + 1 & 67108863;
- }
- [_newLinkedCell](element) {
- dart.as(element, E);
- let cell = new LinkedHashSetCell(element);
- if (this[_first] == null) {
- this[_first] = this[_last] = cell;
- } else {
- let last = this[_last];
- cell[_previous] = last;
- this[_last] = last[_next] = cell;
- }
- this[_length] = dart.notNull(this[_length]) + 1;
- this[_modified]();
- return cell;
- }
- [_unlinkCell](cell) {
- let previous = cell[_previous];
- let next = cell[_next];
- if (previous == null) {
- dart.assert(dart.equals(cell, this[_first]));
- this[_first] = next;
- } else {
- previous[_next] = next;
- }
- if (next == null) {
- dart.assert(dart.equals(cell, this[_last]));
- this[_last] = previous;
- } else {
- next[_previous] = previous;
- }
- this[_length] = dart.notNull(this[_length]) - 1;
- this[_modified]();
- }
- static _isStringElement(element) {
- return typeof element == 'string' && element != '__proto__';
- }
- static _isNumericElement(element) {
- return typeof element == 'number' && (element & 0x3ffffff) === element;
- }
- [_computeHashCode](element) {
- return dart.hashCode(element) & 0x3ffffff;
- }
- static _getTableEntry(table, key) {
- return table[key];
- }
- static _setTableEntry(table, key, value) {
- dart.assert(value != null);
- table[key] = value;
- }
- static _deleteTableEntry(table, key) {
- delete table[key];
- }
- [_getBucket](table, element) {
- let hash = this[_computeHashCode](element);
- return dart.as(table[hash], core.List);
- }
- [_findBucketIndex](bucket, element) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- let cell = dart.as(bucket[i], LinkedHashSetCell);
- if (dart.equals(cell[_element], element)) return i;
- }
- return -1;
- }
- static _newHashTable() {
- let table = Object.create(null);
- let temporaryKey = '<non-identifier-key>';
- _LinkedHashSet$()._setTableEntry(table, temporaryKey, table);
- _LinkedHashSet$()._deleteTableEntry(table, temporaryKey);
- return table;
- }
- }
- _LinkedHashSet[dart.implements] = () => [LinkedHashSet$(E)];
- dart.setSignature(_LinkedHashSet, {
- constructors: () => ({_LinkedHashSet: [_LinkedHashSet$(E), []]}),
- methods: () => ({
- [_newSet]: [core.Set$(E), []],
- [_unsupported]: [dart.void, [core.String]],
- contains: [core.bool, [core.Object]],
- [_contains]: [core.bool, [core.Object]],
- lookup: [E, [core.Object]],
- [_lookup]: [E, [core.Object]],
- forEach: [dart.void, [dart.functionType(dart.void, [E])]],
- add: [core.bool, [E]],
- [_add]: [core.bool, [E]],
- remove: [core.bool, [core.Object]],
- [_remove]: [core.bool, [core.Object]],
- removeWhere: [dart.void, [dart.functionType(core.bool, [E])]],
- retainWhere: [dart.void, [dart.functionType(core.bool, [E])]],
- [_filterWhere]: [dart.void, [dart.functionType(core.bool, [E]), core.bool]],
- [_addHashTableEntry]: [core.bool, [dart.dynamic, E]],
- [_removeHashTableEntry]: [core.bool, [dart.dynamic, core.Object]],
- [_modified]: [dart.void, []],
- [_newLinkedCell]: [LinkedHashSetCell, [E]],
- [_unlinkCell]: [dart.void, [LinkedHashSetCell]],
- [_computeHashCode]: [core.int, [dart.dynamic]],
- [_getBucket]: [core.List, [dart.dynamic, dart.dynamic]],
- [_findBucketIndex]: [core.int, [dart.dynamic, dart.dynamic]]
- }),
- statics: () => ({
- _isStringElement: [core.bool, [dart.dynamic]],
- _isNumericElement: [core.bool, [dart.dynamic]],
- _getTableEntry: [dart.dynamic, [dart.dynamic, dart.dynamic]],
- _setTableEntry: [dart.void, [dart.dynamic, dart.dynamic, dart.dynamic]],
- _deleteTableEntry: [dart.void, [dart.dynamic, dart.dynamic]],
- _newHashTable: [dart.dynamic, []]
- }),
- names: ['_isStringElement', '_isNumericElement', '_getTableEntry', '_setTableEntry', '_deleteTableEntry', '_newHashTable']
- });
- dart.defineExtensionMembers(_LinkedHashSet, [
- 'contains',
- 'forEach',
- 'iterator',
- 'length',
- 'isEmpty',
- 'isNotEmpty',
- 'first',
- 'last'
- ]);
- return _LinkedHashSet;
- });
- let _LinkedHashSet = _LinkedHashSet$();
- const _LinkedIdentityHashSet$ = dart.generic(function(E) {
- class _LinkedIdentityHashSet extends _LinkedHashSet$(E) {
- _LinkedIdentityHashSet() {
- super._LinkedHashSet();
- }
- [_newSet]() {
- return new (_LinkedIdentityHashSet$(E))();
- }
- [_computeHashCode](key) {
- return core.identityHashCode(key) & 0x3ffffff;
- }
- [_findBucketIndex](bucket, element) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- let cell = dart.as(bucket[i], LinkedHashSetCell);
- if (core.identical(cell[_element], element)) return i;
- }
- return -1;
- }
- }
- dart.setSignature(_LinkedIdentityHashSet, {
- methods: () => ({[_newSet]: [core.Set$(E), []]})
- });
- return _LinkedIdentityHashSet;
- });
- let _LinkedIdentityHashSet = _LinkedIdentityHashSet$();
- const _LinkedCustomHashSet$ = dart.generic(function(E) {
- class _LinkedCustomHashSet extends _LinkedHashSet$(E) {
- _LinkedCustomHashSet(equality, hasher, validKey) {
- this[_equality] = equality;
- this[_hasher] = hasher;
- this[_validKey] = validKey != null ? validKey : dart.fn(x => dart.is(x, E), core.bool, [core.Object]);
- super._LinkedHashSet();
- }
- [_newSet]() {
- return new (_LinkedCustomHashSet$(E))(this[_equality], this[_hasher], this[_validKey]);
- }
- [_findBucketIndex](bucket, element) {
- if (bucket == null) return -1;
- let length = bucket.length;
- for (let i = 0; i < length; i++) {
- let cell = dart.as(bucket[i], LinkedHashSetCell);
- if (dart.notNull(this[_equality](dart.as(cell[_element], E), dart.as(element, E)))) return i;
- }
- return -1;
- }
- [_computeHashCode](element) {
- return this[_hasher](dart.as(element, E)) & 0x3ffffff;
- }
- add(element) {
- dart.as(element, E);
- return super[_add](element);
- }
- contains(object) {
- if (!dart.notNull(this[_validKey](object))) return false;
- return super[_contains](object);
- }
- lookup(object) {
- if (!dart.notNull(this[_validKey](object))) return null;
- return super[_lookup](object);
- }
- remove(object) {
- if (!dart.notNull(this[_validKey](object))) return false;
- return super[_remove](object);
- }
- containsAll(elements) {
- for (let element of elements) {
- if (!dart.notNull(this[_validKey](element)) || !dart.notNull(this.contains(element))) return false;
- }
- return true;
- }
- removeAll(elements) {
- for (let element of elements) {
- if (dart.notNull(this[_validKey](element))) {
- super[_remove](element);
- }
- }
- }
- }
- dart.setSignature(_LinkedCustomHashSet, {
- constructors: () => ({_LinkedCustomHashSet: [_LinkedCustomHashSet$(E), [_Equality$(E), _Hasher$(E), dart.functionType(core.bool, [core.Object])]]}),
- methods: () => ({
- [_newSet]: [core.Set$(E), []],
- add: [core.bool, [E]],
- lookup: [E, [core.Object]]
- })
- });
- dart.defineExtensionMembers(_LinkedCustomHashSet, ['contains']);
- return _LinkedCustomHashSet;
- });
- let _LinkedCustomHashSet = _LinkedCustomHashSet$();
- class LinkedHashSetCell extends core.Object {
- LinkedHashSetCell(element) {
- this[_element] = element;
- this[_next] = null;
- this[_previous] = null;
- }
- }
- dart.setSignature(LinkedHashSetCell, {
- constructors: () => ({LinkedHashSetCell: [LinkedHashSetCell, [dart.dynamic]]})
- });
- const LinkedHashSetIterator$ = dart.generic(function(E) {
- class LinkedHashSetIterator extends core.Object {
- LinkedHashSetIterator(set, modifications) {
- this[_set] = set;
- this[_modifications] = modifications;
- this[_cell] = null;
- this[_current] = null;
- this[_cell] = dart.as(dart.dload(this[_set], _first), LinkedHashSetCell);
- }
- get current() {
- return this[_current];
- }
- moveNext() {
- if (!dart.equals(this[_modifications], dart.dload(this[_set], _modifications))) {
- dart.throw(new core.ConcurrentModificationError(this[_set]));
- } else if (this[_cell] == null) {
- this[_current] = null;
- return false;
- } else {
- this[_current] = dart.as(this[_cell][_element], E);
- this[_cell] = this[_cell][_next];
- return true;
- }
- }
- }
- LinkedHashSetIterator[dart.implements] = () => [core.Iterator$(E)];
- dart.setSignature(LinkedHashSetIterator, {
- constructors: () => ({LinkedHashSetIterator: [LinkedHashSetIterator$(E), [dart.dynamic, core.int]]}),
- methods: () => ({moveNext: [core.bool, []]})
- });
- return LinkedHashSetIterator;
- });
- let LinkedHashSetIterator = LinkedHashSetIterator$();
- // Exports:
- exports.UnmodifiableListView$ = UnmodifiableListView$;
- exports.HashMap$ = HashMap$;
- exports.HashMap = HashMap;
- exports.SetMixin$ = SetMixin$;
- exports.SetMixin = SetMixin;
- exports.SetBase$ = SetBase$;
- exports.SetBase = SetBase;
- exports.HashSet$ = HashSet$;
- exports.HashSet = HashSet;
- exports.IterableMixin$ = IterableMixin$;
- exports.IterableMixin = IterableMixin;
- exports.IterableBase$ = IterableBase$;
- exports.IterableBase = IterableBase;
- exports.HasNextIterator$ = HasNextIterator$;
- exports.HasNextIterator = HasNextIterator;
- exports.LinkedHashMap$ = LinkedHashMap$;
- exports.LinkedHashMap = LinkedHashMap;
- exports.LinkedHashSet$ = LinkedHashSet$;
- exports.LinkedHashSet = LinkedHashSet;
- exports.LinkedList$ = LinkedList$;
- exports.LinkedList = LinkedList;
- exports.LinkedListEntry$ = LinkedListEntry$;
- exports.LinkedListEntry = LinkedListEntry;
- exports.ListMixin$ = ListMixin$;
- exports.ListMixin = ListMixin;
- exports.ListBase$ = ListBase$;
- exports.ListBase = ListBase;
- exports.MapMixin$ = MapMixin$;
- exports.MapMixin = MapMixin;
- exports.MapBase$ = MapBase$;
- exports.MapBase = MapBase;
- exports.UnmodifiableMapBase$ = UnmodifiableMapBase$;
- exports.UnmodifiableMapBase = UnmodifiableMapBase;
- exports.MapView$ = MapView$;
- exports.MapView = MapView;
- exports.UnmodifiableMapView$ = UnmodifiableMapView$;
- exports.UnmodifiableMapView = UnmodifiableMapView;
- exports.Maps = Maps;
- exports.Queue$ = Queue$;
- exports.Queue = Queue;
- exports.DoubleLinkedQueueEntry$ = DoubleLinkedQueueEntry$;
- exports.DoubleLinkedQueueEntry = DoubleLinkedQueueEntry;
- exports.DoubleLinkedQueue$ = DoubleLinkedQueue$;
- exports.DoubleLinkedQueue = DoubleLinkedQueue;
- exports.ListQueue$ = ListQueue$;
- exports.ListQueue = ListQueue;
- exports.SplayTreeMap$ = SplayTreeMap$;
- exports.SplayTreeMap = SplayTreeMap;
- exports.SplayTreeSet$ = SplayTreeSet$;
- exports.SplayTreeSet = SplayTreeSet;
- exports.HashMapKeyIterable$ = HashMapKeyIterable$;
- exports.HashMapKeyIterable = HashMapKeyIterable;
- exports.HashMapKeyIterator$ = HashMapKeyIterator$;
- exports.HashMapKeyIterator = HashMapKeyIterator;
- exports.LinkedHashMapCell = LinkedHashMapCell;
- exports.LinkedHashMapKeyIterable$ = LinkedHashMapKeyIterable$;
- exports.LinkedHashMapKeyIterable = LinkedHashMapKeyIterable;
- exports.LinkedHashMapKeyIterator$ = LinkedHashMapKeyIterator$;
- exports.LinkedHashMapKeyIterator = LinkedHashMapKeyIterator;
- exports.HashSetIterator$ = HashSetIterator$;
- exports.HashSetIterator = HashSetIterator;
- exports.LinkedHashSetCell = LinkedHashSetCell;
- exports.LinkedHashSetIterator$ = LinkedHashSetIterator$;
- exports.LinkedHashSetIterator = LinkedHashSetIterator;
-});
« no previous file with comments | « lib/runtime/dart/async.js ('k') | lib/runtime/dart/convert.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698