/* * This file is part or JMathLib * * Check it out at http://www.jmathlib.de * * Author: * (c) 2005-2009 */ package jmathlib.core.interpreter; import jmathlib.core.tokens.*; /**class for binding a variable name to some data*/ public class Variable extends RootObject { /**variable name*/ private String name; /**variable data*/ private OperandToken data; /** local or global context */ private boolean globalB = false; /**default constructor*/ public Variable() { super(); name = ""; data = null; } /**constructor containing a variable name * @param _name */ public Variable(String _name) { super(); name = _name; data = null; } /**constructor containing the variables name and data * @param _name * @param _data */ public Variable(String _name, OperandToken _data) { super(); name = _name; data = _data; } /**Assign a new value to the variable * @param _data * @return */ public OperandToken assign(OperandToken _data) { if (_data!=null) ErrorLogger.debugLine("Variable assign "+_data.toString()); else ErrorLogger.debugLine("Variable assign NULL"); data = _data; return data; } /**implement the equals operator to find a variable with the correct name if _data is an instance of Variable then it compares the name of _data to the variable otherwise it calls the superclasses version*/ public boolean equals(Object _data) { //ErrorLogger.debugLine("Variable equals "+_data.toString()); boolean equal; //if(_data instanceof VariableToken) // equal = (this.name.toUpperCase().equals(((VariableToken)_data).getName().toUpperCase())); //if(_data instanceof Variable) // equal = (this.name.toUpperCase().equals(((Variable)_data).getName().toUpperCase())); //else // equal = super.equals(_data); if(_data instanceof Variable) equal = this.name.equals(((Variable)_data).getName()); else equal = super.equals(_data); return equal; } /**Converts the variable into a string. * @return */ public String toString() { if(data == null) return null; else return data.toString(); } /**Converts the variable to a string.*/ public String toString(String[] operands) { return toString(); } /**Returns the variables name * @return */ public String getName() { return name; } /**Returns the variables data * @return */ public OperandToken getData() { return data; } /** * * @return */ public boolean isGlobal() { return globalB; } /** * * @param globalB */ public void setGlobal(boolean globalB) { this.globalB = globalB; } }