/** * returns the OperationEval concrete impl instance corresponding * to the supplied operationPtg */ public static ValueEval Evaluate(OperationPtg ptg, ValueEval[] args, OperationEvaluationContext ec) { if (ptg == null) { throw new ArgumentException("ptg must not be null"); } Npoi.Core.SS.Formula.Functions.Function result = _instancesByPtgClass[ptg] as Npoi.Core.SS.Formula.Functions.Function; if (result != null) { return(result.Evaluate(args, ec.RowIndex, (short)ec.ColumnIndex)); } if (ptg is AbstractFunctionPtg) { AbstractFunctionPtg fptg = (AbstractFunctionPtg)ptg; int functionIndex = fptg.FunctionIndex; switch (functionIndex) { case Npoi.Core.SS.Formula.Function.FunctionMetadataRegistry.FUNCTION_INDEX_INDIRECT: return(Indirect.instance.Evaluate(args, ec)); case Npoi.Core.SS.Formula.Function.FunctionMetadataRegistry.FUNCTION_INDEX_EXTERNAL: return(UserDefinedFunction.instance.Evaluate(args, ec)); } return(FunctionEval.GetBasicFunction(functionIndex).Evaluate(args, ec.RowIndex, ec.ColumnIndex)); } throw new Exception("Unexpected operation ptg class (" + ptg.GetType().Name + ")"); }