package jetbrains.mps.debugger.java.api.evaluation;
/*Generated by MPS */
import jetbrains.mps.debugger.java.api.state.JavaUiState;
import jetbrains.mps.debugger.java.api.evaluation.proxies.IObjectValueProxy;
import com.sun.jdi.ObjectReference;
import jetbrains.mps.debugger.java.api.evaluation.proxies.MirrorUtil;
import com.sun.jdi.ThreadReference;
import com.sun.jdi.StackFrame;
import com.sun.jdi.VirtualMachine;
import org.jetbrains.annotations.Nullable;
import jetbrains.mps.debugger.java.api.evaluation.proxies.IValueProxy;
public abstract class Evaluator {
private JavaUiState myUiState;
private IObjectValueProxy myThisObject;
public Evaluator(JavaUiState uiState) {
myUiState = uiState;
ObjectReference objectReference = uiState.getThisObject();
if (objectReference != null) {
myThisObject = (IObjectValueProxy) MirrorUtil.getInstance().getValueProxy(objectReference);
}
}
protected IObjectValueProxy getThisObject() {
return myThisObject;
}
public ThreadReference getThreadReference() {
return myUiState.getThread().getThread();
}
public StackFrame getStackFrame() {
return myUiState.getStackFrame().getStackFrame();
}
public VirtualMachine getVM() {
return myUiState.getThread().getThread().virtualMachine();
}
@Nullable
protected String getThisFQName() {
return myUiState.getStackFrame().getLocation().getUnitName();
}
public abstract IValueProxy evaluate() throws EvaluationException;
}