package com.sap.runlet.expressionpad.launch;
import org.eclipse.debug.core.model.DebugElement;
import org.eclipse.debug.core.model.IValue;
import org.eclipse.debug.core.model.IVariable;
import com.sap.runlet.abstractinterpreter.AbstractObjectFormatter;
import com.sap.runlet.abstractinterpreter.objects.RunletObject;
import com.sap.runlet.expressionpad.Activator;
import data.classes.AssociationEnd;
import data.classes.ClassTypeDefinition;
import data.classes.SignatureImplementation;
import data.classes.TypeDefinition;
public class RunletVariable extends DebugElement implements IVariable {
private String name;
private RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition> value;
private final AbstractObjectFormatter<AssociationEnd, TypeDefinition, ClassTypeDefinition, SignatureImplementation> formatter;
public RunletVariable(String name, RunletObject<AssociationEnd, TypeDefinition, ClassTypeDefinition> value, RunletDebugTarget debugTarget, AbstractObjectFormatter<AssociationEnd, TypeDefinition, ClassTypeDefinition, SignatureImplementation> formatter) {
super(debugTarget);
this.name = name;
this.value = value;
this.formatter = formatter;
}
public int hashCode() {
return getName().hashCode() ^ getValue().hashCode();
}
public boolean equals(Object o) {
boolean result = false;
if (o instanceof RunletVariable) {
result = getName().equals(((RunletVariable) o).getName()) &&
getValue().equals(((RunletVariable) o).getValue());
}
return result;
}
@Override
public String getName() {
return name;
}
@Override
public String getReferenceTypeName() {
return formatter.formatType(value);
}
@Override
public IValue getValue() {
return new RunletValue(value, getDebugTarget(), formatter);
}
@Override
public boolean hasValueChanged() {
// TODO support RunletVariable.hasValueChanged
return false;
}
@Override
public RunletDebugTarget getDebugTarget() {
return (RunletDebugTarget) super.getDebugTarget();
}
@Override
public String getModelIdentifier() {
return Activator.PLUGIN_ID;
}
@Override
public void setValue(String expression) {
// TODO Auto-generated method stub
}
@Override
public void setValue(IValue value) {
// TODO Auto-generated method stub
}
@Override
public boolean supportsValueModification() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean verifyValue(String expression) {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean verifyValue(IValue value) {
// TODO Auto-generated method stub
return false;
}
}