package jetbrains.mps.internal.collections.runtime; /*Generated by MPS */ import java.util.SortedMap; import java.io.Serializable; import java.util.Comparator; import java.util.TreeMap; import jetbrains.mps.internal.collections.runtime.impl.NullSortedMapSequence; public class SortedMapSequence<U, V> extends AbstractMapSequence<U, V> implements ISortedMapSequence<U, V>, SortedMap<U, V>, Serializable { private static final long serialVersionUID = 4148607188257567855L; protected SortedMapSequence(SortedMap<U, V> map) { super(map); } @Override public Comparator<? super U> comparator() { return getMap().comparator(); } @Override public U firstKey() { return getMap().firstKey(); } @Override public ISortedMapSequence<U, V> headMap(U toKey) { return SortedMapSequence.fromMap(getMap().headMap(toKey)); } @Override public U lastKey() { return getMap().lastKey(); } @Override public ISortedMapSequence<U, V> subMap(U fromKey, U toKey) { return SortedMapSequence.fromMap(getMap().subMap(fromKey, toKey)); } @Override public ISortedMapSequence<U, V> tailMap(U fromKey) { return SortedMapSequence.fromMap(getMap().tailMap(fromKey)); } @Override protected SortedMap<U, V> getMap() { return (SortedMap<U, V>) super.getMap(); } public static <P, Q> SortedMapSequence.SortedMapSequenceInitializer<P, Q> fromKeysArray(P... keys) { SortedMap<P, Q> map = new TreeMap<P, Q>(); return new SortedMapSequence.SortedMapSequenceInitializer<P, Q>(new SortedMapSequence<P, Q>(map), keys); } public static <P, Q> SortedMapSequence.SortedMapSequenceInitializer<P, Q> fromMapAndKeysArray(SortedMap<P, Q> map, P... keys) { return new SortedMapSequence.SortedMapSequenceInitializer<P, Q>(new SortedMapSequence<P, Q>(map), keys); } public static <P, Q> ISortedMapSequence<P, Q> fromArray(IMapping<P, Q>... mappings) { SortedMap<P, Q> map = new TreeMap<P, Q>(); for (IMapping<P, Q> mp : mappings) { map.put(mp.key(), mp.value()); } return new SortedMapSequence<P, Q>(map); } @SuppressWarnings(value = "unchecked") public static <P, Q> ISortedMapSequence<P, Q> fromIterable(Iterable<IMapping<P, Q>> iterable) { if (iterable instanceof ISortedMapSequence) { return (ISortedMapSequence<P, Q>) iterable; } SortedMap<P, Q> map = new TreeMap<P, Q>(); for (IMapping<P, Q> mpng : iterable) { map.put(mpng.key(), mpng.value()); } return new SortedMapSequence<P, Q>(map); } public static <P, Q> ISortedMapSequence<P, Q> fromMap(SortedMap<P, Q> map) { if (Sequence.USE_NULL_SEQUENCE) { if (map == null) { return NullSortedMapSequence.<P,Q>instance(); } } if (map instanceof ISortedMapSequence) { return (ISortedMapSequence<P, Q>) map; } return new SortedMapSequence<P, Q>(map); } public static class SortedMapSequenceInitializer<P, Q> extends MapSequence.MapSequenceInitializer<P, Q> { private SortedMapSequenceInitializer(ISortedMapSequence<P, Q> mapSeq, P... keys) { super(mapSeq, keys); } @Override public ISortedMapSequence<P, Q> withValues(Q... values) { return (ISortedMapSequence<P, Q>) super.withValues(values); } } }