cprover
Toggle main menu visibility
Loading...
Searching...
No Matches
ansi_c_convert_type.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: ANSI-C Language Conversion
4
5
Author: Daniel Kroening, kroening@kroening.com
6
7
\*******************************************************************/
8
11
12
#ifndef CPROVER_ANSI_C_ANSI_C_CONVERT_TYPE_H
13
#define CPROVER_ANSI_C_ANSI_C_CONVERT_TYPE_H
14
15
#include <
util/std_expr.h
>
16
17
#include "
c_qualifiers.h
"
18
#include "
c_storage_spec.h
"
19
20
#include <list>
21
22
class
message_handlert
;
23
24
class
ansi_c_convert_typet
25
{
26
public
:
27
unsigned
unsigned_cnt
,
signed_cnt
,
char_cnt
,
int_cnt
,
short_cnt
,
long_cnt
,
28
double_cnt
,
float_cnt
,
c_bool_cnt
,
proper_bool_cnt
,
complex_cnt
,
bitint_cnt
;
29
30
// extensions
31
unsigned
int8_cnt
,
int16_cnt
,
int32_cnt
,
int64_cnt
,
32
ptr32_cnt
,
ptr64_cnt
,
33
gcc_float16_cnt
,
34
gcc_float32_cnt
,
gcc_float32x_cnt
,
35
gcc_float64_cnt
,
gcc_float64x_cnt
,
36
gcc_float128_cnt
,
gcc_float128x_cnt
,
37
gcc_int128_cnt
,
38
bv_cnt
,
39
floatbv_cnt
,
fixedbv_cnt
;
40
41
typet
gcc_attribute_mode
;
42
43
bool
packed
,
aligned
;
44
exprt
vector_size
,
alignment
,
bv_width
,
fraction_width
;
45
exprt
msc_based
;
// this is Visual Studio
46
bool
constructor
,
destructor
;
47
48
// contracts
49
exprt::operandst
c_assigns
,
c_frees
,
c_ensures
,
c_requires
;
50
51
// storage spec
52
c_storage_spect
c_storage_spec
;
53
54
// qualifiers
55
c_qualifierst
c_qualifiers
;
56
57
virtual
void
write
(
typet
&type);
58
59
source_locationt
source_location
;
60
61
std::list<typet>
other
;
62
63
ansi_c_convert_typet
(
message_handlert
&_message_handler,
const
typet
&type)
64
:
ansi_c_convert_typet
(_message_handler)
65
{
66
source_location
= type.
source_location
();
67
read_rec
(type);
68
}
69
70
protected
:
71
message_handlert
&
message_handler
;
72
73
// Default-initialize all members. To be used by classes deriving from this
74
// one to make sure additional members can be initialized before invoking
75
// read_rec.
76
explicit
ansi_c_convert_typet
(
message_handlert
&_message_handler)
77
:
unsigned_cnt
(0),
78
signed_cnt
(0),
79
char_cnt
(0),
80
int_cnt
(0),
81
short_cnt
(0),
82
long_cnt
(0),
83
double_cnt
(0),
84
float_cnt
(0),
85
c_bool_cnt
(0),
86
proper_bool_cnt
(0),
87
complex_cnt
(0),
88
bitint_cnt
(0),
89
int8_cnt
(0),
90
int16_cnt
(0),
91
int32_cnt
(0),
92
int64_cnt
(0),
93
ptr32_cnt
(0),
94
ptr64_cnt
(0),
95
gcc_float16_cnt
(0),
96
gcc_float32_cnt
(0),
97
gcc_float32x_cnt
(0),
98
gcc_float64_cnt
(0),
99
gcc_float64x_cnt
(0),
100
gcc_float128_cnt
(0),
101
gcc_float128x_cnt
(0),
102
gcc_int128_cnt
(0),
103
bv_cnt
(0),
104
floatbv_cnt
(0),
105
fixedbv_cnt
(0),
106
gcc_attribute_mode
(static_cast<const
typet
&>(
get_nil_irep
())),
107
packed
(false),
108
aligned
(false),
109
vector_size
(
nil_exprt
{}),
110
alignment
(
nil_exprt
{}),
111
bv_width
(
nil_exprt
{}),
112
fraction_width
(
nil_exprt
{}),
113
msc_based
(
nil_exprt
{}),
114
constructor
(false),
115
destructor
(false),
116
message_handler
(_message_handler)
117
{
118
}
119
120
virtual
void
read_rec
(
const
typet
&type);
121
virtual
void
build_type_with_subtype
(
typet
&type)
const
;
122
virtual
void
set_attributes
(
typet
&type)
const
;
123
};
124
125
#endif
// CPROVER_ANSI_C_ANSI_C_CONVERT_TYPE_H
c_qualifiers.h
c_storage_spec.h
ansi_c_convert_typet::read_rec
virtual void read_rec(const typet &type)
Definition
ansi_c_convert_type.cpp:22
ansi_c_convert_typet::gcc_int128_cnt
unsigned gcc_int128_cnt
Definition
ansi_c_convert_type.h:37
ansi_c_convert_typet::gcc_float64_cnt
unsigned gcc_float64_cnt
Definition
ansi_c_convert_type.h:35
ansi_c_convert_typet::unsigned_cnt
unsigned unsigned_cnt
Definition
ansi_c_convert_type.h:27
ansi_c_convert_typet::alignment
exprt alignment
Definition
ansi_c_convert_type.h:44
ansi_c_convert_typet::ansi_c_convert_typet
ansi_c_convert_typet(message_handlert &_message_handler)
Definition
ansi_c_convert_type.h:76
ansi_c_convert_typet::gcc_float32_cnt
unsigned gcc_float32_cnt
Definition
ansi_c_convert_type.h:34
ansi_c_convert_typet::c_storage_spec
c_storage_spect c_storage_spec
Definition
ansi_c_convert_type.h:52
ansi_c_convert_typet::char_cnt
unsigned char_cnt
Definition
ansi_c_convert_type.h:27
ansi_c_convert_typet::packed
bool packed
Definition
ansi_c_convert_type.h:43
ansi_c_convert_typet::fraction_width
exprt fraction_width
Definition
ansi_c_convert_type.h:44
ansi_c_convert_typet::c_frees
exprt::operandst c_frees
Definition
ansi_c_convert_type.h:49
ansi_c_convert_typet::int32_cnt
unsigned int32_cnt
Definition
ansi_c_convert_type.h:31
ansi_c_convert_typet::floatbv_cnt
unsigned floatbv_cnt
Definition
ansi_c_convert_type.h:39
ansi_c_convert_typet::c_ensures
exprt::operandst c_ensures
Definition
ansi_c_convert_type.h:49
ansi_c_convert_typet::int16_cnt
unsigned int16_cnt
Definition
ansi_c_convert_type.h:31
ansi_c_convert_typet::write
virtual void write(typet &type)
Definition
ansi_c_convert_type.cpp:290
ansi_c_convert_typet::c_bool_cnt
unsigned c_bool_cnt
Definition
ansi_c_convert_type.h:28
ansi_c_convert_typet::destructor
bool destructor
Definition
ansi_c_convert_type.h:46
ansi_c_convert_typet::short_cnt
unsigned short_cnt
Definition
ansi_c_convert_type.h:27
ansi_c_convert_typet::gcc_float128x_cnt
unsigned gcc_float128x_cnt
Definition
ansi_c_convert_type.h:36
ansi_c_convert_typet::gcc_attribute_mode
typet gcc_attribute_mode
Definition
ansi_c_convert_type.h:41
ansi_c_convert_typet::float_cnt
unsigned float_cnt
Definition
ansi_c_convert_type.h:28
ansi_c_convert_typet::vector_size
exprt vector_size
Definition
ansi_c_convert_type.h:44
ansi_c_convert_typet::aligned
bool aligned
Definition
ansi_c_convert_type.h:43
ansi_c_convert_typet::int_cnt
unsigned int_cnt
Definition
ansi_c_convert_type.h:27
ansi_c_convert_typet::gcc_float32x_cnt
unsigned gcc_float32x_cnt
Definition
ansi_c_convert_type.h:34
ansi_c_convert_typet::message_handler
message_handlert & message_handler
Definition
ansi_c_convert_type.h:71
ansi_c_convert_typet::complex_cnt
unsigned complex_cnt
Definition
ansi_c_convert_type.h:28
ansi_c_convert_typet::bitint_cnt
unsigned bitint_cnt
Definition
ansi_c_convert_type.h:28
ansi_c_convert_typet::set_attributes
virtual void set_attributes(typet &type) const
Add qualifiers and GCC attributes onto type.
Definition
ansi_c_convert_type.cpp:676
ansi_c_convert_typet::constructor
bool constructor
Definition
ansi_c_convert_type.h:46
ansi_c_convert_typet::proper_bool_cnt
unsigned proper_bool_cnt
Definition
ansi_c_convert_type.h:28
ansi_c_convert_typet::bv_width
exprt bv_width
Definition
ansi_c_convert_type.h:44
ansi_c_convert_typet::bv_cnt
unsigned bv_cnt
Definition
ansi_c_convert_type.h:38
ansi_c_convert_typet::gcc_float64x_cnt
unsigned gcc_float64x_cnt
Definition
ansi_c_convert_type.h:35
ansi_c_convert_typet::c_requires
exprt::operandst c_requires
Definition
ansi_c_convert_type.h:49
ansi_c_convert_typet::ansi_c_convert_typet
ansi_c_convert_typet(message_handlert &_message_handler, const typet &type)
Definition
ansi_c_convert_type.h:63
ansi_c_convert_typet::source_location
source_locationt source_location
Definition
ansi_c_convert_type.h:59
ansi_c_convert_typet::gcc_float16_cnt
unsigned gcc_float16_cnt
Definition
ansi_c_convert_type.h:33
ansi_c_convert_typet::int8_cnt
unsigned int8_cnt
Definition
ansi_c_convert_type.h:31
ansi_c_convert_typet::long_cnt
unsigned long_cnt
Definition
ansi_c_convert_type.h:27
ansi_c_convert_typet::c_assigns
exprt::operandst c_assigns
Definition
ansi_c_convert_type.h:49
ansi_c_convert_typet::signed_cnt
unsigned signed_cnt
Definition
ansi_c_convert_type.h:27
ansi_c_convert_typet::ptr64_cnt
unsigned ptr64_cnt
Definition
ansi_c_convert_type.h:32
ansi_c_convert_typet::double_cnt
unsigned double_cnt
Definition
ansi_c_convert_type.h:28
ansi_c_convert_typet::int64_cnt
unsigned int64_cnt
Definition
ansi_c_convert_type.h:31
ansi_c_convert_typet::msc_based
exprt msc_based
Definition
ansi_c_convert_type.h:45
ansi_c_convert_typet::build_type_with_subtype
virtual void build_type_with_subtype(typet &type) const
Build a vector or complex type with type as subtype.
Definition
ansi_c_convert_type.cpp:656
ansi_c_convert_typet::c_qualifiers
c_qualifierst c_qualifiers
Definition
ansi_c_convert_type.h:55
ansi_c_convert_typet::other
std::list< typet > other
Definition
ansi_c_convert_type.h:61
ansi_c_convert_typet::fixedbv_cnt
unsigned fixedbv_cnt
Definition
ansi_c_convert_type.h:39
ansi_c_convert_typet::gcc_float128_cnt
unsigned gcc_float128_cnt
Definition
ansi_c_convert_type.h:36
ansi_c_convert_typet::ptr32_cnt
unsigned ptr32_cnt
Definition
ansi_c_convert_type.h:32
c_qualifierst
Definition
c_qualifiers.h:19
c_storage_spect
Definition
c_storage_spec.h:18
exprt
Base class for all expressions.
Definition
expr.h:57
exprt::operandst
std::vector< exprt > operandst
Definition
expr.h:59
message_handlert
Definition
message.h:27
nil_exprt
The NIL expression.
Definition
std_expr.h:3134
source_locationt
Definition
source_location.h:20
typet
The type of an expression, extends irept.
Definition
type.h:29
typet::source_location
const source_locationt & source_location() const
Definition
type.h:72
get_nil_irep
const irept & get_nil_irep()
Definition
irep.cpp:19
std_expr.h
API to expression classes.
ansi-c
ansi_c_convert_type.h
Generated by
1.17.0