@@ -758,14 +758,39 @@ inline c_enum_tag_typet &to_c_enum_tag_type(typet &type)
758
758
class code_typet :public typet
759
759
{
760
760
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" )
761
786
code_typet ():typet(ID_code)
762
787
{
763
788
// make sure these properties are always there to avoid problems
764
789
// with irept comparisons
765
790
add (ID_parameters);
766
791
add_type (ID_return_type);
767
792
}
768
-
793
+
769
794
// used to be argumentt -- now uses standard terminology
770
795
771
796
class parametert :public exprt
@@ -827,7 +852,7 @@ class code_typet:public typet
827
852
set (ID_C_this, true );
828
853
}
829
854
};
830
-
855
+
831
856
bool has_ellipsis () const
832
857
{
833
858
return find (ID_parameters).get_bool (ID_ellipsis);
@@ -861,14 +886,12 @@ class code_typet:public typet
861
886
{
862
887
add (ID_parameters).remove (ID_ellipsis);
863
888
}
864
-
889
+
865
890
const typet &return_type () const
866
891
{
867
892
return find_type (ID_return_type);
868
893
}
869
894
870
- typedef std::vector<parametert> parameterst;
871
-
872
895
typet &return_type ()
873
896
{
874
897
return add_type (ID_return_type);
0 commit comments