CBMC
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 <list>
16 
17 #include <util/expr.h>
18 #include <util/message.h>
19 
20 #include "c_qualifiers.h"
21 #include "c_storage_spec.h"
22 
24 {
25 public:
30 
31  // extensions
41 
43 
44  bool packed, aligned;
46  exprt msc_based; // this is Visual Studio
48 
49  // contracts
52 
53  // storage spec
55 
56  // qualifiers
58 
59  virtual void read(const typet &type);
60  virtual void write(typet &type);
61 
63 
64  std::list<typet> other;
65 
66  explicit ansi_c_convert_typet(message_handlert &_message_handler):
67  messaget(_message_handler)
68  // class members are initialized by calling read()
69  {
70  }
71 
72  virtual void clear()
73  {
89 
90  assigns.clear();
91  requires.clear();
92  ensures.clear();
93 
95 
96  other.clear();
99  }
100 
101 protected:
102  virtual void read_rec(const typet &type);
103  virtual void build_type_with_subtype(typet &type) const;
104  virtual void set_attributes(typet &type) const;
105 };
106 
107 #endif // CPROVER_ANSI_C_ANSI_C_CONVERT_TYPE_H
messaget
Class that provides messages with a built-in verbosity 'level'.
Definition: message.h:154
ansi_c_convert_typet::int8_cnt
unsigned int8_cnt
Definition: ansi_c_convert_type.h:32
ansi_c_convert_typet::gcc_attribute_mode
typet gcc_attribute_mode
Definition: ansi_c_convert_type.h:42
ansi_c_convert_typet::clear
virtual void clear()
Definition: ansi_c_convert_type.h:72
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:671
ansi_c_convert_typet::msc_based
exprt msc_based
Definition: ansi_c_convert_type.h:46
irept::make_nil
void make_nil()
Definition: irep.h:454
typet
The type of an expression, extends irept.
Definition: type.h:28
c_storage_spec.h
ansi_c_convert_typet::gcc_float32x_cnt
unsigned gcc_float32x_cnt
Definition: ansi_c_convert_type.h:35
ansi_c_convert_typet::write
virtual void write(typet &type)
Definition: ansi_c_convert_type.cpp:292
ansi_c_convert_typet::source_location
source_locationt source_location
Definition: ansi_c_convert_type.h:62
ansi_c_convert_typet::vector_size
exprt vector_size
Definition: ansi_c_convert_type.h:45
ansi_c_convert_typet::c_qualifiers
c_qualifierst c_qualifiers
Definition: ansi_c_convert_type.h:57
ansi_c_convert_typet::int_cnt
unsigned int_cnt
Definition: ansi_c_convert_type.h:27
exprt
Base class for all expressions.
Definition: expr.h:55
ansi_c_convert_typet::signed_cnt
unsigned signed_cnt
Definition: ansi_c_convert_type.h:26
ansi_c_convert_typet::ensures_contract
exprt::operandst ensures_contract
Definition: ansi_c_convert_type.h:50
c_qualifiers.h
ansi_c_convert_typet::gcc_float64x_cnt
unsigned gcc_float64x_cnt
Definition: ansi_c_convert_type.h:36
c_qualifierst::clear
virtual void clear() override
Definition: c_qualifiers.h:80
ansi_c_convert_typet
Definition: ansi_c_convert_type.h:23
ansi_c_convert_typet::ptr64_cnt
unsigned ptr64_cnt
Definition: ansi_c_convert_type.h:33
ansi_c_convert_typet::double_cnt
unsigned double_cnt
Definition: ansi_c_convert_type.h:28
expr.h
ansi_c_convert_typet::fixedbv_cnt
unsigned fixedbv_cnt
Definition: ansi_c_convert_type.h:40
ansi_c_convert_typet::int64_cnt
unsigned int64_cnt
Definition: ansi_c_convert_type.h:32
ansi_c_convert_typet::gcc_float64_cnt
unsigned gcc_float64_cnt
Definition: ansi_c_convert_type.h:36
ansi_c_convert_typet::requires
exprt::operandst requires
Definition: ansi_c_convert_type.h:50
ansi_c_convert_typet::c_bool_cnt
unsigned c_bool_cnt
Definition: ansi_c_convert_type.h:28
ansi_c_convert_typet::gcc_float32_cnt
unsigned gcc_float32_cnt
Definition: ansi_c_convert_type.h:35
ansi_c_convert_typet::gcc_int128_cnt
unsigned gcc_int128_cnt
Definition: ansi_c_convert_type.h:38
ansi_c_convert_typet::int32_cnt
unsigned int32_cnt
Definition: ansi_c_convert_type.h:32
ansi_c_convert_typet::bv_cnt
unsigned bv_cnt
Definition: ansi_c_convert_type.h:39
ansi_c_convert_typet::requires_contract
exprt::operandst requires_contract
Definition: ansi_c_convert_type.h:51
ansi_c_convert_typet::char_cnt
unsigned char_cnt
Definition: ansi_c_convert_type.h:26
ansi_c_convert_typet::complex_cnt
unsigned complex_cnt
Definition: ansi_c_convert_type.h:29
ansi_c_convert_typet::proper_bool_cnt
unsigned proper_bool_cnt
Definition: ansi_c_convert_type.h:29
ansi_c_convert_typet::gcc_float128_cnt
unsigned gcc_float128_cnt
Definition: ansi_c_convert_type.h:37
ansi_c_convert_typet::short_cnt
unsigned short_cnt
Definition: ansi_c_convert_type.h:27
ansi_c_convert_typet::constructor
bool constructor
Definition: ansi_c_convert_type.h:47
ansi_c_convert_typet::gcc_float16_cnt
unsigned gcc_float16_cnt
Definition: ansi_c_convert_type.h:34
ansi_c_convert_typet::aligned
bool aligned
Definition: ansi_c_convert_type.h:44
c_qualifierst
Definition: c_qualifiers.h:61
message_handlert
Definition: message.h:27
exprt::operandst
std::vector< exprt > operandst
Definition: expr.h:58
ansi_c_convert_typet::other
std::list< typet > other
Definition: ansi_c_convert_type.h:64
c_storage_spect
Definition: c_storage_spec.h:17
ansi_c_convert_typet::assigns
exprt::operandst assigns
Definition: ansi_c_convert_type.h:50
ansi_c_convert_typet::bv_width
exprt bv_width
Definition: ansi_c_convert_type.h:45
ansi_c_convert_typet::c_storage_spec
c_storage_spect c_storage_spec
Definition: ansi_c_convert_type.h:54
ansi_c_convert_typet::ensures
exprt::operandst ensures
Definition: ansi_c_convert_type.h:50
ansi_c_convert_typet::long_cnt
unsigned long_cnt
Definition: ansi_c_convert_type.h:27
source_locationt
Definition: source_location.h:18
ansi_c_convert_typet::destructor
bool destructor
Definition: ansi_c_convert_type.h:47
ansi_c_convert_typet::floatbv_cnt
unsigned floatbv_cnt
Definition: ansi_c_convert_type.h:40
c_storage_spect::clear
void clear()
Definition: c_storage_spec.h:31
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:651
ansi_c_convert_typet::unsigned_cnt
unsigned unsigned_cnt
Definition: ansi_c_convert_type.h:26
ansi_c_convert_typet::int16_cnt
unsigned int16_cnt
Definition: ansi_c_convert_type.h:32
ansi_c_convert_typet::alignment
exprt alignment
Definition: ansi_c_convert_type.h:45
ansi_c_convert_typet::packed
bool packed
Definition: ansi_c_convert_type.h:44
ansi_c_convert_typet::gcc_float128x_cnt
unsigned gcc_float128x_cnt
Definition: ansi_c_convert_type.h:37
ansi_c_convert_typet::read
virtual void read(const typet &type)
Definition: ansi_c_convert_type.cpp:22
ansi_c_convert_typet::ansi_c_convert_typet
ansi_c_convert_typet(message_handlert &_message_handler)
Definition: ansi_c_convert_type.h:66
ansi_c_convert_typet::ptr32_cnt
unsigned ptr32_cnt
Definition: ansi_c_convert_type.h:33
message.h
ansi_c_convert_typet::float_cnt
unsigned float_cnt
Definition: ansi_c_convert_type.h:28
ansi_c_convert_typet::fraction_width
exprt fraction_width
Definition: ansi_c_convert_type.h:45
ansi_c_convert_typet::read_rec
virtual void read_rec(const typet &type)
Definition: ansi_c_convert_type.cpp:29