blob: 6e5ea1370c57cdf7a6d9c46470372bc8a9318f28 [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
swissChili918557c2022-02-20 20:16:34 -08007class VarContext
8{
swissChili7babd922021-12-02 22:46:48 -08009public:
10 VarContext() = default;
11 VarContext(VarContext const &other) noexcept;
12
swissChili3e98c062021-12-04 22:07:38 -080013 void add(char t, const QString &name, const Token &value);
14 void add(char t, const QString &name, const QList<Token> &value);
15
swissChili7babd922021-12-02 22:46:48 -080016 char exists(const QString &name);
swissChili3e98c062021-12-04 22:07:38 -080017 Token singleVar(const QString &name);
18 QList<Token> expressionVar(const QString &name);
swissChili7babd922021-12-02 22:46:48 -080019
swissChilid17b5a12021-12-05 20:46:42 -080020 friend QDebug &operator <<(QDebug &debug, const VarContext &ctx);
21
swissChili7babd922021-12-02 22:46:48 -080022private:
swissChili918557c2022-02-20 20:16:34 -080023 struct Var
24 {
swissChili7babd922021-12-02 22:46:48 -080025 Var() = default;
26
27 char t = 0;
28 Token value;
swissChili3e98c062021-12-04 22:07:38 -080029 QList<Token> expressionValue;
swissChili7babd922021-12-02 22:46:48 -080030 };
31
32 QMap<QString, Var> _vars;
swissChilid17b5a12021-12-05 20:46:42 -080033};
34
swissChili918557c2022-02-20 20:16:34 -080035QDebug &operator <<(QDebug &debug, const VarContext &ctx);