Skip to content

Commit 0b44c89

Browse files
Add version of make_string accepting iterators
This will make using make_string more flexible.
1 parent f81f082 commit 0b44c89

File tree

1 file changed

+12
-6
lines changed

1 file changed

+12
-6
lines changed

src/solvers/refinement/string_builtin_function.cpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -122,19 +122,25 @@ optionalt<std::vector<mp_integer>> eval_string(
122122
return result;
123123
}
124124

125-
array_string_exprt
126-
make_string(const std::vector<mp_integer> &array, const array_typet &array_type)
125+
template <typename Iter>
126+
static array_string_exprt
127+
make_string(Iter begin, Iter end, const array_typet &array_type)
127128
{
128129
const typet &char_type = array_type.subtype();
129130
array_exprt array_expr(array_type);
130131
const auto &insert = std::back_inserter(array_expr.operands());
131-
std::transform(
132-
array.begin(), array.end(), insert, [&](const mp_integer &i) { // NOLINT
133-
return from_integer(i, char_type);
134-
});
132+
std::transform(begin, end, insert, [&](const mp_integer &i) {
133+
return from_integer(i, char_type);
134+
});
135135
return to_array_string_expr(array_expr);
136136
}
137137

138+
static array_string_exprt
139+
make_string(const std::vector<mp_integer> &array, const array_typet &array_type)
140+
{
141+
return make_string(array.begin(), array.end(), array_type);
142+
}
143+
138144
std::vector<mp_integer> string_concatenation_builtin_functiont::eval(
139145
const std::vector<mp_integer> &input1_value,
140146
const std::vector<mp_integer> &input2_value,

0 commit comments

Comments
 (0)