ixion::
model_context
¶This class stores all data relevant to current session. You can think of this like a document model for each formula calculation run. Note that only those methods called from the formula interpreter are specified in the interface; this explains why accessors for the most part only have the ‘get’ method not paired with its ‘set’ counterpart.
Inherits from ixion::iface::formula_model_access
Public Types
Public Functions
model_context
()¶~model_context
()¶get_config
() const¶get_cell_listener_tracker
()¶is_empty
(const abs_address_t &addr) const¶get_celltype
(const abs_address_t &addr) const¶get_numeric_value
(const abs_address_t &addr) const¶Get a numeric representation of the cell value at specified position. If the cell at the specified position is a formula cell and its result has not yet been computed, it will block until the result becomes available. Call this only during formula (re-)calculation.
addr
: position of the cell.get_string_identifier
(const abs_address_t &addr) const¶get_string_identifier
(const char *p, size_t n) const¶get_formula_cell
(const abs_address_t &addr) const¶get_formula_cell
(const abs_address_t &addr)¶get_named_expression
(const std::string &name) const¶get_named_expression_name
(const formula_cell *expr) const¶count_range
(const abs_range_t &range, const values_t &values_type) const¶get_range_value
(const abs_range_t &range) const¶Obtain range value in matrix form. Multi-sheet ranges are not supported. If the specified range consists of multiple sheets, it throws an exception.
range
: absolute, single-sheet range address. Multi-sheet ranges are not allowed.create_session_handler
()¶Session handler instance receives various events from the formula interpretation run, in order to respond to those events. This is optional; the model context implementation is not required to provide a handler.
get_table_handler
()¶Table interface provides access to all table ranges stored in the document model. A table is a 2-dimensional range of cells that include named columns. It is used when resolving a table reference that refers to a cell or a range of cells by the table name and/or column name.
get_table_handler
() const¶append_string
(const char *p, size_t n)¶add_string
(const char *p, size_t n)¶get_string
(string_id_t identifier) const¶get_sheet_index
(const char *p, size_t n) const¶Get the index of sheet from sheet name.
p
: pointer to the first character of the sheet name string. n
: length of the sheet name string.get_numeric_value_nowait
(const abs_address_t &addr) const¶get_string_identifier_nowait
(const abs_address_t &addr) const¶erase_cell
(const abs_address_t &addr)¶set_numeric_cell
(const abs_address_t &addr, double val)¶set_boolean_cell
(const abs_address_t &adr, bool val)¶set_string_cell
(const abs_address_t &addr, const char *p, size_t n)¶set_string_cell
(const abs_address_t &addr, string_id_t identifier)¶set_formula_cell
(const abs_address_t &addr, const char *p, size_t n, const formula_name_resolver &resolver)¶set_formula_cell
(const abs_address_t &addr, size_t identifier, bool shared)¶get_data_range
(sheet_t sheet) const¶set_named_expression
(const char *p, size_t n, formula_cell *cell)¶get_named_expression
(const std::string &name)¶append_sheet
(const char *p, size_t n, row_t row_size, col_t col_size)¶Append a new sheet to the model. The caller must ensure that the name of the new sheet is unique within the model context. When the name being used for the new sheet already exists, it throws a model_context_error exception.
p
: pointer to the char array storing the name of the inserted sheet. n
: size of the sheet name char array. row_size
: number of rows in the inserted sheet. col_size
: number of columns in the inserted sheet.set_session_handler_factory
(std::unique_ptr<session_handler_factory> &&factory)¶set_table_handler
(iface::table_handler *handler)¶get_string_count
() const¶dump_strings
() const¶get_column
(sheet_t sheet, col_t col) const¶Get column storage.
sheet
: sheet index. col
: column index.get_columns
(sheet_t sheet) const¶Get an array of column stores for the entire sheet.
sheet
: sheet index.get_all_formula_cells
() const¶session_handler_factory
¶Public Functions
create
()¶Public Functions
Public Members