ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
code_function_callt Class Reference

A `switch' instruction */ class code_switcht : public codet { public: inline code_switcht() : codet("switch") { operands().resize(2); }. More...

#include <std_code.h>

Inheritance diagram for code_function_callt:
[legend]

Public Types

typedef exprt::operandst argumentst
Public Types inherited from exprt
typedef std::vector< exprt > operandst
Public Types inherited from irept
typedef std::vector< irept > subt
typedef std::map< irep_idt, irept > named_subt

Public Member Functions

 code_function_callt ()
exprt & lhs ()
const exprt & lhs () const
exprt & function ()
const exprt & function () const
argumentst & arguments ()
const argumentst & arguments () const
Public Member Functions inherited from codet
 codet ()
 codet (const irep_idt &statement)
void set_statement (const irep_idt &statement)
const irep_idt & get_statement () const
codet & first_statement ()
const codet & first_statement () const
codet & last_statement ()
const codet & last_statement () const
class code_blockt & make_block ()
Public Member Functions inherited from exprt
 exprt ()=default
 exprt (const irep_idt &_id)
 exprt (const irep_idt &_id, const typet &_type)
bool has_operands () const
operandst & operands ()
const operandst & operands () const
const irep_idt & value () const
void value (irep_idt val)
exprt & op0 ()
exprt & op1 ()
exprt & op2 ()
exprt & op3 ()
const exprt & op0 () const
const exprt & op1 () const
const exprt & op2 () const
const exprt & op3 () const
void reserve_operands (unsigned n)
void move_to_operands (exprt &expr)
void move_to_operands (exprt &e1, exprt &e2)
void move_to_operands (exprt &e1, exprt &e2, exprt &e3)
void copy_to_operands (const exprt &expr)
void copy_to_operands (const exprt &e1, const exprt &e2)
void copy_to_operands (const exprt &e1, const exprt &e2, const exprt &e3)
void make_typecast (const typet &_type)
void make_not ()
void make_true ()
void make_false ()
void make_bool (bool value)
void negate ()
bool sum (const exprt &expr)
bool mul (const exprt &expr)
bool subtract (const exprt &expr)
bool is_constant () const
bool is_true () const
bool is_false () const
bool is_zero () const
bool is_one () const
bool is_boolean () const
const locationt & find_location () const
const locationt & location () const
locationt & location ()
exprt & add_expr (const std::string &name)
const exprt & find_expr (const std::string &name) const
Public Member Functions inherited from irept
void dump () const
bool is_nil () const
bool is_not_nil () const
 irept (const irep_idt &_id)
 irept ()
 irept (const irept &irep)
irept & operator= (const irept &irep)
 ~irept ()
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)
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
void set (const irep_idt &name, const irep_idt &value)
void set (const irep_idt &name, const long value)
void set (const irep_idt &name, const irept &irep)
void remove (const irep_idt &name)
void move_to_sub (irept &irep)
void move_to_named_sub (const irep_idt &name, irept &irep)
typet & type ()
const typet & type () const
bool is_identifier_set () const
const irep_idt & identifier () const
const irep_idt & width () const
const irep_idt & statement () const
const irep_idt & name () const
const irep_idt & component_name () const
const irep_idt & tag () const
const irep_idt & from () const
const irep_idt & file () const
const irep_idt & line () const
const irep_idt & function () const
const irept & function_irep () const
const irep_idt & column () const
const irep_idt & destination () const
const irep_idt & access () const
const irep_idt & base_name () const
const irep_idt & comment () const
const irep_idt & event () const
const irept & event_irep () const
const irep_idt & literal () const
const irep_idt & loopid () const
const irep_idt & mode () const
const irep_idt & module () const
const irep_idt & pretty_name () const
const irep_idt & derived_this_arg () const
bool base_ctor_derived () const
bool need_vptr_init () const
const irep_idt & property () const
const irep_idt & size () const
const irept & size_irep () const
const irep_idt & integer_bits () const
const irep_idt & to () const
const irep_idt & failed_symbol () const
const irep_idt & type_id () const
const irept & arguments () const
const irept & components () const
const irept & cmt_type () const
const irept & return_type () const
const irept & body () const
const irept & member_irep () const
const irept & labels_irep () const
const irept & bv () const
const irept & targets () const
const irept & variables () const
const irept & object_type () const
const irept & initializer () const
const irept & cmt_size () const
const irept & code () const
const irept & guard () const
const irept & location () const
const irept & declaration_type () const
const irept & decl_value () const
const irept & end_location () const
const irept & symvalue () const
const irept & cmt_location () const
const irept & decl_ident () const
bool is_decl_ident_set () const
const irept & elements () const
bool is_dynamic_set () const
bool dynamic () const
const irep_idt & cmt_base_name () const
const irep_idt & id_class () const
const irep_idt & cmt_identifier () const
const irep_idt & cformat () const
const irep_idt & member_name () const
 Owning class tag of a member function type, e.g.
const irep_idt & cpp_type () const
 Source-level spelling of a type, e.g.
const irep_idt & cmt_width () const
const irept & offsetof_type () const
bool axiom () const
bool cmt_constant () const
bool dfault () const
bool ellipsis () const
bool explict () const
bool file_local () const
bool hex_or_oct () const
bool hide () const
bool implicit () const
bool incomplete () const
bool initialization () const
bool inlined () const
bool invalid_object () const
bool is_parameter () const
bool is_expression () const
bool is_extern () const
bool is_macro () const
bool is_thread_local () const
bool is_type () const
bool lvalue () const
bool reference () const
bool restricted () const
bool static_lifetime () const
bool theorem () const
bool cmt_unsigned () const
bool user_provided () const
bool cmt_volatile () const
bool zero_initializer () const
void arguments (const irept &val)
void decl_ident (const irept &val)
void identifier (const irep_idt ident)
void statement (const irep_idt statm)
void comment (const irep_idt cmt)
void component_name (const irep_idt name)
void hex_or_oct (const irep_idt which)
void hex_or_oct (bool which)
void cmt_width (const irep_idt width)
void cmt_width (unsigned int width)
void width (const irep_idt width)
void width (unsigned int width)
void cmt_unsigned (const irep_idt val)
void cmt_unsigned (bool val)
void property (const irep_idt prop)
void cmt_base_name (const irep_idt name)
void name (const irep_idt val)
void cformat (const irep_idt val)
void member_name (const irep_idt val)
void cpp_type (const irep_idt val)
void remove_member_name ()
void flavor (const irep_idt val)
void function (const irep_idt val)
void size (const irep_idt val)
void size (const irept &val)
void user_provided (const irep_idt val)
void user_provided (bool val)
void destination (const irep_idt val)
void cmt_constant (const irep_idt val)
void cmt_constant (bool val)
void cmt_active (const irep_idt val)
void base_name (const irep_idt val)
void code (const irept &val)
void component (const irep_idt val)
void component (unsigned int val)
void dfault (bool val)
void dynamic (bool val)
void end_location (const irept &val)
void ellipsis (bool val)
void axiom (bool val)
void event (const irep_idt &val)
void failed_symbol (const irep_idt val)
void file (const irep_idt val)
void file_local (bool val)
void guard (const irept &val)
void hide (bool val)
void id_class (unsigned int val)
void cmt_identifier (const irep_idt val)
void implicit (bool val)
void incomplete (bool val)
void inlined (bool val)
void invalid_object (bool val)
void is_parameter (bool val)
void is_expression (bool val)
void is_extern (bool val)
void is_macro (bool val)
void is_thread_local (bool val)
void is_type (bool val)
void label (const irep_idt &val)
void lhs (bool val)
void line (const irep_idt &val)
void line (unsigned int val)
void location (const irept &val)
void lvalue (bool val)
void mode (const irep_idt &val)
void module (const irep_idt &val)
void object_type (const irept &val)
void pretty_name (const irep_idt &val)
void derived_this_arg (const irep_idt &val)
void base_ctor_derived (bool val)
void need_vptr_init (bool val)
void restricted (bool val)
void cmt_size (const irept &val)
void static_lifetime (bool val)
void tag (const irep_idt &val)
void theorem (bool val)
void cmt_type (const irept &val)
void type_id (unsigned int val)
void cmt_volatile (bool val)
void zero_initializer (bool val)
void components (const irept &val)
void offsetof_type (const irept &val)
void declaration_type (const irept &val)
void bv (const irept &val)
void initializer (const irept &val)
void labels (const irept &val)
void symvalue (const irept &val)
void member_irep (const irept &val)
void return_type (const irept &val)
void variables (const irept &val)
void targets (const irept &val)
bool is_address_of () const
bool is_and () const
bool is_or () const
bool is_array () const
bool is_bool () const
bool is_code () const
bool is_function_call () const
bool is_constant () const
bool is_dereference () const
bool is_empty () const
bool is_fixedbv () const
bool is_floatbv () const
bool is_incomplete_array () const
bool is_index () const
bool is_member () const
bool is_not () const
bool is_notequal () const
bool is_pointer () const
bool is_signedbv () const
bool is_struct () const
bool is_symbol () const
bool is_typecast () const
bool is_union () const
bool is_unsignedbv () const
bool is_vector () const
std::string to_string () const
void swap (irept &irep)
int compare (const irept &i) const
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
named_subt & get_comments ()
const named_subt & get_comments () const
size_t hash () const
size_t full_hash () const
std::string pretty (unsigned indent=0) const

Additional Inherited Members

Static Public Attributes inherited from exprt
static irep_idt trans = irep_idt("trans")
static irep_idt symbol = irep_idt("symbol")
static irep_idt plus = irep_idt("+")
static irep_idt minus = irep_idt("-")
static irep_idt mult = irep_idt("*")
static irep_idt div = irep_idt("/")
static irep_idt mod = irep_idt("mod")
static irep_idt equality = irep_idt("=")
static irep_idt notequal = irep_idt("notequal")
static irep_idt index = irep_idt("index")
static irep_idt arrayof = irep_idt("array_of")
static irep_idt objdesc = irep_idt("object_descriptor")
static irep_idt dynobj = irep_idt("dynamic_object")
static irep_idt typecast = irep_idt("typecast")
static irep_idt implies = irep_idt("=>")
static irep_idt i_and = irep_idt("and")
static irep_idt i_xor = irep_idt("xor")
static irep_idt i_or = irep_idt("or")
static irep_idt i_not = irep_idt("not")
static irep_idt addrof = irep_idt("address_of")
static irep_idt deref = irep_idt("dereference")
static irep_idt i_if = irep_idt("if")
static irep_idt with = irep_idt("with")
static irep_idt member = irep_idt("member")
static irep_idt member_ref = irep_idt("member_ref")
static irep_idt ptr_mem = irep_idt("ptr_mem")
static irep_idt isnan = irep_idt("isnan")
static irep_idt ieee_floateq = irep_idt("ieee_float_equal")
static irep_idt i_type = irep_idt("type")
static irep_idt constant = irep_idt("constant")
static irep_idt i_true = irep_idt("true")
static irep_idt i_false = irep_idt("false")
static irep_idt i_lt = irep_idt("<")
static irep_idt i_gt = irep_idt(">")
static irep_idt i_le = irep_idt("<=")
static irep_idt i_ge = irep_idt(">=")
static irep_idt i_cmp_three_way = irep_idt("<=>")
static irep_idt i_bitand = irep_idt("bitand")
static irep_idt i_bitor = irep_idt("bitor")
static irep_idt i_bitxor = irep_idt("bitxor")
static irep_idt i_bitnot = irep_idt("bitnot")
static irep_idt i_ashr = irep_idt("ashr")
static irep_idt i_lshr = irep_idt("lshr")
static irep_idt i_shl = irep_idt("shl")
static irep_idt abs = irep_idt("abs")
static irep_idt argument = irep_idt("argument")
static irep_idt a_value = irep_idt("value")
Static Public Attributes inherited from irept
static const irep_idt s_type = irep_idt("type")
static const irep_idt s_arguments = irep_idt("arguments")
static const irep_idt s_components = irep_idt("components")
static const irep_idt s_return_type = irep_idt("return_type")
static const irep_idt s_body = irep_idt("body")
static const irep_idt s_member = irep_idt("member")
static const irep_idt s_labels = irep_idt("labels")
static const irep_idt s_bv = irep_idt("bv")
static const irep_idt s_targets = irep_idt("targets")
static const irep_idt s_variables = irep_idt("variables")
static const irep_idt s_initializer = irep_idt("initializer")
static const irep_idt s_declaration_type = irep_idt("declaration_type")
static const irep_idt s_decl_value = irep_idt("decl_value")
static const irep_idt s_symvalue = irep_idt("symvalue")
static const irep_idt s_cmt_location = irep_idt("#location")
static const irep_idt s_decl_ident = irep_idt("decl_ident")
static const irep_idt s_elements = irep_idt("elements")
static const irep_idt s_offsetof_type = irep_idt("offsetof_type")
static const irep_idt a_width = irep_idt("width")
static const irep_idt a_name = irep_idt("name")
static const irep_idt a_statement = irep_idt("statement")
static const irep_idt a_identifier = irep_idt("identifier")
static const irep_idt a_comp_name = irep_idt("component_name")
static const irep_idt a_tag = irep_idt("tag")
static const irep_idt a_from = irep_idt("from")
static const irep_idt a_file = irep_idt("file")
static const irep_idt a_line = irep_idt("line")
static const irep_idt a_function = irep_idt("function")
static const irep_idt a_column = irep_idt("column")
static const irep_idt a_access = irep_idt("access")
static const irep_idt a_destination = irep_idt("destination")
static const irep_idt a_base_name = irep_idt("base_name")
static const irep_idt a_comment = irep_idt("comment")
static const irep_idt a_event = irep_idt("event")
static const irep_idt a_literal = irep_idt("literal")
static const irep_idt a_loopid = irep_idt("loop-id")
static const irep_idt a_mode = irep_idt("mode")
static const irep_idt a_module = irep_idt("module")
static const irep_idt a_pretty_name = irep_idt("pretty_name")
static const irep_idt a_property = irep_idt("property")
static const irep_idt a_size = irep_idt("size")
static const irep_idt a_integer_bits = irep_idt("integer_bits")
static const irep_idt a_to = irep_idt("to")
static const irep_idt a_failed_symbol = irep_idt("#failed_symbol")
static const irep_idt a_dynamic = irep_idt("#dynamic")
static const irep_idt a_cmt_base_name = irep_idt("#base_name")
static const irep_idt a_id_class = irep_idt("#id_class")
static const irep_idt a_cmt_identifier = irep_idt("#identifier")
static const irep_idt a_cformat = irep_idt("#cformat")
static const irep_idt a_cmt_width = irep_idt("#width")
static const irep_idt a_axiom = irep_idt("axiom")
static const irep_idt a_member_name = irep_idt("#member_name")
static const irep_idt a_cpp_type = irep_idt("#cpp_type")
static const irep_idt a_cmt_constant = irep_idt("#constant")
static const irep_idt a_default = irep_idt("default")
static const irep_idt a_ellipsis = irep_idt("ellipsis")
static const irep_idt a_explicit = irep_idt("explicit")
static const irep_idt a_file_local = irep_idt("file_local")
static const irep_idt a_hex_or_oct = irep_idt("#hex_or_oct")
static const irep_idt a_hide = irep_idt("#hide")
static const irep_idt a_implicit = irep_idt("#implicit")
static const irep_idt a_incomplete = irep_idt("#incomplete")
static const irep_idt a_initialization = irep_idt("initialization")
static const irep_idt a_inlined = irep_idt("#inlined")
static const irep_idt a_invalid_object = irep_idt("#invalid_object")
static const irep_idt a_is_parameter = irep_idt("is_parameter")
static const irep_idt a_is_expression = irep_idt("#is_expression")
static const irep_idt a_is_extern = irep_idt("is_extern")
static const irep_idt a_is_macro = irep_idt("is_macro")
static const irep_idt a_is_thread_local = irep_idt("is_thread_local")
static const irep_idt a_is_type = irep_idt("is_type")
static const irep_idt a_lvalue = irep_idt("lvalue")
static const irep_idt a_reference = irep_idt("#reference")
static const irep_idt a_static_lifetime = irep_idt("static_lifetime")
static const irep_idt a_theorem = irep_idt("theorem")
static const irep_idt a_cmt_unsigned = irep_idt("#unsigned")
static const irep_idt a_user_provided = irep_idt("user-provided")
static const irep_idt a_cmt_volatile = irep_idt("#volatile")
static const irep_idt a_zero_initializer = irep_idt("#zero_initializer")
static const irep_idt a_restricted = irep_idt("#restricted")
static const irep_idt a_flavor = irep_idt("flavor")
static const irep_idt a_cmt_active = irep_idt("#active")
static const irep_idt a_code = irep_idt("code")
static const irep_idt a_component = irep_idt("component")
static const irep_idt a_end_location = irep_idt("#end_location")
static const irep_idt a_guard = irep_idt("guard")
static const irep_idt a_label = irep_idt("label")
static const irep_idt a_lhs = irep_idt("lhs")
static const irep_idt a_location = irep_idt("location")
static const irep_idt a_object_type = irep_idt("object_type")
static const irep_idt a_cmt_size = irep_idt("#size")
static const irep_idt a_cmt
static const irep_idt a_type_id = irep_idt("typeid")
static const irep_idt a_cmt_type = irep_idt("#type")
static const irep_idt a_derived_this_arg = irep_idt("#derived_this_arg")
static const irep_idt a_base_ctor_derived = irep_idt("#base_ctor_derived")
static const irep_idt a_need_vptr_init = irep_idt("#need_vptr_init")
static const irep_idt id_address_of = irep_idt("address_of")
static const irep_idt id_and = irep_idt("and")
static const irep_idt id_or = irep_idt("or")
static const irep_idt id_array = irep_idt("array")
static const irep_idt id_bool = irep_idt("bool")
static const irep_idt id_code = irep_idt("code")
static const irep_idt id_constant = irep_idt("constant")
static const irep_idt id_dereference = irep_idt("dereference")
static const irep_idt id_empty = irep_idt("empty")
static const irep_idt id_fixedbv = irep_idt("fixedbv")
static const irep_idt id_floatbv = irep_idt("floatbv")
static const irep_idt id_incomplete_array = irep_idt("incomplete_array")
static const irep_idt id_index = irep_idt("index")
static const irep_idt id_member = irep_idt("member")
static const irep_idt id_not = irep_idt("not")
static const irep_idt id_notequal = irep_idt("notequal")
static const irep_idt id_pointer = irep_idt("pointer")
static const irep_idt id_signedbv = irep_idt("signedbv")
static const irep_idt id_struct = irep_idt("struct")
static const irep_idt id_symbol = irep_idt("symbol")
static const irep_idt id_typecast = irep_idt("typecast")
static const irep_idt id_union = irep_idt("union")
static const irep_idt id_unsignedbv = irep_idt("unsignedbv")
static const irep_idt id_vector = irep_idt("vector")
Protected Member Functions inherited from irept
void remove_ref (dt *old_data)
const dt & read () const
dt & write ()
void detatch ()
Static Protected Member Functions inherited from irept
static bool is_comment (const irep_idt &name)
Protected Attributes inherited from irept
dt * data
Static Protected Attributes inherited from exprt
static irep_idt o_operands = irep_idt("operands")
static irep_idt o_location = irep_idt("#location")

Detailed Description

A `switch' instruction */ class code_switcht : public codet { public: inline code_switcht() : codet("switch") { operands().resize(2); }.

inline const exprt &value() const { return op0(); }

inline exprt &value() { return op0(); }

inline const codet &body() const { return to_code(op1()); }

inline codet &body() { return static_cast<codet &>(op1()); } };

static inline const code_switcht &to_code_switch(const codet &code) { assert(code.get_statement() == "switch" && code.operands().size() == 2); return static_cast<const code_switcht &>(code); }

static inline code_switcht &to_code_switch(codet &code) { assert(code.get_statement() == "switch" && code.operands().size() == 2); return static_cast<code_switcht &>(code); }

/*! A `while' instruction */ class code_whilet : public codet { public: inline code_whilet() : codet("while") { operands().resize(2); }

inline const exprt &cond() const { return op0(); }

inline exprt &cond() { return op0(); }

inline const codet &body() const { return to_code(op1()); }

inline codet &body() { return static_cast<codet &>(op1()); } };

static inline const code_whilet &to_code_while(const codet &code) { assert(code.get_statement() == "while" && code.operands().size() == 2); return static_cast<const code_whilet &>(code); }

static inline code_whilet &to_code_while(codet &code) { assert(code.get_statement() == "while" && code.operands().size() == 2); return static_cast<code_whilet &>(code); }

/*! A `do while' instruction */ class code_dowhilet : public codet { public: inline code_dowhilet() : codet("dowhile") { operands().resize(2); }

inline const exprt &cond() const { return op0(); }

inline exprt &cond() { return op0(); }

inline const codet &body() const { return to_code(op1()); }

inline codet &body() { return static_cast<codet &>(op1()); } };

static inline const code_dowhilet &to_code_dowhile(const codet &code) { assert(code.get_statement() == "dowhile" && code.operands().size() == 2); return static_cast<const code_dowhilet &>(code); }

static inline code_dowhilet &to_code_dowhile(codet &code) { assert(code.get_statement() == "dowhile" && code.operands().size() == 2); return static_cast<code_dowhilet &>(code); }

/*! A `for' instruction */ class code_fort : public codet { public: inline code_fort() : codet("for") { operands().resize(4); }

nil or a statement inline const exprt &init() const { return op0(); }

inline exprt &init() { return op0(); }

inline const exprt &cond() const { return op1(); }

inline exprt &cond() { return op1(); }

inline const exprt &iter() const { return op2(); }

inline exprt &iter() { return op2(); }

inline const codet &body() const { return to_code(op3()); }

inline codet &body() { return static_cast<codet &>(op3()); } };

static inline const code_fort &to_code_for(const codet &code) { assert(code.get_statement() == "for" && code.operands().size() == 4); return static_cast<const code_fort &>(code); }

static inline code_fort &to_code_for(codet &code) { assert(code.get_statement() == "for" && code.operands().size() == 4); return static_cast<code_fort &>(code); }

/*! A `goto' instruction */ class code_gotot : public codet { public: inline code_gotot() : codet("goto") { }

explicit inline code_gotot(const irep_idt &label) : codet("goto") { set_destination(label); }

void set_destination(const irep_idt &label) { set("destination", label); }

const irep_idt &get_destination() const { return get("destination"); } };

static inline const code_gotot &to_code_goto(const codet &code) { assert(code.get_statement() == "goto" && code.operands().empty()); return static_cast<const code_gotot &>(code); }

static inline code_gotot &to_code_goto(codet &code) { assert(code.get_statement() == "goto" && code.operands().empty()); return static_cast<code_gotot &>(code); }

/*! A function call

The function call instruction has three operands. The first is the expression that is used to store the return value. The second is the function called. The third is a vector of argument values.

Member Typedef Documentation

◆ argumentst

Constructor & Destructor Documentation

◆ code_function_callt()

code_function_callt::code_function_callt ( )
inline

Member Function Documentation

◆ arguments() [1/2]

argumentst & code_function_callt::arguments ( )
inline

◆ arguments() [2/2]

const argumentst & code_function_callt::arguments ( ) const
inline

◆ function() [1/2]

exprt & code_function_callt::function ( )
inline

◆ function() [2/2]

const exprt & code_function_callt::function ( ) const
inline

◆ lhs() [1/2]

exprt & code_function_callt::lhs ( )
inline

◆ lhs() [2/2]

const exprt & code_function_callt::lhs ( ) const
inline

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