package org.geogebra.common.kernel.geos;
import org.geogebra.common.kernel.Construction;
import org.geogebra.common.kernel.StringTemplate;
/**
* Dummy GeoElement to be used for symbolic variable resolving for the GeoGebra
* CAS.
*
* @see org.geogebra.common.kernel.Kernel#setResolveUnkownVarsAsDummyGeos(boolean)
* @author Markus Hohenwarter
*/
public class GeoDummyVariable extends GeoNumeric {
private String varName;
/**
* Creates new dummy variable
*
* @param c
* construction
* @param varName
* variable name
*/
public GeoDummyVariable(Construction c, String varName) {
super(c);
this.varName = varName;
}
@Override
public String toString(StringTemplate tpl) {
return tpl.printVariableName(varName);
}
@Override
public String toValueString(StringTemplate tpl) {
return toString(tpl);
}
/**
* @return variable name
*/
public String getVarName() {
return varName;
}
/**
* @return GeoElement with same name (null if not found)
*/
public GeoElement getElementWithSameName() {
GeoElement ge = kernel.lookupCasCellLabel(varName);
if (ge == null) {
ge = kernel.lookupLabel(varName);
}
return ge;
}
@Override
public boolean hasCoords() {
GeoElement ge = getElementWithSameName();
if (ge != null && !(ge instanceof GeoDummyVariable)) {
return ge.hasCoords();
}
return false;
}
@Override
public boolean evaluatesToNumber(boolean def) {
return def;
}
}