CBMC
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
write_stack_entry.h
Go to the documentation of this file.
1/*******************************************************************\
2
3 Module: Analyses Variable Sensitivity
4
5 Author: DiffBlue Limited.
6
7\*******************************************************************/
8
11
12#ifndef CPROVER_ANALYSES_VARIABLE_SENSITIVITY_WRITE_STACK_ENTRY_H
13#define CPROVER_ANALYSES_VARIABLE_SENSITIVITY_WRITE_STACK_ENTRY_H
14
15#include "abstract_object.h"
16
18class namespacet;
19
21{
22public:
23 virtual ~write_stack_entryt() = default;
24 virtual std::pair<exprt, bool> get_access_expr() const = 0;
25 virtual bool try_squash_in(
26 std::shared_ptr<const write_stack_entryt> new_entry,
28 const namespacet &ns);
29};
30
32{
33public:
34 explicit simple_entryt(exprt expr);
35 std::pair<exprt, bool> get_access_expr() const override;
36
37private:
39};
40
42{
43public:
45 std::pair<exprt, bool> get_access_expr() const override;
46 bool try_squash_in(
47 std::shared_ptr<const write_stack_entryt> new_entry,
49 const namespacet &ns) override;
50
51private:
53};
54
55#endif // CPROVER_ANALYSES_VARIABLE_SENSITIVITY_WRITE_STACK_ENTRY_H
abstract_objectt is the top of the inheritance heirarchy of objects used to represent individual vari...
sharing_ptrt< class abstract_objectt > abstract_object_pointert
ait supplies three of the four components needed: an abstract interpreter (in this case handling func...
Definition ai.h:562
Base class for all expressions.
Definition expr.h:56
A namespacet is essentially one or two symbol tables bound together, to allow for symbol lookups in t...
Definition namespace.h:91
std::pair< exprt, bool > get_access_expr() const override
Get the expression part needed to read this stack entry.
bool try_squash_in(std::shared_ptr< const write_stack_entryt > new_entry, const abstract_environmentt &enviroment, const namespacet &ns) override
Try to combine a new stack element with the current top of the stack.
abstract_object_pointert offset
std::pair< exprt, bool > get_access_expr() const override
Get the expression part needed to read this stack entry.
virtual ~write_stack_entryt()=default
virtual bool try_squash_in(std::shared_ptr< const write_stack_entryt > new_entry, const abstract_environmentt &enviroment, const namespacet &ns)
Try to combine a new stack element with the current top of the stack.
virtual std::pair< exprt, bool > get_access_expr() const =0