|
Variable |
|
package ij.macro;
class Variable implements MacroConstants {
static final int VALUE=0, ARRAY=1, STRING=2;
int symTabIndex;
private double value;
private String str;
private Variable[] array;
Variable() {
}
Variable(double value) {
this.value = value;
}
Variable(int symTabIndex, double value, String str) {
this.symTabIndex = symTabIndex;
this.value = value;
this.str = str;
}
Variable(int symTabIndex, double value, String str, Variable[] array) {
this.symTabIndex = symTabIndex;
this.value = value;
this.str = str;
this.array = array;
}
Variable(byte[] array) {
this.array = new Variable[array.length];
for (int i=0; i<array.length; i++)
this.array[i] = new Variable(array[i]&255);
}
Variable(int[] array) {
this.array = new Variable[array.length];
for (int i=0; i<array.length; i++)
this.array[i] = new Variable(array[i]);
}
Variable(double[] array) {
this.array = new Variable[array.length];
for (int i=0; i<array.length; i++)
this.array[i] = new Variable(array[i]);
}
double getValue() {
if (str!=null)
return convertToDouble(); // string to number conversions
else
return value;
}
double convertToDouble() {
try {
Double d = new Double(str);
return d.doubleValue();
} catch (NumberFormatException e){
return Double.NaN;
}
}
void setValue(double value) {
this.value = value;
str = null;
array = null;
}
String getString() {
return str;
}
void setString(String str) {
this.str = str;
value = 0.0;
array = null;
}
Variable[] getArray() {
return array;
}
void setArray(Variable[] array) {
this.array = array;
value = 0.0;
str = null;
}
int getType() {
if (array!=null)
return ARRAY;
else if (str!=null)
return STRING;
else
return VALUE;
}
public String toString() {
String s = "";
if (array!=null)
s += "array["+array.length+"]";
else if (str!=null)
s += str;
else
s += ""+value;
return s+" "+symTabIndex;
}
} // class Variable
|
Variable |
|