blob: 5ae93d5a8abc168230c0ddeac1fbeafbb226fc24 [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;
swissChilia44bf722022-04-16 18:41:54 -070011 VarContext(VarContext const &other) noexcept;
12 VarContext &operator =(const VarContext &other) = default;
swissChili7babd922021-12-02 22:46:48 -080013
swissChili3e98c062021-12-04 22:07:38 -080014 void add(char t, const QString &name, const Token &value);
15 void add(char t, const QString &name, const QList<Token> &value);
16
swissChili7babd922021-12-02 22:46:48 -080017 char exists(const QString &name);
swissChili3e98c062021-12-04 22:07:38 -080018 Token singleVar(const QString &name);
19 QList<Token> expressionVar(const QString &name);
swissChili7babd922021-12-02 22:46:48 -080020
swissChilid17b5a12021-12-05 20:46:42 -080021 friend QDebug &operator <<(QDebug &debug, const VarContext &ctx);
22
swissChili7babd922021-12-02 22:46:48 -080023private:
swissChili918557c2022-02-20 20:16:34 -080024 struct Var
25 {
swissChili7babd922021-12-02 22:46:48 -080026 Var() = default;
27
28 char t = 0;
29 Token value;
swissChili3e98c062021-12-04 22:07:38 -080030 QList<Token> expressionValue;
swissChili7babd922021-12-02 22:46:48 -080031 };
32
33 QMap<QString, Var> _vars;
swissChilid17b5a12021-12-05 20:46:42 -080034};
35
swissChili918557c2022-02-20 20:16:34 -080036QDebug &operator <<(QDebug &debug, const VarContext &ctx);