content: /*******************************************************************************
   * Copyright (c) 2005, 2007 IBM Corporation and others.
   * This program and the accompanying materials are made available under the
   * terms of the Eclipse Public License v. 2.0 which is available at
   * http://www.eclipse.org/legal/epl-2.0.
   * 
   * SPDX-License-Identifier: EPL-2.0
   *
   
   *******************************************************************************/
  package org.eclipse.dltk.core;
  
  public interface ISourceModuleInfoCache {
  	/**
  	 * Info hold any kind of information associated with source module. If
  	 * source module are modified, information are deleted.
  	 */
  	interface ISourceModuleInfo {
  		Object get(String key);
  
  		void put(String key, Object value);
  
  		void remove(String key);
  
  		boolean isEmpty();
  	}
  
  	/**
  	 * Return new cache instance for specified module.
  	 */
  	public ISourceModuleInfo get(ISourceModule module);
  
  	/**
  	 * Remove specified module from cache.
  	 */
  	public void remove(ISourceModule sourceModule);
  
  	/**
  	 * Remove all information from cache. Called then required reparse of all
  	 * modules.
  	 */
  	public void clear();
  
  	/**
  	 * Returns number of the elements, currently contained in the cache.
  	 */
  	public int size();
  
  	/**
  	 * Returns the capacity of the cache, i.e. the number of elements it can
  	 * contain.
  	 */
  	public int capacity();
  }
  