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