package org.eclipse.cdt.internal.core.util; | |
/********************************************************************** | |
* Copyright (c) 2002,2003 Rational Software Corporation and others. | |
* All rights reserved. This program and the accompanying materials | |
* are made available under the terms of the Common Public License v0.5 | |
* which accompanies this distribution, and is available at | |
* http://www.eclipse.org/legal/cpl-v05.html | |
* | |
* Contributors: | |
* Rational Software - Initial API and implementation | |
***********************************************************************/ | |
import java.util.Enumeration; | |
/** | |
* The <code>LRUCacheEnumerator</code> returns its elements in | |
* the order they are found in the <code>LRUCache</code>, with the | |
* most recent elements first. | |
* | |
* Once the enumerator is created, elements which are later added | |
* to the cache are not returned by the enumerator. However, | |
* elements returned from the enumerator could have been closed | |
* by the cache. | |
* | |
* This class is similar to the JDT LRUCacheEnumerator class. | |
*/ | |
public class LRUCacheEnumerator implements Enumeration { | |
/** | |
* Current element; | |
*/ | |
protected LRUEnumeratorElement fElementQueue; | |
public static class LRUEnumeratorElement { | |
/** | |
* Value returned by <code>nextElement()</code>; | |
*/ | |
public Object fValue; | |
/** | |
* Next element | |
*/ | |
public LRUEnumeratorElement fNext; | |
/** | |
* Constructor | |
*/ | |
public LRUEnumeratorElement(Object value) { | |
fValue = value; | |
} | |
} | |
/** | |
* Creates a CacheEnumerator on the list of <code>LRUEnumeratorElements</code>. | |
*/ | |
public LRUCacheEnumerator(LRUEnumeratorElement firstElement) { | |
fElementQueue = firstElement; | |
} | |
/** | |
* Returns true if more elements exist. | |
*/ | |
public boolean hasMoreElements() { | |
return fElementQueue != null; | |
} | |
/** | |
* Returns the next element. | |
*/ | |
public Object nextElement() { | |
Object temp = fElementQueue.fValue; | |
fElementQueue = fElementQueue.fNext; | |
return temp; | |
} | |
} | |