package fr.lteconsulting.hexa.classinfo;
import java.util.Set;
public interface IClassInfo
{
/**
* Obtain a runtime type information on a class.<br/><br/>
*
* Throws a RuntimeException if the type information provider is not found.
*
* @param clazz The class object for which type information is required
* @return The runtime information interface
*/
<T> Clazz<T> Clazz( Class<T> clazz );
/**
* Register a runtime type information provider
*
* @param clazz
*/
<T> void RegisterClazz( Clazz<T> clazz );
/**
* Obtain a runtime type information on a class.
*
* @param name Name of the class for which type information is required
* @return The runtime information interface
*/
Clazz<?> FindClazz( String name );
/**
* Obtain a runtime type information on a class.
*
* @param clazz The class object for which type information is required
* @return The runtime information interface
*/
<T> Clazz<T> FindClazz( Class<T> clazz );
/**
* Retrieve the set of registered type information providers
* @return
*/
Set<Class<?>> GetRegisteredClazz();
}