ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
base_type.h
Go to the documentation of this file.
1#ifndef CPROVER_BASE_TYPE_H
2#define CPROVER_BASE_TYPE_H
3
4#include <irep2/irep2.h>
5#include <util/irep/migrate.h>
7#include <util/irep/type.h>
9
10void base_type(type2tc &type, const namespacet &ns);
11void base_type(expr2tc &expr, const namespacet &ns);
12
13void base_type(typet &type, const namespacet &ns);
14
15bool base_type_eq(
16 const type2tc &type1,
17 const type2tc &type2,
18 const namespacet &ns);
19
20bool base_type_eq(
21 const expr2tc &expr1,
22 const expr2tc &expr2,
23 const namespacet &ns);
24
25bool base_type_eq(const typet &type1, const typet &type2, const namespacet &ns);
26
28 const type2tc &subclass,
29 const type2tc &superclass,
30 const namespacet &ns);
31
33 const typet &subclass,
34 const typet &superclass,
35 const namespacet &ns);
36
38{
39public:
40 base_type_eqt(const namespacet &_ns) : ns(_ns)
41 {
42 }
43
44 bool base_type_eq(const type2tc &type1, const type2tc &type2)
45 {
46 identifiers.clear();
47 return base_type_eq_rec(type1, type2);
48 }
49
50 bool base_type_eq(const typet &type1, const typet &type2)
51 {
52 identifiers.clear();
53 return base_type_eq_rec(type1, type2);
54 }
55
56 bool base_type_eq(const expr2tc &expr1, const expr2tc &expr2)
57 {
58 identifiers.clear();
59 return base_type_eq_rec(expr1, expr2);
60 }
61
62 virtual ~base_type_eqt() = default;
63
64protected:
65 const namespacet &ns;
66
67 virtual bool base_type_eq_rec(const type2tc &type1, const type2tc &type2);
68 virtual bool base_type_eq_rec(const expr2tc &expr1, const expr2tc &expr2);
69
70 virtual bool base_type_eq_rec(const typet &type1, const typet &type2);
71
72 // for loop avoidance
75};
76
77#endif
void base_type(type2tc &type, const namespacet &ns)
Definition base_type.cpp:6
bool is_subclass_of(const type2tc &subclass, const type2tc &superclass, const namespacet &ns)
Definition base_type.cpp:440
bool base_type_eq(const type2tc &type1, const type2tc &type2, const namespacet &ns)
Definition base_type.cpp:362
base_type_eqt(const namespacet &_ns)
Definition base_type.h:40
virtual ~base_type_eqt()=default
bool base_type_eq(const expr2tc &expr1, const expr2tc &expr2)
Definition base_type.h:56
bool base_type_eq(const type2tc &type1, const type2tc &type2)
Definition base_type.h:44
bool base_type_eq(const typet &type1, const typet &type2)
Definition base_type.h:50
identifierst identifiers
Definition base_type.h:74
union_find< irep_idt > identifierst
Definition base_type.h:73
const namespacet & ns
Definition base_type.h:65
virtual bool base_type_eq_rec(const type2tc &type1, const type2tc &type2)
Definition base_type.cpp:98
Definition namespace.h:10
Definition type.h:9
Definition union_find.h:98
Classes and definitions for non-stringy internal representation.
irep_container< type2t > type2tc
Definition irep2.h:430
irep_container< expr2t > expr2tc
Definition irep2.h:431