// // Function: MULTIPLE.OPERATIONS // Value func_multiple_operations(valVector args, ValueCalc *, FuncExtra *e) { if (args.count() != 3 && args.count() != 5) return Value::errorVALUE(); // invalid number of parameters for (int i = 0; i < args.count(); i++) { if (e->ranges[i].col1 == -1 || e->ranges[i].row1 == -1) return Value::errorVALUE(); } CellStorage *s = e->sheet->cellStorage(); // get formula to evaluate int formulaCol = e->ranges[0].col1; int formulaRow = e->ranges[0].row1; Formula formula = s->formula(formulaCol, formulaRow); if (!formula.isValid()) return Value::errorVALUE(); CellIndirection cellIndirections; cellIndirections.insert(Cell(e->sheet, e->ranges[1].col1, e->ranges[1].row1), Cell(e->sheet, e->ranges[2].col1, e->ranges[2].row1)); if (args.count() > 3) { cellIndirections.insert(Cell(e->sheet, e->ranges[3].col1, e->ranges[3].row1), Cell(e->sheet, e->ranges[4].col1, e->ranges[4].row1)); } return formula.eval(cellIndirections); }
// Function: ISFORMULA Value func_isformula(valVector /*args*/, ValueCalc */*calc*/, FuncExtra *e) { const Calligra::Sheets::Region ®ion = e->regions[0]; QPoint p = region.firstRange().topLeft(); CellStorage *s = region.firstSheet()->cellStorage(); Formula formula = s->formula(p.x(), p.y()); return Value(formula.isValid()); }