mathexpr.hpp 1.16 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
/**
\file mathexpr.hpp
\date 25/05/2021
\author Yann Boucher
\version 1
\brief MathExpr

Ce fichier contient une fonction permettant d'exécuter une expression mathématique à partir d'une chaîne de caractères et d'une liste de variables.
        **/

#ifndef MATHEXPR_HPP
#define MATHEXPR_HPP

#include <map>
#include <exception>

17
//! \brief Exception lancée lors de l'évaluation d'une expression mathématique.
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class MathExprException : public std::exception
{
public:
    MathExprException(const std::string& str)
        : m_what(str)
    {}

    const char * what() const noexcept override
    { return m_what.c_str(); }

private:
    std::string m_what;
};

//! Evalue une expression mathématique selon une liste de variables fournies, et retourne un entier.
//! Les opérateurs supportés sont les parenthèses, +, -, *, /, %.
//! \param expr L'expression mathématique, en tant que std::string
//! \param variables un std::map associant à chaque nom de variable une valeur entière
//! \returns La valeur de résultat de l'expression mathématique évaluée.
int eval_math(const std::string& expr, const std::map<std::string, int>& variables = {});

#endif // MATHEXPR_HPP