File tree 3 files changed +21
-12
lines changed 3 files changed +21
-12
lines changed Original file line number Diff line number Diff line change @@ -353,7 +353,7 @@ void c_typecheck_baset::typecheck_decl(codet &code)
353
353
else
354
354
{
355
355
// build a decl-block
356
- code_blockt code_block (new_code);
356
+ auto code_block= code_blockt::from_list (new_code);
357
357
code_block.set_statement (ID_decl_block);
358
358
code.swap (code_block);
359
359
}
Original file line number Diff line number Diff line change @@ -1010,7 +1010,7 @@ void c_typecheck_baset::typecheck_expr_sizeof(exprt &expr)
1010
1010
{
1011
1011
side_effect_exprt side_effect_expr (
1012
1012
ID_statement_expression, void_type (), expr.source_location ());
1013
- code_blockt decl_block (clean_code);
1013
+ auto decl_block= code_blockt::from_list (clean_code);
1014
1014
decl_block.set_statement (ID_decl_block);
1015
1015
side_effect_expr.copy_to_operands (decl_block);
1016
1016
clean_code.clear ();
@@ -1067,7 +1067,7 @@ void c_typecheck_baset::typecheck_expr_typecast(exprt &expr)
1067
1067
{
1068
1068
side_effect_exprt side_effect_expr (
1069
1069
ID_statement_expression, void_type (), expr.source_location ());
1070
- code_blockt decl_block (clean_code);
1070
+ auto decl_block= code_blockt::from_list (clean_code);
1071
1071
decl_block.set_statement (ID_decl_block);
1072
1072
side_effect_expr.copy_to_operands (decl_block);
1073
1073
clean_code.clear ();
Original file line number Diff line number Diff line change @@ -105,15 +105,24 @@ class code_blockt:public codet
105
105
{
106
106
}
107
107
108
- explicit code_blockt (const std::list<codet> &_list):codet(ID_block)
109
- {
110
- operandst &o=operands ();
111
- reserve_operands (_list.size ());
112
- for (std::list<codet>::const_iterator
113
- it=_list.begin ();
114
- it!=_list.end ();
115
- it++)
116
- o.push_back (*it);
108
+ static code_blockt from_list (const std::list<codet> &_list)
109
+ {
110
+ code_blockt result;
111
+ operandst &o=result.operands ();
112
+ o.reserve (_list.size ());
113
+ for (const auto &op : _list)
114
+ o.push_back (op);
115
+ return result;
116
+ }
117
+
118
+ explicit code_blockt (const std::vector<codet> &_statements):codet(ID_block)
119
+ {
120
+ operands ()=(const std::vector<exprt> &)_statements;
121
+ }
122
+
123
+ explicit code_blockt (std::vector<codet> &&_statements):codet(ID_block)
124
+ {
125
+ operands ()=std::move ((std::vector<exprt> &&)_statements);
117
126
}
118
127
119
128
void move (codet &code)
You can’t perform that action at this time.
0 commit comments