blob: 3352537264e7d8853e092255a6d4e95ca4eb2d45 [file] [log] [blame]
/*
* Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
* for details. All rights reserved. Use of this source code is governed by a
* BSD-style license that can be found in the LICENSE file.
*/
/**
* @assertion abstract class SetMixin<K, V>
* Mixin implementation of Set.
* This class provides a base implementation of a Set that depends only on the
* abstract members: add, contains, lookup, remove, iterator, length and toSet.
* @description Implementation of add, contains, lookup, remove, iterator,
* length and toSet.
* @author sgrekhov@unipro.ru
*/
library set_mixin_lib;
import "dart:collection";
class SetMixinImpl<E> extends Object with SetMixin<E> {
LinkedHashSet<E> _set;
SetMixinImpl(): _set = new LinkedHashSet<E>();
SetMixinImpl.from(Iterable content): _set = new LinkedHashSet<E>.from(content);
bool add(E element) => _set.add(element);
bool contains(Object element) => _set.contains(element);
E lookup(E element) => _set.lookup(element);
bool remove(Object element) => _set.remove(element);
Iterator<E> get iterator => _set.iterator;
int get length => _set.length;
Set<E> toSet() => _set.toSet();
}
Set create([Iterable content]) {
if (content == null) {
return new SetMixinImpl();
} else {
return new SetMixinImpl.from(content);
}
}