Types

Macros

IXION_ASCII(literal)

Use this macro with a literal string and it returns the literal string followed by its length.

Primitive Types

enum ixion::celltype_t

This type represents a raw cell type as stored in ixion::model_context.

Values:

unknown = 0

unknown cell type.

string

cell contains a raw string value.

numeric

cell contains a raw numeric value.

formula

cell contains a formula object.

boolean

cell contains a raw boolean value.

empty

cell is empty and contains absolutely nothing.

enum ixion::cell_value_t

Similar to celltype_t, except that it does not include a formula type. Instead it uses the formula result type to classify its type. The error type refers to an error value in formula cell.

Values:

unknown = 0

unknown cell value type.

string

either the cell contains a raw string value, or a calculated formula cell whose result is of string type.

numeric

either the cell contains a raw numeric value, or a calculated formula cell whose result is of numeric type.

error

this type corresponds with a formula cell whose result contains an error.

boolean

either the cell contains a raw boolean value type, or a calculated formula cell whose result is of boolean type.

empty

the cell is empty and contains nothing whatsoever.

enum ixion::value_t

Values:

value_none = 0x00
value_string = 0x01
value_numeric = 0x02
value_boolean = 0x04
enum ixion::table_area_t

Value that specifies the area inside a table.

Values:

table_area_none = 0x00
table_area_data = 0x01
table_area_headers = 0x02
table_area_totals = 0x04
table_area_all = 0x07
enum ixion::formula_name_resolver_t

Formula name resolver type specifies how name tokens are resolved.

Values:

unknown = 0

Unknown syntax.

excel_a1 = 1

Default A1 syntax used in Excel

excel_r1c1 = 2

R1C1 syntax available in Excel

calc_a1 = 3

Default A1 syntax used in Calc

odff = 4

OpenFormula syntax

odf_cra = 5

ODF cell-range-address syntax

enum ixion::formula_error_t

Formula error types. Note that only the official (i.e. non-internal) error types have their corresponding error strings. Use the get_formula_error_name() function to convert an enum member value of this type to its string representation.

Values:

no_error = 0
ref_result_not_available = 1
division_by_zero = 2
invalid_expression = 3
name_not_found = 4
no_range_intersection = 5
invalid_value_type = 6
no_result_error = 253
stack_error = 254
general_error = 255
enum ixion::rc_direction_t

Specifies iterator direction of a ixion::model_context.

Values:

horizontal

Flows left to right first then top to bottom.

vertical

Flows top to bottom first then left to right.

using ixion::col_t = int32_t

Column index type.

using ixion::row_t = int32_t

Row index type.

using ixion::sheet_t = int32_t

Sheet index type.

using ixion::rc_t = row_t

Integer type that is large enough to store either a row or a column index.

using ixion::string_id_t = uint32_t

String ID type.

All string values are converted into integer tokens. You need to call the get_string() method of ixion::iface::formula_model_access to get the actual string value.

using ixion::table_areas_t = int32_t

type that stores a mixture of ixion::table_area_t values.

using ixion::formula_tokens_t = std::vector<std::unique_ptr<formula_token>>
const string_id_t ixion::empty_string_id

Global string ID representing an empty string.

const sheet_t ixion::global_scope

Special sheet ID that represents a global scope, as opposed to a sheet-local scope.

const sheet_t ixion::invalid_sheet

Special sheet ID that represents an invalid sheet.

struct rc_size_t

This structure stores a 2-dimensional size information.

Public Functions

rc_size_t()
rc_size_t(const rc_size_t &other)
rc_size_t(row_t _row, col_t _column)
~rc_size_t()
rc_size_t &operator=(const rc_size_t &other)

Public Members

row_t row
col_t column
struct formula_group_t

This strcuture stores information about grouped formula cells. All formula cells belonging to the same group shares the same set of values.

Public Functions

formula_group_t()
formula_group_t(const formula_group_t &r)
formula_group_t(const rc_size_t &_group_size, uintptr_t _identity, bool _grouped)
~formula_group_t()
formula_group_t &operator=(const formula_group_t &other)

Public Members

rc_size_t size

Size of the formula group.

uintptr_t identity

Unique value identifying the group a cell belongs to. Cells belonging to the same formula group should have the same value.

bool grouped

Boolean value indicating whether or not a cell is grouped.

Address Types

struct address_t

Stores either absolute or relative address.

Public Functions

address_t()
address_t(sheet_t _sheet, row_t _row, col_t _column, bool _abs_sheet = true, bool _abs_row = true, bool _abs_column = true)
address_t(const address_t &r)
address_t(const abs_address_t &r)
bool valid() const
abs_address_t to_abs(const abs_address_t &origin) const
std::string get_name() const
void set_absolute(bool abs)

Public Members

sheet_t sheet
row_t row
col_t column
bool abs_sheet
bool abs_row
bool abs_column
struct hash

Public Functions

size_t operator()(const address_t &addr) const
struct rc_address_t

Stores either absolute or relative address, but unlike the address_t counterpart, this struct only stores row and column positions.

Public Functions

rc_address_t()
rc_address_t(row_t _row, col_t _column, bool _abs_row = true, bool _abs_column = true)
rc_address_t(const rc_address_t &r)

Public Members

row_t row
col_t column
bool abs_row
bool abs_column
struct hash

Public Functions

size_t operator()(const rc_address_t &addr) const
struct abs_address_t

Stores absolute address, and absolute address only.

Public Types

enum init_invalid

Values:

invalid

Public Functions

abs_address_t()
abs_address_t(init_invalid)
abs_address_t(sheet_t _sheet, row_t _row, col_t _column)
abs_address_t(const abs_address_t &r)
bool valid() const
std::string get_name() const

Public Members

sheet_t sheet
row_t row
col_t column
struct hash

Public Functions

size_t operator()(const abs_address_t &addr) const
struct abs_rc_address_t

Public Types

enum init_invalid

Values:

invalid

Public Functions

abs_rc_address_t()
abs_rc_address_t(init_invalid)
abs_rc_address_t(row_t _row, col_t _column)
abs_rc_address_t(const abs_rc_address_t &r)
abs_rc_address_t(const abs_address_t &r)
bool valid() const

Public Members

row_t row
col_t column
struct hash

Public Functions

size_t operator()(const abs_rc_address_t &addr) const
struct range_t

Stores range whose component may be relative or absolute.

Public Functions

range_t()
range_t(const address_t &_first, const address_t &_last)
range_t(const range_t &r)
range_t(const abs_range_t &r)
bool valid() const
void set_all_columns()

Expand the range horizontally to include all columns. The row range will remain unchanged.

void set_all_rows()

Expand the range vertically to include all rows. The column range will remain unchanged.

bool all_columns() const

Return
true if the range is unspecified in the horizontal direction i.e. all columns are selected, false otherwise.

bool all_rows() const

Return
true if the range is unspecified in the vertical direction i.e. all rows are selected, false otherwise.

abs_range_t to_abs(const abs_address_t &origin) const
void set_absolute(bool abs)

Public Members

address_t first
address_t last
struct hash

Public Functions

size_t operator()(const range_t &range) const
struct abs_range_t

Stores absolute range address.

Public Types

enum init_invalid

Values:

invalid

Public Functions

abs_range_t()
abs_range_t(init_invalid)
abs_range_t(sheet_t _sheet, row_t _row, col_t _col)
abs_range_t(sheet_t _sheet, row_t _row, col_t _col, row_t _row_span, col_t _col_span)

Parameters
  • _sheet: 0-based sheet index.
  • _row: 0-based row position of the top-left cell of the range.
  • _col: 0-based column position of the top-left cell of the range.
  • _row_span: row length of the range. It must be 1 or greater.
  • _col_span: column length of the range. It must be 1 or greater.

abs_range_t(const abs_address_t &addr)
abs_range_t(const abs_address_t &addr, row_t row_span, col_t col_span)
bool valid() const
void set_all_columns()

Expand the range horizontally to include all columns. The row range will remain unchanged.

void set_all_rows()

Expand the range vertically to include all rows. The column range will remain unchanged.

bool all_columns() const

Return
true if the range is unspecified in the horizontal direction i.e. all columns are selected, false otherwise.

bool all_rows() const

Return
true if the range is unspecified in the vertical direction i.e. all rows are selected, false otherwise.

bool contains(const abs_address_t &addr) const

Check whether or not a given address is contained within this range.

void reorder()

Reorder range values as needed to ensure the range is valid.

Public Members

abs_address_t first
abs_address_t last
struct hash

Public Functions

size_t operator()(const abs_range_t &range) const
struct abs_rc_range_t

Public Types

enum init_invalid

Values:

invalid

Public Functions

abs_rc_range_t()
abs_rc_range_t(init_invalid)
abs_rc_range_t(const abs_rc_range_t &other)
abs_rc_range_t(const abs_range_t &other)
bool valid() const
void set_all_columns()

Expand the range horizontally to include all columns. The row range will remain unchanged.

void set_all_rows()

Expand the range vertically to include all rows. The column range will remain unchanged.

bool all_columns() const

Return
true if the range is unspecified in the horizontal direction i.e. all columns are selected, false otherwise.

bool all_rows() const

Return
true if the range is unspecified in the vertical direction i.e. all rows are selected, false otherwise.

bool contains(const abs_rc_address_t &addr) const

Check whether or not a given address is contained within this range.

Public Members

abs_rc_address_t first
abs_rc_address_t last
struct hash

Public Functions

size_t operator()(const abs_rc_range_t &range) const
using ixion::abs_address_set_t = std::unordered_set<abs_address_t, abs_address_t::hash>

Type that represents a collection of multiple absolute cell addresses.

using ixion::abs_range_set_t = std::unordered_set<abs_range_t, abs_range_t::hash>
using ixion::abs_rc_range_set_t = std::unordered_set<abs_rc_range_t, abs_rc_range_t::hash>

Utility Functions

std::string_view ixion::get_formula_error_name(formula_error_t fe)

Get a string representation of a formula error type.

Return
null-terminated string representation of the formula error type.
Parameters
  • fe: enum value representing a formula error type.