1#ifndef SOLVERS_SMT_SMT_SORT_H_
2#define SOLVERS_SMT_SMT_SORT_H_
48 :
id(i), data_width(0), secondary_width(0), range_sort(nullptr)
64 :
id(i), data_width(width), secondary_width(0), range_sort(nullptr)
70 :
id(i), data_width(width), secondary_width(sigwidth), range_sort(nullptr)
76 :
id(i), data_width(dom_width), secondary_width(0), range_sort(range_sort)
84 std::size_t dom_width,
87 data_width(dom_width),
89 range_sort(range_sort),
98 return data_width * range_sort->data_width;
111 assert(range_sort !=
nullptr);
118 return secondary_width;
126 return (exp_top - exp_bot);
147 size_t secondary_width;
161template <
typename solver_sort>
203 :
smt_sort(i, type, width, range_sort),
s(_s)
213# define dynamic_cast static_cast
smt_sort(smt_sort_kind i)
Definition smt_sort.h:47
smt_sort(smt_sort_kind i, std::size_t width, std::size_t sigwidth)
Definition smt_sort.h:69
smt_sort(smt_sort_kind i, const type2tc &type, std::size_t dom_width, smt_sortt range_sort)
Definition smt_sort.h:81
smt_sort(smt_sort_kind i, const type2tc &type)
Definition smt_sort.h:53
size_t get_exponent_width() const
Definition smt_sort.h:121
smt_sort(smt_sort_kind i, std::size_t dom_width, smt_sortt range_sort)
Definition smt_sort.h:75
size_t get_significand_width() const
Definition smt_sort.h:115
const type2tc & get_tuple_type() const
Definition smt_sort.h:129
smt_sort_kind id
Identifies what /kind/ of sort this is.
Definition smt_sort.h:45
smt_sortt get_range_sort() const
Definition smt_sort.h:108
size_t get_domain_width() const
Definition smt_sort.h:102
size_t get_data_width() const
Definition smt_sort.h:95
virtual ~smt_sort()=default
smt_sort(smt_sort_kind i, std::size_t width)
Definition smt_sort.h:63
Definition smt_sort.h:163
solver_smt_sort(smt_sort_kind i, solver_sort _s, std::size_t dw, const smt_sort *_rangesort)
Definition smt_sort.h:188
~solver_smt_sort() override=default
solver_smt_sort(smt_sort_kind i, solver_sort _s, unsigned int w, unsigned int sw)
Definition smt_sort.h:179
solver_smt_sort(smt_sort_kind i, solver_sort _s, const type2tc &_tupletype)
Definition smt_sort.h:169
solver_sort s
Definition smt_sort.h:209
solver_smt_sort(smt_sort_kind i, solver_sort _s)
Definition smt_sort.h:165
solver_smt_sort(smt_sort_kind i, solver_sort _s, const type2tc &type, std::size_t width, smt_sortt range_sort)
Definition smt_sort.h:197
solver_smt_sort(smt_sort_kind i, solver_sort _s, unsigned int w)
Definition smt_sort.h:174
irep_container< type2t > type2tc
Definition irep2.h:430
bool is_nil_type(const type2tc &t)
Definition irep2.h:937
smt_sort_kind
Identifier for SMT sort kinds Each different kind of sort (i.e., arrays, bv's, bools,...
Definition smt_sort.h:11
@ SMT_SORT_FPBV_RM
Definition smt_sort.h:22
@ SMT_SORT_FIXEDBV
Definition smt_sort.h:15
@ SMT_SORT_FPBV
Definition smt_sort.h:20
@ SMT_SORT_BVFP
Definition smt_sort.h:19
@ SMT_SORT_STRUCT
Definition smt_sort.h:18
@ SMT_SORT_ARRAY
Definition smt_sort.h:16
@ SMT_SORT_REAL
Definition smt_sort.h:13
@ SMT_SORT_INT
Definition smt_sort.h:12
@ SMT_SORT_BOOL
Definition smt_sort.h:17
@ SMT_SORT_BVFP_RM
Definition smt_sort.h:21
@ SMT_SORT_BV
Definition smt_sort.h:14
const smt_sort * smt_sortt
Definition smt_sort.h:37
const solver_smt_sort< T > * to_solver_smt_sort(smt_sortt s)
Definition smt_sort.h:216