diff --git a/src/com/bytezone/diskbrowser/visicalc/Abs.java b/src/com/bytezone/diskbrowser/visicalc/Abs.java index d306528..2154f53 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Abs.java +++ b/src/com/bytezone/diskbrowser/visicalc/Abs.java @@ -9,8 +9,8 @@ public class Abs extends ValueFunction } @Override - void setValue () + double calculateValue () { - value = Math.abs (source.getValue ()); + return Math.abs (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java b/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java index cf0972c..6879280 100644 --- a/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java +++ b/src/com/bytezone/diskbrowser/visicalc/AbstractValue.java @@ -1,9 +1,10 @@ package com.bytezone.diskbrowser.visicalc; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; -public abstract class AbstractValue implements Value +public abstract class AbstractValue implements Value, Iterable { protected final String typeText; protected double value; @@ -71,6 +72,12 @@ public abstract class AbstractValue implements Value return false; } + @Override + public Iterator iterator () + { + return values.iterator (); + } + // for debugging String getValueText (int depth) { diff --git a/src/com/bytezone/diskbrowser/visicalc/Acos.java b/src/com/bytezone/diskbrowser/visicalc/Acos.java index 7f5355a..20be749 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Acos.java +++ b/src/com/bytezone/diskbrowser/visicalc/Acos.java @@ -5,13 +5,12 @@ public class Acos extends ValueFunction Acos (Cell cell, String text) { super (cell, text); - assert text.startsWith ("@ACOS(") : text; } @Override - public void setValue () + public double calculateValue () { - value = Math.acos (source.getValue ()); + return Math.acos (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Asin.java b/src/com/bytezone/diskbrowser/visicalc/Asin.java index f2afd45..9cdb7d6 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Asin.java +++ b/src/com/bytezone/diskbrowser/visicalc/Asin.java @@ -9,8 +9,8 @@ public class Asin extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.asin (source.getValue ()); + return Math.asin (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Atan.java b/src/com/bytezone/diskbrowser/visicalc/Atan.java index 32e00ea..0a25cd3 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Atan.java +++ b/src/com/bytezone/diskbrowser/visicalc/Atan.java @@ -9,8 +9,8 @@ public class Atan extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.atan (source.getValue ()); + return Math.atan (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Condition.java b/src/com/bytezone/diskbrowser/visicalc/Condition.java index 35aa6f9..0283262 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Condition.java +++ b/src/com/bytezone/diskbrowser/visicalc/Condition.java @@ -96,7 +96,7 @@ class Condition extends AbstractValue implements Iterable @Override public String toString () { - return String.format ("[cond=%s, op=%s, value=%s]", conditionText, comparator, + return String.format ("[cond=%s, op:%s, value=%s]", conditionText, comparator, valueText); } diff --git a/src/com/bytezone/diskbrowser/visicalc/ConstantFunction.java b/src/com/bytezone/diskbrowser/visicalc/ConstantFunction.java new file mode 100644 index 0000000..683f850 --- /dev/null +++ b/src/com/bytezone/diskbrowser/visicalc/ConstantFunction.java @@ -0,0 +1,9 @@ +package com.bytezone.diskbrowser.visicalc; + +public abstract class ConstantFunction extends Function +{ + public ConstantFunction (Cell cell, String text) + { + super (cell, text); + } +} \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Cos.java b/src/com/bytezone/diskbrowser/visicalc/Cos.java index 96cf3e8..3a401c2 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Cos.java +++ b/src/com/bytezone/diskbrowser/visicalc/Cos.java @@ -9,8 +9,8 @@ public class Cos extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.cos (source.getValue ()); + return Math.cos (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Error.java b/src/com/bytezone/diskbrowser/visicalc/Error.java index ed69e6f..db3d8f2 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Error.java +++ b/src/com/bytezone/diskbrowser/visicalc/Error.java @@ -1,6 +1,6 @@ package com.bytezone.diskbrowser.visicalc; -class Error extends Function +class Error extends ConstantFunction { public Error (Cell cell, String text) { diff --git a/src/com/bytezone/diskbrowser/visicalc/Exp.java b/src/com/bytezone/diskbrowser/visicalc/Exp.java index de4f884..9158055 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Exp.java +++ b/src/com/bytezone/diskbrowser/visicalc/Exp.java @@ -9,8 +9,8 @@ public class Exp extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.exp (source.getValue ()); + return Math.exp (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Expression.java b/src/com/bytezone/diskbrowser/visicalc/Expression.java index f388336..78f2a1a 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Expression.java +++ b/src/com/bytezone/diskbrowser/visicalc/Expression.java @@ -1,10 +1,9 @@ package com.bytezone.diskbrowser.visicalc; import java.util.ArrayList; -import java.util.Iterator; import java.util.List; -class Expression extends AbstractValue implements Iterable +class Expression extends AbstractValue //implements Iterable { // Expressions: // number @@ -386,11 +385,11 @@ class Expression extends AbstractValue implements Iterable return text.toString (); } - @Override - public Iterator iterator () - { - return values.iterator (); - } + // @Override + // public Iterator iterator () + // { + // return values.iterator (); + // } @Override public String toString () diff --git a/src/com/bytezone/diskbrowser/visicalc/False.java b/src/com/bytezone/diskbrowser/visicalc/False.java index 30a106a..f5a076a 100644 --- a/src/com/bytezone/diskbrowser/visicalc/False.java +++ b/src/com/bytezone/diskbrowser/visicalc/False.java @@ -1,6 +1,6 @@ package com.bytezone.diskbrowser.visicalc; -public class False extends Function +public class False extends ConstantFunction { False (Cell cell, String text) { diff --git a/src/com/bytezone/diskbrowser/visicalc/Function.java b/src/com/bytezone/diskbrowser/visicalc/Function.java index 6d50916..3a75f85 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Function.java +++ b/src/com/bytezone/diskbrowser/visicalc/Function.java @@ -1,8 +1,6 @@ package com.bytezone.diskbrowser.visicalc; -import java.util.Iterator; - -abstract class Function extends AbstractValue implements Iterable +abstract class Function extends AbstractValue { static final String[] functionList = { "@ABS(", "@ACOS(", "@AND(", "@ASIN(", "@ATAN(", "@AVERAGE(", "@COUNT(", @@ -11,13 +9,10 @@ abstract class Function extends AbstractValue implements Iterable "@PI", "@SIN(", "@SUM(", "@SQRT(", "@TAN(", "@TRUE" }; protected final Cell cell; + protected final String fullText; - protected String functionName; - protected String functionText; - protected String fullText; - - protected Value source; - protected Range range; + protected final String functionName; + protected final String functionText; Function (Cell cell, String text) { @@ -35,17 +30,11 @@ abstract class Function extends AbstractValue implements Iterable } else { - functionName = ""; + functionName = text; functionText = ""; } } - @Override - public Iterator iterator () - { - return values.iterator (); - } - @Override public String toString () { diff --git a/src/com/bytezone/diskbrowser/visicalc/Int.java b/src/com/bytezone/diskbrowser/visicalc/Int.java index cf9359e..a004517 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Int.java +++ b/src/com/bytezone/diskbrowser/visicalc/Int.java @@ -9,8 +9,8 @@ public class Int extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = (int) source.getValue (); + return (int) source.getValue (); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/IsError.java b/src/com/bytezone/diskbrowser/visicalc/IsError.java index 0791937..619e527 100644 --- a/src/com/bytezone/diskbrowser/visicalc/IsError.java +++ b/src/com/bytezone/diskbrowser/visicalc/IsError.java @@ -15,8 +15,16 @@ class IsError extends ValueFunction } @Override - public void setValue () + public void calculate () { - value = source.isValueType (ValueType.ERROR) ? 1 : 0; + source.calculate (); + value = calculateValue (); + valueType = ValueType.VALUE; // do not use source.getValueType() + } + + @Override + public double calculateValue () + { + return source.isValueType (ValueType.ERROR) ? 1 : 0; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/IsNa.java b/src/com/bytezone/diskbrowser/visicalc/IsNa.java index d509e11..9fea7a1 100644 --- a/src/com/bytezone/diskbrowser/visicalc/IsNa.java +++ b/src/com/bytezone/diskbrowser/visicalc/IsNa.java @@ -15,8 +15,16 @@ public class IsNa extends ValueFunction } @Override - public void setValue () + public void calculate () { - value = source.isValueType (ValueType.NA) ? 1 : 0; + source.calculate (); + value = calculateValue (); + valueType = ValueType.VALUE; // do not use source.getValueType() + } + + @Override + public double calculateValue () + { + return source.isValueType (ValueType.NA) ? 1 : 0; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Ln.java b/src/com/bytezone/diskbrowser/visicalc/Ln.java index bb3ec1b..fa9c33d 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Ln.java +++ b/src/com/bytezone/diskbrowser/visicalc/Ln.java @@ -9,8 +9,8 @@ public class Ln extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.log (source.getValue ()); + return Math.log (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Log10.java b/src/com/bytezone/diskbrowser/visicalc/Log10.java index 9fad0fc..bf94bb0 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Log10.java +++ b/src/com/bytezone/diskbrowser/visicalc/Log10.java @@ -9,8 +9,8 @@ public class Log10 extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.log10 (source.getValue ()); + return Math.log10 (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Na.java b/src/com/bytezone/diskbrowser/visicalc/Na.java index 0fff1a5..9ed40bd 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Na.java +++ b/src/com/bytezone/diskbrowser/visicalc/Na.java @@ -1,6 +1,6 @@ package com.bytezone.diskbrowser.visicalc; -public class Na extends Function +public class Na extends ConstantFunction { public Na (Cell cell, String text) { diff --git a/src/com/bytezone/diskbrowser/visicalc/Or.java b/src/com/bytezone/diskbrowser/visicalc/Or.java index c54866d..6b3d293 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Or.java +++ b/src/com/bytezone/diskbrowser/visicalc/Or.java @@ -2,7 +2,7 @@ package com.bytezone.diskbrowser.visicalc; class Or extends Function { - ConditionList conditions; + private final ConditionList conditions; public Or (Cell cell, String text) { diff --git a/src/com/bytezone/diskbrowser/visicalc/Pi.java b/src/com/bytezone/diskbrowser/visicalc/Pi.java index d7dcb3d..92e5575 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Pi.java +++ b/src/com/bytezone/diskbrowser/visicalc/Pi.java @@ -1,15 +1,14 @@ package com.bytezone.diskbrowser.visicalc; -class Pi extends Function +class Pi extends ConstantFunction { Pi (Cell cell, String text) { super (cell, text); - value = Math.PI; - assert text.equals ("@PI") : text; + value = Math.PI; valueType = ValueType.VALUE; } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Sin.java b/src/com/bytezone/diskbrowser/visicalc/Sin.java index d53bf11..40824a5 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Sin.java +++ b/src/com/bytezone/diskbrowser/visicalc/Sin.java @@ -9,8 +9,8 @@ public class Sin extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.sin (source.getValue ()); + return Math.sin (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Sqrt.java b/src/com/bytezone/diskbrowser/visicalc/Sqrt.java index a2ec445..cdf67ea 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Sqrt.java +++ b/src/com/bytezone/diskbrowser/visicalc/Sqrt.java @@ -9,8 +9,8 @@ public class Sqrt extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.sqrt (source.getValue ()); + return Math.sqrt (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/Tan.java b/src/com/bytezone/diskbrowser/visicalc/Tan.java index 74c9691..00f7d72 100644 --- a/src/com/bytezone/diskbrowser/visicalc/Tan.java +++ b/src/com/bytezone/diskbrowser/visicalc/Tan.java @@ -9,8 +9,8 @@ public class Tan extends ValueFunction } @Override - public void setValue () + public double calculateValue () { - value = Math.tan (source.getValue ()); + return Math.tan (source.getValue ()); } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/True.java b/src/com/bytezone/diskbrowser/visicalc/True.java index 5622c1f..63fc3ac 100644 --- a/src/com/bytezone/diskbrowser/visicalc/True.java +++ b/src/com/bytezone/diskbrowser/visicalc/True.java @@ -1,6 +1,6 @@ package com.bytezone.diskbrowser.visicalc; -public class True extends Function +public class True extends ConstantFunction { True (Cell cell, String text) { diff --git a/src/com/bytezone/diskbrowser/visicalc/ValueFunction.java b/src/com/bytezone/diskbrowser/visicalc/ValueFunction.java index f9ed9eb..deadb76 100644 --- a/src/com/bytezone/diskbrowser/visicalc/ValueFunction.java +++ b/src/com/bytezone/diskbrowser/visicalc/ValueFunction.java @@ -2,6 +2,8 @@ package com.bytezone.diskbrowser.visicalc; public abstract class ValueFunction extends Function { + protected Value source; + ValueFunction (Cell cell, String text) { super (cell, text); @@ -21,10 +23,9 @@ public abstract class ValueFunction extends Function return; } - // value = Math.abs (source.getValue ()); - setValue (); + value = calculateValue (); valueType = Double.isNaN (value) ? ValueType.ERROR : ValueType.VALUE; } - abstract void setValue (); + abstract double calculateValue (); } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/visicalc/ValueListFunction.java b/src/com/bytezone/diskbrowser/visicalc/ValueListFunction.java index e54e8d1..b1cf4b3 100644 --- a/src/com/bytezone/diskbrowser/visicalc/ValueListFunction.java +++ b/src/com/bytezone/diskbrowser/visicalc/ValueListFunction.java @@ -15,5 +15,4 @@ public abstract class ValueListFunction extends Function for (Value v : list) values.add (v); } - } \ No newline at end of file