ES-DE/src/MathExp.h

38 lines
815 B
C
Raw Normal View History

#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