cprover
base_type.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module: Base Type Computation
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
11 
12 #ifndef CPROVER_UTIL_BASE_TYPE_H
13 #define CPROVER_UTIL_BASE_TYPE_H
14 
15 #include "union_find.h"
16 #include "irep.h"
17 
18 class exprt;
19 class typet;
20 class namespacet;
21 
22 bool base_type_eq(
23  const typet &type1,
24  const typet &type2,
25  const namespacet &ns);
26 
27 bool base_type_eq(
28  const exprt &expr1,
29  const exprt &expr2,
30  const namespacet &ns);
31 
33 {
34 public:
35  explicit base_type_eqt(const namespacet &_ns):ns(_ns)
36  {
37  }
38 
39  bool base_type_eq(const typet &type1, const typet &type2)
40  {
42  return base_type_eq_rec(type1, type2);
43  }
44 
45  bool base_type_eq(const exprt &expr1, const exprt &expr2)
46  {
48  return base_type_eq_rec(expr1, expr2);
49  }
50 
51  virtual ~base_type_eqt() { }
52 
53 protected:
54  const namespacet &ns;
55 
56  virtual bool base_type_eq_rec(const typet &type1, const typet &type2);
57  virtual bool base_type_eq_rec(const exprt &expr1, const exprt &expr2);
58 
59  // for loop avoidance
61  identifierst identifiers;
62 };
63 
64 #endif // CPROVER_UTIL_BASE_TYPE_H
The type of an expression.
Definition: type.h:20
bool base_type_eq(const typet &type1, const typet &type2, const namespacet &ns)
Definition: base_type.cpp:270
const namespacet & ns
Definition: base_type.h:54
virtual bool base_type_eq_rec(const typet &type1, const typet &type2)
Definition: base_type.cpp:93
TO_BE_DOCUMENTED.
Definition: namespace.h:62
identifierst identifiers
Definition: base_type.h:61
void clear()
Definition: union_find.h:238
base_type_eqt(const namespacet &_ns)
Definition: base_type.h:35
Base class for all expressions.
Definition: expr.h:46
bool base_type_eq(const exprt &expr1, const exprt &expr2)
Definition: base_type.h:45
bool base_type_eq(const typet &type1, const typet &type2)
Definition: base_type.h:39
virtual ~base_type_eqt()
Definition: base_type.h:51
union_find< irep_idt > identifierst
Definition: base_type.h:60