Skip to content

Commit 7a19c43

Browse files
Add string_to_upper_case_builtin_functiont constructor
1 parent 2972e46 commit 7a19c43

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

src/solvers/refinement/string_builtin_function.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,14 @@ optionalt<exprt> string_to_upper_case_builtin_functiont::eval(
341341
return make_string(input_opt.value(), type);
342342
}
343343

344+
/// Set of constraints ensuring `result` corresponds to `input` in which
345+
/// lowercase characters of Basic Latin and Latin-1 supplement of unicode
346+
/// have been converted to uppercase. These constraints are:
347+
/// 1. res.length = str.length && return_code = 0
348+
/// 2. forall i < str.length.
349+
/// is_lower_case(str[i]) ? res[i] = str[i] - 0x20 : res[i] = str[i]
350+
///
351+
/// \param fresh_symbol: generator of fresh symbols
344352
string_constraintst string_to_upper_case_builtin_functiont::constraints(
345353
string_constraint_generatort &generator) const
346354
{

src/solvers/refinement/string_builtin_function.h

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,8 @@ class string_builtin_functiont
6363
string_builtin_functiont() = default;
6464

6565
protected:
66-
explicit string_builtin_functiont(const exprt &return_code)
67-
: return_code(return_code)
66+
explicit string_builtin_functiont(exprt return_code)
67+
: return_code(std::move(return_code))
6868
{
6969
}
7070
};
@@ -76,6 +76,16 @@ class string_transformation_builtin_functiont : public string_builtin_functiont
7676
array_string_exprt result;
7777
array_string_exprt input;
7878

79+
string_transformation_builtin_functiont(
80+
exprt return_code,
81+
array_string_exprt result,
82+
array_string_exprt input)
83+
: string_builtin_functiont(std::move(return_code)),
84+
result(std::move(result)),
85+
input(std::move(result))
86+
{
87+
}
88+
7989
/// Constructor from arguments of a function application.
8090
/// The arguments in `fun_args` should be in order:
8191
/// an integer `result.length`, a character pointer `&result[0]`,

0 commit comments

Comments
 (0)