mirror of
https://github.com/RetroDECK/ES-DE.git
synced 2024-11-27 08:35:39 +00:00
80740a2bd0
See changelog.txt (September 7) for a list of everything.
38 lines
815 B
C++
38 lines
815 B
C++
#ifndef _MATHEXP_H_
|
|
#define _MATHEXP_H_
|
|
|
|
#include <string>
|
|
#include <stack>
|
|
#include <map>
|
|
|
|
//A reusable class that evaluates simple mathematical expressions.
|
|
//Includes variable support - just use setVariable(name, value), and any instance of $name will be replaced with value.
|
|
class MathExp {
|
|
public:
|
|
|
|
void setExpression(std::string str);
|
|
void setVariable(std::string name, float val);
|
|
float getVariable(std::string name);
|
|
|
|
float eval();
|
|
|
|
private:
|
|
//float apply(const char operatorChar, std::string operand);
|
|
void doNextOperation();
|
|
|
|
bool isOperator(const char c);
|
|
bool isRParen(const char c);
|
|
int getPrecedence(const char c);
|
|
|
|
float strToVal(std::string str);
|
|
|
|
std::string mExpression;
|
|
|
|
std::stack<float> mOperands;
|
|
std::stack<char> mOperators;
|
|
std::map<std::string, float> mVariables;
|
|
|
|
};
|
|
|
|
#endif
|