@@ -56,42 +56,6 @@ class void_typet:public empty_typet
56
56
{
57
57
};
58
58
59
- // / Unbounded, signed integers (mathematical integers, not bitvectors)
60
- class integer_typet :public typet
61
- {
62
- public:
63
- integer_typet ():typet(ID_integer)
64
- {
65
- }
66
- };
67
-
68
- // / Natural numbers including zero (mathematical integers, not bitvectors)
69
- class natural_typet :public typet
70
- {
71
- public:
72
- natural_typet ():typet(ID_natural)
73
- {
74
- }
75
- };
76
-
77
- // / Unbounded, signed rational numbers
78
- class rational_typet :public typet
79
- {
80
- public:
81
- rational_typet ():typet(ID_rational)
82
- {
83
- }
84
- };
85
-
86
- // / Unbounded, signed real numbers
87
- class real_typet :public typet
88
- {
89
- public:
90
- real_typet ():typet(ID_real)
91
- {
92
- }
93
- };
94
-
95
59
// / A reference into the symbol table
96
60
class symbol_typet :public typet
97
61
{
@@ -1778,157 +1742,6 @@ inline vector_typet &to_vector_type(typet &type)
1778
1742
return static_cast <vector_typet &>(type);
1779
1743
}
1780
1744
1781
- // / Complex numbers made of pair of given subtype
1782
- class complex_typet :public type_with_subtypet
1783
- {
1784
- public:
1785
- complex_typet ():type_with_subtypet(ID_complex)
1786
- {
1787
- }
1788
-
1789
- explicit complex_typet (const typet &_subtype):
1790
- type_with_subtypet(ID_complex, _subtype)
1791
- {
1792
- }
1793
- };
1794
-
1795
- // / Check whether a reference to a typet is a \ref complex_typet.
1796
- // / \param type Source type.
1797
- // / \return True if \param type is a \ref complex_typet.
1798
- template <>
1799
- inline bool can_cast_type<complex_typet>(const typet &type)
1800
- {
1801
- return type.id () == ID_complex;
1802
- }
1803
-
1804
- // / \brief Cast a typet to a \ref complex_typet
1805
- // /
1806
- // / This is an unchecked conversion. \a type must be known to be \ref
1807
- // / complex_typet. Will fail with a precondition violation if type
1808
- // / doesn't match.
1809
- // /
1810
- // / \param type Source type.
1811
- // / \return Object of type \ref complex_typet.
1812
- inline const complex_typet &to_complex_type (const typet &type)
1813
- {
1814
- PRECONDITION (can_cast_type<complex_typet>(type));
1815
- return static_cast <const complex_typet &>(type);
1816
- }
1817
-
1818
- // / \copydoc to_complex_type(const typet &)
1819
- inline complex_typet &to_complex_type (typet &type)
1820
- {
1821
- PRECONDITION (can_cast_type<complex_typet>(type));
1822
- return static_cast <complex_typet &>(type);
1823
- }
1824
-
1825
- // / A type for mathematical functions (do not confuse with functions/methods
1826
- // / in code)
1827
- class mathematical_function_typet :public typet
1828
- {
1829
- public:
1830
- // the domain of the function is composed of zero, one, or
1831
- // many variables
1832
- class variablet :public irept
1833
- {
1834
- public:
1835
- // the identifier is optional
1836
- irep_idt get_identifier () const
1837
- {
1838
- return get (ID_identifier);
1839
- }
1840
-
1841
- void set_identifier (const irep_idt &identifier)
1842
- {
1843
- return set (ID_identifier, identifier);
1844
- }
1845
-
1846
- typet &type ()
1847
- {
1848
- return static_cast <typet &>(add (ID_type));
1849
- }
1850
-
1851
- const typet &type () const
1852
- {
1853
- return static_cast <const typet &>(find (ID_type));
1854
- }
1855
- };
1856
-
1857
- using domaint=std::vector<variablet>;
1858
-
1859
- mathematical_function_typet (const domaint &_domain, const typet &_codomain)
1860
- : typet(ID_mathematical_function)
1861
- {
1862
- subtypes ().resize (2 );
1863
- domain () = _domain;
1864
- codomain () = _codomain;
1865
- }
1866
-
1867
- domaint &domain ()
1868
- {
1869
- return (domaint &)subtypes ()[0 ].subtypes ();
1870
- }
1871
-
1872
- const domaint &domain () const
1873
- {
1874
- return (const domaint &)subtypes ()[0 ].subtypes ();
1875
- }
1876
-
1877
- variablet &add_variable ()
1878
- {
1879
- auto &d=domain ();
1880
- d.push_back (variablet ());
1881
- return d.back ();
1882
- }
1883
-
1884
- // / Return the codomain, i.e., the set of values that the function maps to
1885
- // / (the "target").
1886
- typet &codomain ()
1887
- {
1888
- return subtypes ()[1 ];
1889
- }
1890
-
1891
- // / \copydoc codomain()
1892
- const typet &codomain () const
1893
- {
1894
- return subtypes ()[1 ];
1895
- }
1896
- };
1897
-
1898
- // / Check whether a reference to a typet is a \ref mathematical_function_typet.
1899
- // / \param type Source type.
1900
- // / \return True if \param type is a \ref mathematical_function_typet.
1901
- template <>
1902
- inline bool can_cast_type<mathematical_function_typet>(const typet &type)
1903
- {
1904
- return type.id () == ID_mathematical_function;
1905
- }
1906
-
1907
- // / \brief Cast a typet to a \ref mathematical_function_typet
1908
- // /
1909
- // / This is an unchecked conversion. \a type must be known to be \ref
1910
- // / mathematical_function_typet. Will fail with a precondition violation if type
1911
- // / doesn't match.
1912
- // /
1913
- // / \param type Source type.
1914
- // / \return Object of type \ref mathematical_function_typet.
1915
- inline const mathematical_function_typet &
1916
- to_mathematical_function_type (const typet &type)
1917
- {
1918
- PRECONDITION (can_cast_type<mathematical_function_typet>(type));
1919
- return static_cast <const mathematical_function_typet &>(type);
1920
- }
1921
-
1922
- // / \copydoc to_mathematical_function_type(const typet &)
1923
- inline mathematical_function_typet &
1924
- to_mathematical_function_type (typet &type)
1925
- {
1926
- PRECONDITION (can_cast_type<mathematical_function_typet>(type));
1927
- return static_cast <mathematical_function_typet &>(type);
1928
- }
1929
-
1930
- bool is_number (const typet &type);
1931
-
1932
1745
bool is_constant_or_has_constant_components (
1933
1746
const typet &type,
1934
1747
const namespacet &ns);
0 commit comments