private static int DoCompare(ValueEval va, ValueEval vb) { // special cases when one operand is blank if (va == BlankEval.instance) { return(CompareBlank(vb)); } if (vb == BlankEval.instance) { return(-CompareBlank(va)); } if (va is BoolEval) { if (vb is BoolEval) { BoolEval bA = (BoolEval)va; BoolEval bB = (BoolEval)vb; if (bA.BooleanValue == bB.BooleanValue) { return(0); } return(bA.BooleanValue ? 1 : -1); } return(1); } if (vb is BoolEval) { return(-1); } if (va is StringEval) { if (vb is StringEval) { StringEval sA = (StringEval)va; StringEval sB = (StringEval)vb; return(string.Compare(sA.StringValue, sB.StringValue, true)); } return(1); } if (vb is StringEval) { return(-1); } if (va is NumberEval) { if (vb is NumberEval) { NumberEval nA = (NumberEval)va; NumberEval nB = (NumberEval)vb; return(nA.NumberValue.CompareTo(nB.NumberValue)); } } throw new ArgumentException("Bad operand types (" + va.GetType().Name + "), (" + vb.GetType().Name + ")"); }
public Eval Evaluate(Eval[] operands, int srcRow, short srcCol) { ValueEval retval; switch (operands.Length) { case 0: retval = new NumberEval(new Random().NextDouble()); break; default: retval = ErrorEval.VALUE_INVALID; break; } return retval; }
private static int CompareBlank(ValueEval v) { if (v == BlankEval.instance) { return(0); } if (v is BoolEval) { BoolEval boolEval = (BoolEval)v; return(boolEval.BooleanValue ? -1 : 0); } if (v is NumberEval) { NumberEval ne = (NumberEval)v; return(ne.NumberValue.CompareTo(0)); } if (v is StringEval) { StringEval se = (StringEval)v; return(se.StringValue.Length < 1 ? 0 : -1); } throw new ArgumentException("bad value class (" + v.GetType().Name + ")"); }
/* (non-Javadoc) * @see org.apache.poi.hssf.record.formula.functions.Function#Evaluate(org.apache.poi.hssf.record.formula.eval.Eval[], int, short) */ public override Eval Evaluate(Eval[] operands, int srcCellRow, short srcCellCol) { ValueEval retval = null; switch (operands.Length) { case 1: ValueEval ve = SingleOperandEvaluate(operands[0], srcCellRow, srcCellCol); if (ve is NumericValueEval) { NumericValueEval ne = (NumericValueEval)ve; if (HSSFDateUtil.IsValidExcelDate(ne.NumberValue)) { DateTime d = HSSFDateUtil.GetJavaDate(ne.NumberValue, false); // XXX fix 1900/1904 problem retval = new NumberEval(d.Year); } else { retval = ErrorEval.NUM_ERROR; } } else if (ve is BlankEval) { // do nothing } else { retval = ErrorEval.NUM_ERROR; } break; default: retval = ErrorEval.VALUE_INVALID; break; } return retval; }
public NumberLookupComparer(NumberEval ne) : base(ne) { _value = ne.NumberValue; }