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