15
15
16
16
sva_sequence_matcht sva_sequence_matcht::true_match (const mp_integer &n)
17
17
{
18
- sva_sequence_matcht result;
19
- for (mp_integer i; i < n; ++i)
20
- result.cond_vector .push_back (true_exprt{});
21
- return result;
18
+ auto n_size_t = numeric_cast_v<std::size_t >(n);
19
+ return sva_sequence_matcht{std::vector<exprt>(n_size_t , true_exprt{})};
22
20
}
23
21
24
22
// nonoverlapping concatenation
@@ -32,11 +30,12 @@ sva_sequence_matcht concat(sva_sequence_matcht a, const sva_sequence_matcht &b)
32
30
// nonoverlapping concatenation
33
31
sva_sequence_matcht repeat (sva_sequence_matcht m, const mp_integer &n)
34
32
{
35
- sva_sequence_matcht result;
33
+ std::vector<exprt> cond_vector;
34
+ cond_vector.reserve (numeric_cast_v<std::size_t >(n * m.length ()));
36
35
for (mp_integer i = 0 ; i < n; ++i)
37
- result. cond_vector .insert (
38
- result. cond_vector .end (), m.cond_vector .begin (), m.cond_vector .end ());
39
- return result ;
36
+ cond_vector.insert (
37
+ cond_vector.end (), m.cond_vector .begin (), m.cond_vector .end ());
38
+ return sva_sequence_matcht{ std::move (cond_vector)} ;
40
39
}
41
40
42
41
// overlapping concatenation
@@ -171,9 +170,9 @@ std::vector<sva_sequence_matcht> LTL_sequence_matches(const exprt &sequence)
171
170
for (auto &match_lhs : matches_lhs)
172
171
for (auto &match_rhs : matches_rhs)
173
172
{
174
- sva_sequence_matcht new_match ;
173
+ std::vector<exprt> cond_vector ;
175
174
auto new_length = std::max (match_lhs.length (), match_rhs.length ());
176
- new_match. cond_vector .resize (new_length);
175
+ cond_vector.resize (new_length);
177
176
for (std::size_t i = 0 ; i < new_length; i++)
178
177
{
179
178
exprt::operandst conjuncts;
@@ -183,10 +182,10 @@ std::vector<sva_sequence_matcht> LTL_sequence_matches(const exprt &sequence)
183
182
if (i < match_rhs.cond_vector .size ())
184
183
conjuncts.push_back (match_rhs.cond_vector [i]);
185
184
186
- new_match. cond_vector [i] = conjunction (conjuncts);
185
+ cond_vector[i] = conjunction (conjuncts);
187
186
}
188
187
189
- result.push_back (std::move (new_match ));
188
+ result.emplace_back (std::move (cond_vector ));
190
189
}
191
190
192
191
return result;
0 commit comments