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

#include <c_expr2string.h>

Inheritance diagram for c_expr2stringt:
[legend]

Public Types

enum  flagst : unsigned { SHORT_ZERO_COMPOUNDS = 1 << 0 , UNIQUE_FLOAT_REPR = 1 << 1 }

Public Member Functions

 c_expr2stringt (const namespacet &_ns, unsigned _flags)
virtual ~c_expr2stringt ()=default
virtual std::string convert (const typet &src)
virtual std::string convert (const exprt &src)
void get_shorthands (const exprt &expr)

Protected Member Functions

virtual std::string convert_rec (const typet &src, const c_qualifierst &qualifiers, const std::string &declarator)
void get_symbols (const exprt &expr)
std::string id_shorthand (const exprt &expr) const
virtual std::string convert_typecast (const exprt &src, unsigned &precedence)
std::string convert_bitcast (const exprt &src, unsigned &precedence)
std::string convert_implicit_address_of (const exprt &src, unsigned &precedence)
std::string convert_binary (const exprt &src, const std::string &symbol, unsigned precedence, bool full_parentheses)
std::string convert_cond (const exprt &src, unsigned precedence)
std::string convert_struct_member_value (const exprt &src, unsigned precedence)
std::string convert_array_member_value (const exprt &src, unsigned precedence)
virtual std::string convert_member (const exprt &src, unsigned precedence)
std::string convert_pointer_object_has_type (const exprt &src, unsigned precedence)
virtual std::string convert_array_of (const exprt &src, unsigned precedence)
std::string convert_trinary (const exprt &src, const std::string &symbol1, const std::string &symbol2, unsigned precedence)
std::string convert_overflow (const exprt &src, unsigned &precedence)
std::string convert_quantifier (const exprt &src, const std::string &symbol, unsigned precedence)
std::string convert_with (const exprt &src, unsigned precedence)
std::string convert_index (const exprt &src, unsigned precedence)
std::string convert_byte_extract (const exprt &src, unsigned precedence)
std::string convert_byte_update (const exprt &src, unsigned precedence)
std::string convert_extractbit (const exprt &src, unsigned precedence)
std::string convert_sizeof (const exprt &src, unsigned precedence)
std::string convert_extract (const exprt &src)
std::string convert_unary (const exprt &src, const std::string &symbol, unsigned precedence)
std::string convert_unary_post (const exprt &src, const std::string &symbol, unsigned precedence)
std::string convert_function (const exprt &src, const std::string &symbol, unsigned precedence)
std::string convert_Hoare (const exprt &src)
std::string convert_code (const codet &src)
virtual std::string convert_code (const codet &src, unsigned indent)
std::string convert_code_label (const code_labelt &src, unsigned indent)
std::string convert_code_switch_case (const code_switch_caset &src, unsigned indent)
std::string convert_code_asm (const codet &src, unsigned indent)
virtual std::string convert_code_assign (const codet &src, unsigned indent)
virtual std::string convert_code_free (const codet &src, unsigned indent)
std::string convert_code_init (const codet &src, unsigned indent)
std::string convert_code_ifthenelse (const codet &src, unsigned indent)
std::string convert_code_for (const codet &src, unsigned indent)
std::string convert_code_while (const codet &src, unsigned indent)
std::string convert_code_dowhile (const codet &src, unsigned indent)
std::string convert_code_block (const codet &src, unsigned indent)
std::string convert_code_expression (const codet &src, unsigned indent)
virtual std::string convert_code_return (const codet &src, unsigned indent)
std::string convert_code_goto (const codet &src, unsigned indent)
std::string convert_code_gcc_goto (const codet &src, unsigned indent)
virtual std::string convert_code_assume (const codet &src, unsigned indent)
virtual std::string convert_code_assert (const codet &src, unsigned indent)
std::string convert_code_break (const codet &src, unsigned indent)
std::string convert_code_switch (const codet &src, unsigned indent)
std::string convert_code_continue (const codet &src, unsigned indent)
virtual std::string convert_code_decl (const codet &src, unsigned indent)
std::string convert_code_decl_block (const codet &src, unsigned indent)
std::string convert_code_dead (const codet &src, unsigned indent)
std::string convert_code_function_call (const code_function_callt &src, unsigned indent)
std::string convert_code_lock (const codet &src, unsigned indent)
std::string convert_code_unlock (const codet &src, unsigned indent)
virtual std::string convert_code_printf (const codet &src, unsigned indent)
virtual std::string convert (const exprt &src, unsigned &precedence)
std::string convert_function_call (const exprt &src, unsigned &precedence)
virtual std::string convert_malloc (const exprt &src, unsigned &precedence)
virtual std::string convert_realloc (const exprt &src, unsigned &precedence)
virtual std::string convert_alloca (const exprt &src, unsigned &precedence)
virtual std::string convert_nondet (const exprt &src, unsigned &precedence)
std::string convert_statement_expression (const exprt &src, unsigned &precedence)
virtual std::string convert_symbol (const exprt &src, unsigned &precedence)
std::string convert_predicate_symbol (const exprt &src, unsigned &precedence)
std::string convert_predicate_next_symbol (const exprt &src, unsigned &precedence)
std::string convert_nondet_symbol (const exprt &src, unsigned &precedence)
std::string convert_quantified_symbol (const exprt &src, unsigned &precedence)
std::string convert_nondet_bool (const exprt &src, unsigned &precedence)
std::string convert_object_descriptor (const exprt &src, unsigned &precedence)
virtual std::string convert_constant (const exprt &src, unsigned &precedence)
std::string convert_norep (const exprt &src, unsigned &precedence)
virtual std::string convert_struct_union_body (const exprt &src, const exprt::operandst &operands, const struct_union_typet::componentst &components)
virtual std::string convert_struct (const exprt &src, unsigned &precedence)
virtual std::string convert_union (const exprt &src, unsigned &precedence)
std::string convert_array (const exprt &src, unsigned &precedence)
std::string convert_array_list (const exprt &src, unsigned &precedence)
std::optional< std::string > is_recursively_zero (const exprt &op)

Static Protected Member Functions

static std::string indent_str (unsigned indent)

Protected Attributes

const namespacet & ns
unsigned flags
std::set< exprt > symbols
std::map< irep_idt, exprt > shorthands
std::set< irep_idt > ns_collision

Member Enumeration Documentation

◆ flagst

Enumerator
SHORT_ZERO_COMPOUNDS 

Special case constant zero expressions where C allows a shorter output such as { 0 } for arrays, vectors, structs and unions.

UNIQUE_FLOAT_REPR 

Output enough fractional digits such that the float can be recovered uniquely.

If this flag is not set, the default precision is given by the format_spect constructor.

Constructor & Destructor Documentation

◆ c_expr2stringt()

c_expr2stringt::c_expr2stringt ( const namespacet & _ns,
unsigned _flags )
inline

◆ ~c_expr2stringt()

virtual c_expr2stringt::~c_expr2stringt ( )
virtualdefault

Member Function Documentation

◆ convert() [1/3]

std::string c_expr2stringt::convert ( const exprt & src)
virtual

Reimplemented in cpp_expr2stringt, and expr2ct.

◆ convert() [2/3]

std::string c_expr2stringt::convert ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in cpp_expr2stringt, and expr2ct.

◆ convert() [3/3]

std::string c_expr2stringt::convert ( const typet & src)
virtual

Reimplemented in cpp_expr2stringt, and expr2ct.

◆ convert_alloca()

std::string c_expr2stringt::convert_alloca ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_array()

std::string c_expr2stringt::convert_array ( const exprt & src,
unsigned & precedence )
protected

◆ convert_array_list()

std::string c_expr2stringt::convert_array_list ( const exprt & src,
unsigned & precedence )
protected

◆ convert_array_member_value()

std::string c_expr2stringt::convert_array_member_value ( const exprt & src,
unsigned precedence )
protected

◆ convert_array_of()

std::string c_expr2stringt::convert_array_of ( const exprt & src,
unsigned precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_binary()

std::string c_expr2stringt::convert_binary ( const exprt & src,
const std::string & symbol,
unsigned precedence,
bool full_parentheses )
protected

◆ convert_bitcast()

std::string c_expr2stringt::convert_bitcast ( const exprt & src,
unsigned & precedence )
protected

◆ convert_byte_extract()

std::string c_expr2stringt::convert_byte_extract ( const exprt & src,
unsigned precedence )
protected

◆ convert_byte_update()

std::string c_expr2stringt::convert_byte_update ( const exprt & src,
unsigned precedence )
protected

◆ convert_code() [1/2]

std::string c_expr2stringt::convert_code ( const codet & src)
protected

◆ convert_code() [2/2]

std::string c_expr2stringt::convert_code ( const codet & src,
unsigned indent )
protectedvirtual

Reimplemented in cpp_expr2stringt.

◆ convert_code_asm()

std::string c_expr2stringt::convert_code_asm ( const codet & src,
unsigned indent )
protected

◆ convert_code_assert()

std::string c_expr2stringt::convert_code_assert ( const codet & src,
unsigned indent )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_code_assign()

std::string c_expr2stringt::convert_code_assign ( const codet & src,
unsigned indent )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_code_assume()

std::string c_expr2stringt::convert_code_assume ( const codet & src,
unsigned indent )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_code_block()

std::string c_expr2stringt::convert_code_block ( const codet & src,
unsigned indent )
protected

◆ convert_code_break()

std::string c_expr2stringt::convert_code_break ( const codet & src,
unsigned indent )
protected

◆ convert_code_continue()

std::string c_expr2stringt::convert_code_continue ( const codet & src,
unsigned indent )
protected

◆ convert_code_dead()

std::string c_expr2stringt::convert_code_dead ( const codet & src,
unsigned indent )
protected

◆ convert_code_decl()

std::string c_expr2stringt::convert_code_decl ( const codet & src,
unsigned indent )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_code_decl_block()

std::string c_expr2stringt::convert_code_decl_block ( const codet & src,
unsigned indent )
protected

◆ convert_code_dowhile()

std::string c_expr2stringt::convert_code_dowhile ( const codet & src,
unsigned indent )
protected

◆ convert_code_expression()

std::string c_expr2stringt::convert_code_expression ( const codet & src,
unsigned indent )
protected

◆ convert_code_for()

std::string c_expr2stringt::convert_code_for ( const codet & src,
unsigned indent )
protected

◆ convert_code_free()

std::string c_expr2stringt::convert_code_free ( const codet & src,
unsigned indent )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_code_function_call()

std::string c_expr2stringt::convert_code_function_call ( const code_function_callt & src,
unsigned indent )
protected

◆ convert_code_gcc_goto()

std::string c_expr2stringt::convert_code_gcc_goto ( const codet & src,
unsigned indent )
protected

◆ convert_code_goto()

std::string c_expr2stringt::convert_code_goto ( const codet & src,
unsigned indent )
protected

◆ convert_code_ifthenelse()

std::string c_expr2stringt::convert_code_ifthenelse ( const codet & src,
unsigned indent )
protected

◆ convert_code_init()

std::string c_expr2stringt::convert_code_init ( const codet & src,
unsigned indent )
protected

◆ convert_code_label()

std::string c_expr2stringt::convert_code_label ( const code_labelt & src,
unsigned indent )
protected

◆ convert_code_lock()

std::string c_expr2stringt::convert_code_lock ( const codet & src,
unsigned indent )
protected

◆ convert_code_printf()

std::string c_expr2stringt::convert_code_printf ( const codet & src,
unsigned indent )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_code_return()

std::string c_expr2stringt::convert_code_return ( const codet & src,
unsigned indent )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_code_switch()

std::string c_expr2stringt::convert_code_switch ( const codet & src,
unsigned indent )
protected

◆ convert_code_switch_case()

std::string c_expr2stringt::convert_code_switch_case ( const code_switch_caset & src,
unsigned indent )
protected

◆ convert_code_unlock()

std::string c_expr2stringt::convert_code_unlock ( const codet & src,
unsigned indent )
protected

◆ convert_code_while()

std::string c_expr2stringt::convert_code_while ( const codet & src,
unsigned indent )
protected

◆ convert_cond()

std::string c_expr2stringt::convert_cond ( const exprt & src,
unsigned precedence )
protected

◆ convert_constant()

std::string c_expr2stringt::convert_constant ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in cpp_expr2stringt, and expr2ct.

◆ convert_extract()

std::string c_expr2stringt::convert_extract ( const exprt & src)
protected

◆ convert_extractbit()

std::string c_expr2stringt::convert_extractbit ( const exprt & src,
unsigned precedence )
protected

◆ convert_function()

std::string c_expr2stringt::convert_function ( const exprt & src,
const std::string & symbol,
unsigned precedence )
protected

◆ convert_function_call()

std::string c_expr2stringt::convert_function_call ( const exprt & src,
unsigned & precedence )
protected

◆ convert_Hoare()

std::string c_expr2stringt::convert_Hoare ( const exprt & src)
protected

◆ convert_implicit_address_of()

std::string c_expr2stringt::convert_implicit_address_of ( const exprt & src,
unsigned & precedence )
protected

◆ convert_index()

std::string c_expr2stringt::convert_index ( const exprt & src,
unsigned precedence )
protected

◆ convert_malloc()

std::string c_expr2stringt::convert_malloc ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_member()

std::string c_expr2stringt::convert_member ( const exprt & src,
unsigned precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_nondet()

std::string c_expr2stringt::convert_nondet ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_nondet_bool()

std::string c_expr2stringt::convert_nondet_bool ( const exprt & src,
unsigned & precedence )
protected

◆ convert_nondet_symbol()

std::string c_expr2stringt::convert_nondet_symbol ( const exprt & src,
unsigned & precedence )
protected

◆ convert_norep()

std::string c_expr2stringt::convert_norep ( const exprt & src,
unsigned & precedence )
protected

◆ convert_object_descriptor()

std::string c_expr2stringt::convert_object_descriptor ( const exprt & src,
unsigned & precedence )
protected

◆ convert_overflow()

std::string c_expr2stringt::convert_overflow ( const exprt & src,
unsigned & precedence )
protected

◆ convert_pointer_object_has_type()

std::string c_expr2stringt::convert_pointer_object_has_type ( const exprt & src,
unsigned precedence )
protected

◆ convert_predicate_next_symbol()

std::string c_expr2stringt::convert_predicate_next_symbol ( const exprt & src,
unsigned & precedence )
protected

◆ convert_predicate_symbol()

std::string c_expr2stringt::convert_predicate_symbol ( const exprt & src,
unsigned & precedence )
protected

◆ convert_quantified_symbol()

std::string c_expr2stringt::convert_quantified_symbol ( const exprt & src,
unsigned & precedence )
protected

◆ convert_quantifier()

std::string c_expr2stringt::convert_quantifier ( const exprt & src,
const std::string & symbol,
unsigned precedence )
protected

◆ convert_realloc()

std::string c_expr2stringt::convert_realloc ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_rec()

std::string c_expr2stringt::convert_rec ( const typet & src,
const c_qualifierst & qualifiers,
const std::string & declarator )
protectedvirtual

int vector [3] / | type size

Reimplemented in cpp_expr2stringt, and expr2ct.

◆ convert_sizeof()

std::string c_expr2stringt::convert_sizeof ( const exprt & src,
unsigned precedence )
protected

◆ convert_statement_expression()

std::string c_expr2stringt::convert_statement_expression ( const exprt & src,
unsigned & precedence )
protected

◆ convert_struct()

std::string c_expr2stringt::convert_struct ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in cpp_expr2stringt, and expr2ct.

◆ convert_struct_member_value()

std::string c_expr2stringt::convert_struct_member_value ( const exprt & src,
unsigned precedence )
protected

◆ convert_struct_union_body()

std::string c_expr2stringt::convert_struct_union_body ( const exprt & src,
const exprt::operandst & operands,
const struct_union_typet::componentst & components )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_symbol()

std::string c_expr2stringt::convert_symbol ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_trinary()

std::string c_expr2stringt::convert_trinary ( const exprt & src,
const std::string & symbol1,
const std::string & symbol2,
unsigned precedence )
protected

◆ convert_typecast()

std::string c_expr2stringt::convert_typecast ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_unary()

std::string c_expr2stringt::convert_unary ( const exprt & src,
const std::string & symbol,
unsigned precedence )
protected

◆ convert_unary_post()

std::string c_expr2stringt::convert_unary_post ( const exprt & src,
const std::string & symbol,
unsigned precedence )
protected

◆ convert_union()

std::string c_expr2stringt::convert_union ( const exprt & src,
unsigned & precedence )
protectedvirtual

Reimplemented in expr2ct.

◆ convert_with()

std::string c_expr2stringt::convert_with ( const exprt & src,
unsigned precedence )
protected

◆ get_shorthands()

void c_expr2stringt::get_shorthands ( const exprt & expr)

◆ get_symbols()

void c_expr2stringt::get_symbols ( const exprt & expr)
protected

◆ id_shorthand()

std::string c_expr2stringt::id_shorthand ( const exprt & expr) const
protected

◆ indent_str()

std::string c_expr2stringt::indent_str ( unsigned indent)
staticprotected

◆ is_recursively_zero()

std::optional< std::string > c_expr2stringt::is_recursively_zero ( const exprt & op)
protected

Member Data Documentation

◆ flags

unsigned c_expr2stringt::flags
protected

◆ ns

const namespacet& c_expr2stringt::ns
protected

◆ ns_collision

std::set<irep_idt> c_expr2stringt::ns_collision
protected

◆ shorthands

std::map<irep_idt, exprt> c_expr2stringt::shorthands
protected

◆ symbols

std::set<exprt> c_expr2stringt::symbols
protected

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