X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.spreadsheet%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fsolver%2Fformula%2FOrFormulaFunction.java;fp=bundles%2Forg.simantics.spreadsheet%2Fsrc%2Forg%2Fsimantics%2Fspreadsheet%2Fsolver%2Fformula%2FOrFormulaFunction.java;h=a852ecc410f72d725f718ff01235fe6c9dbcffab;hb=c07a3818f0024e932a27eb85cbfd3f2291475a65;hp=0000000000000000000000000000000000000000;hpb=6c99e980d250fb9201aba93be7dcb1f55564dccd;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/formula/OrFormulaFunction.java b/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/formula/OrFormulaFunction.java new file mode 100644 index 000000000..a852ecc41 --- /dev/null +++ b/bundles/org.simantics.spreadsheet/src/org/simantics/spreadsheet/solver/formula/OrFormulaFunction.java @@ -0,0 +1,28 @@ +package org.simantics.spreadsheet.solver.formula; + +import org.simantics.spreadsheet.Spreadsheets; +import org.simantics.spreadsheet.solver.formula.parser.ast.AstArgList; + +public class OrFormulaFunction implements CellFormulaFunction { + + @Override + public Object evaluate(CellValueVisitor visitor, AstArgList args) { + if (args.values.size() == 0) throw new IllegalStateException(); + + for (int i = 0; i < args.values.size(); i++) { + Object obj = null; + try { + obj = args.values.get(i).accept(visitor); + } catch (IllegalStateException e){ + return FormulaError2.NAME.getString(); + } + FormulaError2 error = FormulaError2.forObject(obj); + if(error!=null) return error.getString(); + + if (Spreadsheets.asBoolean(obj)) + return Boolean.TRUE; + } + return Boolean.FALSE; + } + +}