Model Context¶
-
class
model_context
: public ixion::iface::formula_model_access¶ 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.
Public Functions
-
model_context
()¶
-
virtual
~model_context
()¶
-
virtual const config &
get_config
() const¶
-
virtual dirty_cell_tracker &
get_cell_tracker
()¶
-
virtual const dirty_cell_tracker &
get_cell_tracker
() const¶
-
virtual bool
is_empty
(const abs_address_t &addr) const¶
-
virtual celltype_t
get_celltype
(const abs_address_t &addr) const¶
-
virtual double
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.
- Return
- numeric representation of the cell value.
- Parameters
addr
: position of the cell.
-
virtual bool
get_boolean_value
(const abs_address_t &addr) const¶
-
virtual string_id_t
get_string_identifier
(const abs_address_t &addr) const¶
-
virtual string_id_t
get_string_identifier
(const char *p, size_t n) const¶
-
virtual const formula_cell *
get_formula_cell
(const abs_address_t &addr) const¶
-
virtual formula_cell *
get_formula_cell
(const abs_address_t &addr)¶
-
virtual const formula_tokens_t *
get_named_expression
(sheet_t sheet, const std::string &name) const¶ Get a named expression token set associated with specified name if present. It first searches the local sheet scope for the name, then if it’s not present, it searches the global scope.
- Return
- const pointer to the token set if exists, nullptr otherwise.
- Parameters
sheet
: index of the sheet scope to search in.name
: name of the expression.
-
virtual double
count_range
(const abs_range_t &range, const values_t &values_type) const¶
-
virtual matrix
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.
- Return
- range value represented as matrix.
- Parameters
range
: absolute, single-sheet range address. Multi-sheet ranges are not allowed.
-
virtual std::unique_ptr<iface::session_handler>
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.
- Return
- a new session handler instance. It may be nullptr.
-
virtual iface::table_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.
- Return
- non-NULL pointer to the table storage inside the model, or NULL if no table is present or supported by the model implementation.
-
virtual const iface::table_handler *
get_table_handler
() const¶
-
virtual string_id_t
append_string
(const char *p, size_t n)¶
-
virtual string_id_t
add_string
(const char *p, size_t n)¶
-
virtual const std::string *
get_string
(string_id_t identifier) const¶
-
virtual sheet_t
get_sheet_index
(const char *p, size_t n) const¶ Get the index of sheet from sheet name.
- Return
- sheet index
- Parameters
p
: pointer to the first character of the sheet name string.n
: length of the sheet name string.
-
virtual std::string
get_sheet_name
(sheet_t sheet) const¶
-
virtual rc_size_t
get_sheet_size
(sheet_t sheet) const¶ Get the size of specified sheet.
- Return
- size of the sheet.
- Parameters
sheet
: sheet index.
-
virtual size_t
get_sheet_count
() const¶ Return the number of sheets.
- Return
- number of sheets.
-
void
set_config
(const config &cfg)¶
-
double
get_numeric_value_nowait
(const abs_address_t &addr) const¶
-
string_id_t
get_string_identifier_nowait
(const abs_address_t &addr) const¶
-
void
erase_cell
(const abs_address_t &addr)¶
-
void
set_numeric_cell
(const abs_address_t &addr, double val)¶
-
void
set_boolean_cell
(const abs_address_t &adr, bool val)¶
-
void
set_string_cell
(const abs_address_t &addr, const char *p, size_t n)¶
-
void
set_string_cell
(const abs_address_t &addr, string_id_t identifier)¶
-
void
set_formula_cell
(const abs_address_t &addr, formula_tokens_t tokens)¶ Set a formula cell at a specified address.
- Parameters
addr
: address at which to set a formula cell.tokens
: formula tokens to put into the formula cell.
-
void
set_formula_cell
(const abs_address_t &addr, const formula_tokens_store_ptr_t &tokens)¶ Set a formula cell at a specified address. This variant takes a formula tokens store that can be shared between multiple formula cell instances.
- Parameters
addr
: address at which to set a formula cell.tokens
: formula tokens to put into the formula cell.
-
void
set_grouped_formula_cells
(const abs_range_t &group_range, formula_tokens_t tokens)¶
-
abs_range_t
get_data_range
(sheet_t sheet) const¶
-
void
set_named_expression
(const char *p, size_t n, std::unique_ptr<formula_tokens_t> &&expr)¶
-
void
set_named_expression
(sheet_t sheet, const char *p, size_t n, std::unique_ptr<formula_tokens_t> &&expr)¶
-
sheet_t
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.
- Return
- sheet index of the inserted sheet.
- Parameters
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.
-
void
set_session_handler_factory
(session_handler_factory *factory)¶
-
void
set_table_handler
(iface::table_handler *handler)¶
-
size_t
get_string_count
() const¶
-
void
dump_strings
() const¶
-
const column_store_t *
get_column
(sheet_t sheet, col_t col) const¶ Get column storage.
- Return
- const pointer to column storage, or NULL in case sheet index or column index is out of bound.
- Parameters
sheet
: sheet index.col
: column index.
-
const column_stores_t *
get_columns
(sheet_t sheet) const¶ Get an array of column stores for the entire sheet.
- Return
- const pointer to an array of column stores, or nullptr in case the sheet index is out of bound.
- Parameters
sheet
: sheet index.
-
abs_address_set_t
get_all_formula_cells
() const¶
-
bool
empty
() const¶
-
class
session_handler_factory
¶ Public Functions
-
virtual std::unique_ptr<iface::session_handler>
create
()¶
-
virtual std::unique_ptr<iface::session_handler>
-