blob: 6a9d632bbe1c0b43bfdc7fe57311c37ec014afdb [file] [log] [blame]
package org.eclipse.jdt.internal.debug.eval.model;
/*
* (c) Copyright IBM Corp. 2002.
* All Rights Reserved.
*/
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.debug.core.IJavaArray;
import org.eclipse.jdt.debug.core.IJavaObject;
import org.eclipse.jdt.debug.core.IJavaPrimitiveValue;
import org.eclipse.jdt.debug.core.IJavaValue;
/**
* An evaluation value - a proxy to an underlying java
* model value
*/
public class EvaluationValue extends EvaluationElement implements IValue {
/**
* Underlying java debug model value
*/
private IJavaValue fJavaValue;
/**
* Constructs a new proxy to the given underlying java
* debug model value
*
* @param value underling java debug model value
* @return a value to be used for evaluation
*/
protected EvaluationValue(IJavaValue value) {
setJavaValue(value);
}
/**
* @see EvaluationElement#getUnderlyingModelObject()
*/
protected Object getUnderlyingModelObject() {
return getJavaValue();
}
/**
* @see IValue#getType()
*/
public IType getType() throws CoreException {
return EvaluationType.createType(getJavaValue().getJavaType());
}
/**
* Returns the underlying java debug model value.
*
* @return the underlying java debug model value
*/
public IJavaValue getJavaValue() {
return fJavaValue;
}
/**
* Sets the underlying java debug model value.
*
* @param javaValue the underlying java debug model value
*/
private void setJavaValue(IJavaValue javaValue) {
fJavaValue = javaValue;
}
/**
* Returns an equivalent evaluation value for the given
* java debug model value.
*
* @param value a java debug model value
* @return an equivalent evaluation value for the given
* java debug model value
*/
protected static IValue createValue(IJavaValue value) {
if (value instanceof IJavaArray) {
return new EvaluationArray((IJavaArray)value);
}
if (value instanceof IJavaObject) {
return new EvaluationObject((IJavaObject)value);
}
if (value instanceof IJavaPrimitiveValue) {
return new EvaluationPrimitiveValue((IJavaPrimitiveValue)value);
}
return new EvaluationValue(value);
}
}