@@ -43,7 +43,9 @@ expr2c_configurationt expr2c_configurationt::default_configuration
4343 true ,
4444 " TRUE" ,
4545 " FALSE" ,
46- true
46+ true ,
47+ false ,
48+ false
4749};
4850
4951expr2c_configurationt expr2c_configurationt::clean_configuration
@@ -53,7 +55,9 @@ expr2c_configurationt expr2c_configurationt::clean_configuration
5355 false ,
5456 " 1" ,
5557 " 0" ,
56- false
58+ false ,
59+ true ,
60+ true
5761};
5862
5963// clang-format on
@@ -196,7 +200,7 @@ std::string expr2ct::convert_rec(
196200
197201 std::string d = declarator.empty () ? declarator : " " + declarator;
198202
199- if (src.find (ID_C_typedef).is_not_nil ())
203+ if (!configuration. expand_typedef && src.find (ID_C_typedef).is_not_nil ())
200204 {
201205 return q+id2string (src.get (ID_C_typedef))+d;
202206 }
@@ -1709,22 +1713,29 @@ std::string expr2ct::convert_constant(
17091713 if (c_enum_type.id ()!=ID_c_enum)
17101714 return convert_norep (src, precedence);
17111715
1712- const c_enum_typet::memberst &members=
1713- to_c_enum_type (c_enum_type).members ();
1714-
1715- for (const auto &member : members)
1716+ if (!configuration.print_enum_int_value )
17161717 {
1717- if (member.get_value () == value)
1718- return " /*enum*/" + id2string (member.get_base_name ());
1718+ const c_enum_typet::memberst &members =
1719+ to_c_enum_type (c_enum_type).members ();
1720+
1721+ for (const auto &member : members)
1722+ {
1723+ if (member.get_value () == value)
1724+ return " /*enum*/" + id2string (member.get_base_name ());
1725+ }
17191726 }
17201727
1721- // failed...
1728+ // lookup failed or enum is to be output as integer
17221729 const bool is_signed = c_enum_type.subtype ().id () == ID_signedbv;
17231730 const auto width = to_bitvector_type (c_enum_type.subtype ()).get_width ();
17241731
1725- mp_integer int_value = bvrep2integer (value, width, is_signed);
1732+ std::string value_as_string =
1733+ integer2string (bvrep2integer (value, width, is_signed));
17261734
1727- return " /*enum*/" +integer2string (int_value);
1735+ if (configuration.print_enum_int_value )
1736+ return value_as_string;
1737+ else
1738+ return " /*enum*/" + value_as_string;
17281739 }
17291740 else if (type.id ()==ID_rational)
17301741 return convert_norep (src, precedence);
0 commit comments