#include <vector>
#include <map>
#include <types.h>
#include "expr_result.h"
Include dependency graph for implicit_conversion.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Compounds | |
struct | ICS_Step |
struct | ICS_Types |
class | Implicit_conversion |
Implicit Conversion Sequence (ICS). More... | |
Typedefs | |
typedef std::map< Function_signature *, int > | Conversion_op_map |
Functions | |
void | enumerate_conversion_ops (const Expr_result &expr, Conversion_op_map *output) |
void | gen_candidates (Expr_result expr, Type arg_type, Function_signature *symbol_hint, bool with_userdef, bool is_object, std::vector< Implicit_conversion * > *candidates) |
Generate all implicit conversion candidates for an expression. More... | |
Implicit_conversion * | generate_implicit_conversion (Expr_result expr, Type arg_type, Function_signature *symbol_hint, bool with_userdef, bool is_copy_initialisation, bool is_implicit_object_arg) |
Generate all ICS's and return the best one. More... |
|
Definition at line 27 of file implicit_conversion.h. Referenced by Overload_resolver::add_builtin_binary_ops(), Overload_resolver::add_builtin_incdec(), Overload_resolver::add_builtin_unary_ops(), Expr_annotator::do_funcall(), enumerate_conversion_ops(), gen_conv_ops(), and Annotator::visit_switch(). |
|
|
|
Generate all ICS's and return the best one. Returns an ambiguous sequence if conversion is ambiguous, null if impossible. Definition at line 1171 of file implicit_conversion.cc. References ICS_Types::c_CompareBeforeUserConversion, ICS_Types::c_CompareWithInitRules, ICS_Types::Compare, gen_candidates(), Expr_result::get_type(), Implicit_conversion::is_better_than(), Type::is_class_type(), Type::is_same_unqualified_type(), Type::is_void(), and Implicit_conversion::set_ambiguous(). Referenced by Overload_resolver::add_signature_with_type(), gen_candidates(), gen_constructors(), gen_conv_ops(), generate_ics_for_ternary(), Init_handler::get_default_initializer_for_type(), Init_handler::make_constructor_call(), Init_handler::process_brace(), Init_handler::process_class(), Expr_annotator::try_static_cast(), Expr_annotator::visit_assign(), Expr_annotator::visit_cond(), Annotator::visit_do(), Annotator::visit_for(), Annotator::visit_if(), Annotator::visit_return(), Annotator::visit_switch(), and Annotator::visit_while(). |