@@ -302,10 +302,9 @@ exprt java_string_library_preprocesst::convert_exprt_to_string_exprt(
302302{
303303 PRECONDITION (implements_java_char_sequence (op_to_process.type ()));
304304 string_exprt string_expr=fresh_string_expr (loc, symbol_table, init_code);
305- init_code. add ( code_assign_java_string_to_string_expr (
306- string_expr, op_to_process, symbol_table) );
305+ code_assign_java_string_to_string_expr (
306+ string_expr, op_to_process, symbol_table, init_code );
307307 exprt string_expr_sym=fresh_string_expr_symbol (loc, symbol_table, init_code);
308- init_code.add (code_declt (string_expr_sym));
309308 init_code.add (code_assignt (string_expr_sym, string_expr));
310309 return string_expr;
311310}
@@ -781,13 +780,16 @@ codet java_string_library_preprocesst::
781780// / \param lhs: a string expression
782781// / \param rhs: an expression representing a java string
783782// / \param symbol_table: symbol table
784- // / \return return the following code:
783+ // / \param code: code block that gets appended the following code:
785784// / ~~~~~~~~~~~~~~~~~~~~~~
786785// / lhs.length=rhs->length
787786// / lhs.data=*(rhs->data)
788787// / ~~~~~~~~~~~~~~~~~~~~~~
789- codet java_string_library_preprocesst::code_assign_java_string_to_string_expr (
790- const string_exprt &lhs, const exprt &rhs, symbol_tablet &symbol_table)
788+ void java_string_library_preprocesst::code_assign_java_string_to_string_expr (
789+ const string_exprt &lhs,
790+ const exprt &rhs,
791+ symbol_tablet &symbol_table,
792+ code_blockt &code)
791793{
792794 PRECONDITION (implements_java_char_sequence (rhs.type ()));
793795
@@ -806,15 +808,13 @@ codet java_string_library_preprocesst::code_assign_java_string_to_string_expr(
806808 dereference_exprt rhs_data (member_data, member_data.type ().subtype ());
807809
808810 // Assignments
809- code_blockt code;
810811 code.add (code_assignt (lhs.length (), rhs_length));
811812
812813 // We always assume data of a String is not null
813814 not_exprt data_not_null (equal_exprt (
814815 member_data, null_pointer_exprt (to_pointer_type (member_data.type ()))));
815816 code.add (code_assumet (data_not_null));
816817 code.add (code_assignt (lhs.content (), rhs_data));
817- return code;
818818}
819819
820820// / \param lhs: an expression representing a java string
@@ -1140,8 +1140,8 @@ codet java_string_library_preprocesst::make_string_to_char_array_code(
11401140
11411141 // string_expr = {this->length, this->data}
11421142 string_exprt string_expr=fresh_string_expr (loc, symbol_table, code);
1143- code. add ( code_assign_java_string_to_string_expr (
1144- string_expr, string_argument, symbol_table) );
1143+ code_assign_java_string_to_string_expr (
1144+ string_expr, string_argument, symbol_table, code );
11451145 exprt string_expr_sym=fresh_string_expr_symbol (
11461146 loc, symbol_table, code);
11471147 code.add (code_assignt (string_expr_sym, string_expr));
@@ -1391,8 +1391,11 @@ exprt java_string_library_preprocesst::make_argument_for_format(
13911391 pointer_typet string_pointer=
13921392 java_reference_type (symbol_typet (" java::java.lang.String" ));
13931393 typecast_exprt arg_i_as_string (arg_i, string_pointer);
1394- code_not_null.add (code_assign_java_string_to_string_expr (
1395- to_string_expr (field_expr), arg_i_as_string, symbol_table));
1394+ code_assign_java_string_to_string_expr (
1395+ to_string_expr (field_expr),
1396+ arg_i_as_string,
1397+ symbol_table,
1398+ code_not_null);
13961399 exprt arg_i_string_expr_sym=fresh_string_expr_symbol (
13971400 loc, symbol_table, code_not_null);
13981401 code_not_null.add (code_assignt (
@@ -1651,8 +1654,7 @@ codet java_string_library_preprocesst::make_copy_string_code(
16511654 // Assign the argument to string_expr
16521655 code_typet::parametert op=type.parameters ()[0 ];
16531656 symbol_exprt arg0 (op.get_identifier (), op.type ());
1654- code.add (code_assign_java_string_to_string_expr (
1655- string_expr, arg0, symbol_table));
1657+ code_assign_java_string_to_string_expr (string_expr, arg0, symbol_table, code);
16561658
16571659 // Assign string_expr to string_expr_sym
16581660 exprt string_expr_sym=fresh_string_expr_symbol (loc, symbol_table, code);
@@ -1693,8 +1695,7 @@ codet java_string_library_preprocesst::make_copy_constructor_code(
16931695 // Assign argument to a string_expr
16941696 code_typet::parameterst params=type.parameters ();
16951697 symbol_exprt arg1 (params[1 ].get_identifier (), params[1 ].type ());
1696- code.add (code_assign_java_string_to_string_expr (
1697- string_expr, arg1, symbol_table));
1698+ code_assign_java_string_to_string_expr (string_expr, arg1, symbol_table, code);
16981699
16991700 // Assign string_expr to symbol to keep track of it
17001701 exprt string_expr_sym=fresh_string_expr_symbol (loc, symbol_table, code);
@@ -1735,8 +1736,8 @@ codet java_string_library_preprocesst::make_string_length_code(
17351736 string_exprt str_expr=fresh_string_expr (loc, symbol_table, code);
17361737
17371738 // Assign this to str_expr
1738- code. add (
1739- code_assign_java_string_to_string_expr ( str_expr, arg_this, symbol_table) );
1739+ code_assign_java_string_to_string_expr (
1740+ str_expr, arg_this, symbol_table, code );
17401741
17411742 // Assign str_expr to str_expr_sym for that expression to be present in the
17421743 // symbol table in order to be processed by the string solver
0 commit comments