face::SpreadsheetEngine
The evaluation engine behind a sheet of cells.
| Declared in | src/libs/libface/face/ui/SpreadsheetEngine.hpp |
| Group | face |
Detailed description
One cell is either a v2 input holding a literal, or a v2 output holding a formula. A formula edit rebuilds the program; a numeric edit on a referenced literal goes through Program::setFloat and re-evaluates, and one on an unreferenced literal touches nothing but the value table. Cross-cell references resolve through the eval::Graph topology rather than through anything this class parses.
The engine owns two answers a caller should not conflate. backend() is the lane that was asked for; lowering() is the one that ran. They came apart when Backend::Interpreted started meaning the SPIR-V interpreter for any program with a GLSL form.
Diagnostics are attributed rather than pooled: a compile or evaluation error names the cell that caused it and is read back through cellError(), and one that cannot be attributed to a cell — a cycle, most often — is read through sheetError() instead.
Spec: content/doc/internal/specs/expression-system-consolidation/ api.md §EX-API-7 (spreadsheet wrapper), migration.md §EX-MI-1.1 (libface CellData migration)
See also face::SpreadSheetModel, face::SpreadSheet, eval::Graph, eval::Program.