Skip to content

Commit 7d3921c

Browse files
Add two-param code_typet constructors and deprecate the default one
1 parent fa30ccb commit 7d3921c

File tree

1 file changed

+25
-2
lines changed

1 file changed

+25
-2
lines changed

src/util/std_types.h

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -758,6 +758,31 @@ inline c_enum_tag_typet &to_c_enum_tag_type(typet &type)
758758
class code_typet:public typet
759759
{
760760
public:
761+
class parametert;
762+
typedef std::vector<parametert> parameterst;
763+
764+
/// Constructs a new code type, i.e. function type
765+
/// \param _parameters: the vector of function parameters
766+
/// \param _return_type: the return type
767+
code_typet(parameterst &&_parameters, typet &&_return_type)
768+
: typet(ID_code)
769+
{
770+
parameters().swap(_parameters);
771+
return_type().swap(_return_type);
772+
}
773+
774+
/// Constructs a new code type, i.e. function type
775+
/// \param _parameters: the vector of function parameters
776+
/// \param _return_type: the return type
777+
code_typet(parameterst &&_parameters, const typet &_return_type)
778+
: typet(ID_code)
779+
{
780+
parameters().swap(_parameters);
781+
return_type() = _return_type;
782+
}
783+
784+
/// \deprecated
785+
DEPRECATED("Use the two argument constructor instead")
761786
code_typet():typet(ID_code)
762787
{
763788
// make sure these properties are always there to avoid problems
@@ -862,8 +887,6 @@ class code_typet:public typet
862887
add(ID_parameters).remove(ID_ellipsis);
863888
}
864889

865-
typedef std::vector<parametert> parameterst;
866-
867890
const typet &return_type() const
868891
{
869892
return find_type(ID_return_type);

0 commit comments

Comments
 (0)