package org.erlide.scoping; import org.eclipse.emf.ecore.resource.ResourceSet; import org.eclipse.xtext.resource.IResourceDescriptions; import org.erlide.erlang.Atom; import org.erlide.erlang.AtomRefTarget; import com.google.inject.Inject; public enum ErlangLinkCategory { NONE { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return null; } }, MODULE { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return helper.getModuleRef(index, atom, rset); } }, FUNCTION_CALL_LOCAL { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return helper.getLocalCallRef(index, atom, rset); } }, FUNCTION_CALL_REMOTE { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return helper.getRemoteCallRef(index, atom, rset); } }, FUNCTION_REF_LOCAL { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return helper.getLocalFunRefRef(index, atom, rset); } }, FUNCTION_REF_REMOTE { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return helper.getRemoteFunRefRef(index, atom, rset); } }, RECORD { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return helper.getRecordRef(index, atom, rset); } }, RECORD_FIELD { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return helper.getRecordFieldRef(index, atom, rset); } }, TYPE_DEF { @Override public AtomRefTarget getRef(final IResourceDescriptions index, final Atom atom, final ResourceSet rset) { return helper.getTypeRef(index, atom, rset); } }; @Inject private static ErlangLinkingHelper helper; public abstract AtomRefTarget getRef(IResourceDescriptions index, Atom atom, ResourceSet rset); }