cprover
find_symbols.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: Daniel Kroening, kroening@kroening.com
6 
7 \*******************************************************************/
8 
9 
10 #ifndef CPROVER_UTIL_FIND_SYMBOLS_H
11 #define CPROVER_UTIL_FIND_SYMBOLS_H
12 
13 #include <algorithm>
14 #include <set>
15 #include <unordered_set>
16 
17 #include "deprecate.h"
18 #include "irep.h"
19 
20 class exprt;
21 class symbol_exprt;
22 class typet;
23 
24 typedef std::unordered_set<irep_idt> find_symbols_sett;
25 
28 void find_symbols_or_nexts(const exprt &src, find_symbols_sett &dest);
29 
32 template <typename iteratort>
33 find_symbols_sett find_symbols_or_nexts(iteratort begin, iteratort end)
34 {
35  static_assert(
36  std::is_base_of<exprt, typename iteratort::value_type>::value,
37  "find_symbols takes exprt iterators as arguments");
38  find_symbols_sett result;
39  std::for_each(
40  begin, end, [&](const exprt &e) { find_symbols_or_nexts(e, result); });
41  return result;
42 }
43 
46 void find_symbols(
47  const exprt &src,
48  find_symbols_sett &dest,
49  bool current,
50  bool next);
51 
53 DEPRECATED(SINCE(2019, 06, 17, "Unused"))
54 void find_symbols(
55  const exprt &src,
56  std::set<exprt> &dest);
57 
59 void find_symbols(
60  const exprt &src,
61  std::set<symbol_exprt> &dest);
62 
64 std::set<symbol_exprt> find_symbols(const exprt &src);
65 
67 std::unordered_set<irep_idt> find_symbol_identifiers(const exprt &src);
68 
70 bool has_symbol(
71  const exprt &src,
72  const find_symbols_sett &symbols);
73 
75  const typet &src,
76  find_symbols_sett &dest);
77 
79  const exprt &src,
80  find_symbols_sett &dest);
81 
83  const typet &src,
84  find_symbols_sett &dest);
85 
87  const exprt &src,
88  find_symbols_sett &dest);
89 
91  const typet &src,
92  find_symbols_sett &dest);
93 
95  const exprt &src,
96  find_symbols_sett &dest);
97 
98 #endif // CPROVER_UTIL_FIND_SYMBOLS_H
dstringt
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition: dstring.h:37
find_symbol_identifiers
std::unordered_set< irep_idt > find_symbol_identifiers(const exprt &src)
Find identifiers of the sub expressions with id ID_symbol.
Definition: find_symbols.cpp:91
typet
The type of an expression, extends irept.
Definition: type.h:29
find_symbols_or_nexts
void find_symbols_or_nexts(const exprt &src, find_symbols_sett &dest)
Add to the set dest the sub-expressions of src with id ID_symbol or ID_next_symbol.
Definition: find_symbols.cpp:18
exprt
Base class for all expressions.
Definition: expr.h:53
symbol_exprt
Expression to hold a symbol (variable)
Definition: std_expr.h:82
deprecate.h
SINCE
#define SINCE(year, month, day, msg)
Definition: deprecate.h:26
find_type_symbols
void find_type_symbols(const typet &src, find_symbols_sett &dest)
Definition: find_symbols.cpp:191
DEPRECATED
#define DEPRECATED(msg)
Definition: deprecate.h:23
find_symbols_sett
std::unordered_set< irep_idt > find_symbols_sett
Definition: find_symbols.h:22
find_type_and_expr_symbols
void find_type_and_expr_symbols(const typet &src, find_symbols_sett &dest)
Definition: find_symbols.cpp:215
irept::set
void set(const irep_namet &name, const irep_idt &value)
Definition: irep.h:442
find_symbols
void find_symbols(const exprt &src, find_symbols_sett &dest, bool current, bool next)
Add to the set dest the sub-expressions of src with id ID_symbol if current is true,...
Definition: find_symbols.cpp:23
has_symbol
bool has_symbol(const exprt &src, const find_symbols_sett &symbols)
Definition: find_symbols.cpp:57
find_non_pointer_type_symbols
void find_non_pointer_type_symbols(const typet &src, find_symbols_sett &dest)
Definition: find_symbols.cpp:203
irep.h