cprover
string_constant.h
Go to the documentation of this file.
1/*******************************************************************\
2
3Module:
4
5Author: Daniel Kroening, kroening@kroening.com
6
7\*******************************************************************/
8
9#ifndef CPROVER_UTIL_STRING_CONSTANT_H
10#define CPROVER_UTIL_STRING_CONSTANT_H
11
12#include "std_expr.h"
13
15{
16public:
17 explicit string_constantt(const irep_idt &value);
18
19 void set_value(const irep_idt &value);
20
21 const irep_idt &get_value() const
22 {
23 return get(ID_value);
24 }
25
28};
29
30template <>
31inline bool can_cast_expr<string_constantt>(const exprt &base)
32{
33 return base.id() == ID_string_constant;
34}
35
36inline void validate_expr(const string_constantt &expr)
37{
38 validate_operands(expr, 0, "String constants must not have operands");
39}
40
41inline const string_constantt &to_string_constant(const exprt &expr)
42{
43 PRECONDITION(expr.id() == ID_string_constant);
44 return static_cast<const string_constantt &>(expr);
45}
46
47inline const string_constantt &to_string_constant(const typet &type)
48{
49 return to_string_constant((const exprt &)type);
50}
51
53{
54 PRECONDITION(expr.id() == ID_string_constant);
55 return static_cast<string_constantt &>(expr);
56}
57
59{
60 return to_string_constant((exprt &)type);
61}
62
63#endif // CPROVER_ANSI_C_STRING_CONSTANT_H
Array constructor from list of elements.
Definition: std_expr.h:1476
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition: dstring.h:37
Base class for all expressions.
Definition: expr.h:54
const irep_idt & get(const irep_idt &name) const
Definition: irep.cpp:45
const irep_idt & id() const
Definition: irep.h:396
An expression without operands.
Definition: std_expr.h:22
const irep_idt & get_value() const
string_constantt(const irep_idt &value)
bool from_array_expr(const array_exprt &)
array_exprt to_array_expr() const
convert string into array constant
void set_value(const irep_idt &value)
The type of an expression, extends irept.
Definition: type.h:29
void validate_operands(const exprt &value, exprt::operandst::size_type number, const char *message, bool allow_more=false)
Definition: expr_cast.h:250
#define PRECONDITION(CONDITION)
Definition: invariant.h:463
API to expression classes.
void validate_expr(const string_constantt &expr)
bool can_cast_expr< string_constantt >(const exprt &base)
const string_constantt & to_string_constant(const exprt &expr)