Formula Cell

class formula_cell

Public Functions

formula_cell(const formula_cell&)
formula_cell &operator=(formula_cell)
formula_cell()
formula_cell(const formula_tokens_store_ptr_t &tokens)
formula_cell(row_t group_row, col_t group_col, const calc_status_ptr_t &cs, const formula_tokens_store_ptr_t &tokens)
~formula_cell()
const formula_tokens_store_ptr_t &get_tokens() const
void set_tokens(const formula_tokens_store_ptr_t &tokens)
double get_value() const
double get_value_nowait() const
void interpret(iface::formula_model_access &context, const abs_address_t &pos)
void check_circular(const iface::formula_model_access &cxt, const abs_address_t &pos)

Determine if this cell contains circular reference by walking through all its reference tokens.

void reset()

Reset cell’s internal state.

std::vector<const formula_token *> get_ref_tokens(const iface::formula_model_access &cxt, const abs_address_t &pos) const

Get a series of all reference tokens included in the formula expression stored in this cell.

Return
an array of reference formula tokens. Each element is a pointer to the actual token instance stored in the cell object. Be aware that the pointer is valid only as long as the actual token instance is alive.
Parameters
  • cxt: model context instance.
  • pos: position of the cell.

const formula_result &get_raw_result_cache() const
const formula_result *get_raw_result_cache_nowait() const
formula_result get_result_cache() const

Get the cached result as a single cell. For a non-grouped formula cell, it should be identical to the value from the get_result_cache call. For a grouped formula cell, you’ll get a single value assigned to the position of the cell in case the original result is a matrix value.

Return
formula result.

formula_result get_result_cache_nowait() const
formula_group_t get_group_properties() const
abs_address_t get_parent_position(const abs_address_t &pos) const

Get the absolute parent position of a grouped formula cell. If the cell is not grouped, it simply returns the original position passed to this method.

Return
parent position of the grouped formula cell.
Parameters
  • pos: original position from which to calculate the parent position.

class formula_result

Store formula result which may be either numeric, textural, or error. In case the result is textural, it owns the instance of the string.

Public Types

enum result_type

Values:

value
string
error
matrix

Public Functions

formula_result()
formula_result(const formula_result &r)
formula_result(formula_result &&r)
formula_result(double v)
formula_result(string_id_t strid)
formula_result(formula_error_t e)
~formula_result()
void reset()
void set_value(double v)
void set_string(string_id_t strid)
void set_error(formula_error_t e)
void set_matrix(matrix mtx)
double get_value() const

Get a numeric result value. The caller must make sure the result is of numeric type, else the behavior is undefined.

Return
numeric result value.

string_id_t get_string() const

Get a string ID for textural result value. The caller must make sure the result is of textural type, else the behavior is undefined.

Return
string ID.

formula_error_t get_error() const

Get an error value of the result. The caller must make sure that the result is of error type, else the behavior is undefined.

Return
enum value representing the error.
See
ixion::get_formula_error_name

const matrix &get_matrix() const

Get a matrix value of the result. The caller must make sure that the result is of matrix type, else the behavior is undefined.

Return
matrix result value.

result_type get_type() const

Get the type of result.

Return
enum value representing the result type.

std::string str(const iface::formula_model_access &cxt) const

Get a string representation of the result value no matter what the result type is.

Return
string representation of the result value.
Parameters
  • cxt: model context object.

void parse(iface::formula_model_access &cxt, const char *p, size_t n)

Parse a textural representation of a formula result, and set result value of appropriate type.

formula_result &operator=(formula_result r)
bool operator==(const formula_result &r) const
bool operator!=(const formula_result &r) const