CBMC
string_constant.h
Go to the documentation of this file.
1 /*******************************************************************\
2 
3 Module:
4 
5 Author: 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 {
16 public:
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 
26  array_exprt to_array_expr() const;
27 };
28 
29 template <>
30 inline bool can_cast_expr<string_constantt>(const exprt &base)
31 {
32  return base.id() == ID_string_constant;
33 }
34 
35 inline void validate_expr(const string_constantt &expr)
36 {
37  validate_operands(expr, 0, "String constants must not have operands");
38 }
39 
40 inline const string_constantt &to_string_constant(const exprt &expr)
41 {
42  PRECONDITION(expr.id() == ID_string_constant);
43  return static_cast<const string_constantt &>(expr);
44 }
45 
46 inline const string_constantt &to_string_constant(const typet &type)
47 {
48  return to_string_constant((const exprt &)type);
49 }
50 
52 {
53  PRECONDITION(expr.id() == ID_string_constant);
54  return static_cast<string_constantt &>(expr);
55 }
56 
58 {
59  return to_string_constant((exprt &)type);
60 }
61 
62 #endif // CPROVER_ANSI_C_STRING_CONSTANT_H
dstringt
dstringt has one field, an unsigned integer no which is an index into a static table of strings.
Definition: dstring.h:36
can_cast_expr< string_constantt >
bool can_cast_expr< string_constantt >(const exprt &base)
Definition: string_constant.h:30
string_constantt::string_constantt
string_constantt(const irep_idt &value)
Definition: string_constant.cpp:15
typet
The type of an expression, extends irept.
Definition: type.h:28
validate_operands
void validate_operands(const exprt &value, exprt::operandst::size_type number, const char *message, bool allow_more=false)
Definition: expr_cast.h:250
to_string_constant
const string_constantt & to_string_constant(const exprt &expr)
Definition: string_constant.h:40
exprt
Base class for all expressions.
Definition: expr.h:55
string_constantt
Definition: string_constant.h:14
irept::get
const irep_idt & get(const irep_idt &name) const
Definition: irep.cpp:45
validate_expr
void validate_expr(const string_constantt &expr)
Definition: string_constant.h:35
nullary_exprt
An expression without operands.
Definition: std_expr.h:21
PRECONDITION
#define PRECONDITION(CONDITION)
Definition: invariant.h:463
irept::id
const irep_idt & id() const
Definition: irep.h:396
string_constantt::to_array_expr
array_exprt to_array_expr() const
convert string into array constant
Definition: string_constant.cpp:29
std_expr.h
array_exprt
Array constructor from list of elements.
Definition: std_expr.h:1562
string_constantt::get_value
const irep_idt & get_value() const
Definition: string_constant.h:21
string_constantt::set_value
void set_value(const irep_idt &value)
Definition: string_constant.cpp:21