Calculator.h File Reference
`#include <libqalculate/includes.h>`
`#include <libqalculate/util.h>`
`#include <sys/time.h>`
`#include <libqalculate/MathStructure.h>`

## Classes

struct | PlotParameters
| Parameters passed to plotting functions. More...
struct | PlotDataParameters
| Parameters for plot data series. More...
class | CalculatorMessage
| A message with information to the user. Primarily used for errors and warnings. More...
struct | Element
class | Calculator
| The almighty calculator class. More...

## Macros

#define | MESSAGE_STAGE_CONVERSION -4
| Message stages.
#define | MESSAGE_STAGE_CONVERSION_PARSING -3
#define | MESSAGE_STAGE_CALCULATION -2
#define | MESSAGE_STAGE_PARSING -1
#define | MESSAGE_STAGE_UNSET 0
#define | MESSAGE_CATEGORY_NONE 0
| Message categories.
#define | MESSAGE_CATEGORY_PARSING 1
#define | MESSAGE_CATEGORY_WIDE_INTERVAL 10
#define | MESSAGE_CATEGORY_IMPLICIT_MULTIPLICATION 11
#define | MESSAGE_CATEGORY_NO_PROPER_INTERVAL_SUPPORT 12
#define | MESSAGE_CATEGORY_GLOBAL_OBJECT_DEACTIVATED 13
#define | UFV_LENGTHS 20

## Typedefs

typedef std::vector< Prefix * > | p_type

## Enumerations

enum | MessageType { MESSAGE_INFORMATION , MESSAGE_WARNING , MESSAGE_ERROR }
| Message types.
enum | AutomaticFractionFormat { AUTOMATIC_FRACTION_OFF , AUTOMATIC_FRACTION_SINGLE , AUTOMATIC_FRACTION_AUTO , AUTOMATIC_FRACTION_DUAL }
enum | AutomaticApproximation { AUTOMATIC_APPROXIMATION_OFF , AUTOMATIC_APPROXIMATION_SINGLE , AUTOMATIC_APPROXIMATION_AUTO , AUTOMATIC_APPROXIMATION_DUAL }
enum | { VARIABLE_ID_I = 200 , VARIABLE_ID_PLUS_INFINITY = 201 , VARIABLE_ID_MINUS_INFINITY = 202 , VARIABLE_ID_UNDEFINED = 203 , VARIABLE_ID_X = 300 , VARIABLE_ID_Y = 301 , VARIABLE_ID_Z = 302 , VARIABLE_ID_N = 303 , VARIABLE_ID_C = 304 , VARIABLE_ID_PERCENT = 350 , VARIABLE_ID_PERMILLE = 351 , VARIABLE_ID_PERMYRIAD = 352 }
enum | { UNIT_ID_EURO = 510 , UNIT_ID_BYN = 515 , UNIT_ID_BTC = 520 , UNIT_ID_SECOND = 550 , UNIT_ID_MINUTE = 551 , UNIT_ID_HOUR = 552 , UNIT_ID_DAY = 553 , UNIT_ID_MONTH = 554 , UNIT_ID_YEAR = 555 , UNIT_ID_KELVIN = 560 , UNIT_ID_RANKINE = 561 , UNIT_ID_CELSIUS = 562 , UNIT_ID_FAHRENHEIT = 563 }
enum | { ELEMENT_CLASS_NOT_DEFINED , ALKALI_METALS , ALKALI_EARTH_METALS , LANTHANIDES , ACTINIDES , TRANSITION_METALS , METALS , METALLOIDS , NONMETALS , HALOGENS , NOBLE_GASES , TRANSACTINIDES }
enum | TemperatureCalculationMode { TEMPERATURE_CALCULATION_HYBRID , TEMPERATURE_CALCULATION_ABSOLUTE , TEMPERATURE_CALCULATION_RELATIVE }

## Functions

void

print_dual (const MathStructure &mresult, const std::string &original_expression, const MathStructure &mparse, MathStructure &mexact, std::string &result_str, std::vector< std::string > &results_v, PrintOptions &po, const EvaluationOptions &evalops, AutomaticFractionFormat auto_frac, AutomaticApproximation auto_approx, bool cplx_angle=false, bool *exact_cmp=NULL, bool b_parsed=true, bool format=false, int colorize=0, int tagtype=TAG_TYPE_HTML, int max_length=-1, bool converted=false)

void | calculate_dual_exact (MathStructure &mstruct_exact, MathStructure *mstruct, const std::string &original_expression, const MathStructure *parsed_mstruct, EvaluationOptions &evalops, AutomaticApproximation auto_approx, int msecs=0, int max_size=10)
bool | transform_expression_for_equals_save (std::string &, const ParseOptions &)
MathStructure | get_units_for_parsed_expression (const MathStructure *parsed_struct, Unit *to_unit, const EvaluationOptions &eo, const MathStructure *mstruct=NULL)
MathStructure | get_units_for_parsed_expression (const MathStructure *parsed_struct, Unit *to_unit, const EvaluationOptions &eo, const MathStructure *mstruct, std::string parsed_text)
bool | expression_contains_save_function (const std::string &, const ParseOptions &, bool=false)
void | convert_unchanged_quantity_with_unit (const MathStructure &mp, MathStructure &mr, EvaluationOptions &eo)