cprover
Loading...
Searching...
No Matches
code_blockt Class Reference

A codet representing sequential composition of program statements. More...

#include <std_code.h>

Inheritance diagram for code_blockt:
Collaboration diagram for code_blockt:

Public Types

typedef std::vector< codet > code_operandst
Public Types inherited from exprt
typedef std::vector< exprt > operandst
Public Types inherited from irept
using baset = tree_implementationt
Public Types inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
using dt
using subt
using named_subt
using tree_implementationt
 Used to refer to this class from derived classes.

Public Member Functions

 code_blockt ()
code_operandst & statements ()
const code_operandst & statements () const
 code_blockt (const std::vector< codet > &_statements)
 code_blockt (std::vector< codet > &&_statements)
void add (const codet &code)
void add (codet &&code)
void add (codet code, source_locationt loc)
void append (const code_blockt &extra_block)
 Add all the codets from extra_block to the current code_blockt.
source_locationt end_location () const
codet & find_last_statement ()
Public Member Functions inherited from codet
 codet (const irep_idt &statement)
 codet (const irep_idt &statement, source_locationt loc)
 codet (const irep_idt &statement, operandst _op)
 codet (const irep_idt &statement, operandst op, source_locationt loc)
void set_statement (const irep_idt &statement)
const irep_idt & get_statement () const
codet & first_statement ()
 In the case of a codet type that represents multiple statements, return the first of them.
const codet & first_statement () const
 In the case of a codet type that represents multiple statements, return the first of them.
codet & last_statement ()
 In the case of a codet type that represents multiple statements, return the last of them.
const codet & last_statement () const
 In the case of a codet type that represents multiple statements, return the last of them.
exprt & op0 ()
const exprt & op0 () const
exprt & op1 ()
const exprt & op1 () const
exprt & op2 ()
const exprt & op2 () const
exprt & op3 ()
const exprt & op3 () const
Public Member Functions inherited from exprt
 exprt ()
 exprt (const irep_idt &_id)
 exprt (irep_idt _id, typet _type)
 exprt (irep_idt _id, typet _type, operandst &&_operands)
 exprt (const irep_idt &id, typet type, source_locationt loc)
typet & type ()
 Return the type of the expression.
const typet & type () const
bool has_operands () const
 Return true if there is at least one operand.
operandst & operands ()
const operandst & operands () const
exprt & with_source_location (source_locationt location) &
 Add the source location from location, if it is non-nil.
exprt && with_source_location (source_locationt location) &&
 Add the source location from location, if it is non-nil.
exprt & with_source_location (const exprt &other) &
 Add the source location from other, if it has any.
exprt && with_source_location (const exprt &other) &&
 Add the source location from other, if it has any.
void reserve_operands (operandst::size_type n)
void copy_to_operands (const exprt &expr)
 Copy the given argument to the end of exprt's operands.
void add_to_operands (const exprt &expr)
 Add the given argument to the end of exprt's operands.
void add_to_operands (exprt &&expr)
 Add the given argument to the end of exprt's operands.
void add_to_operands (exprt &&e1, exprt &&e2)
 Add the given arguments to the end of exprt's operands.
void add_to_operands (exprt &&e1, exprt &&e2, exprt &&e3)
 Add the given arguments to the end of exprt's operands.
bool is_constant () const
 Return whether the expression is a constant.
bool is_true () const
 Return whether the expression is a constant representing true.
bool is_false () const
 Return whether the expression is a constant representing false.
bool is_zero () const
 Return whether the expression is a constant representing 0.
bool is_one () const
 Return whether the expression is a constant representing 1.
bool is_boolean () const
 Return whether the expression represents a Boolean.
const source_locationt & find_source_location () const
 Get a source_locationt from the expression or from its operands (non-recursively).
const source_locationt & source_location () const
source_locationt & add_source_location ()
void drop_source_location ()
void visit (class expr_visitort &visitor)
 These are pre-order traversal visitors, i.e., the visitor is executed on a node before its children have been visited.
void visit (class const_expr_visitort &visitor) const
void visit_pre (std::function< void(exprt &)>)
void visit_pre (std::function< void(const exprt &)>) const
void visit_post (std::function< void(exprt &)>)
 These are post-order traversal visitors, i.e., the visitor is executed on a node after its children have been visited.
void visit_post (std::function< void(const exprt &)>) const
depth_iteratort depth_begin ()
depth_iteratort depth_end ()
const_depth_iteratort depth_begin () const
const_depth_iteratort depth_end () const
const_depth_iteratort depth_cbegin () const
const_depth_iteratort depth_cend () const
depth_iteratort depth_begin (std::function< exprt &()> mutate_root) const
const_unique_depth_iteratort unique_depth_begin () const
const_unique_depth_iteratort unique_depth_end () const
const_unique_depth_iteratort unique_depth_cbegin () const
const_unique_depth_iteratort unique_depth_cend () const
Public Member Functions inherited from irept
bool is_nil () const
bool is_not_nil () const
 irept (const irep_idt &_id)
 irept (const irep_idt &_id, const named_subt &_named_sub, const subt &_sub)
 irept ()=default
const irep_idt & id () const
const std::string & id_string () const
void id (const irep_idt &_data)
const irept & find (const irep_idt &name) const
irept & add (const irep_idt &name)
irept & add (const irep_idt &name, irept irep)
const std::string & get_string (const irep_idt &name) const
const irep_idt & get (const irep_idt &name) const
bool get_bool (const irep_idt &name) const
signed int get_int (const irep_idt &name) const
std::size_t get_size_t (const irep_idt &name) const
long long get_long_long (const irep_idt &name) const
void set (const irep_idt &name, const irep_idt &value)
void set (const irep_idt &name, irept irep)
void set (const irep_idt &name, const long long value)
void set_size_t (const irep_idt &name, const std::size_t value)
void remove (const irep_idt &name)
void move_to_sub (irept &irep)
void move_to_named_sub (const irep_idt &name, irept &irep)
bool operator== (const irept &other) const
bool operator!= (const irept &other) const
void swap (irept &irep)
bool operator< (const irept &other) const
 defines ordering on the internal representation
bool ordering (const irept &other) const
 defines ordering on the internal representation
int compare (const irept &i) const
 defines ordering on the internal representation comments are ignored
void clear ()
void make_nil ()
subt & get_sub ()
const subt & get_sub () const
named_subt & get_named_sub ()
const named_subt & get_named_sub () const
std::size_t hash () const
std::size_t full_hash () const
bool full_eq (const irept &other) const
std::string pretty (unsigned indent=0, unsigned max_indent=0) const
Public Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
 sharing_treet (irep_idt _id)
sharing_treet & operator= (const sharing_treet &irep)
 ~sharing_treet ()
const dt & read () const
dt & write ()

Static Public Member Functions

static code_blockt from_list (const std::list< codet > &_list)
Static Public Member Functions inherited from exprt
static void check (const exprt &, const validation_modet=validation_modet::INVARIANT)
 Check that the expression is well-formed (shallow checks only, i.e., subexpressions and its type are not checked).
static void validate (const exprt &expr, const namespacet &, const validation_modet vm=validation_modet::INVARIANT)
 Check that the expression is well-formed, assuming that its subexpressions and type have all ready been checked for well-formedness.
static void validate_full (const exprt &expr, const namespacet &ns, const validation_modet vm=validation_modet::INVARIANT)
 Check that the expression is well-formed (full check, including checks of all subexpressions and the type).
Static Public Member Functions inherited from irept
static bool is_comment (const irep_idt &name)
static std::size_t number_of_non_comments (const named_subt &)
 count the number of named_sub elements that are not comments

Additional Inherited Members

Protected Member Functions inherited from exprt
exprt & op0 ()
exprt & op1 ()
exprt & op2 ()
exprt & op3 ()
const exprt & op0 () const
const exprt & op1 () const
const exprt & op2 () const
const exprt & op3 () const
exprt & add_expr (const irep_idt &name)
const exprt & find_expr (const irep_idt &name) const
Protected Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
void detach ()
Static Protected Member Functions inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
static void remove_ref (dt *old_data)
static void nonrecursive_destructor (dt *old_data)
 Does the same as remove_ref, but using an explicit stack instead of recursion.
Protected Attributes inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
dt * data
Static Protected Attributes inherited from sharing_treet< irept, forward_list_as_mapt< irep_idt, irept > >
static dt empty_d

Detailed Description

A codet representing sequential composition of program statements.

Each operand represents a statement in the block.

Definition at line 129 of file std_code.h.

Member Typedef Documentation

◆ code_operandst

typedef std::vector<codet> code_blockt::code_operandst

Definition at line 136 of file std_code.h.

Constructor & Destructor Documentation

◆ code_blockt() [1/3]

code_blockt::code_blockt ( )
inline

Definition at line 132 of file std_code.h.

◆ code_blockt() [2/3]

code_blockt::code_blockt ( const std::vector< codet > & _statements)
inlineexplicit

Definition at line 158 of file std_code.h.

◆ code_blockt() [3/3]

code_blockt::code_blockt ( std::vector< codet > && _statements)
inlineexplicit

Definition at line 163 of file std_code.h.

Member Function Documentation

◆ add() [1/3]

void code_blockt::add ( codet && code)
inline

Definition at line 173 of file std_code.h.

◆ add() [2/3]

void code_blockt::add ( codet code,
source_locationt loc )
inline

Definition at line 178 of file std_code.h.

◆ add() [3/3]

void code_blockt::add ( const codet & code)
inline

Definition at line 168 of file std_code.h.

◆ append()

void code_blockt::append ( const code_blockt & extra_block)

Add all the codets from extra_block to the current code_blockt.

Parameters
extra_blockThe input code_blockt

Definition at line 86 of file std_code.cpp.

◆ end_location()

source_locationt code_blockt::end_location ( ) const
inline

Definition at line 187 of file std_code.h.

◆ find_last_statement()

codet & code_blockt::find_last_statement ( )

Definition at line 96 of file std_code.cpp.

◆ from_list()

code_blockt code_blockt::from_list ( const std::list< codet > & _list)
inlinestatic

Definition at line 148 of file std_code.h.

◆ statements() [1/2]

code_operandst & code_blockt::statements ( )
inline

Definition at line 138 of file std_code.h.

◆ statements() [2/2]

const code_operandst & code_blockt::statements ( ) const
inline

Definition at line 143 of file std_code.h.


The documentation for this class was generated from the following files: