package synthesijer.scheduler;
import java.util.ArrayList;
import synthesijer.ast.Type;
public class InstanceRefOperand implements Operand{
public final String className;
private final ArrayList<ParamPair> parameters = new ArrayList<>();
private final String name;
private final Type type;
public InstanceRefOperand(String name, Type type, String className){
this.name = name;
this.type = type;
this.className = className;
}
public void addParameter(String key, String value){
this.parameters.add(new ParamPair(key, value));
}
public ArrayList<ParamPair> getParameters(){
return parameters;
}
class ParamPair{
public final String key;
public final String value;
public ParamPair(String k, String v){
this.key = k;
this.value = v;
}
}
@Override
public boolean isChaining(SchedulerItem ctx) {
return false;
};
@Override
public String getName(){
return name;
}
@Override
public Type getType(){
return type;
};
@Override
public String info(){
String s = "InstanceRef<" + className + ">(";
String sep = "";
for(ParamPair p: parameters){
s += sep + p.key + "->" + p.value;
sep = ", ";
}
s += ")";
return s;
}
@Override
public String dump(){
return toSexp();
}
@Override
public String toSexp(){
String s = "(INSTANCE-REF " + className + " " + getName() + " (";
String sep = "(";
for(ParamPair p: parameters){
s += sep + "(" + p.key + " " + p.value + ")";
sep = " ";
}
s += "))";
return s;
}
}