/*******************************************************************************
* Copyright (c) 2011 Gerd Wuetherich (gerd@gerd-wuetherich.de).
* 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:
* Gerd Wuetherich (gerd@gerd-wuetherich.de) - initial API and implementation
******************************************************************************/
package org.bundlemaker.core.jtype;
import java.util.Collection;
import java.util.Set;
/**
* <p>
* </p>
*
* @author Gerd Wütherich (gerd@gerd-wuetherich.de)
*/
public interface ITypeModule {
/**
* <p>
* Returns the {@link IType} with the specified fully qualified name or <code>null</code> if no {@link IType} with the
* specified name exists.
* </p>
*
* @param fullyQualifiedName
* @return the {@link IType} with the specified fully qualified name or <code>null</code> if no {@link IType} with the
* specified name exists.
*/
IType getType(String fullyQualifiedName);
/**
* <p>
* </p>
*
* @param fullyQualifiedName
* @return
*/
boolean containsType(String fullyQualifiedName);
/**
* <p>
* Returns a collection with all contained {@link IType ITypes}.
* </p>
*
* @return a collection with all contained {@link IType ITypes}.
*/
Collection<IType> getContainedTypes();
/**
* <p>
* Returns a collection with the names of all contained types.
* </p>
*
* @return a collection with the names of all contained types.
*/
Collection<String> getContainedTypeNames();
/**
* <p>
* Returns <code>true</code>, if this container contains all specified types.
* </p>
*
* @param typeNames
* @return
*/
boolean containsAll(Set<String> typeNames);
void add(IType type2);
/**
* <p>
* </p>
*
* @param excludeContainedTypes
* @return
*/
Set<IReference> getReferences();
void remove(IType type);
}