105436638acc7c010349a69c3395f1a57c642dc62Ying Wang/*
205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Copyright (C) 2007 The Guava Authors
305436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Licensed under the Apache License, Version 2.0 (the "License");
505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * you may not use this file except in compliance with the License.
605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * You may obtain a copy of the License at
705436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
805436638acc7c010349a69c3395f1a57c642dc62Ying Wang * http://www.apache.org/licenses/LICENSE-2.0
905436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
1005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * Unless required by applicable law or agreed to in writing, software
1105436638acc7c010349a69c3395f1a57c642dc62Ying Wang * distributed under the License is distributed on an "AS IS" BASIS,
1205436638acc7c010349a69c3395f1a57c642dc62Ying Wang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1305436638acc7c010349a69c3395f1a57c642dc62Ying Wang * See the License for the specific language governing permissions and
1405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * limitations under the License.
1505436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
1605436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1705436638acc7c010349a69c3395f1a57c642dc62Ying Wangpackage com.google.common.collect;
1805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
1905436638acc7c010349a69c3395f1a57c642dc62Ying Wangimport com.google.common.annotations.GwtCompatible;
2005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2105436638acc7c010349a69c3395f1a57c642dc62Ying Wangimport java.util.ListIterator;
2205436638acc7c010349a69c3395f1a57c642dc62Ying Wang
2305436638acc7c010349a69c3395f1a57c642dc62Ying Wang/**
2405436638acc7c010349a69c3395f1a57c642dc62Ying Wang * A list iterator which forwards all its method calls to another list
2505436638acc7c010349a69c3395f1a57c642dc62Ying Wang * iterator. Subclasses should override one or more methods to modify the
2605436638acc7c010349a69c3395f1a57c642dc62Ying Wang * behavior of the backing iterator as desired per the <a
2705436638acc7c010349a69c3395f1a57c642dc62Ying Wang * href="http://en.wikipedia.org/wiki/Decorator_pattern">decorator pattern</a>.
2805436638acc7c010349a69c3395f1a57c642dc62Ying Wang *
2905436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @author Mike Bostock
3005436638acc7c010349a69c3395f1a57c642dc62Ying Wang * @since 2.0 (imported from Google Collections Library)
3105436638acc7c010349a69c3395f1a57c642dc62Ying Wang */
3205436638acc7c010349a69c3395f1a57c642dc62Ying Wang@GwtCompatible
3305436638acc7c010349a69c3395f1a57c642dc62Ying Wangpublic abstract class ForwardingListIterator<E> extends ForwardingIterator<E>
3405436638acc7c010349a69c3395f1a57c642dc62Ying Wang    implements ListIterator<E> {
3505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  /** Constructor for use by subclasses. */
3705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  protected ForwardingListIterator() {}
3805436638acc7c010349a69c3395f1a57c642dc62Ying Wang
3905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  @Override protected abstract ListIterator<E> delegate();
4005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  @Override
4205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  public void add(E element) {
4305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    delegate().add(element);
4405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
4505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
4605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  @Override
4705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  public boolean hasPrevious() {
4805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return delegate().hasPrevious();
4905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
5005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  @Override
5205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  public int nextIndex() {
5305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return delegate().nextIndex();
5405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
5505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
5605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  @Override
5705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  public E previous() {
5805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return delegate().previous();
5905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
6005436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6105436638acc7c010349a69c3395f1a57c642dc62Ying Wang  @Override
6205436638acc7c010349a69c3395f1a57c642dc62Ying Wang  public int previousIndex() {
6305436638acc7c010349a69c3395f1a57c642dc62Ying Wang    return delegate().previousIndex();
6405436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
6505436638acc7c010349a69c3395f1a57c642dc62Ying Wang
6605436638acc7c010349a69c3395f1a57c642dc62Ying Wang  @Override
6705436638acc7c010349a69c3395f1a57c642dc62Ying Wang  public void set(E element) {
6805436638acc7c010349a69c3395f1a57c642dc62Ying Wang    delegate().set(element);
6905436638acc7c010349a69c3395f1a57c642dc62Ying Wang  }
7005436638acc7c010349a69c3395f1a57c642dc62Ying Wang}
7105436638acc7c010349a69c3395f1a57c642dc62Ying Wang