CommonContractFactory.java
package dev.civl.mc.model.common.contract;
import java.util.List;
import java.util.Set;
import dev.civl.mc.model.IF.CIVLFunction;
import dev.civl.mc.model.IF.CIVLSource;
import dev.civl.mc.model.IF.Scope;
import dev.civl.mc.model.IF.contract.CallEvent;
import dev.civl.mc.model.IF.contract.CompositeEvent;
import dev.civl.mc.model.IF.contract.CompositeEvent.CompositeEventOperator;
import dev.civl.mc.model.IF.contract.ContractFactory;
import dev.civl.mc.model.IF.contract.DependsEvent;
import dev.civl.mc.model.IF.contract.DependsEvent.DependsEventKind;
import dev.civl.mc.model.IF.contract.FunctionBehavior;
import dev.civl.mc.model.IF.contract.FunctionContract;
import dev.civl.mc.model.IF.contract.MPICollectiveBehavior;
import dev.civl.mc.model.IF.contract.MPICollectiveBehavior.MPICommunicationPattern;
import dev.civl.mc.model.IF.contract.MemoryEvent;
import dev.civl.mc.model.IF.contract.NamedFunctionBehavior;
import dev.civl.mc.model.IF.expression.Expression;
public class CommonContractFactory implements ContractFactory {
@Override
public FunctionBehavior newFunctionBehavior(CIVLSource source) {
return new CommonFunctionBehavior(source);
}
@Override
public NamedFunctionBehavior newNamedFunctionBehavior(CIVLSource source,
String name) {
return new CommonNamedFunctionBehavior(source, name);
}
@Override
public FunctionContract newFunctionContract(CIVLSource source, Scope scope) {
return new CommonFunctionContract(source, scope);
}
@Override
public CallEvent newCallEvent(CIVLSource source, CIVLFunction function,
List<Expression> arguments) {
return new CommonCallEvent(source, function, arguments);
}
@Override
public CompositeEvent newCompositeEvent(CIVLSource source,
CompositeEventOperator op, DependsEvent left, DependsEvent right) {
return new CommonCompositeEvent(source, op, left, right);
}
@Override
public MemoryEvent newMemoryEvent(CIVLSource source, DependsEventKind kind,
Set<Expression> memoryUnits) {
return new CommonMemoryEvent(source, kind, memoryUnits);
}
@Override
public DependsEvent newAnyactEvent(CIVLSource source) {
return new CommonDependsEvent(source, DependsEventKind.ANYACT);
}
@Override
public DependsEvent newNoactEvent(CIVLSource source) {
return new CommonDependsEvent(source, DependsEventKind.NOACT);
}
@Override
public MPICollectiveBehavior newMPICollectiveBehavior(CIVLSource source,
Expression communicator, MPICommunicationPattern pattern) {
return new CommonMPICollectiveBehavior(source, communicator, pattern);
}
}