CBMC
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
expr_initializer.h
Go to the documentation of this file.
1/*******************************************************************\
2
3Module: Expression Initialization
4
5Author: Daniel Kroening, kroening@kroening.com
6
7\*******************************************************************/
8
11
12#ifndef CPROVER_UTIL_EXPR_INITIALIZER_H
13#define CPROVER_UTIL_EXPR_INITIALIZER_H
14
15#include <optional>
16
17class exprt;
18class namespacet;
20class typet;
21
22std::optional<exprt>
23zero_initializer(const typet &, const source_locationt &, const namespacet &);
24
25std::optional<exprt> nondet_initializer(
26 const typet &type,
28 const namespacet &ns);
29
30std::optional<exprt> expr_initializer(
31 const typet &type,
33 const namespacet &ns,
34 const exprt &init_byte_expr);
35
37 const exprt &init_byte_expr,
38 const typet &output_type,
39 const namespacet &ns);
40
41#endif // CPROVER_UTIL_EXPR_INITIALIZER_H
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
The type of an expression, extends irept.
Definition type.h:29
const source_locationt & source_location() const
Definition type.h:72
exprt duplicate_per_byte(const exprt &init_byte_expr, const typet &output_type, const namespacet &ns)
Builds an expression of the given output type with each of its bytes initialized to the given initial...
std::optional< exprt > expr_initializer(const typet &type, const source_locationt &source_location, const namespacet &ns, const exprt &init_byte_expr)
Create a value for type type, with all subtype bytes initialized to the given value.
std::optional< exprt > zero_initializer(const typet &, const source_locationt &, const namespacet &)
Create the equivalent of zero for type type.
std::optional< exprt > nondet_initializer(const typet &type, const source_locationt &source_location, const namespacet &ns)
Create a non-deterministic value for type type, with all subtypes independently expanded as non-deter...