Skip to content

Commit f5ccb0d

Browse files
Add two-param code_typet constructors and deprecate the default one
1 parent d8371f9 commit f5ccb0d

File tree

1 file changed

+28
-5
lines changed

1 file changed

+28
-5
lines changed

src/util/std_types.h

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -758,14 +758,39 @@ 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
764789
// with irept comparisons
765790
add(ID_parameters);
766791
add_type(ID_return_type);
767792
}
768-
793+
769794
// used to be argumentt -- now uses standard terminology
770795

771796
class parametert:public exprt
@@ -827,7 +852,7 @@ class code_typet:public typet
827852
set(ID_C_this, true);
828853
}
829854
};
830-
855+
831856
bool has_ellipsis() const
832857
{
833858
return find(ID_parameters).get_bool(ID_ellipsis);
@@ -861,14 +886,12 @@ class code_typet:public typet
861886
{
862887
add(ID_parameters).remove(ID_ellipsis);
863888
}
864-
889+
865890
const typet &return_type() const
866891
{
867892
return find_type(ID_return_type);
868893
}
869894

870-
typedef std::vector<parametert> parameterst;
871-
872895
typet &return_type()
873896
{
874897
return add_type(ID_return_type);

0 commit comments

Comments
 (0)