@@ -210,13 +210,26 @@ string_insertion_builtin_functiont::string_insertion_builtin_functiont(
210
210
const std::vector<exprt> &fun_args,
211
211
array_poolt &array_pool)
212
212
{
213
- PRECONDITION (fun_args.size () > 3 );
213
+ PRECONDITION (fun_args.size () > 4 );
214
+ const auto arg1 = expr_checked_cast<struct_exprt>(fun_args[2 ]);
215
+ input1 = array_pool.find (arg1.op1 (), arg1.op0 ());
216
+ const auto arg2 = expr_checked_cast<struct_exprt>(fun_args[4 ]);
217
+ input2 = array_pool.find (arg2.op1 (), arg2.op0 ());
218
+ result = array_pool.find (fun_args[1 ], fun_args[0 ]);
219
+ args.push_back (fun_args[3 ]);
220
+ args.insert (args.end (), fun_args.begin () + 5 , fun_args.end ());
221
+ }
222
+
223
+ string_concatenation_builtin_functiont::string_concatenation_builtin_functiont (
224
+ const std::vector<exprt> &fun_args,
225
+ array_poolt &array_pool)
226
+ {
227
+ PRECONDITION (fun_args.size () == 4 );
214
228
const auto arg1 = expr_checked_cast<struct_exprt>(fun_args[2 ]);
215
229
input1 = array_pool.find (arg1.op1 (), arg1.op0 ());
216
230
const auto arg2 = expr_checked_cast<struct_exprt>(fun_args[3 ]);
217
231
input2 = array_pool.find (arg2.op1 (), arg2.op0 ());
218
232
result = array_pool.find (fun_args[1 ], fun_args[0 ]);
219
- args.insert (args.end (), fun_args.begin () + 4 , fun_args.end ());
220
233
}
221
234
222
235
optionalt<std::vector<mp_integer>> eval_string (
0 commit comments