void c_typecheck_baset::implicit_typecast_arithmetic( exprt &expr1, exprt &expr2) { c_typecastt c_typecast(*this); c_typecast.implicit_typecast_arithmetic(expr1, expr2); }
bool c_implicit_typecast_arithmetic( exprt &expr1, exprt &expr2, const namespacet &ns) { c_typecastt c_typecast(ns); c_typecast.implicit_typecast_arithmetic(expr1, expr2); return !c_typecast.errors.empty(); }
bool c_implicit_typecast( exprt &expr, const typet &dest_type, const namespacet &ns) { c_typecastt c_typecast(ns); c_typecast.implicit_typecast(expr, dest_type); return !c_typecast.errors.empty(); }
bool check_c_implicit_typecast( const typet &src_type, const typet &dest_type, const namespacet &ns) { c_typecastt c_typecast(ns); exprt tmp; tmp.type()=src_type; c_typecast.implicit_typecast(tmp, dest_type); return !c_typecast.errors.empty(); }
void c_typecheck_baset::implicit_typecast( exprt &expr, const typet &dest_type) { c_typecastt c_typecast(*this); typet src_type=expr.type(); c_typecast.implicit_typecast(expr, dest_type); for(std::list<std::string>::const_iterator it=c_typecast.errors.begin(); it!=c_typecast.errors.end(); it++) { err_location(expr); str << "in expression `" << to_string(expr) << "':\n"; str << "conversion from `" << to_string(src_type) << "' to `" << to_string(dest_type) << "': " << *it; error(); } if(!c_typecast.errors.empty()) throw 0; // give up for(std::list<std::string>::const_iterator it=c_typecast.warnings.begin(); it!=c_typecast.warnings.end(); it++) { err_location(expr); str << "warning: conversion from `" << to_string(src_type) << "' to `" << to_string(dest_type) << "': " << *it; warning(); } }