summaryrefslogtreecommitdiff
path: root/dviware/dvisvgm/src/Calculator.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'dviware/dvisvgm/src/Calculator.hpp')
-rw-r--r--dviware/dvisvgm/src/Calculator.hpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/dviware/dvisvgm/src/Calculator.hpp b/dviware/dvisvgm/src/Calculator.hpp
index 92ec4e40b1..50f8fb959c 100644
--- a/dviware/dvisvgm/src/Calculator.hpp
+++ b/dviware/dvisvgm/src/Calculator.hpp
@@ -2,7 +2,7 @@
** Calculator.hpp **
** **
** This file is part of dvisvgm -- a fast DVI to SVG converter **
-** Copyright (C) 2005-2020 Martin Gieseking <martin.gieseking@uos.de> **
+** Copyright (C) 2005-2021 Martin Gieseking <martin.gieseking@uos.de> **
** **
** This program is free software; you can redistribute it and/or **
** modify it under the terms of the GNU General Public License as **
@@ -24,31 +24,31 @@
#include <istream>
#include <map>
#include <string>
+#include <mpark/variant.hpp>
#include "MessageException.hpp"
-
struct CalculatorException : public MessageException {
explicit CalculatorException (const std::string &msg) : MessageException(msg) {}
};
class Calculator {
public:
- double eval (std::istream &is);
- double eval (const std::string &expr);
+ double eval (std::istream &is) const;
+ double eval (const std::string &expr) const;
void setVariable (const std::string &name, double value) {_variables[name] = value;}
double getVariable (const std::string &name) const;
protected:
- double expr (std::istream &is, bool skip);
- double term (std::istream &is, bool skip);
- double prim (std::istream &is, bool skip);
- char lex (std::istream &is);
- char lookAhead (std::istream &is);
+ double expr (std::istream &is, bool skip) const;
+ double term (std::istream &is, bool skip) const;
+ double prim (std::istream &is, bool skip) const;
+
+ using Token = mpark::variant<bool, char, double, std::string>;
+ static Token lex (std::istream &is);
+ static Token lookAhead (std::istream &is);
private:
std::map<std::string,double> _variables;
- double _numValue=0;
- std::string _strValue;
};
#endif