ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
std_code.h
Go to the documentation of this file.
1#ifndef CPROVER_STD_CODE_H
2#define CPROVER_STD_CODE_H
3
4#include <cassert>
5#include <util/irep/expr.h>
6
7class codet : public exprt
8{
9public:
10 codet() : exprt("code", typet("code"))
11 {
12 }
13
14 codet(const irep_idt &statement) : exprt("code", typet("code"))
15 {
17 }
18
20 {
21 this->statement(statement);
22 }
23
24 const irep_idt &get_statement() const
25 {
26 return get("statement");
27 }
28
30 const codet &first_statement() const;
32 const codet &last_statement() const;
33 class code_blockt &make_block();
34};
35
36extern inline const codet &to_code(const exprt &expr)
37{
38 assert(expr.is_code());
39 return static_cast<const codet &>(expr);
40}
41
42extern inline codet &to_code(exprt &expr)
43{
44 assert(expr.is_code());
45 return static_cast<codet &>(expr);
46}
47
48class code_blockt : public codet
49{
50public:
51 code_blockt() : codet("block")
52 {
53 }
54};
55
56extern inline const code_blockt &to_code_block(const codet &code)
57{
58 assert(code.get_statement() == "block");
59 return static_cast<const code_blockt &>(code);
60}
61
62extern inline code_blockt &to_code_block(codet &code)
63{
64 assert(code.get_statement() == "block");
65 return static_cast<code_blockt &>(code);
66}
67
68class code_skipt : public codet
69{
70public:
71 code_skipt() : codet("skip")
72 {
73 }
74};
75
76class code_assignt : public codet
77{
78public:
79 code_assignt() : codet("assign")
80 {
81 operands().resize(2);
82 }
83
84 code_assignt(const exprt &lhs, const exprt &rhs) : codet("assign")
85 {
87 }
88
90 {
91 return op0();
92 }
93
95 {
96 return op1();
97 }
98
99 const exprt &lhs() const
100 {
101 return op0();
102 }
103
104 const exprt &rhs() const
105 {
106 return op1();
107 }
108};
109
110extern inline const code_assignt &to_code_assign(const codet &code)
111{
112 assert(code.get_statement() == "assign");
113 return static_cast<const code_assignt &>(code);
114}
115
116extern inline code_assignt &to_code_assign(codet &code)
117{
118 assert(code.get_statement() == "assign");
119 return static_cast<code_assignt &>(code);
120}
121
122class code_declt : public codet
123{
124public:
125 code_declt() : codet("decl")
126 {
127 operands().resize(1);
128 }
129
130 explicit code_declt(const exprt &lhs) : codet("decl")
131 {
133 }
134
135 explicit code_declt(const exprt &lhs, const exprt &rhs) : codet("decl")
136 {
138 }
139
141 {
142 return op0();
143 }
144
146 {
147 return op1();
148 }
149
150 const exprt &lhs() const
151 {
152 return op0();
153 }
154
155 const exprt &rhs() const
156 {
157 return op1();
158 }
159};
160
161extern inline const code_declt &to_code_decl(const codet &code)
162{
163 assert(code.get_statement() == "decl");
164 return static_cast<const code_declt &>(code);
165}
166
167extern inline code_declt &to_code_decl(codet &code)
168{
169 assert(code.get_statement() == "decl");
170 return static_cast<code_declt &>(code);
171}
172
175class code_deadt : public codet
176{
177public:
178 explicit code_deadt(const exprt &symbol) : codet("dead")
179 {
181 }
182
184 {
185 return op0();
186 }
187
188 const exprt &symbol() const
189 {
190 return op0();
191 }
192};
193
194inline const code_deadt &to_code_dead(const codet &code)
195{
196 assert(code.get_statement() == "dead" && code.operands().size() == 1);
197 return static_cast<const code_deadt &>(code);
198}
199
201{
202 assert(code.get_statement() == "dead" && code.operands().size() == 1);
203 return static_cast<code_deadt &>(code);
204}
205
206class code_assumet : public codet
207{
208public:
209 code_assumet() : codet("assume")
210 {
211 operands().resize(1);
212 }
213
214 inline explicit code_assumet(const exprt &expr) : codet("assume")
215 {
216 copy_to_operands(expr);
217 }
218
219 inline const exprt &assumption() const
220 {
221 return op0();
222 }
223
225 {
226 return op0();
227 }
228};
229
230extern inline const code_assumet &to_code_assume(const codet &code)
231{
232 assert(code.get_statement() == "assume");
233 return static_cast<const code_assumet &>(code);
234}
235
236extern inline code_assumet &to_code_assume(codet &code)
237{
238 assert(code.get_statement() == "assume");
239 return static_cast<code_assumet &>(code);
240}
241
242class code_assertt : public codet
243{
244public:
245 code_assertt() : codet("assert")
246 {
247 operands().resize(1);
248 }
249
250 inline explicit code_assertt(const exprt &expr) : codet("assert")
251 {
252 copy_to_operands(expr);
253 }
254
255 inline const exprt &assertion() const
256 {
257 return op0();
258 }
259
260 inline exprt &assertion()
261 {
262 return op0();
263 }
264};
265
266extern inline const code_assertt &to_code_assert(const codet &code)
267{
268 assert(code.get_statement() == "assert");
269 return static_cast<const code_assertt &>(code);
270}
271
272extern inline code_assertt &to_code_assert(codet &code)
273{
274 assert(code.get_statement() == "assert");
275 return static_cast<code_assertt &>(code);
276}
277
279{
280public:
281 code_ifthenelset() : codet("ifthenelse")
282 {
283 operands().resize(3);
284 op1().make_nil();
285 op2().make_nil();
286 }
287
288 const exprt &cond() const
289 {
290 return op0();
291 }
292
294 {
295 return op0();
296 }
297
298 const codet &then_case() const
299 {
300 return static_cast<const codet &>(op1());
301 }
302
303 bool has_else_case() const
304 {
305 return op2().is_not_nil();
306 }
307
308 const codet &else_case() const
309 {
310 return static_cast<const codet &>(op2());
311 }
312
314 {
315 return static_cast<codet &>(op1());
316 }
317
319 {
320 return static_cast<codet &>(op2());
321 }
322};
323
324extern inline const code_ifthenelset &to_code_ifthenelse(const codet &code)
325{
326 assert(code.get_statement() == "ifthenelse");
327 return static_cast<const code_ifthenelset &>(code);
328}
329
331{
332 assert(code.get_statement() == "ifthenelse");
333 return static_cast<code_ifthenelset &>(code);
334}
335
338class code_switcht : public codet
339{
340public:
341 inline code_switcht() : codet("switch")
342 {
343 operands().resize(2);
344 }
345
346 inline const exprt &value() const
347 {
348 return op0();
349 }
350
351 inline exprt &value()
352 {
353 return op0();
354 }
355
356 inline const codet &body() const
357 {
358 return to_code(op1());
359 }
360
361 inline codet &body()
362 {
363 return static_cast<codet &>(op1());
364 }
365};
366
367static inline const code_switcht &to_code_switch(const codet &code)
368{
369 assert(code.get_statement() == "switch" && code.operands().size() == 2);
370 return static_cast<const code_switcht &>(code);
371}
372
373static inline code_switcht &to_code_switch(codet &code)
374{
375 assert(code.get_statement() == "switch" && code.operands().size() == 2);
376 return static_cast<code_switcht &>(code);
377}
378
381class code_whilet : public codet
382{
383public:
384 inline code_whilet() : codet("while")
385 {
386 operands().resize(2);
387 }
388
389 inline const exprt &cond() const
390 {
391 return op0();
392 }
393
394 inline exprt &cond()
395 {
396 return op0();
397 }
398
399 inline const codet &body() const
400 {
401 return to_code(op1());
402 }
403
404 inline codet &body()
405 {
406 return static_cast<codet &>(op1());
407 }
408};
409
410static inline const code_whilet &to_code_while(const codet &code)
411{
412 assert(code.get_statement() == "while" && code.operands().size() == 2);
413 return static_cast<const code_whilet &>(code);
414}
415
416static inline code_whilet &to_code_while(codet &code)
417{
418 assert(code.get_statement() == "while" && code.operands().size() == 2);
419 return static_cast<code_whilet &>(code);
420}
421
424class code_dowhilet : public codet
425{
426public:
427 inline code_dowhilet() : codet("dowhile")
428 {
429 operands().resize(2);
430 }
431
432 inline const exprt &cond() const
433 {
434 return op0();
435 }
436
437 inline exprt &cond()
438 {
439 return op0();
440 }
441
442 inline const codet &body() const
443 {
444 return to_code(op1());
445 }
446
447 inline codet &body()
448 {
449 return static_cast<codet &>(op1());
450 }
451};
452
453static inline const code_dowhilet &to_code_dowhile(const codet &code)
454{
455 assert(code.get_statement() == "dowhile" && code.operands().size() == 2);
456 return static_cast<const code_dowhilet &>(code);
457}
458
459static inline code_dowhilet &to_code_dowhile(codet &code)
460{
461 assert(code.get_statement() == "dowhile" && code.operands().size() == 2);
462 return static_cast<code_dowhilet &>(code);
463}
464
467class code_fort : public codet
468{
469public:
470 inline code_fort() : codet("for")
471 {
472 operands().resize(4);
473 }
474
475 // nil or a statement
476 inline const exprt &init() const
477 {
478 return op0();
479 }
480
481 inline exprt &init()
482 {
483 return op0();
484 }
485
486 inline const exprt &cond() const
487 {
488 return op1();
489 }
490
491 inline exprt &cond()
492 {
493 return op1();
494 }
495
496 inline const exprt &iter() const
497 {
498 return op2();
499 }
500
501 inline exprt &iter()
502 {
503 return op2();
504 }
505
506 inline const codet &body() const
507 {
508 return to_code(op3());
509 }
510
511 inline codet &body()
512 {
513 return static_cast<codet &>(op3());
514 }
515};
516
517static inline const code_fort &to_code_for(const codet &code)
518{
519 assert(code.get_statement() == "for" && code.operands().size() == 4);
520 return static_cast<const code_fort &>(code);
521}
522
523static inline code_fort &to_code_for(codet &code)
524{
525 assert(code.get_statement() == "for" && code.operands().size() == 4);
526 return static_cast<code_fort &>(code);
527}
528
531class code_gotot : public codet
532{
533public:
534 inline code_gotot() : codet("goto")
535 {
536 }
537
538 explicit inline code_gotot(const irep_idt &label) : codet("goto")
539 {
540 set_destination(label);
541 }
542
543 void set_destination(const irep_idt &label)
544 {
545 set("destination", label);
546 }
547
548 const irep_idt &get_destination() const
549 {
550 return get("destination");
551 }
552};
553
554static inline const code_gotot &to_code_goto(const codet &code)
555{
556 assert(code.get_statement() == "goto" && code.operands().empty());
557 return static_cast<const code_gotot &>(code);
558}
559
560static inline code_gotot &to_code_goto(codet &code)
561{
562 assert(code.get_statement() == "goto" && code.operands().empty());
563 return static_cast<code_gotot &>(code);
564}
565
574{
575public:
576 code_function_callt() : codet("function_call")
577 {
578 operands().resize(3);
579 lhs().make_nil();
580 op2().id("arguments");
581 }
582
584 {
585 return op0();
586 }
587
588 const exprt &lhs() const
589 {
590 return op0();
591 }
592
594 {
595 return op1();
596 }
597
598 const exprt &function() const
599 {
600 return op1();
601 }
602
604
606 {
607 return op2().operands();
608 }
609
610 const argumentst &arguments() const
611 {
612 return op2().operands();
613 }
614};
615
616extern inline const code_function_callt &
618{
619 assert(code.get_statement() == "function_call");
620 return static_cast<const code_function_callt &>(code);
621}
622
624{
625 assert(code.get_statement() == "function_call");
626 return static_cast<code_function_callt &>(code);
627}
628
629class code_returnt : public codet
630{
631public:
632 code_returnt() : codet("return")
633 {
634 operands().resize(1);
635 op0().make_nil();
636 }
637
638 const exprt &return_value() const
639 {
640 return op0();
641 }
642
644 {
645 return op0();
646 }
647
648 bool has_return_value() const
649 {
650 return return_value().is_not_nil();
651 }
652};
653
654extern inline const code_returnt &to_code_return(const codet &code)
655{
656 assert(code.get_statement() == "return");
657 return static_cast<const code_returnt &>(code);
658}
659
660extern inline code_returnt &to_code_return(codet &code)
661{
662 assert(code.get_statement() == "return");
663 return static_cast<code_returnt &>(code);
664}
665
666class code_labelt : public codet
667{
668public:
669 code_labelt() : codet("label")
670 {
671 operands().resize(1);
672 }
673
675 {
676 return static_cast<codet &>(op0());
677 }
678
679 const codet &code() const
680 {
681 return static_cast<const codet &>(op0());
682 }
683
684 const irep_idt &get_label() const
685 {
686 return get("label");
687 }
688
690 {
691 this->label(label);
692 }
693};
694
695extern inline const code_labelt &to_code_label(const codet &code)
696{
697 assert(code.get_statement() == "label");
698 return static_cast<const code_labelt &>(code);
699}
700
701extern inline code_labelt &to_code_label(codet &code)
702{
703 assert(code.get_statement() == "label");
704 return static_cast<code_labelt &>(code);
705}
706
710{
711public:
712 inline code_switch_caset() : codet("switch_case")
713 {
714 operands().resize(2);
715 }
716
717 inline code_switch_caset(const exprt &_case_op, const codet &_code)
718 : codet("switch_case")
719 {
720 copy_to_operands(_case_op, _code);
721 }
722
723 inline bool is_default() const
724 {
725 return dfault();
726 }
727
728 inline void set_default(bool value)
729 {
730 return dfault(value);
731 }
732
733 inline const exprt &case_op() const
734 {
735 return op0();
736 }
737
738 inline exprt &case_op()
739 {
740 return op0();
741 }
742
744 inline const exprt &case_range_hi() const
745 {
746 return static_cast<const exprt &>(find("case_range_hi"));
747 }
748
750 {
751 return static_cast<exprt &>(add("case_range_hi"));
752 }
753
755 {
756 return static_cast<codet &>(op1());
757 }
758
759 const codet &code() const
760 {
761 return static_cast<const codet &>(op1());
762 }
763};
764
765static inline const code_switch_caset &to_code_switch_case(const codet &code)
766{
767 assert(code.get_statement() == "switch_case" && code.operands().size() == 2);
768 return static_cast<const code_switch_caset &>(code);
769}
770
772{
773 assert(code.get_statement() == "switch_case" && code.operands().size() == 2);
774 return static_cast<code_switch_caset &>(code);
775}
776
777class code_breakt : public codet
778{
779public:
780 code_breakt() : codet("break")
781 {
782 }
783};
784
785extern inline const code_breakt &to_code_break(const codet &code)
786{
787 assert(code.get_statement() == "break");
788 return static_cast<const code_breakt &>(code);
789}
790
791extern inline code_breakt &to_code_break(codet &code)
792{
793 assert(code.get_statement() == "break");
794 return static_cast<code_breakt &>(code);
795}
796
797class code_continuet : public codet
798{
799public:
800 code_continuet() : codet("continue")
801 {
802 }
803};
804
805extern inline const code_continuet &to_code_continue(const codet &code)
806{
807 assert(code.get_statement() == "continue");
808 return static_cast<const code_continuet &>(code);
809}
810
812{
813 assert(code.get_statement() == "continue");
814 return static_cast<code_continuet &>(code);
815}
816
818{
819public:
820 code_expressiont() : codet("expression")
821 {
822 operands().resize(1);
823 }
824
825 explicit code_expressiont(const exprt &expr) : codet("expression")
826 {
827 copy_to_operands(expr);
828 }
829
830 inline const exprt &expression() const
831 {
832 return op0();
833 }
834
836 {
837 return op0();
838 }
839};
840
842{
843 assert(code.get_statement() == "expression");
844 return static_cast<code_expressiont &>(code);
845}
846
847extern inline const code_expressiont &to_code_expression(const codet &code)
848{
849 assert(code.get_statement() == "expression");
850 return static_cast<const code_expressiont &>(code);
851}
852
854{
855public:
856 explicit side_effect_exprt(const irep_idt &statement) : exprt("sideeffect")
857 {
859 }
860
861 inline side_effect_exprt(const irep_idt &statement, const typet &_type)
862 : exprt("sideeffect", _type)
863 {
865 }
866
867 const irep_idt &get_statement() const
868 {
869 return get("statement");
870 }
871
873 {
874 return this->statement(statement);
875 }
876};
877
879{
880 assert(expr.id() == "sideeffect");
881 return static_cast<side_effect_exprt &>(expr);
882}
883
884extern inline const side_effect_exprt &to_side_effect_expr(const exprt &expr)
885{
886 assert(expr.id() == "sideeffect");
887 return static_cast<const side_effect_exprt &>(expr);
888}
889
891{
892public:
896
898 : side_effect_exprt("nondet")
899 {
900 type() = t;
901 }
902};
903
905{
906public:
908 {
909 operands().resize(2);
910 op1().id("arguments");
911 }
912
914 : side_effect_exprt("function_call", _type)
915 {
916 operands().resize(2);
917 op1().id("arguments");
918 }
919
921 {
922 return op0();
923 }
924
925 const exprt &function() const
926 {
927 return op0();
928 }
929
931 {
932 return op1().operands();
933 }
934
936 {
937 return op1().operands();
938 }
939};
940
943{
944 assert(expr.id() == "sideeffect");
945 assert(expr.statement() == "function_call");
946 return static_cast<side_effect_expr_function_callt &>(expr);
947}
948
949extern inline const side_effect_expr_function_callt &
951{
952 assert(expr.id() == "sideeffect");
953 assert(expr.statement() == "function_call");
954 return static_cast<const side_effect_expr_function_callt &>(expr);
955}
956
957#endif
Definition std_code.h:243
const exprt & assertion() const
Definition std_code.h:255
code_assertt(const exprt &expr)
Definition std_code.h:250
exprt & assertion()
Definition std_code.h:260
code_assertt()
Definition std_code.h:245
Definition std_code.h:77
exprt & rhs()
Definition std_code.h:94
const exprt & rhs() const
Definition std_code.h:104
code_assignt(const exprt &lhs, const exprt &rhs)
Definition std_code.h:84
code_assignt()
Definition std_code.h:79
exprt & lhs()
Definition std_code.h:89
const exprt & lhs() const
Definition std_code.h:99
Definition std_code.h:207
code_assumet(const exprt &expr)
Definition std_code.h:214
code_assumet()
Definition std_code.h:209
exprt & assumption()
Definition std_code.h:224
const exprt & assumption() const
Definition std_code.h:219
Definition std_code.h:49
code_blockt()
Definition std_code.h:51
Definition std_code.h:778
code_breakt()
Definition std_code.h:780
Definition std_code.h:798
code_continuet()
Definition std_code.h:800
A removal of a local variable.
Definition std_code.h:176
exprt & symbol()
Definition std_code.h:183
code_deadt(const exprt &symbol)
Definition std_code.h:178
const exprt & symbol() const
Definition std_code.h:188
Definition std_code.h:123
code_declt(const exprt &lhs, const exprt &rhs)
Definition std_code.h:135
code_declt(const exprt &lhs)
Definition std_code.h:130
code_declt()
Definition std_code.h:125
const exprt & rhs() const
Definition std_code.h:155
exprt & rhs()
Definition std_code.h:145
const exprt & lhs() const
Definition std_code.h:150
exprt & lhs()
Definition std_code.h:140
Definition std_code.h:818
exprt & expression()
Definition std_code.h:835
code_expressiont()
Definition std_code.h:820
code_expressiont(const exprt &expr)
Definition std_code.h:825
const exprt & expression() const
Definition std_code.h:830
A `switch' instruction */ class code_switcht : public codet { public: inline code_switcht() : codet("...
Definition std_code.h:574
const argumentst & arguments() const
Definition std_code.h:610
exprt & function()
Definition std_code.h:593
exprt & lhs()
Definition std_code.h:583
code_function_callt()
Definition std_code.h:576
const exprt & lhs() const
Definition std_code.h:588
argumentst & arguments()
Definition std_code.h:605
exprt::operandst argumentst
Definition std_code.h:603
const exprt & function() const
Definition std_code.h:598
Definition std_code.h:279
const exprt & cond() const
Definition std_code.h:288
codet & then_case()
Definition std_code.h:313
const codet & else_case() const
Definition std_code.h:308
const codet & then_case() const
Definition std_code.h:298
codet & else_case()
Definition std_code.h:318
code_ifthenelset()
Definition std_code.h:281
exprt & cond()
Definition std_code.h:293
bool has_else_case() const
Definition std_code.h:303
Definition std_code.h:667
const irep_idt & get_label() const
Definition std_code.h:684
const codet & code() const
Definition std_code.h:679
codet & code()
Definition std_code.h:674
void set_label(const irep_idt &label)
Definition std_code.h:689
code_labelt()
Definition std_code.h:669
Definition std_code.h:630
code_returnt()
Definition std_code.h:632
exprt & return_value()
Definition std_code.h:643
const exprt & return_value() const
Definition std_code.h:638
bool has_return_value() const
Definition std_code.h:648
code_skipt()
Definition std_code.h:71
A switch-case.
Definition std_code.h:710
const exprt & case_range_hi() const
Upper bound of a GNU case range case lo ... hi:; nil otherwise.
Definition std_code.h:744
exprt & case_op()
Definition std_code.h:738
code_switch_caset()
Definition std_code.h:712
const exprt & case_op() const
Definition std_code.h:733
exprt & case_range_hi()
Definition std_code.h:749
const codet & code() const
Definition std_code.h:759
codet & code()
Definition std_code.h:754
void set_default(bool value)
Definition std_code.h:728
bool is_default() const
Definition std_code.h:723
code_switch_caset(const exprt &_case_op, const codet &_code)
Definition std_code.h:717
Definition std_code.h:8
codet()
Definition std_code.h:10
codet(const irep_idt &statement)
Definition std_code.h:14
codet & first_statement()
Definition std_code.cpp:18
codet & last_statement()
Definition std_code.cpp:48
const irep_idt & get_statement() const
Definition std_code.h:24
void set_statement(const irep_idt &statement)
Definition std_code.h:19
class code_blockt & make_block()
Definition std_code.cpp:3
Definition expr.h:34
exprt & op3()
Definition expr.h:104
std::vector< exprt > operandst
Definition expr.h:39
void copy_to_operands(const exprt &expr)
Definition expr.cpp:41
exprt & op0()
Definition expr.h:77
exprt & op1()
Definition expr.h:82
operandst & operands()
Definition expr.h:57
exprt()=default
exprt & op2()
Definition expr.h:93
const irep_idt & value() const
Definition expr.h:67
Definition irep_idt.h:12
const irep_idt & statement() const
Definition irep.h:177
const irept & find(const irep_idt &name) const
Definition irep.cpp:167
const irep_idt & get(const irep_idt &name) const
Definition irep.cpp:127
bool dfault() const
Definition irep.h:528
void set(const irep_idt &name, const irep_idt &value)
Definition irep.h:141
bool is_code() const
Definition irep.h:1133
bool is_not_nil() const
Definition irep.h:50
typet & type()
Definition irep.h:153
void make_nil()
Definition irep.h:1236
const irep_idt & id() const
Definition irep.h:109
irept & add(const irep_idt &name)
Definition irep.cpp:179
const irept & body() const
Definition irep.h:352
void label(const irep_idt &val)
Definition irep.h:948
Definition std_code.h:905
exprt & function()
Definition std_code.h:920
side_effect_expr_function_callt(const typet &_type)
Definition std_code.h:913
const exprt::operandst & arguments() const
Definition std_code.h:935
exprt::operandst & arguments()
Definition std_code.h:930
const exprt & function() const
Definition std_code.h:925
side_effect_expr_function_callt()
Definition std_code.h:907
side_effect_expr_nondett(const typet &t)
Definition std_code.h:897
side_effect_expr_nondett()
Definition std_code.h:893
Definition std_code.h:854
side_effect_exprt(const irep_idt &statement, const typet &_type)
Definition std_code.h:861
void set_statement(const irep_idt &statement)
Definition std_code.h:872
const irep_idt & get_statement() const
Definition std_code.h:867
side_effect_exprt(const irep_idt &statement)
Definition std_code.h:856
Definition type.h:9
pthread_cond_t cond
Definition cuda.h:50
static const std::string & label(const GNode &g)
Definition plcopen_xml_parser.cpp:498
side_effect_exprt & to_side_effect_expr(exprt &expr)
Definition std_code.h:878
const code_breakt & to_code_break(const codet &code)
Definition std_code.h:785
const code_assertt & to_code_assert(const codet &code)
Definition std_code.h:266
const code_function_callt & to_code_function_call(const codet &code)
Definition std_code.h:617
side_effect_expr_function_callt & to_side_effect_expr_function_call(exprt &expr)
Definition std_code.h:942
const code_assumet & to_code_assume(const codet &code)
Definition std_code.h:230
const codet & to_code(const exprt &expr)
Definition std_code.h:36
const code_assignt & to_code_assign(const codet &code)
Definition std_code.h:110
const code_labelt & to_code_label(const codet &code)
Definition std_code.h:695
const code_blockt & to_code_block(const codet &code)
Definition std_code.h:56
const code_ifthenelset & to_code_ifthenelse(const codet &code)
Definition std_code.h:324
const code_declt & to_code_decl(const codet &code)
Definition std_code.h:161
const code_returnt & to_code_return(const codet &code)
Definition std_code.h:654
static const code_switch_caset & to_code_switch_case(const codet &code)
Definition std_code.h:765
code_expressiont & to_code_expression(codet &code)
Definition std_code.h:841
const code_deadt & to_code_dead(const codet &code)
Definition std_code.h:194
const code_continuet & to_code_continue(const codet &code)
Definition std_code.h:805