Go to the documentation of this file.
26 if(op.type().id() == ID_struct)
50 if(parameters.size()>ops.size())
53 ops.reserve(parameters.size());
55 for(std::size_t i=ops.size(); i<parameters.size(); i++)
57 const exprt &default_value=
58 parameters[i].default_value();
63 ops.push_back(default_value);
66 else if(parameters.size()<ops.size())
73 exprt::operandst::iterator it=ops.begin();
74 for(
const auto ¶meter : parameters)
86 assert(it!=ops.end());
87 const exprt &operand=*it;
88 typet type=parameter.type();
93 std::cout <<
"O: " << operand.
pretty() <<
'\n';
100 if(it == ops.begin() && parameter.get_this())
102 type.
set(ID_C_reference,
true);
103 type.
set(ID_C_this,
true);
117 operand, type, new_expr, rank))
122 std::cout <<
"OK " << rank <<
'\n';
126 operand.
id() == ID_initializer_list &&
cpp_typecheck.cpp_is_pod(type) &&
136 std::cout <<
"NOT OK\n";
145 for( ; it!=ops.end(); ++it)
bool has_ellipsis() const
const unary_exprt & to_unary_expr(const exprt &expr)
Cast an exprt to a unary_exprt.
The type of an expression, extends irept.
std::vector< parametert > parameterst
std::string pretty(unsigned indent=0, unsigned max_indent=0) const
C++ Language Type Checking.
A side_effect_exprt representation of a function call side effect.
bool match(const code_typet &code_type, unsigned &distance, cpp_typecheckt &cpp_typecheck) const
exprt::operandst operands
Base class for all expressions.
bool cpp_typecheck(cpp_parse_treet &cpp_parse_tree, symbol_tablet &symbol_table, const std::string &module, message_handlert &message_handler)
typet & type()
Return the type of the expression.
void build(const side_effect_expr_function_callt &function_call)
const irep_idt & id() const
std::vector< exprt > operandst
const parameterst & parameters() const
bool has_class_type() const
C++ Language Type Checking.
bool is_reference(const typet &type)
Returns true if the type is a reference.
void set(const irep_namet &name, const irep_idt &value)
exprt::operandst & arguments()