ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
jimple_statement.h
Go to the documentation of this file.
1#ifndef ESBMC_JIMPLE_STATEMENT_H
2#define ESBMC_JIMPLE_STATEMENT_H
3
7
12{
13};
14
15// THIS IS STILL A TODO FROM THE STANDARD
17{
18public:
19 virtual void from_json(const json &j) override;
20
21 virtual exprt to_exprt(
22 contextt &ctx,
23 const std::string &class_name,
24 const std::string &function_name) const override;
25 virtual std::string to_string() const override;
26
27 std::string local_name;
28 std::string at_identifier;
30};
31
38{
39public:
40 virtual std::string to_string() const override;
41 virtual void from_json(const json &j) override;
42
43 virtual expr2tc to_code2t(
44 contextt &ctx,
45 const std::string &class_name,
46 const std::string &function_name,
47 const locationt &loc) const override;
48
49 // We need an unique name for each function
50 std::string get_hash_name() const
51 {
52 // TODO: use some hashing to also use the types
53 // TODO: DRY
54 auto increment = variable != "" ? 1 : 0;
55 return std::to_string(parameters.size() + increment);
56 }
57 std::string base_class;
58 std::string method;
59 std::string variable =
60 ""; // TODO: Specialization jimple_invoke and jimple_virtual_invoke!!!
61 std::vector<std::shared_ptr<jimple_expr>> parameters;
62};
63
70{
71 virtual expr2tc to_code2t(
72 contextt &ctx,
73 const std::string &class_name,
74 const std::string &function_name,
75 const locationt &loc) const override;
76
77 virtual std::string to_string() const override;
78 virtual void from_json(const json &j) override;
79 std::shared_ptr<jimple_expr> expr;
80};
81
89{
90public:
91 virtual std::string to_string() const override;
92 virtual void from_json(const json &j) override;
93
94 virtual expr2tc to_code2t(
95 contextt &ctx,
96 const std::string &class_name,
97 const std::string &function_name,
98 const locationt &loc) const override;
99
100 std::string label;
101 std::shared_ptr<jimple_full_method_body> members;
102};
103
110{
111public:
112 virtual std::string to_string() const override;
113 virtual void from_json(const json &j) override;
114
115 virtual expr2tc to_code2t(
116 contextt &ctx,
117 const std::string &class_name,
118 const std::string &function_name,
119 const locationt &loc) const override;
120
121 std::string label;
122};
123
130{
131public:
132 virtual expr2tc to_code2t(
133 contextt &ctx,
134 const std::string &class_name,
135 const std::string &function_name,
136 const locationt &loc) const override;
137
138 virtual std::string to_string() const override;
139 virtual void from_json(const json &j) override;
140
141 std::shared_ptr<jimple_expr> lhs;
142 std::shared_ptr<jimple_expr> rhs;
143 bool is_skip = false;
144};
145
146// For debug
148{
153public:
154 virtual std::string to_string() const override;
155 virtual void from_json(const json &j) override;
156
157 std::string variable;
158 std::string value;
159};
160
167{
168public:
169 virtual expr2tc to_code2t(
170 contextt &ctx,
171 const std::string &class_name,
172 const std::string &function_name,
173 const locationt &loc) const override;
174 virtual std::string to_string() const override;
175 virtual void from_json(const json &j) override;
176
177 std::shared_ptr<jimple_expr> cond;
178 std::string label;
179};
180
188{
189 virtual expr2tc to_code2t(
190 contextt &ctx,
191 const std::string &class_name,
192 const std::string &function_name,
193 const locationt &loc) const override;
194 virtual std::string to_string() const override;
195 virtual void from_json(const json &j) override;
196
197 std::shared_ptr<jimple_expr> expr;
198};
199
200#endif // ESBMC_JIMPLE_STATEMENT_H
Definition context.h:57
Definition expr.h:34
Definition jimple_statement.h:148
virtual std::string to_string() const override
Parse-only: no statement enumerator maps to this class, so the body dispatcher can never build one an...
Definition jimple_statement.cpp:220
std::string variable
Definition jimple_statement.h:157
std::string value
Definition jimple_statement.h:158
virtual void from_json(const json &j) override
Initializes the current instance by parsing a JSON.
Definition jimple_statement.cpp:227
An assignment statement.
Definition jimple_statement.h:130
bool is_skip
Definition jimple_statement.h:143
virtual expr2tc to_code2t(contextt &ctx, const std::string &class_name, const std::string &function_name, const locationt &loc) const override
The IREP2 form of this statement, located at loc.
Definition jimple_statement.cpp:150
virtual void from_json(const json &j) override
Initializes the current instance by parsing a JSON.
Definition jimple_statement.cpp:144
virtual std::string to_string() const override
Converts the object into a string.
Definition jimple_statement.cpp:137
std::shared_ptr< jimple_expr > rhs
Definition jimple_statement.h:142
std::shared_ptr< jimple_expr > lhs
Definition jimple_statement.h:141
virtual std::string to_string() const =0
Converts the object into a string.
Goto statement.
Definition jimple_statement.h:110
virtual expr2tc to_code2t(contextt &ctx, const std::string &class_name, const std::string &function_name, const locationt &loc) const override
The IREP2 form of this statement, located at loc.
Definition jimple_statement.cpp:120
std::string label
Definition jimple_statement.h:121
virtual void from_json(const json &j) override
Initializes the current instance by parsing a JSON.
Definition jimple_statement.cpp:104
virtual std::string to_string() const override
Converts the object into a string.
Definition jimple_statement.cpp:109
Definition jimple_statement.h:17
std::string at_identifier
Definition jimple_statement.h:28
virtual void from_json(const json &j) override
Initializes the current instance by parsing a JSON.
Definition jimple_statement.cpp:35
std::string local_name
Definition jimple_statement.h:27
virtual exprt to_exprt(contextt &ctx, const std::string &class_name, const std::string &function_name) const override
Definition jimple_statement.cpp:14
virtual std::string to_string() const override
Converts the object into a string.
Definition jimple_statement.cpp:42
jimple_type type
Definition jimple_statement.h:29
An IF statement.
Definition jimple_statement.h:167
virtual void from_json(const json &j) override
Initializes the current instance by parsing a JSON.
Definition jimple_statement.cpp:199
std::string label
Definition jimple_statement.h:178
std::shared_ptr< jimple_expr > cond
Definition jimple_statement.h:177
virtual expr2tc to_code2t(contextt &ctx, const std::string &class_name, const std::string &function_name, const locationt &loc) const override
The IREP2 form of this statement, located at loc.
Definition jimple_statement.cpp:208
virtual std::string to_string() const override
Converts the object into a string.
Definition jimple_statement.cpp:192
A function call.
Definition jimple_statement.h:38
virtual void from_json(const json &j) override
Initializes the current instance by parsing a JSON.
Definition jimple_statement.cpp:240
std::string method
Definition jimple_statement.h:58
std::vector< std::shared_ptr< jimple_expr > > parameters
Definition jimple_statement.h:61
std::string base_class
Definition jimple_statement.h:57
virtual expr2tc to_code2t(contextt &ctx, const std::string &class_name, const std::string &function_name, const locationt &loc) const override
The IREP2 form of this statement, located at loc.
Definition jimple_statement.cpp:253
virtual std::string to_string() const override
Converts the object into a string.
Definition jimple_statement.cpp:233
std::string get_hash_name() const
Definition jimple_statement.h:50
std::string variable
Definition jimple_statement.h:59
A GOTO label.
Definition jimple_statement.h:89
virtual std::string to_string() const override
Converts the object into a string.
Definition jimple_statement.cpp:74
std::shared_ptr< jimple_full_method_body > members
Definition jimple_statement.h:101
virtual expr2tc to_code2t(contextt &ctx, const std::string &class_name, const std::string &function_name, const locationt &loc) const override
The IREP2 form of this statement, located at loc.
Definition jimple_statement.cpp:88
std::string label
Definition jimple_statement.h:100
virtual void from_json(const json &j) override
Initializes the current instance by parsing a JSON.
Definition jimple_statement.cpp:129
The contents of a Jimple method.
Definition jimple_method_body.h:48
Return statement.
Definition jimple_statement.h:70
Base class for Jimple Statements.
Definition jimple_statement.h:12
A throw statement.
Definition jimple_statement.h:188
Definition jimple_type.h:14
Definition location.h:7
irep_container< expr2t > expr2tc
Definition irep2.h:431
nlohmann::json json
Definition json.cpp:12