package jetbrains.mps.internal.collections.runtime;
/*Generated by MPS */
import java.util.Queue;
import java.io.Serializable;
import jetbrains.mps.baseLanguage.closures.runtime.AdapterClass;
import jetbrains.mps.baseLanguage.closures.runtime._FunctionTypes;
import java.util.Collection;
public abstract class AbstractQueueSequence<T> extends AbstractCollectionSequence<T> implements Queue<T>, IQueueSequence<T>, Serializable {
private static final long serialVersionUID = 7547609132841411843L;
private Queue<T> queue;
protected AbstractQueueSequence(Queue<T> queue) {
setQueue(queue);
}
protected AbstractQueueSequence() {
}
@Override
public T element() {
return getQueue().element();
}
@Override
public boolean offer(T o) {
return getQueue().offer(o);
}
@Override
public T peek() {
return getQueue().peek();
}
@Override
public T poll() {
return getQueue().poll();
}
@Override
public T remove() {
return getQueue().remove();
}
@Override
public T addLastElement(T t) {
getQueue().add(t);
return t;
}
@Override
public T first() {
if (Sequence.NULL_WHEN_EMPTY) {
return getQueue().peek();
}
return getQueue().element();
}
@Override
public T removeFirstElement() {
if (Sequence.NULL_WHEN_EMPTY) {
return getQueue().poll();
}
return getQueue().remove();
}
@Override
public IQueueSequence<T> addSequence(ISequence<? extends T> seq) {
return (IQueueSequence<T>) super.addSequence(seq);
}
@Override
public IQueueSequence<T> removeSequence(ISequence<? extends T> seq) {
return (IQueueSequence<T>) super.removeSequence(seq);
}
@Override
public IQueueSequence<T> removeWhere(@AdapterClass(value = "IWhereFilter") _FunctionTypes._return_P1_E0<? extends Boolean, ? super T> filter) {
return (IQueueSequence<T>) super.removeWhere(filter);
}
@Override
public IQueueSequence<T> asUnmodifiable() {
throw new UnsupportedOperationException();
}
@Override
public IQueueSequence<T> asSynchronized() {
throw new UnsupportedOperationException();
}
@Override
public Queue<T> toQueue() {
return this;
}
@Override
protected Collection<T> getCollection() {
return queue;
}
protected Queue<T> getQueue() {
return queue;
}
protected void setQueue(Queue<T> queue) {
this.queue = queue;
}
}