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