package org.erlide.engine.services.search;
import java.util.Collection;
import org.eclipse.core.runtime.CoreException;
import org.erlide.engine.model.ErlElementKind;
import org.erlide.engine.model.ErlModelException;
import org.erlide.engine.model.IErlElement;
import org.erlide.engine.model.erlang.ErlangFunction;
import org.erlide.engine.model.erlang.IErlFunction;
import org.erlide.engine.model.erlang.IErlPreprocessorDef;
import org.erlide.engine.model.erlang.IErlTypespec;
import org.erlide.engine.model.erlang.ISourceRange;
import org.erlide.engine.model.root.IErlElementLocator;
import org.erlide.engine.model.root.IErlModule;
import org.erlide.engine.model.root.IErlProject;
import com.ericsson.otp.erlang.OtpErlangRangeException;
public interface ModelFindService {
ISourceRange findVariable(ISourceRange range, String variableName, String elementText)
throws OtpErlangRangeException;
IErlModule findInclude(IErlElementLocator model, IErlProject project,
IErlModule module, final String includeName, final String includePath)
throws CoreException;
IErlTypespec findTypespec(IErlModule module, String name) throws CoreException;
IErlPreprocessorDef findPreprocessorDef(final IErlModule module,
final String definedName, final ErlElementKind kind) throws CoreException;
IErlPreprocessorDef findPreprocessorDef(final Collection<IErlProject> projects,
final String moduleName, final String definedName, final ErlElementKind kind)
throws CoreException;
IErlElement findTypeDef(final IErlElementLocator model, final IErlProject project,
final IErlModule module, String moduleName, final String typeName,
final String modulePath, final IErlElementLocator.Scope scope)
throws CoreException;
IErlModule findModule(final IErlElementLocator model, final IErlProject project,
final String moduleName, final String modulePath,
final IErlElementLocator.Scope scope) throws ErlModelException;
IErlFunction findFunction(final IErlElementLocator model, final IErlProject project,
final IErlModule module, String moduleName, final String modulePath,
final ErlangFunction erlangFunction, final IErlElementLocator.Scope scope)
throws CoreException;
String resolveMacroValue(final String definedName, final IErlModule module);
}