package org.rascalmpl.value.impl; import org.rascalmpl.value.ISet; import org.rascalmpl.value.ISetRelation; import org.rascalmpl.value.IValueFactory; import org.rascalmpl.value.impl.func.SetFunctions; public class DefaultRelationViewOnSet implements ISetRelation<ISet> { protected final IValueFactory vf; protected final ISet rel1; public DefaultRelationViewOnSet(final IValueFactory vf, final ISet rel1) { this.vf = vf; this.rel1 = rel1; } @Override public ISet compose(ISetRelation<ISet> rel2) { return SetFunctions.compose(vf, rel1, rel2.asSet()); } @Override public ISet closure() { return SetFunctions.closure(vf, rel1); } @Override public ISet closureStar() { return SetFunctions.closureStar(vf, rel1); } @Override public int arity() { return rel1.getElementType().getArity(); } @Override public ISet project(int... fieldIndexes) { return SetFunctions.project(vf, rel1, fieldIndexes); } @Override public ISet projectByFieldNames(String... fieldsNames) { return SetFunctions.projectByFieldNames(vf, rel1, fieldsNames); } @Override public ISet carrier() { return SetFunctions.carrier(vf, rel1); } @Override public ISet domain() { return SetFunctions.domain(vf, rel1); } @Override public ISet range() { return SetFunctions.range(vf, rel1); } @Override public ISet asSet() { return rel1; } @Override public String toString() { return rel1.toString(); } }