/*******************************************************************************
* Copyright (c) 2005, 2007 committers of openArchitectureWare 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:
* committers of openArchitectureWare - initial API and implementation
*******************************************************************************/
package org.eclipse.xtend.expression;
import java.util.Set;
import org.eclipse.xtend.typesystem.Operation;
import org.eclipse.xtend.typesystem.Property;
import org.eclipse.xtend.typesystem.Type;
/**
* @author Sven Efftinge (http://www.efftinge.de)
* @author Arno Haase
*/
public interface TypeSystem {
Type getType(Object obj);
Type getTypeForName(String name);
Type[] getAllTypes();
Type[] findTypesForPrefix(String prefix);
Set<String> getNamespaces();
Operation findOperation(String name, Object target, Object[] params);
Property findProperty(String name, Object target);
// Convenience shortcuts for access to built-in types
Type getVoidType();
Type getBooleanType();
Type getIntegerType();
Type getRealType();
Type getStringType();
Type getObjectType();
Type getListType(Type innerType);
Type getSetType(Type innerType);
Type getCollectionType(Type innerType);
Type getTypeType();
Type getFeatureType();
Type getPropertyType();
Type getOperationType();
Type getStaticPropertyType();
/** Clears internal resources (caches). */
void release();
}