ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
value_set_domain.h
Go to the documentation of this file.
1#ifndef CPROVER_POINTER_ANALYSIS_VALUE_SET_DOMAIN_H
2#define CPROVER_POINTER_ANALYSIS_VALUE_SET_DOMAIN_H
3
6#include <irep2/irep2.h>
7#include <util/irep/migrate.h>
8
10{
11public:
13 {
14 }
15
17 {
18 if (value_set)
19 delete value_set;
20 }
21
23 {
24 if (ref.value_set)
25 value_set = new value_sett(*ref.value_set);
26 else
27 value_set = nullptr;
28 }
29
31
32 virtual bool merge(const value_set_domaint &other, bool keepnew)
33 {
34 return value_set->make_union(*other.value_set, keepnew);
35 }
36
37 void output(const namespacet &ns [[maybe_unused]], std::ostream &out)
38 const override
39 {
40 value_set->output(out);
41 }
42
43 void initialize(const namespacet &ns, locationt l) override
44 {
45 value_set = new value_sett(ns);
46 value_set->clear();
47 value_set->location_number = l->location_number;
48 }
49
50 void
51 transform(const namespacet &ns, locationt from_l, locationt to_l) override;
52
54 const namespacet &ns [[maybe_unused]],
55 const expr2tc &expr,
56 value_setst::valuest &dest) override
57 {
58 value_set->get_reference_set(expr, dest);
59 }
60};
61
62#endif
goto_programt::const_targett locationt
Definition static_analysis.h:18
abstract_domain_baset()
Definition static_analysis.h:14
Definition location.h:7
Definition namespace.h:10
~value_set_domaint() override
Definition value_set_domain.h:16
void get_reference_set(const namespacet &ns, const expr2tc &expr, value_setst::valuest &dest) override
Definition value_set_domain.h:53
void output(const namespacet &ns, std::ostream &out) const override
Definition value_set_domain.h:37
value_set_domaint(const value_set_domaint &ref)
Definition value_set_domain.h:22
value_sett * value_set
Definition value_set_domain.h:30
virtual bool merge(const value_set_domaint &other, bool keepnew)
Definition value_set_domain.h:32
void initialize(const namespacet &ns, locationt l) override
Definition value_set_domain.h:43
value_set_domaint()
Definition value_set_domain.h:12
std::list< expr2tc > valuest
Definition value_sets.h:15
Definition value_set.h:64
@ other
Definition converter_compare.cpp:887
Classes and definitions for non-stringy internal representation.
irep_container< expr2t > expr2tc
Definition irep2.h:431
Definition transform.py:1