17#define forall_irep(it, irep) \
18 for (irept::subt::const_iterator it = (irep).begin(); it != (irep).end(); \
21#define Forall_irep(it, irep) \
22 for (irept::subt::iterator it = (irep).begin(); it != (irep).end(); it++)
24#define forall_named_irep(it, irep) \
25 for (irept::named_subt::const_iterator it = (irep).begin(); \
29#define Forall_named_irep(it, irep) \
30 for (irept::named_subt::iterator it = (irep).begin(); it != (irep).end(); \
38 typedef std::vector<irept>
subt;
66 dt *source_data =
nullptr;
70 source_data = irep.
data;
82 dt *new_data =
nullptr;
963 inline void line(
unsigned int val)
1220 friend std::ostream &
operator<<(std::ostream &out,
const irept &irep);
1267 size_t hash()
const;
1272 std::string
pretty(
unsigned indent = 0)
const;
1277 return !
name.empty() &&
name[0] ==
'#';
1393 inline const dt &
read()
const
const std::string & as_string() const
Definition irep_idt.h:138
void swap(irep_idt &b)
Definition irep_idt.h:150
dt()
Definition irep.h:1357
irep_idt data
Definition irep.h:1334
std::mutex dt_mutex
Definition irep.h:1331
void swap(dt &d)
Definition irep.h:1348
subt sub
Definition irep.h:1338
void clear()
Definition irep.h:1340
dt(const irept::dt &other)
Definition irep.h:1360
unsigned ref_count
Definition irep.h:1330
named_subt comments
Definition irep.h:1337
named_subt named_sub
Definition irep.h:1336
static const irep_idt a_restricted
Definition irep.h:1305
bool restricted() const
Definition irep.h:623
static const irep_idt a_object_type
Definition irep.h:1308
bool get_bool(const irep_idt &name) const
Definition irep.cpp:142
void need_vptr_init(bool val)
Definition irep.h:1008
void bv(const irept &val)
Definition irep.h:1073
bool cmt_unsigned() const
Definition irep.h:638
void cmt_size(const irept &val)
Definition irep.h:1018
const irept & declaration_type() const
Definition irep.h:412
static const irep_idt a_event
Definition irep.h:1290
const irept & symvalue() const
Definition irep.h:427
bool is_member() const
Definition irep.h:1169
void remove_ref(dt *old_data)
const irep_idt & cmt_width() const
Definition irep.h:508
static const irep_idt a_mode
Definition irep.h:1291
const irep_idt & statement() const
Definition irep.h:177
bool implicit() const
Definition irep.h:558
bool is_pointer() const
Definition irep.h:1181
static const irep_idt id_address_of
Definition irep.h:1318
const irept & function_irep() const
Definition irep.h:217
bool is_array() const
Definition irep.h:1125
const irep_idt & id_class() const
Definition irep.h:468
void labels(const irept &val)
Definition irep.h:1083
dt & write()
Definition irep.h:1383
const irep_idt & cmt_base_name() const
Definition irep.h:463
static const irep_idt a_base_ctor_derived
Definition irep.h:1311
static const irep_idt a_inlined
Definition irep.h:1299
const irept & size_irep() const
Definition irep.h:307
bool is_vector() const
Definition irep.h:1209
bool is_floatbv() const
Definition irep.h:1157
void destination(const irep_idt val)
Definition irep.h:793
void is_expression(bool val)
Definition irep.h:923
void move_to_named_sub(const irep_idt &name, irept &irep)
Definition irep.cpp:109
static const irep_idt a_statement
Definition irep.h:1287
static const irep_idt a_integer_bits
Definition irep.h:1292
static const irep_idt s_bv
Definition irep.h:1283
bool is_notequal() const
Definition irep.h:1177
const irep_idt & literal() const
Definition irep.h:257
static const irep_idt a_cformat
Definition irep.h:1294
const irep_idt & mode() const
Definition irep.h:267
void component_name(const irep_idt name)
Definition irep.h:683
static const irep_idt id_not
Definition irep.h:1322
static const irep_idt a_cmt_type
Definition irep.h:1309
static const irep_idt a_line
Definition irep.h:1288
void is_macro(bool val)
Definition irep.h:933
void type_id(unsigned int val)
Definition irep.h:1043
void line(unsigned int val)
Definition irep.h:963
bool is_type() const
Definition irep.h:608
const irep_idt & type_id() const
Definition irep.h:327
bool user_provided() const
Definition irep.h:643
void decl_ident(const irept &val)
Definition irep.h:663
void incomplete(bool val)
Definition irep.h:903
static const irep_idt s_return_type
Definition irep.h:1282
const subt & get_sub() const
Definition irep.h:1246
void member_name(const irep_idt val)
Definition irep.h:748
const irept & variables() const
Definition irep.h:377
void cmt_width(unsigned int width)
Definition irep.h:703
irept()
Definition irep.h:58
const irept & find(const irep_idt &name) const
Definition irep.cpp:167
static const irep_idt a_hide
Definition irep.h:1298
friend bool operator==(const irept &i1, const irept &i2)
Definition irep.cpp:186
static const irep_idt a_name
Definition irep.h:1287
const irep_idt & pretty_name() const
Definition irep.h:277
static const irep_idt a_cmt_active
Definition irep.h:1306
static const irep_idt a_width
Definition irep.h:1287
friend bool operator!=(const irept &i1, const irept &i2)
Definition irep.h:1215
void dfault(bool val)
Definition irep.h:833
bool is_function_call() const
Definition irep.h:1137
const irep_idt & identifier() const
Definition irep.h:167
void file_local(bool val)
Definition irep.h:873
void dump() const
Definition irep.cpp:13
named_subt & get_comments()
Definition irep.h:1258
void comment(const irep_idt cmt)
Definition irep.h:678
bool is_incomplete_array() const
Definition irep.h:1161
static const irep_idt a_destination
Definition irep.h:1289
void cmt_type(const irept &val)
Definition irep.h:1038
static const irep_idt id_index
Definition irep.h:1321
const irep_idt & function() const
Definition irep.h:212
static const irep_idt a_flavor
Definition irep.h:1305
void size(const irept &val)
Definition irep.h:778
static const irep_idt id_floatbv
Definition irep.h:1321
void cformat(const irep_idt val)
Definition irep.h:743
const irep_idt & get(const irep_idt &name) const
Definition irep.cpp:127
void end_location(const irept &val)
Definition irep.h:843
bool ellipsis() const
Definition irep.h:533
const irep_idt & file() const
Definition irep.h:202
static const irep_idt a_file_local
Definition irep.h:1297
static const irep_idt s_targets
Definition irep.h:1283
static const irep_idt a_column
Definition irep.h:1288
static const irep_idt id_vector
Definition irep.h:1324
static const irep_idt id_unsignedbv
Definition irep.h:1324
static const irep_idt a_is_thread_local
Definition irep.h:1301
static const irep_idt a_member_name
Definition irep.h:1295
static const irep_idt a_zero_initializer
Definition irep.h:1305
std::string to_string() const
Definition irep.cpp:258
static const irep_idt a_static_lifetime
Definition irep.h:1303
void flavor(const irep_idt val)
Definition irep.h:763
irept(const irep_idt &_id)
Definition irep.cpp:31
void cpp_type(const irep_idt val)
Definition irep.h:753
static const irep_idt a_pretty_name
Definition irep.h:1292
bool explict() const
Definition irep.h:538
size_t full_hash() const
Definition irep.cpp:399
static const irep_idt a_user_provided
Definition irep.h:1304
const irept & decl_ident() const
Definition irep.h:437
void is_thread_local(bool val)
Definition irep.h:938
void cmt_unsigned(const irep_idt val)
Definition irep.h:718
static const irep_idt s_arguments
Definition irep.h:1281
void inlined(bool val)
Definition irep.h:908
std::string pretty(unsigned indent=0) const
Definition irep.cpp:427
const irep_idt & base_name() const
Definition irep.h:237
static const irep_idt a_is_extern
Definition irep.h:1301
bool base_ctor_derived() const
Definition irep.h:287
void implicit(bool val)
Definition irep.h:898
bool is_thread_local() const
Definition irep.h:603
static const irep_idt a_identifier
Definition irep.h:1287
void pretty_name(const irep_idt &val)
Definition irep.h:993
static const irep_idt id_notequal
Definition irep.h:1322
const irep_idt & column() const
Definition irep.h:222
void name(const irep_idt val)
Definition irep.h:738
void remove(const irep_idt &name)
Definition irep.cpp:152
static const irep_idt a_guard
Definition irep.h:1307
bool hide() const
Definition irep.h:553
static const irep_idt s_decl_value
Definition irep.h:1284
static const irep_idt id_pointer
Definition irep.h:1322
static const irep_idt id_empty
Definition irep.h:1320
void is_parameter(bool val)
Definition irep.h:918
const irep_idt & event() const
Definition irep.h:247
static const irep_idt a_invalid_object
Definition irep.h:1299
static const irep_idt a_dynamic
Definition irep.h:1293
bool is_constant() const
Definition irep.h:1141
friend bool operator<(const irept &i1, const irept &i2)
Definition irep.cpp:378
bool initialization() const
Definition irep.h:568
bool is_symbol() const
Definition irep.h:1193
void width(const irep_idt width)
Definition irep.h:708
const irep_idt & property() const
Definition irep.h:297
const irep_idt & member_name() const
Owning class tag of a member function type, e.g.
Definition irep.h:489
void ellipsis(bool val)
Definition irep.h:848
static const irep_idt a_literal
Definition irep.h:1291
bool dfault() const
Definition irep.h:528
void set(const irep_idt &name, const irep_idt &value)
Definition irep.h:141
static const irep_idt s_declaration_type
Definition irep.h:1284
irept(const irept &irep)
Definition irep.h:62
const irept & end_location() const
Definition irep.h:422
static const irep_idt a_cmt_base_name
Definition irep.h:1293
void cmt_active(const irep_idt val)
Definition irep.h:808
static const irep_idt s_offsetof_type
Definition irep.h:1286
bool is_code() const
Definition irep.h:1133
static const irep_idt a_component
Definition irep.h:1306
friend bool ordering(const irept &i1, const irept &i2)
Definition irep.cpp:269
void width(unsigned int width)
Definition irep.h:713
static const irep_idt a_cmt
Definition irep.h:1308
int compare(const irept &i) const
Definition irep.cpp:322
static const irep_idt id_bool
Definition irep.h:1318
static const irep_idt a_property
Definition irep.h:1292
static const irep_idt s_body
Definition irep.h:1282
static const irep_idt id_or
Definition irep.h:1318
const irep_idt & width() const
Definition irep.h:172
static const irep_idt a_code
Definition irep.h:1306
static const irep_idt id_signedbv
Definition irep.h:1322
void clear()
Definition irep.cpp:99
bool is_and() const
Definition irep.h:1117
void is_extern(bool val)
Definition irep.h:928
void failed_symbol(const irep_idt val)
Definition irep.h:863
const irept & elements() const
Definition irep.h:447
bool lvalue() const
Definition irep.h:613
static const irep_idt id_dereference
Definition irep.h:1320
static const irep_idt a_hex_or_oct
Definition irep.h:1298
bool is_decl_ident_set() const
Definition irep.h:442
bool is_dereference() const
Definition irep.h:1145
bool is_or() const
Definition irep.h:1121
void arguments(const irept &val)
Definition irep.h:658
bool file_local() const
Definition irep.h:543
bool is_dynamic_set() const
Definition irep.h:452
bool is_not_nil() const
Definition irep.h:50
void cmt_width(const irep_idt width)
Definition irep.h:698
const irept & guard() const
Definition irep.h:402
std::map< irep_idt, irept > named_subt
Definition irep.h:41
const named_subt & get_named_sub() const
Definition irep.h:1254
const irep_idt & module() const
Definition irep.h:272
void cmt_unsigned(bool val)
Definition irep.h:723
const irep_idt & size() const
Definition irep.h:302
void component(const irep_idt val)
Definition irep.h:823
static const irep_idt a_derived_this_arg
Definition irep.h:1311
static const irep_idt a_theorem
Definition irep.h:1303
static const irep_idt a_is_type
Definition irep.h:1302
static const irep_idt a_comp_name
Definition irep.h:1287
static const irep_idt id_fixedbv
Definition irep.h:1320
bool hex_or_oct() const
Definition irep.h:548
const irep_idt & access() const
Definition irep.h:232
void declaration_type(const irept &val)
Definition irep.h:1068
const irep_idt & tag() const
Definition irep.h:192
const std::string & id_string() const
Definition irep.h:114
static const irep_idt a_loopid
Definition irep.h:1291
bool is_struct() const
Definition irep.h:1189
bool is_parameter() const
Definition irep.h:583
static const irep_idt a_cmt_width
Definition irep.h:1294
static const irep_idt id_code
Definition irep.h:1319
static const irep_idt a_initialization
Definition irep.h:1299
static const irep_idt a_failed_symbol
Definition irep.h:1293
bool is_unsignedbv() const
Definition irep.h:1205
static const irep_idt s_elements
Definition irep.h:1286
static const irep_idt id_incomplete_array
Definition irep.h:1321
const irept & initializer() const
Definition irep.h:387
void cmt_constant(bool val)
Definition irep.h:803
static const irep_idt s_member
Definition irep.h:1282
bool cmt_volatile() const
Definition irep.h:648
static const irep_idt s_decl_ident
Definition irep.h:1285
const irept & return_type() const
Definition irep.h:347
const irept & code() const
Definition irep.h:397
const irep_idt & cmt_identifier() const
Definition irep.h:473
std::vector< irept > subt
Definition irep.h:38
static const irep_idt s_symvalue
Definition irep.h:1285
static const irep_idt a_lvalue
Definition irep.h:1303
void initializer(const irept &val)
Definition irep.h:1078
void restricted(bool val)
Definition irep.h:1013
static const irep_idt a_function
Definition irep.h:1288
static const irep_idt a_lhs
Definition irep.h:1307
const irep_idt & to() const
Definition irep.h:317
void lhs(bool val)
Definition irep.h:953
static const irep_idt id_constant
Definition irep.h:1320
void targets(const irept &val)
Definition irep.h:1108
void dynamic(bool val)
Definition irep.h:838
const irept & components() const
Definition irep.h:337
void component(unsigned int val)
Definition irep.h:828
void file(const irep_idt val)
Definition irep.h:868
const typet & type() const
Definition irep.h:157
size_t hash() const
Definition irep.cpp:383
bool axiom() const
Definition irep.h:518
void invalid_object(bool val)
Definition irep.h:913
void cmt_volatile(bool val)
Definition irep.h:1048
const irept & object_type() const
Definition irep.h:382
void static_lifetime(bool val)
Definition irep.h:1023
void base_name(const irep_idt val)
Definition irep.h:813
static const irep_idt a_tag
Definition irep.h:1288
void base_ctor_derived(bool val)
Definition irep.h:1003
const irept & member_irep() const
Definition irep.h:357
const irep_idt & cpp_type() const
Source-level spelling of a type, e.g.
Definition irep.h:503
subt & get_sub()
Definition irep.h:1242
irept & operator=(const irept &irep)
Definition irep.h:77
bool reference() const
Definition irep.h:618
const irep_idt & line() const
Definition irep.h:207
bool invalid_object() const
Definition irep.h:578
typet & type()
Definition irep.h:153
static const irep_idt a_module
Definition irep.h:1291
void line(const irep_idt &val)
Definition irep.h:958
static const irep_idt s_variables
Definition irep.h:1283
void user_provided(bool val)
Definition irep.h:788
void components(const irept &val)
Definition irep.h:1058
void location(const irept &val)
Definition irep.h:968
bool is_typecast() const
Definition irep.h:1197
bool is_fixedbv() const
Definition irep.h:1153
static const irep_idt a_axiom
Definition irep.h:1294
static const irep_idt a_label
Definition irep.h:1307
bool theorem() const
Definition irep.h:633
const irep_idt & component_name() const
Definition irep.h:187
bool is_identifier_set() const
Definition irep.h:162
bool inlined() const
Definition irep.h:573
const irep_idt & failed_symbol() const
Definition irep.h:322
const irep_idt & comment() const
Definition irep.h:242
void make_nil()
Definition irep.h:1236
friend class irep_serializationt
Definition irep.h:128
static const irep_idt a_access
Definition irep.h:1289
static const irep_idt id_and
Definition irep.h:1318
bool is_union() const
Definition irep.h:1201
bool is_bool() const
Definition irep.h:1129
void user_provided(const irep_idt val)
Definition irep.h:783
static const irep_idt a_location
Definition irep.h:1307
bool is_extern() const
Definition irep.h:593
void member_irep(const irept &val)
Definition irep.h:1093
static const irep_idt a_to
Definition irep.h:1292
const irep_idt & from() const
Definition irep.h:197
void function(const irep_idt val)
Definition irep.h:768
static const irep_idt a_size
Definition irep.h:1292
static const irep_idt s_labels
Definition irep.h:1282
static const irep_idt a_incomplete
Definition irep.h:1298
const irep_idt & loopid() const
Definition irep.h:262
const irep_idt & integer_bits() const
Definition irep.h:312
const irept & labels_irep() const
Definition irep.h:362
const irep_idt & derived_this_arg() const
Definition irep.h:282
const irept & offsetof_type() const
Definition irep.h:513
static const irep_idt a_cmt_constant
Definition irep.h:1296
void property(const irep_idt prop)
Definition irep.h:728
const irept & location() const
Definition irep.h:407
void statement(const irep_idt statm)
Definition irep.h:673
static const irep_idt a_is_expression
Definition irep.h:1300
void identifier(const irep_idt ident)
Definition irep.h:668
static const irep_idt a_implicit
Definition irep.h:1298
static const irep_idt a_cmt_volatile
Definition irep.h:1304
const irep_idt & destination() const
Definition irep.h:227
void event(const irep_idt &val)
Definition irep.h:858
const irept & decl_value() const
Definition irep.h:417
friend std::ostream & operator<<(std::ostream &out, const irept &irep)
Definition irep.cpp:263
void cmt_constant(const irep_idt val)
Definition irep.h:798
static bool is_comment(const irep_idt &name)
Definition irep.h:1275
static const irep_idt a_explicit
Definition irep.h:1297
const irept & arguments() const
Definition irep.h:332
void size(const irep_idt val)
Definition irep.h:773
static const irep_idt a_is_parameter
Definition irep.h:1300
bool is_signedbv() const
Definition irep.h:1185
bool is_expression() const
Definition irep.h:588
void offsetof_type(const irept &val)
Definition irep.h:1063
static const irep_idt a_end_location
Definition irep.h:1307
static const irep_idt a_comment
Definition irep.h:1289
void id_class(unsigned int val)
Definition irep.h:888
static const irep_idt id_symbol
Definition irep.h:1323
bool is_index() const
Definition irep.h:1165
void return_type(const irept &val)
Definition irep.h:1098
static const irep_idt id_typecast
Definition irep.h:1323
const irept & event_irep() const
Definition irep.h:252
void move_to_sub(irept &irep)
Definition irep.cpp:118
void tag(const irep_idt &val)
Definition irep.h:1028
void remove_member_name()
Definition irep.h:758
static const irep_idt a_cmt_size
Definition irep.h:1308
static const irep_idt a_reference
Definition irep.h:1303
static const irep_idt a_id_class
Definition irep.h:1293
static const irep_idt id_array
Definition irep.h:1318
void swap(irept &irep)
Definition irep.h:1224
const irept & targets() const
Definition irep.h:372
const irep_idt & id() const
Definition irep.h:109
void hex_or_oct(const irep_idt which)
Definition irep.h:688
static const irep_idt a_type_id
Definition irep.h:1308
bool is_empty() const
Definition irep.h:1149
static const irep_idt a_file
Definition irep.h:1288
static const irep_idt s_components
Definition irep.h:1281
const irept & cmt_size() const
Definition irep.h:392
static const irep_idt a_is_macro
Definition irep.h:1301
void module(const irep_idt &val)
Definition irep.h:983
static const irep_idt a_cmt_unsigned
Definition irep.h:1304
bool incomplete() const
Definition irep.h:563
void theorem(bool val)
Definition irep.h:1033
const irept & cmt_type() const
Definition irep.h:342
void derived_this_arg(const irep_idt &val)
Definition irep.h:998
static const irep_idt a_ellipsis
Definition irep.h:1297
void is_type(bool val)
Definition irep.h:943
dt * data
Definition irep.h:1377
static const irep_idt id_member
Definition irep.h:1321
bool dynamic() const
Definition irep.h:458
void axiom(bool val)
Definition irep.h:853
void variables(const irept &val)
Definition irep.h:1103
static const irep_idt a_default
Definition irep.h:1296
~irept()
Definition irep.h:98
bool is_macro() const
Definition irep.h:598
void id(const irep_idt &_data)
Definition irep.h:119
void lvalue(bool val)
Definition irep.h:973
static const irep_idt id_union
Definition irep.h:1323
void object_type(const irept &val)
Definition irep.h:988
void guard(const irept &val)
Definition irep.h:878
void hide(bool val)
Definition irep.h:883
const irept & cmt_location() const
Definition irep.h:432
bool is_address_of() const
Definition irep.h:1113
void code(const irept &val)
Definition irep.h:818
const named_subt & get_comments() const
Definition irep.h:1262
void zero_initializer(bool val)
Definition irep.h:1053
static const irep_idt a_cpp_type
Definition irep.h:1295
static const irep_idt id_struct
Definition irep.h:1323
bool zero_initializer() const
Definition irep.h:653
bool cmt_constant() const
Definition irep.h:523
const irept & bv() const
Definition irep.h:367
irept & add(const irep_idt &name)
Definition irep.cpp:179
const irept & body() const
Definition irep.h:352
void label(const irep_idt &val)
Definition irep.h:948
void hex_or_oct(bool which)
Definition irep.h:693
bool is_not() const
Definition irep.h:1173
static const irep_idt a_base_name
Definition irep.h:1289
void cmt_identifier(const irep_idt val)
Definition irep.h:893
bool need_vptr_init() const
Definition irep.h:292
const irep_idt & cformat() const
Definition irep.h:478
friend bool full_eq(const irept &a, const irept &b)
Definition irep.cpp:207
static const irep_idt s_initializer
Definition irep.h:1284
void symvalue(const irept &val)
Definition irep.h:1088
void cmt_base_name(const irep_idt name)
Definition irep.h:733
static const irep_idt a_need_vptr_init
Definition irep.h:1316
bool is_nil() const
Definition irep.h:46
void mode(const irep_idt &val)
Definition irep.h:978
static const irep_idt s_cmt_location
Definition irep.h:1285
static const irep_idt a_cmt_identifier
Definition irep.h:1294
const irep_idt & name() const
Definition irep.h:182
static const irep_idt s_type
Definition irep.h:1281
static const irep_idt a_from
Definition irep.h:1288
named_subt & get_named_sub()
Definition irep.h:1250
bool static_lifetime() const
Definition irep.h:628
const std::string & get_string(const irep_idt &name) const
Definition irep.h:133
@ other
Definition converter_compare.cpp:887
bool full_eq(const irept &i1, const irept &i2)
Definition irep.cpp:207
const irept & get_nil_irep()
Definition irep.cpp:18
const std::string & name2string(const irep_idt &n)
Definition irep.h:1410
const std::string & id2string(const irep_idt &d)
Definition irep.h:1405
std::hash< irep_idt > irep_id_hash
Definition irep.h:15
bool operator()(const irept &i1, const irept &i2) const
Definition irep.h:1437
size_t operator()(const irept &irep) const
Definition irep.h:1429
bool operator()(const irept &i1, const irept &i2) const
Definition irep.h:1421
size_t operator()(const irept &irep) const
Definition irep.h:1417