package jetbrains.mps.smodel.search;
/*Generated by MPS */
import org.jetbrains.mps.util.Condition;
import org.jetbrains.mps.openapi.model.SNode;
import org.jetbrains.mps.openapi.model.SModelReference;
import jetbrains.mps.util.SNodeOperations;
import org.jetbrains.annotations.NotNull;
import java.util.List;
public abstract class AbstractSearchScope implements ISearchScope {
protected static final Condition<SNode> TRUE_CONDITION = new Condition<SNode>() {
@Override
public boolean met(SNode object) {
return true;
}
};
public AbstractSearchScope() {
}
@Override
public IReferenceInfoResolver getReferenceInfoResolver(SNode referenceNode, SNode targetConcept) {
return new IReferenceInfoResolver() {
@Override
public SNode resolve(String referenceInfo, SModelReference targetModelReference) {
if (referenceInfo == null) {
return null;
}
for (SNode node : getNodes()) {
if (referenceInfo.equals(SNodeOperations.getResolveInfo(node))) {
return node;
}
}
return null;
}
};
}
@NotNull
@Override
public final List<SNode> getNodes() {
return getNodes(TRUE_CONDITION);
}
@Override
public boolean isInScope(final SNode node) {
return getNodes(new Condition<SNode>() {
@Override
public boolean met(SNode n) {
return n == node;
}
}).size() > 0;
}
}