dmolony-DiskBrowser/src/com/bytezone/diskbrowser/visicalc/ValueFunction.java

50 lines
1.4 KiB
Java
Raw Permalink Normal View History

2017-03-19 23:21:10 +00:00
package com.bytezone.diskbrowser.visicalc;
2020-02-10 11:05:40 +00:00
// -----------------------------------------------------------------------------------//
abstract class ValueFunction extends Function
// -----------------------------------------------------------------------------------//
2017-03-19 23:21:10 +00:00
{
2017-03-20 01:45:14 +00:00
protected Value source;
2017-03-25 08:02:02 +00:00
abstract double calculateValue ();
2020-02-10 11:05:40 +00:00
// ---------------------------------------------------------------------------------//
2017-03-19 23:21:10 +00:00
ValueFunction (Cell cell, String text)
2020-02-10 11:05:40 +00:00
// ---------------------------------------------------------------------------------//
2017-03-19 23:21:10 +00:00
{
super (cell, text);
source = cell.getExpressionValue (functionText);
values.add (source);
2017-03-26 09:16:36 +00:00
valueType = ValueType.NUMBER;
2017-03-19 23:21:10 +00:00
}
2020-02-10 11:05:40 +00:00
// ---------------------------------------------------------------------------------//
2017-03-19 23:21:10 +00:00
@Override
public void calculate ()
2020-02-10 11:05:40 +00:00
// ---------------------------------------------------------------------------------//
2017-03-19 23:21:10 +00:00
{
2017-03-23 13:30:41 +00:00
valueResult = ValueResult.VALID;
2017-03-19 23:21:10 +00:00
source.calculate ();
2017-03-23 13:30:41 +00:00
if (!source.isValid ())
2017-03-19 23:21:10 +00:00
{
2017-03-23 13:30:41 +00:00
valueResult = source.getValueResult ();
2017-03-19 23:21:10 +00:00
return;
}
2017-03-20 01:45:14 +00:00
value = calculateValue ();
2017-03-23 13:30:41 +00:00
if (Double.isNaN (value))
valueResult = ValueResult.ERROR;
2017-03-19 23:21:10 +00:00
}
2020-02-10 11:05:40 +00:00
// ---------------------------------------------------------------------------------//
2017-03-23 13:30:41 +00:00
@Override
public String getType ()
2020-02-10 11:05:40 +00:00
// ---------------------------------------------------------------------------------//
2017-03-23 13:30:41 +00:00
{
return "ValueFunction";
}
2017-03-19 23:21:10 +00:00
}