|
6 | 6 |
|
7 | 7 | \*******************************************************************/
|
8 | 8 |
|
9 |
| - |
10 | 9 | #include "boolbv.h"
|
11 | 10 |
|
12 | 11 | bvt boolbvt::convert_array(const exprt &expr)
|
13 | 12 | {
|
14 |
| - std::size_t width=boolbv_width(expr.type()); |
15 |
| - |
| 13 | + const std::size_t width = boolbv_width(expr.type()); |
16 | 14 | if(width==0)
|
17 | 15 | return conversion_failed(expr);
|
18 | 16 |
|
19 | 17 | if(expr.type().id()==ID_array)
|
20 | 18 | {
|
21 |
| - assert(expr.has_operands()); |
| 19 | + INVARIANT(expr.has_operands(), "array should have operands"); |
22 | 20 | const exprt::operandst &operands=expr.operands();
|
23 |
| - assert(!operands.empty()); |
24 |
| - std::size_t op_width=width/operands.size(); |
25 |
| - |
| 21 | + const std::size_t op_width = width / operands.size(); |
26 | 22 | bvt bv;
|
27 | 23 | bv.reserve(width);
|
28 | 24 |
|
29 |
| - forall_expr(it, operands) |
| 25 | + for(const exprt &op : operands) |
30 | 26 | {
|
31 |
| - const bvt &tmp=convert_bv(*it); |
32 |
| - |
33 |
| - if(tmp.size()!=op_width) |
34 |
| - throw "convert_array: unexpected operand width"; |
35 |
| - |
36 |
| - forall_literals(it2, tmp) |
37 |
| - bv.push_back(*it2); |
| 27 | + const bvt &tmp = convert_bv(op); |
| 28 | + CHECK_RETURN(tmp.size() == op_width); |
| 29 | + bv.insert(bv.end(), tmp.begin(), tmp.end()); |
38 | 30 | }
|
39 | 31 |
|
40 | 32 | return bv;
|
41 | 33 | }
|
42 |
| - |
43 | 34 | return conversion_failed(expr);
|
44 | 35 | }
|
0 commit comments