cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
bitvector_types.cpp
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: Pre-defined bitvector types
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
11
12
#include "
bitvector_types.h
"
13
14
#include "
arith_tools.h
"
15
#include "
bv_arithmetic.h
"
16
#include "
std_expr.h
"
17
#include "
string2int.h
"
18
19
constant_exprt
bv_typet::all_zeros_expr
()
const
20
{
21
return
constant_exprt
{
22
make_bvrep
(
get_width
(), [](std::size_t) {
return
false
; }), *
this
};
23
}
24
25
constant_exprt
bv_typet::all_ones_expr
()
const
26
{
27
return
constant_exprt
{
28
make_bvrep
(
get_width
(), [](std::size_t) {
return
true
; }), *
this
};
29
}
30
31
std::size_t
fixedbv_typet::get_integer_bits
()
const
32
{
33
const
irep_idt
integer_bits =
get
(ID_integer_bits);
34
DATA_INVARIANT
(!integer_bits.
empty
(),
"integer bits should be set"
);
35
return
unsafe_string2unsigned
(
id2string
(integer_bits));
36
}
37
38
std::size_t
floatbv_typet::get_f
()
const
39
{
40
const
irep_idt
&f =
get
(ID_f);
41
DATA_INVARIANT
(!f.
empty
(),
"the mantissa should be set"
);
42
return
unsafe_string2unsigned
(
id2string
(f));
43
}
44
45
mp_integer
integer_bitvector_typet::smallest
()
const
46
{
47
return
bv_spect
(*this).
min_value
();
48
}
49
50
mp_integer
integer_bitvector_typet::largest
()
const
51
{
52
return
bv_spect
(*this).
max_value
();
53
}
54
55
constant_exprt
integer_bitvector_typet::zero_expr
()
const
56
{
57
return
from_integer
(0, *
this
);
58
}
59
60
constant_exprt
integer_bitvector_typet::smallest_expr
()
const
61
{
62
return
from_integer
(
smallest
(), *
this
);
63
}
64
65
constant_exprt
integer_bitvector_typet::largest_expr
()
const
66
{
67
return
from_integer
(
largest
(), *
this
);
68
}
make_bvrep
irep_idt make_bvrep(const std::size_t width, const std::function< bool(std::size_t)> f)
construct a bit-vector representation from a functor
Definition
arith_tools.cpp:318
from_integer
constant_exprt from_integer(const mp_integer &int_value, const typet &type)
Definition
arith_tools.cpp:99
arith_tools.h
bitvector_types.h
Pre-defined bitvector types.
bv_arithmetic.h
bitvector_typet::get_width
std::size_t get_width() const
Definition
std_types.h:925
bv_spect
Definition
bv_arithmetic.h:22
bv_spect::min_value
mp_integer min_value() const
Definition
bv_arithmetic.cpp:28
bv_spect::max_value
mp_integer max_value() const
Definition
bv_arithmetic.cpp:22
bv_typet::all_ones_expr
constant_exprt all_ones_expr() const
Definition
bitvector_types.cpp:25
bv_typet::all_zeros_expr
constant_exprt all_zeros_expr() const
Definition
bitvector_types.cpp:19
constant_exprt
A constant literal expression.
Definition
std_expr.h:2997
dstringt::empty
bool empty() const
Definition
dstring.h:89
fixedbv_typet::get_integer_bits
std::size_t get_integer_bits() const
Definition
bitvector_types.cpp:31
floatbv_typet::get_f
std::size_t get_f() const
Definition
bitvector_types.cpp:38
integer_bitvector_typet::largest_expr
constant_exprt largest_expr() const
Return an expression representing the largest value of this type.
Definition
bitvector_types.cpp:65
integer_bitvector_typet::largest
mp_integer largest() const
Return the largest value that can be represented using this type.
Definition
bitvector_types.cpp:50
integer_bitvector_typet::zero_expr
constant_exprt zero_expr() const
Return an expression representing the zero value of this type.
Definition
bitvector_types.cpp:55
integer_bitvector_typet::smallest_expr
constant_exprt smallest_expr() const
Return an expression representing the smallest value of this type.
Definition
bitvector_types.cpp:60
integer_bitvector_typet::smallest
mp_integer smallest() const
Return the smallest value that can be represented using this type.
Definition
bitvector_types.cpp:45
irept::get
const irep_idt & get(const irep_idt &name) const
Definition
irep.cpp:44
id2string
const std::string & id2string(const irep_idt &d)
Definition
irep.h:44
mp_integer
BigInt mp_integer
Definition
smt_terms.h:17
DATA_INVARIANT
#define DATA_INVARIANT(CONDITION, REASON)
This condition should be used to document that assumptions that are made on goto_functions,...
Definition
invariant.h:534
std_expr.h
API to expression classes.
unsafe_string2unsigned
unsigned unsafe_string2unsigned(const std::string &str, int base)
Definition
string2int.cpp:35
string2int.h
irep_idt
dstringt irep_idt
Definition
verification_result.h:16
util
bitvector_types.cpp
Generated by
1.17.0