Skip to content

Commit dfa8661

Browse files
committed
Add struct support to smt2_incremental_decision_proceduret::get
1 parent a05f1e4 commit dfa8661

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

src/solvers/smt2_incremental/smt2_incremental_decision_procedure.cpp

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,17 @@ optionalt<exprt> smt2_incremental_decision_proceduret::get_expr(
397397
return array_exprt{elements, type};
398398
}
399399

400+
optionalt<exprt> smt2_incremental_decision_proceduret::get_expr(
401+
const smt_termt &struct_term,
402+
const struct_tag_typet &type) const
403+
{
404+
const auto encoded_result =
405+
get_expr(struct_term, struct_encoding.encode(type));
406+
if(!encoded_result)
407+
return {};
408+
return {struct_encoding.decode(*encoded_result, type)};
409+
}
410+
400411
optionalt<exprt> smt2_incremental_decision_proceduret::get_expr(
401412
const smt_termt &descriptor,
402413
const typet &type) const
@@ -407,6 +418,10 @@ optionalt<exprt> smt2_incremental_decision_proceduret::get_expr(
407418
return {};
408419
return get_expr(descriptor, *array_type);
409420
}
421+
if(const auto struct_type = type_try_dynamic_cast<struct_tag_typet>(type))
422+
{
423+
return get_expr(descriptor, *struct_type);
424+
}
410425
const smt_get_value_commandt get_value_command{descriptor};
411426
const smt_responset response = get_response_to_command(
412427
*solver_process, get_value_command, identifier_table);

src/solvers/smt2_incremental/smt2_incremental_decision_procedure.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@ class smt2_incremental_decision_proceduret final
5757
optionalt<exprt>
5858
get_expr(const smt_termt &descriptor, const typet &type) const;
5959
optionalt<exprt>
60+
get_expr(const smt_termt &struct_term, const struct_tag_typet &type) const;
61+
optionalt<exprt>
6062
get_expr(const smt_termt &array, const array_typet &type) const;
6163

6264
protected:

0 commit comments

Comments
 (0)