@@ -35,7 +35,7 @@ namespace variables {
35
35
class Rule_DictElement : public VariableDictElement { \
36
36
public:
37
37
explicit Rule_DictElement (const std::string &dictElement)
38
- : VariableDictElement(std::string( " RULE " ) , dictElement) { }
38
+ : VariableDictElement(m_rule , dictElement) { }
39
39
40
40
static void id (Transaction *t,
41
41
RuleWithActions *rule,
@@ -49,13 +49,8 @@ class Rule_DictElement : public VariableDictElement { \
49
49
if (!r || r->m_ruleId == 0 ) {
50
50
return ;
51
51
}
52
- std::string *a = new std::string (std::to_string (r->m_ruleId ));
53
- VariableValue *var = new VariableValue (&m_rule, &m_rule_id,
54
- a
55
- );
56
- delete a;
57
- var->addOrigin ();
58
- l->push_back (var);
52
+
53
+ addVariableOrigin (m_rule_id, std::to_string (r->m_ruleId ), l);
59
54
}
60
55
61
56
@@ -72,13 +67,7 @@ class Rule_DictElement : public VariableDictElement { \
72
67
return ;
73
68
}
74
69
75
- std::string *a = new std::string (r->m_rev );
76
- VariableValue *var = new VariableValue (&m_rule, &m_rule_rev,
77
- a
78
- );
79
- delete a;
80
- var->addOrigin ();
81
- l->push_back (var);
70
+ addVariableOrigin (m_rule_rev, r->m_rev , l);
82
71
}
83
72
84
73
@@ -92,13 +81,7 @@ class Rule_DictElement : public VariableDictElement { \
92
81
}
93
82
94
83
if (r && r->hasSeverity ()) {
95
- std::string *a = new std::string (std::to_string (r->severity ()));
96
- VariableValue *var = new VariableValue (&m_rule, &m_rule_severity,
97
- a
98
- );
99
- delete a;
100
- var->addOrigin ();
101
- l->push_back (var);
84
+ addVariableOrigin (m_rule_severity, std::to_string (r->severity ()), l);
102
85
}
103
86
}
104
87
@@ -113,13 +96,7 @@ class Rule_DictElement : public VariableDictElement { \
113
96
}
114
97
115
98
if (r && r->hasLogData ()) {
116
- std::string *a = new std::string (r->logData (t));
117
- VariableValue *var = new VariableValue (&m_rule, &m_rule_logdata,
118
- a
119
- );
120
- delete a;
121
- var->addOrigin ();
122
- l->push_back (var);
99
+ addVariableOrigin (m_rule_logdata, r->logData (t), l);
123
100
}
124
101
}
125
102
@@ -133,36 +110,30 @@ class Rule_DictElement : public VariableDictElement { \
133
110
}
134
111
135
112
if (r && r->hasMsg ()) {
136
- std::string *a = new std::string (r->msg (t));
137
- VariableValue *var = new VariableValue (&m_rule, &m_rule_msg,
138
- a
139
- );
140
- delete a;
141
- var->addOrigin ();
142
- l->push_back (var);
113
+ addVariableOrigin (m_rule_msg, r->msg (t), l);
143
114
}
144
115
}
145
116
146
117
void evaluate (Transaction *t,
147
118
RuleWithActions *rule,
148
119
std::vector<const VariableValue *> *l) override {
149
- if (m_dictElement == " id " ) {
120
+ if (m_dictElement == m_rule_id ) {
150
121
id (t, rule, l);
151
122
return ;
152
123
}
153
- if (rule && m_dictElement == " rev " ) {
124
+ if (rule && m_dictElement == m_rule_rev ) {
154
125
rev (t, rule, l);
155
126
return ;
156
127
}
157
- if (rule && m_dictElement == " severity " ) {
128
+ if (rule && m_dictElement == m_rule_severity ) {
158
129
severity (t, rule, l);
159
130
return ;
160
131
}
161
- if (m_dictElement == " logdata " ) {
132
+ if (m_dictElement == m_rule_logdata ) {
162
133
logData (t, rule, l);
163
134
return ;
164
135
}
165
- if (m_dictElement == " msg " ) {
136
+ if (m_dictElement == m_rule_msg ) {
166
137
msg (t, rule, l);
167
138
return ;
168
139
}
@@ -174,6 +145,18 @@ class Rule_DictElement : public VariableDictElement { \
174
145
static const std::string m_rule_severity;
175
146
static const std::string m_rule_logdata;
176
147
static const std::string m_rule_msg;
148
+
149
+ private:
150
+
151
+ static inline void addVariableOrigin (const std::string &key,
152
+ const std::string &value,
153
+ std::vector<const VariableValue *> *l) {
154
+ auto var = new VariableValue (&m_rule, &key,
155
+ &value
156
+ );
157
+ var->addOrigin ();
158
+ l->push_back (var);
159
+ }
177
160
};
178
161
179
162
0 commit comments