/******************************************************************************* * Copyright (c) 2005, 2009 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation * Anton Leherbauer (Wind River Systems) *******************************************************************************/ package org.eclipse.cdt.internal.core.parser; import org.eclipse.cdt.core.parser.CodeReader; import org.eclipse.cdt.internal.core.util.OverflowingLRUCache; /** * This class is a wrapper/implementor class for OverflowingLRUCache. * * It uses CodeReaderCacheEntry (which implements ILRUCacheable) to specify that the size of * the cache should be relative to the size of the entries and not the number of entries. * @deprecated */ @Deprecated public class CodeReaderLRUCache extends OverflowingLRUCache<String, CodeReaderCacheEntry> { /** * Creates a new CodeReaderLRUCache with a specified initial maximum size. * @param size the maximum size of the cache in terms of MB */ public CodeReaderLRUCache(int size) { super(); // need to initialize the LRUCache with super() so that the size of the hashtable isn't relative to the size in MB this.setSpaceLimit(size); } // must be overloaded, required to remove entries from the cache @Override protected boolean close(LRUCacheEntry<String,CodeReaderCacheEntry> entry) { Object obj = remove(entry._fKey); if (obj != null) return true; return false; } @Override protected OverflowingLRUCache<String,CodeReaderCacheEntry> newInstance(int size, int overflow) { return null; } /** * Removes an entry from the cache and returns the entry that was removed if found. * Otherwise null is returned. */ @Override public CodeReader remove(String key) { Object removed = removeKey(key); if (removed instanceof CodeReaderCacheEntry) return ((CodeReaderCacheEntry)removed).getCodeReader(); return null; } /** * Puts a CodeReader into the cache by wrapping it with a CodeReaderCacheEntry first. * This way the proper size of the element in the cache can be determined * via the CodeReaderCacheEntry. */ public CodeReader put(String key, CodeReader value) { CodeReaderCacheEntry entry = new CodeReaderCacheEntry(value); CodeReaderCacheEntry ret = put(key, entry); if (ret != null) return ret.getCodeReader(); return null; } /** * Retrieves a CodeReader from the cache corresponding to the path specified by the key. */ public CodeReader get(String key) { CodeReaderCacheEntry obj = peek(key); if (obj != null) return obj.getCodeReader(); return null; } }