@@ -4541,31 +4541,33 @@ inline void validate_expr(const function_application_exprt &value)
4541
4541
validate_operands (value, 2 , " Function application must have two operands" );
4542
4542
}
4543
4543
4544
-
4545
4544
// / \brief Concatenation of bit-vector operands
4546
4545
// /
4547
4546
// / This expression takes any number of operands
4548
- // / (a restriction to make this binary will happen in the future).
4549
- // / The ordering of the operands is the same as in the _new_ SMT 1.x standard,
4547
+ // / The ordering of the operands is the same as in the SMT-LIB 2 standard,
4550
4548
// / i.e., most-significant operands come first.
4551
- class concatenation_exprt : public exprt
4549
+ class concatenation_exprt : public multi_ary_exprt
4552
4550
{
4553
4551
public:
4554
- DEPRECATED (" use concatenation_exprt(op0, op1 , type) instead" )
4555
- concatenation_exprt ():exprt (ID_concatenation)
4552
+ DEPRECATED (" use concatenation_exprt(op , type) instead" )
4553
+ concatenation_exprt () : multi_ary_exprt (ID_concatenation)
4556
4554
{
4557
4555
}
4558
4556
4559
- DEPRECATED (" use concatenation_exprt(op0, op1 , type) instead" )
4560
- explicit concatenation_exprt (const typet &_type):
4561
- exprt (ID_concatenation, _type)
4557
+ DEPRECATED (" use concatenation_exprt(op , type) instead" )
4558
+ explicit concatenation_exprt (const typet &_type)
4559
+ : multi_ary_exprt (ID_concatenation, _type)
4562
4560
{
4563
4561
}
4564
4562
4565
4563
concatenation_exprt (const exprt &_op0, const exprt &_op1, const typet &_type)
4566
- : exprt(ID_concatenation, _type)
4564
+ : multi_ary_exprt(_op0, ID_concatenation, _op1, _type)
4565
+ {
4566
+ }
4567
+
4568
+ concatenation_exprt (operandst &&_operands, const typet &_type)
4569
+ : multi_ary_exprt(ID_concatenation, std::move(_operands), _type)
4567
4570
{
4568
- add_to_operands (_op0, _op1);
4569
4571
}
4570
4572
};
4571
4573
0 commit comments