cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
endianness_map_wide.cpp
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module:
4
5
Author: Daniel Kroening, dkr@amazon.com
6
7
\*******************************************************************/
8
9
#include "
endianness_map_wide.h
"
10
11
#include <
util/arith_tools.h
>
12
#include <
util/pointer_offset_size.h
>
13
#include <
util/type.h
>
14
15
void
endianness_map_widet::build_little_endian
(
const
typet
&src)
16
{
17
if
(src.
id
() == ID_pointer)
18
{
19
auto
s =
pointer_offset_bits
(src,
ns
);
20
CHECK_RETURN
(s.has_value());
21
s.value() = s.value() * 2;
22
23
const
std::size_t new_size =
map
.size() +
numeric_cast_v<std::size_t>
(*s);
24
map
.reserve(new_size);
25
26
for
(std::size_t i =
map
.size(); i < new_size; ++i)
27
map
.push_back(i);
28
}
29
else
30
endianness_mapt::build_little_endian
(src);
31
}
arith_tools.h
numeric_cast_v
Target numeric_cast_v(const mp_integer &arg)
Convert an mp_integer to integral type Target An invariant will fail if the conversion is not possibl...
Definition
arith_tools.h:135
endianness_map_widet::build_little_endian
void build_little_endian(const typet &) override
Definition
endianness_map_wide.cpp:15
endianness_mapt::ns
const namespacet & ns
Definition
endianness_map.h:65
endianness_mapt::build_little_endian
virtual void build_little_endian(const typet &type)
Definition
endianness_map.cpp:38
endianness_mapt::map
std::vector< size_t > map
Definition
endianness_map.h:66
irept::id
const irep_idt & id() const
Definition
irep.h:388
typet
The type of an expression, extends irept.
Definition
type.h:29
endianness_map_wide.h
pointer_offset_bits
std::optional< mp_integer > pointer_offset_bits(const typet &type, const namespacet &ns)
Definition
pointer_offset_size.cpp:102
pointer_offset_size.h
Pointer Logic.
CHECK_RETURN
#define CHECK_RETURN(CONDITION)
Definition
invariant.h:495
type.h
Defines typet, type_with_subtypet and type_with_subtypest.
cprover
endianness_map_wide.cpp
Generated by
1.17.0