#ifndef EXPR_EVAL_H
#define EXPR_EVAL_H
#include <map>
#include <string>
#include "arch_error.h"

/**** Structs ****/

class t_formula_data {
    public:
        void set_var_value(std::string var, int value) { vars_[var] = value; }

        int get_var_value(std::string var) const {
            auto iter = vars_.find(var);
            if (iter == vars_.end()) {
                archfpga_throw(__FILE__, __LINE__, 
                    "No value found for variable '%s' from expression\n", var.c_str());
            }

            return iter->second;
        }

    private:
        std::map<std::string,int> vars_;
};

/* returns integer result according to specified formula and data */
int parse_formula(std::string formula, const t_formula_data &mydata);

/* returns integer result according to specified piece-wise formula and data */
int parse_piecewise_formula(const char *formula, const t_formula_data &mydata);

/* checks if the specified formula is piece-wise defined */
bool is_piecewise_formula( const char *formula);
#endif
