blob: 5e580b3c78cf19321238c5db6941eb84035adb7b [file] [log] [blame]
swissChili7babd922021-12-02 22:46:48 -08001#pragma once
2
3#include <QMap>
swissChilid17b5a12021-12-05 20:46:42 -08004#include <QDebug>
swissChili7babd922021-12-02 22:46:48 -08005#include "Token.h"
6
7class VarContext {
8public:
9 VarContext() = default;
10 VarContext(VarContext const &other) noexcept;
11
swissChili3e98c062021-12-04 22:07:38 -080012 void add(char t, const QString &name, const Token &value);
13 void add(char t, const QString &name, const QList<Token> &value);
14
swissChili7babd922021-12-02 22:46:48 -080015 char exists(const QString &name);
swissChili3e98c062021-12-04 22:07:38 -080016 Token singleVar(const QString &name);
17 QList<Token> expressionVar(const QString &name);
swissChili7babd922021-12-02 22:46:48 -080018
swissChilid17b5a12021-12-05 20:46:42 -080019 friend QDebug &operator <<(QDebug &debug, const VarContext &ctx);
20
swissChili7babd922021-12-02 22:46:48 -080021private:
22 struct Var {
23 Var() = default;
24
25 char t = 0;
26 Token value;
swissChili3e98c062021-12-04 22:07:38 -080027 QList<Token> expressionValue;
swissChili7babd922021-12-02 22:46:48 -080028 };
29
30 QMap<QString, Var> _vars;
swissChilid17b5a12021-12-05 20:46:42 -080031};
32
33QDebug &operator <<(QDebug &debug, const VarContext &ctx);