CBMC
variable_sensitivity_object_factory.h
Go to the documentation of this file.
1
/*******************************************************************\
2
3
Module: analyses variable-sensitivity
4
5
Author: Owen Jones owen.jones@diffblue.com
6
7
\*******************************************************************/
8
14
15
#ifndef CPROVER_ANALYSES_VARIABLE_SENSITIVITY_VARIABLE_SENSITIVITY_OBJECT_FACTORY_H
16
#define CPROVER_ANALYSES_VARIABLE_SENSITIVITY_VARIABLE_SENSITIVITY_OBJECT_FACTORY_H
17
18
#include <
analyses/variable-sensitivity/constant_abstract_value.h
>
19
#include <
analyses/variable-sensitivity/constant_pointer_abstract_object.h
>
20
#include <
analyses/variable-sensitivity/data_dependency_context.h
>
21
#include <
analyses/variable-sensitivity/full_struct_abstract_object.h
>
22
#include <
analyses/variable-sensitivity/interval_abstract_value.h
>
23
#include <
analyses/variable-sensitivity/two_value_array_abstract_object.h
>
24
#include <
analyses/variable-sensitivity/two_value_pointer_abstract_object.h
>
25
#include <
analyses/variable-sensitivity/two_value_struct_abstract_object.h
>
26
#include <
analyses/variable-sensitivity/two_value_union_abstract_object.h
>
27
#include <
analyses/variable-sensitivity/value_set_abstract_object.h
>
28
#include <
analyses/variable-sensitivity/variable_sensitivity_configuration.h
>
29
#include <
analyses/variable-sensitivity/write_location_context.h
>
30
31
#include "
abstract_object.h
"
32
33
class
variable_sensitivity_object_factoryt
;
34
using
variable_sensitivity_object_factory_ptrt
=
35
std::shared_ptr<variable_sensitivity_object_factoryt>;
36
37
class
variable_sensitivity_object_factoryt
38
{
39
public
:
40
static
variable_sensitivity_object_factory_ptrt
41
configured_with
(
const
vsd_configt
&options)
42
{
43
return
std::make_shared<variable_sensitivity_object_factoryt>(options);
44
}
45
46
explicit
variable_sensitivity_object_factoryt
(
const
vsd_configt
&options)
47
:
configuration
{options},
heap_allocations
(0)
48
{
49
}
50
65
abstract_object_pointert
get_abstract_object
(
66
const
typet
&type,
67
bool
top,
68
bool
bottom,
69
const
exprt
&e,
70
const
abstract_environmentt
&environment,
71
const
namespacet
&ns)
const
;
72
73
abstract_object_pointert
74
wrap_with_context
(
const
abstract_object_pointert
&abstract_object)
const
;
75
76
variable_sensitivity_object_factoryt
() =
delete
;
77
variable_sensitivity_object_factoryt
(
78
const
variable_sensitivity_object_factoryt
&) =
delete
;
79
80
const
vsd_configt
&
config
()
const
81
{
82
return
configuration
;
83
}
84
85
private
:
92
ABSTRACT_OBJECT_TYPET
get_abstract_object_type
(
const
typet
&type)
const
;
93
94
vsd_configt
configuration
;
95
mutable
size_t
heap_allocations
;
96
};
97
98
#endif // CPROVER_ANALYSES_VARIABLE_SENSITIVITY_VARIABLE_SENSITIVITY_OBJECT_FACTORY_H // NOLINT(*)
variable_sensitivity_object_factoryt::heap_allocations
size_t heap_allocations
Definition:
variable_sensitivity_object_factory.h:95
variable_sensitivity_object_factoryt::config
const vsd_configt & config() const
Definition:
variable_sensitivity_object_factory.h:80
abstract_object_pointert
sharing_ptrt< class abstract_objectt > abstract_object_pointert
Definition:
abstract_object.h:69
typet
The type of an expression, extends irept.
Definition:
type.h:28
two_value_struct_abstract_object.h
variable_sensitivity_object_factoryt::wrap_with_context
abstract_object_pointert wrap_with_context(const abstract_object_pointert &abstract_object) const
Definition:
variable_sensitivity_object_factory.cpp:204
abstract_environmentt
Definition:
abstract_environment.h:40
exprt
Base class for all expressions.
Definition:
expr.h:55
write_location_context.h
variable_sensitivity_object_factoryt::get_abstract_object_type
ABSTRACT_OBJECT_TYPET get_abstract_object_type(const typet &type) const
Decide which abstract object type to use for the variable in question.
Definition:
variable_sensitivity_object_factory.cpp:88
variable_sensitivity_object_factoryt::variable_sensitivity_object_factoryt
variable_sensitivity_object_factoryt(const vsd_configt &options)
Definition:
variable_sensitivity_object_factory.h:46
vsd_configt
Definition:
variable_sensitivity_configuration.h:44
abstract_object.h
namespacet
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition:
namespace.h:90
full_struct_abstract_object.h
two_value_pointer_abstract_object.h
variable_sensitivity_object_factoryt::variable_sensitivity_object_factoryt
variable_sensitivity_object_factoryt()=delete
value_set_abstract_object.h
variable_sensitivity_object_factory_ptrt
std::shared_ptr< variable_sensitivity_object_factoryt > variable_sensitivity_object_factory_ptrt
Definition:
abstract_environment.h:30
constant_pointer_abstract_object.h
data_dependency_context.h
variable_sensitivity_object_factoryt
Definition:
variable_sensitivity_object_factory.h:37
two_value_union_abstract_object.h
variable_sensitivity_object_factoryt::configuration
vsd_configt configuration
Definition:
variable_sensitivity_object_factory.h:94
interval_abstract_value.h
variable_sensitivity_object_factoryt::get_abstract_object
abstract_object_pointert get_abstract_object(const typet &type, bool top, bool bottom, const exprt &e, const abstract_environmentt &environment, const namespacet &ns) const
Get the appropriate abstract object for the variable under consideration.
Definition:
variable_sensitivity_object_factory.cpp:130
two_value_array_abstract_object.h
ABSTRACT_OBJECT_TYPET
ABSTRACT_OBJECT_TYPET
Definition:
variable_sensitivity_configuration.h:20
variable_sensitivity_configuration.h
constant_abstract_value.h
variable_sensitivity_object_factoryt::configured_with
static variable_sensitivity_object_factory_ptrt configured_with(const vsd_configt &options)
Definition:
variable_sensitivity_object_factory.h:41
src
analyses
variable-sensitivity
variable_sensitivity_object_factory.h
Generated by
1.8.17