ES-DE/src/MathExp.h
Aloshi 80740a2bd0 Fixed tiling being super slow.
See changelog.txt (September 7) for a list of everything.
2012-09-07 16:44:07 -05:00

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