-
Notifications
You must be signed in to change notification settings - Fork 0
/
globalvararea.cpp
103 lines (88 loc) · 2.12 KB
/
globalvararea.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "globalvararea.h"
#include <QDebug>
QMap<QString, Var*> GlobalVarArea::varTable;
QList<QPair<QString, VarCreator*> > GlobalVarArea::availableVars;
QList<QString> GlobalVarArea::availableVarTitles;
GlobalVarArea::GlobalVarArea()
{
}
GlobalVarArea::~GlobalVarArea()
{
foreach(Var *it, varTable.values()) {
delete it;
}
}
int GlobalVarArea::addVar(Var *var)
{
QString id = var->getName();
if(varTable.contains(id)) {
qDebug() << "addVar: varTable contains \"" + id + "\"";
return -1;
}
varTable[id] = var;
return 0;
}
QString GlobalVarArea::toText()
{
QString res;
foreach(Var *it, varTable.values()){
res += it->varTitle() + ": " + it->getName() + "; ";
}
return res;
}
void GlobalVarArea::varRegister(QString title, VarCreator *creator)
{
availableVars.append({title, creator});
availableVarTitles.append(title);
}
QList<QString> GlobalVarArea::getVarTitles()
{
return availableVarTitles;
}
Var *GlobalVarArea::createVarAt(int index, QString name)
{
return availableVars.at(index).second->create(name);
}
void GlobalVarArea::createAndAddVarAt(int index, QString name)
{
addVar(createVarAt(index, name));
}
QList<QString> GlobalVarArea::getIds()
{
QList<QString> res;
foreach(QString it, varTable.keys()){
res.append(it);
}
return res;
}
void GlobalVarArea::deleteById(QString id)
{
delete varTable[id];
varTable.remove(id);
}
Var* GlobalVarArea::getVarById(QString id)
{
return varTable[id];
}
QList<VarTextDescription> GlobalVarArea::getVarTextDescriptions()
{
QList<VarTextDescription> res;
foreach(QString it, varTable.keys()){
VarTextDescription cur;
cur.type = varTable[it]->varTitle();
cur.id = varTable[it]->getName();
cur.value = varTable[it]->valueAsText();
res.append(cur);
}
return res;
}
QList<QString> GlobalVarArea::getIdVarsByClass(ClassVar classVar)
{
QList<QString> res;
foreach (Var *var, varTable.values()) {
if(var->getClassVar() == classVar){
res.append(var->getName());
}
}
return res;
}