lestes::lang::cplus::sem Namespace Reference


Classes

class  as_access_specifier_to_ss_access_specifier
 FIXME Base abstract class for functionals, representing function call. More...
class  as_access_specifier_visitor
class  as_base_specifier_to_ss_base_specifier
 FIXME Base abstract class for functionals, representing function call. More...
class  as_class_key_to_ss_access_specifier
 FIXME Base abstract class for functionals, representing function call. More...
class  as_class_key_to_ss_struct_base
 FIXME Base abstract class for functionals, representing function call. More...
class  as_class_key_visitor
class  as_cv_qualifier2ss_type
 CV qualification for ss_type. More...
class  as_cv_qualifier_visitor
class  as_string_literal
class  as_declaration
class  as_block_declaration
class  as_simple_declaration
class  as_init_declarator
class  as_initializer
class  as_initializer_expression_list
class  as_initializer_clause
class  as_initializer_clause_expression
class  as_initializer_clause_braced
class  as_function_definition
class  as_template_declaration
class  as_template_param
class  as_template_type_param
class  as_template_type_param_type
class  as_template_type_param_template
class  as_template_nontype_param
class  as_mem_initializer
class  as_explicit_instantiation
class  as_explicit_specialization
class  as_linkage_specification
class  as_id
class  as_template_id
 FIXME. More...
class  as_identifier
class  as_destructor_id
class  as_destructor_id_token
class  as_destructor_id_template
class  as_constructor_id
 Id for constructors. More...
class  as_op_function_id
class  as_conv_function_id
class  as_empty_id
 Used in as_name in name-less classes, for example. More...
class  as_global_namespace_fake_id
class  as_name
 The class as_name represents an occurence of name in the C++ program. More...
class  as_base_specifier
class  as_asm_declaration
class  as_gnu_asm_declaration
class  as_gnu_asm_specification
class  as_namespace_alias_declaration
class  as_namespace_definition
class  as_using
class  as_using_declaration
class  as_using_declaration_with_typename
class  as_access_declaration
 Access declaration, [11.3]. More...
class  as_using_directive
class  as_enumerator_definition
class  as_param_declaration
class  as_access_specifier
class  as_access_specifier_public
class  as_access_specifier_protected
class  as_access_specifier_private
class  as_param_decl_clause
class  as_declaration_specifier
 Abstract base for declaration specifiers. More...
class  as_function_specifier
class  as_function_specifier_inline
class  as_function_specifier_virtual
class  as_function_specifier_explicit
class  as_friend_specifier
class  as_typedef_specifier
class  as_storage_class_specifier
class  as_storage_class_specifier_auto
class  as_storage_class_specifier_register
class  as_storage_class_specifier_static
class  as_storage_class_specifier_extern
class  as_storage_class_specifier_mutable
class  as_type_specifier
 Abstract base class for type specifiers. More...
class  as_enumeration_specifier
class  as_simple_type_specifier
 Abstract base class for simple type specifiers. More...
class  as_builtin_simple_type_specifier
class  as_char_simple_type_specifier
 Simple type specifier class representing the keyword char. More...
class  as_wchar_t_simple_type_specifier
 Simple type specifier class representing the keyword wchar_t. More...
class  as_bool_simple_type_specifier
 Simple type specifier class representing the keyword bool. More...
class  as_short_simple_type_specifier
 Simple type specifier class representing the keyword short. More...
class  as_int_simple_type_specifier
 Simple type specifier class representing the keyword int. More...
class  as_long_simple_type_specifier
 Simple type specifier class representing the keyword long. More...
class  as_signed_simple_type_specifier
 Simple type specifier class representing the keyword signed. More...
class  as_unsigned_simple_type_specifier
 Simple type specifier class representing the keyword unsigned. More...
class  as_float_simple_type_specifier
 Simple type specifier class representing the keyword float. More...
class  as_double_simple_type_specifier
 Simple type specifier class representing the keyword double. More...
class  as_void_simple_type_specifier
 Simple type specifier class representing the keyword void. More...
class  as_cv_qualifier
 Abstract base for cv-qualifiers. More...
class  as_cv_qualifier_const
class  as_cv_qualifier_volatile
class  as_cv_qualifier_restrict
 Restrict qualifier -- C99 specific. More...
class  as_elaborated_type_specifier
class  as_named_simple_type_specifier
class  as_exception_specification
class  as_elaborated_type_specifier_typename
class  as_elaborated_type_specifier_tagged
class  as_elaborated_type_specifier_class_key
class  as_elaborated_type_specifier_enum
class  as_template_argument
class  as_non_type_template_argument
class  as_type_template_argument
class  as_declarator
class  as_dummy_declarator
 Dummy node, used when creating as_function_definition that just bears the data for later use (eg. in _func_try_block). More...
class  as_declarator_op
class  as_declarator_op_ptr
class  as_ptr_op_star
class  as_ptr_op_amp
class  as_ptr_op_member_ptr
class  as_declarator_op_func
class  as_declarator_op_array
class  as_declarator_op_non_constant_array
class  as_type_id
class  as_class_key
class  as_class_key_class
class  as_class_key_struct
class  as_class_key_union
class  as_member_declaration
class  as_member_using_declaration
class  as_member_template_declaration
class  as_member_function_definition
class  as_member_declaration_ordinary
class  as_member_declarator
class  as_bitfield_member_declarator
class  as_ordinary_member_declarator
class  as_initialized_member_declarator
class  as_pure_member_declarator
class  as_class_specifier
class  as_class_forward_member_declaration
class  as_class_forward_declaration
class  as_declaration_specifier2is_void
 Tests void specifier. More...
class  as_declaration_specifier2properties
 Declaration specifier visitor. More...
class  as_declaration_specifier_visitor
class  as_declaration_specifier2is_void_base
class  as_declarator_op2op_func
 Function declarator operator recognition. More...
class  as_declarator_op2ss_type
 Declarator operator visitor. More...
class  as_declarator_op_visitor
class  as_declarator_op_default_visitor
class  as_expression
class  as_empty_expression
class  as_binary_expression
class  as_unary_expression
class  as_ternary_expression
class  as_expression_qmark
class  as_expression_comma
class  as_expression_equal
class  as_expression_plus_equal
class  as_expression_minus_equal
class  as_expression_star_equal
class  as_expression_slash_equal
class  as_expression_percent_equal
class  as_expression_hat_equal
class  as_expression_amp_equal
class  as_expression_vbar_equal
class  as_expression_less_less_equal
class  as_expression_greater_greater_equal
class  as_expression_equal_equal
class  as_expression_exclam_equal
class  as_expression_less_equal
class  as_expression_greater_equal
class  as_expression_less
class  as_expression_greater
class  as_expression_vbar_vbar
class  as_expression_amp_amp
class  as_expression_vbar
class  as_expression_amp
class  as_expression_hat
class  as_expression_less_less
class  as_expression_greater_greater
class  as_expression_plus
class  as_expression_minus
class  as_expression_star
class  as_expression_slash
class  as_expression_percent
class  as_expression_dot_star
class  as_expression_minus_greater_star
class  as_expression_brackets
class  as_expression_plus_plus_pre
class  as_expression_plus_plus_post
class  as_expression_minus_minus_pre
class  as_expression_minus_minus_post
class  as_expression_unary_amp
class  as_expression_unary_plus
class  as_expression_unary_minus
class  as_expression_unary_star
class  as_expression_tilde
class  as_expression_exclam
class  as_expression_sizeof_expr
class  as_expression_typeid_expr
class  as_expression_delete_base
class  as_expression_delete
class  as_expression_delete_array
class  as_expression_throw
 The expression is set to empty expression when lone 'throw' is found. More...
class  as_expression_sizeof_type
class  as_expression_typeid_type
class  as_expression_new
class  as_this_expression
class  as_literal
class  as_name_expression
 corresponds to id_expr in the grammar/norm More...
class  as_expression_cast_base
class  as_expression_cast_base_one
class  as_expression_cast_base_list
class  as_expression_reinterpret_cast
class  as_expression_dynamic_cast
class  as_expression_static_cast
class  as_expression_const_cast
class  as_expression_old_style_cast
class  as_expression_functional_style_cast
class  as_postfix_expression
class  as_expression_member_access
class  as_expression_member_access_dot
class  as_expression_member_access_arrow
class  as_expression_pseudo_destruct_dot
class  as_expression_pseudo_destruct_arrow
class  as_expression_function_call
class  as_constant_expression
class  as_id_to_declaration_set
 Extractor of ss_declaration set from as_id. More...
class  as_id_to_ss_decl_name
 Convertor from as_id to ss_decl_name. More...
class  as_id_visitor
class  as_no_token
class  as_statement_seq
class  as_expression_list
class  as_declarator_op_seq
class  as_mem_initializer_list
class  as_cv_qualifier_seq
class  as_enumerator_list
class  as_base_specifier_list
class  as_template_param_list
class  as_init_declarator_list
class  as_param_declaration_list
class  as_initializer_list
class  as_handler_seq
class  as_type_id_list
class  as_template_argument_list
class  as_declaration_seq
class  as_member_declarator_list
class  as_declaration_specifier_seq
class  as_type_specifier_seq
class  as_member_specification
class  as_anyid_opt_bearer
class  as_excptn_spec_opt_bearer
class  as_virtual_opt_bearer
class  as_access_spec_opt_bearer
class  as_statement
class  as_dummy_statement
class  as_labeled_statement
class  as_default_labeled_statement
class  as_case_labeled_statement
class  as_identifier_labeled_statement
class  as_compound_statement
class  as_expression_statement
class  as_selection_statement
class  as_if_statement
class  as_switch_statement
class  as_iteration_statement
class  as_do_statement
class  as_while_statement
class  as_for_statement
class  as_for_init_statement
class  as_for_init_statement_expression
class  as_for_init_statement_declaration
class  as_condition
class  as_empty_condition
class  as_condition_expression
class  as_condition_declaration
class  as_jump_statement
class  as_break_statement
class  as_continue_statement
class  as_return_statement
class  as_goto_statement
class  as_declaration_statement
class  as_try_block_statement
class  as_handler
class  as_exception_declaration
class  as_exception_declaration_any_type
class  as_exception_declaration_single_type
class  as_exception_declaration_single_type_with_variable
class  as_expr_visitor
class  abstract_sa_expression_converter
class  as_statement_visitor
class  as_initializer_clause_visitor
 Used to convert as_initializer_clause to ss_expression list. More...
class  as_condition_visitor
 Used to convert as_condition to ss_expression. More...
class  lex_literal_to_ss_literal_info
 FIXME Base abstract class for functionals, representing function call. More...
class  li_by_name_in_single_scope
 Lookup of name in single scope. More...
class  li_class_by_name_in_single_scope
 FIXME. More...
class  li_func_by_name
 This is for purpose of searching for function/method by name in all scopes (current + parents). More...
class  li_func_by_name_in_single_scope
 This is for purpose of searching for function/method by name in all scopes (current + parents). More...
class  li_non_secu_by_name_in_single_scope
 Lookup of non-secu name in single scope. More...
class  lu_filter
class  lu_multi_filter
class  lu_yes_cont_filter
class  lu_yes_filter
class  lu_struct_filter
class  lu_namespace_filter
class  lu_elaborated_filter
class  lu_qual_filter
 [3.4.3/1] More...
class  lu_func_cont_filter
class  lu_name_filter
class  lu_visible_filter
class  lu_secu_filter
 Filters class-like and enum declaration. More...
class  lu_inversion_filter
 Inversion filter. More...
class  lu_params
class  lu_lookup
class  lu_lookup_in_type
class  or_builtin_operator_declaration_creator
 Singleton class for purposes of creation of buitltin operator delcarations. More...
class  or_or_functional_to_enum
class  or_ics_functional
 Base abstract class for functionals, representing conversion sequences. More...
class  or_ics_functional_for_std_conversion
class  or_ics_functional_for_arr_ptr_conversion
class  or_ics_functional_for_reference_bind_conversion
class  or_ics_functional_for_bind_to_temporary_conversion
class  or_ics_functional_for_lval_rval_conversion
class  or_ics_functional_for_user_conversion_by_constructor
class  or_ics_functional_for_user_conversion_by_conversion_function
class  or_ics_functional_for_compound_conversion
class  or_ics_functional_visitor
class  or_ics_visitor_cv
class  or_ics_visitor_tgts
class  or_or_functional
 Base abstract class for functionals, representing function call. More...
class  or_or_functional_concrete
 This is the concrete implementation of functional creating the ss_expression for the non-ambiguous case. More...
class  or_or_functional_comma
 This is the concrete implementation of functional creating the ss_expression for the comma case (this has to be handled separately, as comma can be used for infinitely many types. More...
class  or_or_functional_addrof
 This is the concrete implementation of functional creating the ss_expression for the address_of case (this has to be handled separately, as unary and can be used for infinitely many types. More...
class  or_or_functional_literal
 This is the concrete implementation of functional creating the ss_expression for the literal case. More...
class  or_or_functional_func_decl_set
 This functional holds list of function declarations, from which later the correct one, for creation ss_?funcall is chosen (this is used in sa_deconstruct_spse::visit_as_name_expression(). More...
class  or_or_functional_decl
 This is the functional resembling the or_or_functional_func_decl_set. The difference is that this is for the case where only one (but we generally don't know what is the declaration of) declaration is returned. (this is used in sa_deconstruct_spse::visit_as_name_expression() and then for decission in sa_deconstruct_spse::visit_as_expression_function_call(). More...
class  or_or_functional_ambiguous
 This is the concrete implementation of functional creating the ss_expression for the ambiguous case. More...
class  or_or_functional_noviable
 This is the concrete implementation of functional creating the ss_expression for the no-viables-found case. More...
class  or_or_functional_this
 This is the concrete implementation of functional creating the ss_expression for the case of operator 'this'. More...
class  or_declaration_helper
 This is declaration over ss_declaration, which helps us distinguish in which case we are (function/method/builtin operator). More...
class  or_builtin_operator_expression_creator
 This class contains methods for the actual creation of ss_expression for builtin operator. More...
class  or_funcall_creator
 This class contains methods for the actual creation of ss_expression for function call. More...
class  or_funcall_creator_context
 TODO: does this have any use?? More...
class  or_ics_base
class  or_ics_base_cv
class  or_ics_functional_base
class  or_or_functional_visitor
class  sa_class_declaration
 FIXME Base abstract class for functionals, representing function call. More...
class  declaration_context
 Declaration context enumeration wrapper. More...
class  sa_context_stack_marker
class  sa_context_manager
 The context manager for sa. More...
class  sa_context_manager_concrete
class  sa_context
 The context for sa. More...
class  sa_as_context
 The as context. More...
class  sa_ss_context
 The ss context. More...
class  sa_sa_context
 The ss context. More...
class  sa_decl_seq_compound_pair_creator
 FIXME Base abstract class for functionals, representing function call. More...
class  sa_declaration_specifier_list
 Declaration specifier list structural analyser. More...
class  sa_declaration_specifiers
 Analysed declaration specifiers. More...
class  sa_declarator_type
 Declarator structural analyser. More...
class  ss_decl_to_enum
class  sa_deconstruct_spse
class  sa_namespace_definition
class  sa_param_declaration
 Parameter declaration structural analyser. More...
class  sa_param_declaration_empty
 Empty parameter declaration checker. More...
class  sa_param_declaration_type
 Parameter declaration structural analyser. More...
class  sa_scope_of_as_name
 Extracts information about a name's scope. More...
class  sa_simple_declaration
 Simple declaration analyser. More...
class  sa_statements
 Main visitor for statements SA. More...
class  decl_stmt_listener
class  last_declaration_memorizer
class  initializer_clause_converter
class  condition_to_expression
class  sa_expression_converter
 Visitor to transform AS expressions to SS and convert them to given type. More...
class  get_real_declaration
 If the declaration is a fake declaration, this visitor gets a real declaration from it. Otherwise it returns its input. More...
class  sa_usings
 FIXME Base abstract class for functionals, representing function call. More...
class  ss_decl2mangled_name
 Visitor that returns string representation of ss_declaration as defined by GNU GCC mangling rules. More...
class  ss_decl2id
 Visitor that returns identification of a descandant of ss_declaration. More...
class  ss_decl_name
 Abstract class for declaration names. More...
class  ss_ordinary_name
 Class for ordinary name declaration. More...
class  ss_conversion_name
 Class for ordinary name declaration. More...
class  ss_operator
 Class for operators. More...
class  ss_dummy_name
 Dummy name, used in ss_dummy_declaration. More...
class  ss_operator_new
 This class represents the name of operator new . More...
class  ss_operator_delete
 This class represents the name of operator delete . More...
class  ss_operator_new_array
 This class represents the name of operator new[] . More...
class  ss_operator_delete_array
 This class represents the name of operator delete[] . More...
class  ss_operator_add
 This class represents the name of operator + . More...
class  ss_operator_sub
 This class represents the name of operator - . More...
class  ss_operator_mul
 This class represents the name of operator * . More...
class  ss_operator_div
 This class represents the name of operator / . More...
class  ss_operator_mod
 This class represents the name of operator %% . More...
class  ss_operator_bxor
 This class represents the name of operator ^ . More...
class  ss_operator_band
 This class represents the name of operator & . More...
class  ss_operator_bor
 This class represents the name of operator | . More...
class  ss_operator_bnot
 This class represents the name of operator ~ . More...
class  ss_operator_lnot
 This class represents the name of operator ! . More...
class  ss_operator_assign
 This class represents the name of operator = . More...
class  ss_operator_assign_add
 This class represents the name of operator += . More...
class  ss_operator_assign_sub
 This class represents the name of operator -= . More...
class  ss_operator_assign_mul
 This class represents the name of operator *= . More...
class  ss_operator_assign_div
 This class represents the name of operator /= . More...
class  ss_operator_assign_mod
 This class represents the name of operator %= . More...
class  ss_operator_assign_bxor
 This class represents the name of operator ^= . More...
class  ss_operator_assign_band
 This class represents the name of operator &= . More...
class  ss_operator_assign_bor
 This class represents the name of operator |= . More...
class  ss_operator_assign_shl
 This class represents the name of operator <<= . More...
class  ss_operator_assign_shr
 This class represents the name of operator >>= . More...
class  ss_operator_shr
 This class represents the name of operator >> . More...
class  ss_operator_shl
 This class represents the name of operator << . More...
class  ss_operator_sbl
 This class represents the name of operator < . More...
class  ss_operator_sbg
 This class represents the name of operator > . More...
class  ss_operator_sbng
 This class represents the name of operator <= . More...
class  ss_operator_sbnl
 This class represents the name of operator >= . More...
class  ss_operator_sbe
 This class represents the name of operator == . More...
class  ss_operator_sbne
 This class represents the name of operator != . More...
class  ss_operator_land
 This class represents the name of operator && . More...
class  ss_operator_lor
 This class represents the name of operator || . More...
class  ss_operator_inc
 This class represents the name of operator ++ . More...
class  ss_operator_dec
 This class represents the name of operator -- . More...
class  ss_operator_comma
 This class represents the name of operator , . More...
class  ss_operator_access
 This class represents the name of operator -> . More...
class  ss_operator_access_member
 This class represents the name of operator ->* . More...
class  ss_operator_function_call
 This class represents the name of operator () . More...
class  ss_operator_array
 This class represents the name of operator [] . More...
class  ss_operator_ternary
 This class represents the name of operator ?: . More...
class  ss_decl_name2mangled_name
 Returns string representation of a ss_decl_name. More...
class  ss_decl_name_matcher
class  ss_decl_name_visitor
class  ss_decl_name2lstring_base
class  ss_declaration
 Class for declarations. More...
class  ss_namespace_definition
class  ss_declaration_with_access_specifier
class  ss_object_declaration
 A variable is an object in the terms of the norm. More...
class  ss_bitfield_declaration
class  ss_parameter_declaration
class  ss_fake_declaration
 Fake declaration is used to prohibit redeclaration of an object. More...
class  ss_injected_class_declaration
 The injected class name declaration. More...
class  ss_enum_definition
class  ss_typedef_definition
class  ss_enumerator_declaration
class  ss_befriendable_declaration
 Class for declarations that can be friends of a class. More...
class  ss_structure_declaration
 Class for declarations that can be friends of a class. More...
class  ss_function_declaration
 Class for function definition. More...
class  ss_method_declaration
 Method declaration for a class. More...
class  ss_using_declaration
class  ss_dummy_declaration
class  ss_compound_stmt_declaration
 Dummy declaration of compound statement. More...
class  ss_builtin_operator_declaration
 This class represents concieved declaration for builtin operators. More...
class  ss_linkage
class  ss_declaration2ss_function_declaration
 Declaration convertor. More...
class  ss_declaration2ss_namespace_definition
 Declaration convertor. More...
class  ss_declaration2ss_object_declaration
 Declaration convertor. More...
class  ss_declaration2ss_structure_declaration
 Declaration convertor. More...
class  ss_declaration2ss_typedef_definition
 Declaration convertor. More...
class  ss_declaration_to_ss_decl_seq
class  ss_declaration_visitor
class  ss_declaration_default_visitor
class  ss_decl2pi_default
class  ss_decl2ulint_base
class  ss_decl2lstring_base
class  ss_access_specifier
 Access specifier enumeration wrapper. More...
class  ss_storage_class
 Storage class enumeration wrapper. More...
class  ss_assign
 Class for assignement binary operator (=). More...
class  ss_add
 Class for addition binary operator (+). More...
class  ss_sub
 Class for subtraction binary operator (-). More...
class  ss_mul
 Class for multiplication binary operator (*). More...
class  ss_div
 Class for division binary operator (/). More...
class  ss_mod
 Class for modulo/reminder binary operator (%%). More...
class  ss_shr
 Class for right shift binary operator (>>). More...
class  ss_shl
 Class for left shift binary operator (<<). More...
class  ss_sbg
 Class for "greater than" binary operator (>). More...
class  ss_sbl
 Class for "less than" binary operator (<). More...
class  ss_sbng
 Class for "not greater than" binary operator (<=). More...
class  ss_sbnl
 Class for "not less than" binary operator (>=). More...
class  ss_sbne
 Class for "not equal" binary operator (!=). More...
class  ss_sbe
 Class for equality binary operator (==). More...
class  ss_band
 Class for bitwise and binary operator (&). More...
class  ss_bor
 Class for bitwise or binary operator (|). More...
class  ss_bxor
 Class for bitwise xor binary operator (^). More...
class  ss_land
 Class for logical and binary operator (&&). More...
class  ss_lor
 Class for logical or binary operator (||). More...
class  ss_arr_acc
 Class for accessing array ([]). More...
class  ss_funcall_abstr
 Base class for function call expressions. More...
class  ss_pfuncall
 Class for member pointer call. More...
class  ss_funcall
 Class for ordinary function call. More...
class  ss_ifuncall
 Class for indirect ordinary global function call. More...
class  ss_mfuncall
 Class for method call. More...
class  ss_vfuncall
 Class for virtual method call. More...
class  ss_unary_expr
 Base class for function call expressions. More...
class  ss_dereference
 Class for dereference operator (*). More...
class  ss_conversion
 Class for conversion operator. More...
class  ss_array_to_pointer
 Class for conversion operator for the array to pointer case. More...
class  ss_bind_reference
 Class for reference binding. More...
class  ss_bind_to_temporary
 Class for pruposes of reference binding. More...
class  ss_get
 Class representing lvalue to rvalue conversion. More...
class  ss_vol_get
 Class representing lvalue to rvalue conversion (from volatile variable object). More...
class  ss_gat
 Class for unary operator plus/gation (+). More...
class  ss_neg
 Class for unary operator minus/negation (-). More...
class  ss_lnot
 Class for unary operator of logical negation (!). More...
class  ss_bnot
 Class for unary operator of binary negation/complement (~). More...
class  ss_address_of
 Class for reference operator (&). More...
class  ss_expression
 Base class for expressions. More...
class  ss_this_expr
 Class for this pointer. More...
class  ss_literal
 Class for literal value. More...
class  ss_ternary
 Class for ternary ?: operator expression. More...
class  ss_var_ref_abstract
 Abstract class for variable references. More...
class  ss_var_ref_by_qname
 Class for variable references by qualified name. More...
class  ss_var_ref
 Class for variable reference. More...
class  ss_throw
 Class for throw expression. More...
class  ss_member_ptr
 Class for pointer to member operator .*. More...
class  ss_ptr_member_ptr
 Class for pointer to member operator ->*. More...
class  ss_access
 Class for member access (.). More...
class  ss_ptr_access
 Class for member access via pointer (->). More...
class  ss_binary_expr
 Base class for built-in binary operators. More...
class  ss_constructor_finder
 Finds a proper constructor (set) for a given class. More...
class  ss_constructor_find
class  ss_destructor_finder
 Finds a proper destructor for a given class. More...
class  ss_destructor_find
class  ss_literal_info
 Base class for literal information. More...
class  ss_integral_literal_info
class  ss_floating_literal_info
class  ss_compound_literal_info
 Represents compound literal. More...
class  ss_declaration_time
 Declaration time. More...
class  ss_decl_seq
 Class for declaration sequence. More...
class  ss_using_directive
 Class for using directive. More...
class  ss_label
 Base class for labels. More...
class  ss_breakable_stmt_label
 Class for labels created from breakable statements(i.e. do,while,for,switch). More...
class  ss_case_label
 Class for "case" label inside the switch. More...
class  ss_default_label
 Class for the default case inside the switch. More...
class  ss_continue_label
 Class for the continue label in loops. More...
class  ss_break_label
 Class for the break label in loops and switch. More...
class  ss_targetted_label
 Class for labels, which target is known at ceration time of label(i.e. label for goto). More...
class  ss_internal_label
 Class for internally generated label. More...
class  ss_id_label
 Class for label associated with identifier (from goto). More...
class  ss_se
 Class representing side effect. More...
class  ss_sp
 Class representing sequence point. More...
class  ss_translation_unit
class  ss_base_specifier
 Class-base specifier. More...
class  ss_stmt2pi
 Visitor responsible for converting statements into pseudoinstructions. More...
class  ss_decl2pi
 Visitor responsible for converting declarations into pseudoinstructions. More...
class  ss_decl2mem
 Visitor responsible for getting correct pi_mem_factory for a given declaration. More...
class  ss_type2destructor
class  ss_expr2destination
 Visitor for determination destination of sideeffect expression. Used for origin computation. More...
class  ss_expr2pi
 Visitor for converting expressions into pseudoinstructions. More...
class  ss_destructor_table
class  ss_destructor_tables
class  ss_destructor_tables_stack
class  ss_linfo2pi_linfo
 Visitor for converting literal info to pi layer literal info. More...
class  ss_statement
 Base class for statements. More...
class  ss_compound_stmt
 Class for compound statement. More...
class  ss_decl_stmt
 Class for declaration statement. More...
class  ss_try
 Class for try-block. More...
class  ss_break
 Class for break statement. More...
class  ss_return
 Class for return statement. More...
class  ss_goto
 Class for goto statement. More...
class  ss_expr_stmt
 Class for expression statement. More...
class  ss_continue
 Class for continue statement. More...
class  ss_if_stmt
 Class for if statement. More...
class  ss_catch
 Class for catch handler for try block. More...
class  ss_breakable_stmt
 Base class for breakable statements. More...
class  ss_switch_stmt
 Class for switch block. More...
class  ss_iteration_stmt
 Base class for iteration statements. More...
class  ss_do
 Class for "do" iteration statement. More...
class  ss_while
 Class for "while" iteration statement. More...
class  ss_for
 Class for "for" iteration statement. More...
class  ss_type
 Base class for intercode types. More...
class  ss_builtin_type
 Class for built-in types. More...
class  ss_const
 Class for const types. More...
class  ss_volatile
 Class for volatile types. More...
class  ss_const_volatile
 Class for volatile types. More...
class  ss_referential
 Class for references. More...
class  ss_reference
 Class for referenced types via &. More...
class  ss_pseudoreference
 Class for pseudo-referenced types. More...
class  ss_pointer
 Class for pointered types. More...
class  ss_enum
 Class for enumeration type. More...
class  ss_array
 Class for array type. More...
class  ss_member_pointer
 Class for member pointer (8.3.3). More...
class  ss_function
 Class for function type. More...
class  ss_member_function
 Class for member function type. More...
class  ss_struct_base
 Base class for structurated objects. More...
class  ss_class
 Class for struct-class types. More...
class  ss_union
 Class for union type. More...
class  ss_typename_type
 Class for template typename types. More...
class  ss_function_comparator
 Comparator for ss_function. More...
class  ss_type2cv_unqualified
 CV qualifiers remover. More...
class  ss_type2id
 Visitor that returns identification of a descendant of ss_type. More...
class  ss_type2info
 Visitor providing lightweight type info for certain SS type classes. More...
class  ss_type2mangled_id
 Visitor that returns string representation of ss_type as defined by GNU GCC mangling rules. More...
class  ss_type2param_type
 Normalizes types of parameters. More...
class  ss_bool
 Base class for built-in bool type. More...
class  ss_void
 Base class for built-in void type. More...
class  ss_integral
 Base class for built-in integral types. More...
class  ss_type_int
 Base class for built-in integer types. More...
class  ss_type_sint
 Base class for built-in signed integer type. More...
class  ss_type_uint
 Base class for built-in unsigned integer type. More...
class  ss_type_long
 Base class for built-in long types. More...
class  ss_type_slong
 Base class for built-in signed long type. More...
class  ss_type_ulong
 Base class for built-in unsigned long type. More...
class  ss_type_short
 Base class for built-in short types. More...
class  ss_type_sshort
 Base class for built-in signed short type. More...
class  ss_type_ushort
 Base class for built-in unsigned short type. More...
class  ss_type_char
 Base class for built-in char types. More...
class  ss_type_wchar_t
 Base class for built-in wchar-t type. More...
class  ss_type_schar
 Base class for built-in signed char type. More...
class  ss_type_uchar
 Base class for built-in unsigned char type. More...
class  ss_type_pchar
 Base class for built-in plain char type. More...
class  ss_floating
 Base class for built-in floating types. More...
class  ss_type_float
 Base class for built-in float type. More...
class  ss_type_double
 Base class for built-in double type. More...
class  ss_type_ldouble
 Base class for built-in long double type. More...
class  ss_type_visitor
class  ss_type2param_type_base
class  ss_type2info_base
class  ss_type2cv_unqualified_base
class  ss_type2destructor_base
class  ss_type_default_visitor
class  ss_type2tm_type_gen_base
class  ss_using_target
class  ss_expression_visitor
class  ss_expr2destination_base
class  ss_statement_visitor
class  ss_statement_visitor_cut_at_top
class  ss_literal_info_visitor

Typedefs

typedef broadcast_listener<
ss_declaration
declaration_broadcast_listener
typedef broadcaster< ss_declarationdeclaration_broadcaster
typedef set< srp< ss_declaration > > ss_structure_declaration_set_type
 Defines set with ss_structure declaration.
typedef list< srp< ss_base_specifier > > bases_type
typedef set< srp< ss_declaration > > declaration_set_type
typedef set< srp< ss_decl_seq > > decl_seq_set_type
typedef ::lestes::std::set<
srp< ss_function_declaration > > 
func_decl_set
typedef ::lestes::std::list<
srp< ss_declaration > > 
decl_list
typedef ::lestes::std::list<
srp< or_or_functional > > 
exprlist
typedef ::lestes::std::set<
srp< ss_function_declaration > > 
func_decl_set
typedef list< srp< ss_sp > > sp_list
typedef list< srp< as_declaration_specifier > > as_declaration_specifier_list_type
typedef list< srp< as_declarator_op > > as_declarator_op_list_type
typedef ::lestes::std::list<
srp< or_or_functional > > 
exprlist
typedef ::lestes::std::set<
srp< ss_function_declaration > > 
func_decl_set
typedef list< srp< as_declarator_op > > as_declarator_op_list_type
 Type of list of as_declarator_op elements.
typedef ::lestes::std::set<
srp< ss_declaration > > 
ss_declaration_set_type
 Type of set of ss_declaration elements.
typedef ::lestes::std::list<
srp< ss_sp > > 
sp_list
typedef ::lestes::std::list<
srp< ss_label > > 
label_list
typedef ::lestes::std::list<
srp< ss_expression > > 
expr_list
typedef ::lestes::std::list<
srp< ss_statement > > 
stmt_list
typedef ::lestes::std::list<
srp< ss_declaration > > 
decl_list
typedef ::lestes::std::source_location location
typedef ::lestes::std::list<
srp< ss_expression > > 
expr_list
typedef list< srp< ss_declaration > > decl_list_type
typedef ::lestes::std::list<
srp< ::lestes::backend_v2::intercode::pi_mem > > 
list_mem_type
typedef ::lestes::std::map<
srp< ss_declaration >, srp<
::lestes::backend_v2::intercode::pi_mem_factory > > 
variable_map_type
typedef ::lestes::std::pair<
srp< ss_function_declaration >,
srp< ::lestes::backend_v2::intercode::pi_mem_factory > > 
destructor_entry_type
typedef ::lestes::std::map<
srp< ss_expression >, srp<
::lestes::backend_v2::intercode::pi_operand > > 
expression_results_map_type

Enumerations

enum  or_or_functional_enum {
  OR_OR_FUNCTIONAL_CONCRETE, OR_OR_FUNCTIONAL_COMMA, OR_OR_FUNCTIONAL_ADDROF, OR_OR_FUNCTIONAL_LITERAL,
  OR_OR_FUNCTIONAL_THIS, OR_OR_FUNCTIONAL_AMBIGUOUS, OR_OR_FUNCTIONAL_NOVIABLE, OR_OR_FUNCTIONAL_FUNC_DECL_SET,
  OR_OR_FUNCTIONAL_DECL
}
enum  rank_type { RANK_EXACT, RANK_PROMOTION, RANK_CONVERSION, RANK_USER }
enum  or_cv_enum {
  OR_CV_CONST, OR_CV_VOLATILE, OR_CV_CONST_VOLATILE, OR_CV_MEMBER_PTR,
  OR_CV_PTR, OR_CV_BOOL, OR_CV_VOID, OR_CV_CLASS,
  OR_CV_PSEUDOREFERENCE, OR_CV_REFERENCE, OR_CV_SINT, OR_CV_NONE
}
enum  ss_decl_enum {
  INJECTED_CLASS_DECLARATION, STRUCTURE_DECLARATION, NAMESPACE_DEFINITION, OBJECT_DECLARATION,
  BITFIELD_DECLARATION, PARAMETER_DECLARATION, ENUMERATOR_DECLARATION, ENUM_DEFINITION,
  TYPEDEF_DEFINITION, USING_DECLARATION, COMPOUND_STMT_DECLARATION, FAKE_DECLARATION,
  FUNCTION_DECLARATION, METHOD_DECLARATION, BUILTIN_OPERATOR_DECLARATION
}

Functions

void ss2pi_start (ptr< ss_translation_unit >)
void summary_seq_points (ptr< ss_sp > x)
int man ()
ptr< ::lestes::msg::message_stencil1<
ucn_string > > 
integer_literal_cannot_be_represented (::lestes::msg::message_stencil1< ucn_string >::create("integer literal %0 cannot be represented by any of the allowed types",::lestes::msg::message::FLG_ERROR,::lestes::msg::formatter< ucn_string >::instance()))
 initialize_logger (lu_logger,"lu", sem_logger)
 declare_logger (lu_logger)
 declare_logger (lookup_log)
 initialize_logger (lookup_log,"lookup", lu_logger)
static ptr< declaration_set_typeunify (const ptr< declaration_set_type > &s1, const ptr< declaration_set_type > &s2)
 Computes union of two given sets of declarations.
 declare_logger (or_log)
 initialize_logger (or_log,"overload", or_logger)
ptr< or_ics_functionalor_find_ics (ptr< or_or_functional > source, ptr< ss_type > target)
bool is_not_worse_conv_seq (ptr< or_ics_functional > r1, ptr< or_or_functional > e1, ptr< or_ics_functional > r2, ptr< or_or_functional > e2)
bool is_better_conv_seq (ptr< or_ics_functional > r1, ptr< or_or_functional > e1, ptr< or_ics_functional > r2, ptr< or_or_functional > e2)
bool exists_ics_conversion (ptr< ss_function_declaration > candidate, ptr< exprlist > exprs)
ptr< func_decl_setfilter_ics_existence (ptr< func_decl_set > candidates, ptr< exprlist > exprs)
ptr< func_decl_setfilter_num_args (ptr< func_decl_set > candidates, decl_list::size_type num_args)
ptr< func_decl_setselect_viable (ptr< func_decl_set > candidates, ptr< exprlist > exprs)
bool is_better_function (ptr< ss_function_declaration > f, ptr< ss_function_declaration > g, ptr< exprlist > exprs)
ptr< or_or_functionalbest_selection (ptr< func_decl_set > viables, ptr< exprlist > exprs)
ptr< func_decl_setcollect_candidates (ptr< ss_operator> func_name, ptr< ss_decl_seq > ctxt)
ptr< or_or_functionaloverload_resolution (ptr< exprlist > exprs, ptr< ss_operator> func_name)
ptr< or_or_functionaloverload_resolution (ptr< exprlist > exprs, ptr< func_decl_set > candidates)
 declare_logger (or_ics_log)
 initialize_logger (or_ics_log,"or_ics_finder", or_ics_logger)
ptr< ::lestes::std::list<
srp< or_ics_functional > > > 
filter_type (ptr< ::lestes::std::list< srp< or_ics_functional > > > lst, ptr< ss_type > tgt)
ptr< or_ics_functionalget_best_conversion (ptr< ::lestes::std::list< srp< or_ics_functional > > > lst, ptr< or_or_functional > e)
ptr< ss_expressionconvert_ptr_to_cv (ptr< or_or_functional > source)
 initialize_logger (or_ics_logger,"or_ics", sem_logger)
 declare_logger (or_ics_logger)
 initialize_logger (or_logger,"or", sem_logger)
 declare_logger (or_logger)
ptr< ::lestes::msg::message_stencil0<
bool > > 
non_lval_crement (::lestes::msg::message_stencil0< bool >::create("Non-lvalue used in increment/decrement.",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
non_lval_assign (::lestes::msg::message_stencil0< bool >::create("Non-lvalue used in assign.",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
incompatible_types_conversion (::lestes::msg::message_stencil0< bool >::create("Conversion between incompatible types requested.",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
assign_incompatible_types (::lestes::msg::message_stencil0< bool >::create("Asignment of incompatible types.",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
ambiguous_result (::lestes::msg::message_stencil0< bool >::create("The overload resolution returned ambigous result.",::lestes::msg::message::FLG_ERROR))
void run ()
ptr< ::lestes::msg::message_stencil0<
bool > > 
union_shall_not_have_bases (::lestes::msg::message_stencil0< bool >::create("base classes cannot be specified in a union declaration",::lestes::msg::message::FLG_ERROR))
void sa_decl_spec_test (void)
 Tests sa_decl_spec class.
ptr< ::lestes::msg::message_stencil0<
bool > > 
declaration_without_type (::lestes::msg::message_stencil0< bool >::create("declaration with no type",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_char_specifier (::lestes::msg::message_stencil0< bool >::create("short or long invalid for char",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_double_specifier (::lestes::msg::message_stencil0< bool >::create("signed, unsigned or short invalid for double",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_type_specifier (::lestes::msg::message_stencil0< bool >::create("signed, unsigned, short or long invalid for the type",::lestes::msg::message::FLG_ERROR))
void sa_declarator_test (void)
 Tests sa_declarator class.
ptr< ::lestes::std::list<
srp< as_declaration_specifier > > > 
ts2ds (ptr< ::lestes::std::list< srp< as_type_specifier > > > tsl)
ptr< ::lestes::msg::message_stencil0<
bool > > 
no_viable_found (::lestes::msg::message_stencil0< bool >::create("Found no viable function to call",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
non_lvalue_in_unary_amp (::lestes::msg::message_stencil0< bool >::create("Non-lvalue used in unary &",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
ambiguous_function_prefix (::lestes::msg::message_stencil0< bool >::create("Ambiguous function prefix.",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
unrecognized_identifier (::lestes::msg::message_stencil0< bool >::create("Unrecognized identifier.",::lestes::msg::message::FLG_ERROR))
 initialize_logger (sa_logger,"sa", sem_logger)
 initialize_logger (sa_parser_action_logger,"sa_parser_action", sa_logger)
 initialize_logger (sa_class_logger,"sa_class", sa_logger)
 initialize_logger (sa_class_type_logger,"sa_class_type", sa_class_logger)
 initialize_logger (sa_class_base_logger,"sa_class_base", sa_class_logger)
 initialize_logger (sa_class_declaration_logger,"sa_class_declaration", sa_class_logger)
 initialize_logger (sa_simple_declaration_logger,"sa_simple_declaration", sa_logger)
 initialize_logger (sa_declarator_type_logger,"sa_declarator_type", sa_simple_declaration_logger)
 initialize_logger (sa_param_declaration_type_logger,"sa_param_declaration_type", sa_simple_declaration_logger)
 initialize_logger (sa_param_declaration_empty_logger,"sa_param_declaration_empty", sa_simple_declaration_logger)
 initialize_logger (sa_param_declaration_logger,"sa_param_declaration", sa_simple_declaration_logger)
 initialize_logger (sa_statements_logger,"sa_statements", sa_logger)
 declare_logger (sa_logger)
 declare_logger (sa_parser_action_logger)
 declare_logger (sa_class_logger)
 declare_logger (sa_class_type_logger)
 declare_logger (sa_class_base_logger)
 declare_logger (sa_class_declaration_logger)
 declare_logger (sa_simple_declaration_logger)
 declare_logger (sa_declarator_type_logger)
 declare_logger (sa_statements_logger)
 declare_logger (sa_param_declaration_type_logger)
 declare_logger (sa_param_declaration_empty_logger)
 declare_logger (sa_param_declaration_logger)
ptr< ::lestes::msg::message_stencil1<
ptr< as_id > > > 
name_already_declared (::lestes::msg::message_stencil1< ptr< as_id > >::create("name already declared when trying to define namespace '%0'",::lestes::msg::message::FLG_ERROR,::lestes::msg::formatter< ptr< as_id > >::instance()))
ptr< ::lestes::msg::message_stencil0<
bool > > 
declared_here (::lestes::msg::message_stencil0< bool >::create("declared here",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
unnamed_not_yet (::lestes::msg::message_stencil0< bool >::create("unnamed namespaces are not implemented yet",::lestes::msg::message::FLG_WARNING))
void process_friend_function_declaration (ptr< sa_context > ctx, ptr< sa_declaration_specifiers > specifiers, ptr< as_declarator > declarator)
ptr< ::lestes::msg::message_stencil0<
bool > > 
redefinition (::lestes::msg::message_stencil0< bool >::create("redefinition of object",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_storage_specifier (::lestes::msg::message_stencil0< bool >::create("invalid storage specifier in declaration",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_specifier_function (::lestes::msg::message_stencil0< bool >::create("invalid specifier in function declaration",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_specifier_object (::lestes::msg::message_stencil0< bool >::create("invalid specifier in object declaration",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_specifier_typedef (::lestes::msg::message_stencil0< bool >::create("invalid specifier in typedef",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
different_return_types (::lestes::msg::message_stencil0< bool >::create("the return types are different",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
conflicting_types (::lestes::msg::message_stencil0< bool >::create("conflict types for declaration",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
previous_declaration (::lestes::msg::message_stencil0< bool >::create("previously declared here",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
redeclaration_different (::lestes::msg::message_stencil0< bool >::create("redeclaration as different kind of symbol",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
field_storage_specifier (::lestes::msg::message_stencil0< bool >::create("storage specifier for field",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
field_redefinition (::lestes::msg::message_stencil0< bool >::create("field redefined",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
static_and_extern (::lestes::msg::message_stencil0< bool >::create("declaration is both static and extern",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
methods_not_implemented (::lestes::msg::message_stencil0< bool >::create("method declarations are not implemented",::lestes::msg::message::FLG_ERROR))
ptr< ::lestes::msg::message_stencil0<
bool > > 
conversion_not_found (::lestes::msg::message_stencil0< bool >::create("Type conversion does not exist.",::lestes::msg::message::FLG_ERROR))
 initialize_logger (sem_logger,"sem", cplus_logger)
 declare_logger (sem_logger)
int run_test ()
 declare_logger (dtl)
 declare_logger (fll)
 declare_logger (spl)
 declare_logger (gnl)
 initialize_logger (dtl,"destr_tab", sem_logger)
 initialize_logger (fll,"flow", sem_logger)
 initialize_logger (spl,"SP", sem_logger)
 initialize_logger (gnl,"ss2pi", sem_logger)
int log_indent (ptr< ::lestes::msg::logger > flow, int ind)
void dump (ptr< object >x)
void dumb (ptr< object >x)
template<typename X>
ptr< X > dung (ptr< X >x)
ptr< pi_mem > pi_operand2pi_mem (ptr< pi_operand > x)
ptr< pi_mem_ptr_deref > pi_operand2pi_mem_pointer (ptr< pi_operand > x)
ptr< pi_preg > pi_operand2pi_preg (ptr< pi_operand > x)
ptr< pi_sp > ss_sp2pi_sp (ptr< ss_sp > sp)
 BIND_EQUAL_SS_PI (add)
 BIND_EQUAL_SS_PI (sub)
 BIND_EQUAL_SS_PI (mul)
 BIND_EQUAL_SS_PI (div)
 BIND_EQUAL_SS_PI (mod)
 BIND_EQUAL_SS_PI (shr)
 BIND_EQUAL_SS_PI (shl)
 BIND_EQUAL_SS_PI (band)
 BIND_EQUAL_SS_PI (bor)
 BIND_EQUAL_SS_PI (bxor)
void ss_type2info_test (void)
 Tests ss_type2info class.

Variables

ptr< declaration_broadcasterdeclaration_finished = declaration_broadcaster::create()
ptr< declaration_broadcasterdeclaration_finished
ptr< ::lestes::msg::message_stencil1<
ucn_string > > 
integer_literal_cannot_be_represented
 Integer literal cannot be represented by any type error.
static ptr< ss_decl_seqseq_param
ptr< ::lestes::msg::message_stencil0<
bool > > 
non_lval_crement
 Non-lvalue was used increment/decrement.
ptr< ::lestes::msg::message_stencil0<
bool > > 
non_lval_assign
 Non-lvalue was used in assign.
ptr< ::lestes::msg::message_stencil0<
bool > > 
incompatible_types_conversion
 Conversion between incompatible types was requested.
ptr< ::lestes::msg::message_stencil0<
bool > > 
assign_incompatible_types
 Assignment for incompatible types was requested.
ptr< ::lestes::msg::message_stencil0<
bool > > 
ambiguous_result
 Overload resolution was ambiguous.
ptr< ::lestes::msg::message_stencil0<
bool > > 
union_shall_not_have_bases
 Union shall not have bases.
ptr< ::lestes::msg::message_stencil0<
bool > > 
declaration_without_type
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_char_specifier
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_double_specifier
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_type_specifier
ptr< ::lestes::msg::message_stencil0<
bool > > 
no_viable_found
 No viable function found.
ptr< ::lestes::msg::message_stencil0<
bool > > 
non_lvalue_in_unary_amp
 rvalue used in unary amp.
ptr< ::lestes::msg::message_stencil0<
bool > > 
ambiguous_function_prefix
 The function prefix is ambiguous.
ptr< ::lestes::msg::message_stencil0<
bool > > 
unrecognized_identifier
 Identifier was not found.
ptr< ::lestes::msg::message_stencil1<
ptr< as_id > > > 
name_already_declared
ptr< ::lestes::msg::message_stencil0<
bool > > 
declared_here
ptr< ::lestes::msg::message_stencil0<
bool > > 
unnamed_not_yet
ptr< ::lestes::msg::message_stencil0<
bool > > 
redefinition
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_storage_specifier
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_specifier_function
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_specifier_object
ptr< ::lestes::msg::message_stencil0<
bool > > 
invalid_specifier_typedef
ptr< ::lestes::msg::message_stencil0<
bool > > 
different_return_types
ptr< ::lestes::msg::message_stencil0<
bool > > 
conflicting_types
ptr< ::lestes::msg::message_stencil0<
bool > > 
previous_declaration
ptr< ::lestes::msg::message_stencil0<
bool > > 
redeclaration_different
ptr< ::lestes::msg::message_stencil0<
bool > > 
field_storage_specifier
ptr< ::lestes::msg::message_stencil0<
bool > > 
field_redefinition
ptr< ::lestes::msg::message_stencil0<
bool > > 
static_and_extern
ptr< ::lestes::msg::message_stencil0<
bool > > 
methods_not_implemented
ptr< ::lestes::msg::message_stencil0<
bool > > 
conversion_not_found
 or_find_ics returned NULL - the conversion sequence could not be found.
int log_count = 0
static bool hack_used = false


Typedef Documentation

typedef list< srp< as_declaration_specifier > > lestes::lang::cplus::sem::as_declaration_specifier_list_type

Definition at line 50 of file sa_declaration_specifier_list.g.hh.

typedef list< srp<as_declarator_op> > lestes::lang::cplus::sem::as_declarator_op_list_type

Type of list of as_declarator_op elements.

Definition at line 123 of file sa_simple_declaration.cc.

typedef list< srp< as_declarator_op > > lestes::lang::cplus::sem::as_declarator_op_list_type

Definition at line 60 of file sa_declarator_type.cc.

typedef list< srp<ss_base_specifier> > lestes::lang::cplus::sem::bases_type

Definition at line 68 of file lu_lu.cc.

typedef ::lestes::std::list< srp< ss_declaration > > lestes::lang::cplus::sem::decl_list

Definition at line 74 of file sa_statements.cc.

typedef ::lestes::std::list< srp< ss_declaration > > lestes::lang::cplus::sem::decl_list

Definition at line 63 of file or.cc.

typedef list<srp<ss_declaration> > lestes::lang::cplus::sem::decl_list_type

Definition at line 52 of file ss_decl2lstring_base.cc.

typedef set< srp< ss_decl_seq > > lestes::lang::cplus::sem::decl_seq_set_type

Definition at line 38 of file lu_typedef.hh.

typedef broadcast_listener< ss_declaration > lestes::lang::cplus::sem::declaration_broadcast_listener

Definition at line 38 of file declaration_broadcasting.hh.

typedef broadcaster< ss_declaration > lestes::lang::cplus::sem::declaration_broadcaster

Definition at line 41 of file declaration_broadcasting.hh.

typedef set< srp< ss_declaration > > lestes::lang::cplus::sem::declaration_set_type

Definition at line 36 of file lu_typedef.hh.

typedef ::lestes::std::pair< srp< ss_function_declaration >, srp< ::lestes::backend_v2::intercode::pi_mem_factory > > lestes::lang::cplus::sem::destructor_entry_type

Definition at line 63 of file ss_ss2pi_typedefs.hh.

typedef ::lestes::std::list< srp < ss_expression > > lestes::lang::cplus::sem::expr_list

Definition at line 40 of file sa_statements.g.hh.

typedef ::lestes::std::list< srp< ss_expression > > lestes::lang::cplus::sem::expr_list

Definition at line 72 of file sa_statements.cc.

typedef ::lestes::std::map< srp< ss_expression >, srp< ::lestes::backend_v2::intercode::pi_operand > > lestes::lang::cplus::sem::expression_results_map_type

Definition at line 64 of file ss_ss2pi_typedefs.hh.

typedef ::lestes::std::list< srp< or_or_functional > > lestes::lang::cplus::sem::exprlist

Definition at line 74 of file sa_deconstruct_spse.cc.

typedef ::lestes::std::list< srp< or_or_functional > > lestes::lang::cplus::sem::exprlist

Definition at line 38 of file or.hh.

typedef ::lestes::std::set< srp< ss_function_declaration > > lestes::lang::cplus::sem::func_decl_set

Definition at line 75 of file sa_deconstruct_spse.cc.

typedef ::lestes::std::set< srp< ss_function_declaration > > lestes::lang::cplus::sem::func_decl_set

Definition at line 41 of file or.hh.

typedef ::lestes::std::set< srp< ss_function_declaration > > lestes::lang::cplus::sem::func_decl_set

Definition at line 62 of file or.cc.

typedef ::lestes::std::list< srp< ss_label > > lestes::lang::cplus::sem::label_list

Definition at line 71 of file sa_statements.cc.

typedef ::lestes::std::list< srp< ::lestes::backend_v2::intercode::pi_mem > > lestes::lang::cplus::sem::list_mem_type

Definition at line 61 of file ss_ss2pi_typedefs.hh.

typedef ::lestes::std::source_location lestes::lang::cplus::sem::location

Definition at line 75 of file sa_statements.cc.

typedef ::lestes::std::list< srp< ss_sp > > lestes::lang::cplus::sem::sp_list

Definition at line 68 of file sa_statements.cc.

typedef list< srp < ss_sp > > lestes::lang::cplus::sem::sp_list

Definition at line 49 of file sa_decl_seq_compound_pair_creator.cc.

typedef ::lestes::std::set< srp<ss_declaration> > lestes::lang::cplus::sem::ss_declaration_set_type

Type of set of ss_declaration elements.

Definition at line 126 of file sa_simple_declaration.cc.

typedef set< srp<ss_declaration> > lestes::lang::cplus::sem::ss_structure_declaration_set_type

Defines set with ss_structure declaration.

Definition at line 50 of file li_non_secu_by_name_in_single_scope.cc.

typedef ::lestes::std::list< srp< ss_statement > > lestes::lang::cplus::sem::stmt_list

Definition at line 73 of file sa_statements.cc.

typedef ::lestes::std::map< srp< ss_declaration >, srp< ::lestes::backend_v2::intercode::pi_mem_factory> > lestes::lang::cplus::sem::variable_map_type

Definition at line 62 of file ss_ss2pi_typedefs.hh.


Enumeration Type Documentation

enum lestes::lang::cplus::sem::or_cv_enum

Enumerator:
OR_CV_CONST 
OR_CV_VOLATILE 
OR_CV_CONST_VOLATILE 
OR_CV_MEMBER_PTR 
OR_CV_PTR 
OR_CV_BOOL 
OR_CV_VOID 
OR_CV_CLASS 
OR_CV_PSEUDOREFERENCE 
OR_CV_REFERENCE 
OR_CV_SINT 
OR_CV_NONE 

Definition at line 40 of file or_ics.hh.

00040              {
00041         OR_CV_CONST,
00042         OR_CV_VOLATILE,
00043         OR_CV_CONST_VOLATILE,
00044         OR_CV_MEMBER_PTR,
00045         OR_CV_PTR,
00046         OR_CV_BOOL,
00047         OR_CV_VOID,
00048         OR_CV_CLASS,
00049         OR_CV_PSEUDOREFERENCE,
00050         OR_CV_REFERENCE,
00051         OR_CV_SINT,
00052         OR_CV_NONE,
00053 } or_cv_enum;

enum lestes::lang::cplus::sem::or_or_functional_enum

Enumerator:
OR_OR_FUNCTIONAL_CONCRETE 
OR_OR_FUNCTIONAL_COMMA 
OR_OR_FUNCTIONAL_ADDROF 
OR_OR_FUNCTIONAL_LITERAL 
OR_OR_FUNCTIONAL_THIS 
OR_OR_FUNCTIONAL_AMBIGUOUS 
OR_OR_FUNCTIONAL_NOVIABLE 
OR_OR_FUNCTIONAL_FUNC_DECL_SET 
OR_OR_FUNCTIONAL_DECL 

Definition at line 16 of file or_actual_visitors.g.hh.

enum lestes::lang::cplus::sem::rank_type

Enumerator:
RANK_EXACT 
RANK_PROMOTION 
RANK_CONVERSION 
RANK_USER 

Definition at line 23 of file or_ics.g.hh.

00023                {
00024         RANK_EXACT,
00025         RANK_PROMOTION,
00026         RANK_CONVERSION,
00027         RANK_USER
00028 };

enum lestes::lang::cplus::sem::ss_decl_enum

Enumerator:
INJECTED_CLASS_DECLARATION 
STRUCTURE_DECLARATION 
NAMESPACE_DEFINITION 
OBJECT_DECLARATION 
BITFIELD_DECLARATION 
PARAMETER_DECLARATION 
ENUMERATOR_DECLARATION 
ENUM_DEFINITION 
TYPEDEF_DEFINITION 
USING_DECLARATION 
COMPOUND_STMT_DECLARATION 
FAKE_DECLARATION 
FUNCTION_DECLARATION 
METHOD_DECLARATION 
BUILTIN_OPERATOR_DECLARATION 

Definition at line 17 of file sa_deconstruct_spse.g.hh.


Function Documentation

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::ambiguous_function_prefix ( ::lestes::msg::message_stencil0< bool >::  create("Ambiguous function prefix.",::lestes::msg::message::FLG_ERROR)  ) 

Issued when there are more than one "meanings" for function prefix.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::ambiguous_result ( ::lestes::msg::message_stencil0< bool >::  create("The overload resolution returned ambigous result.",::lestes::msg::message::FLG_ERROR)  ) 

Issued when the overload resolution process can't chose one best viable function.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::assign_incompatible_types ( ::lestes::msg::message_stencil0< bool >::  create("Asignment of incompatible types.",::lestes::msg::message::FLG_ERROR)  ) 

Issued when the arguments of assignment are not compatible.

ptr< or_or_functional > lestes::lang::cplus::sem::best_selection ( ptr< func_decl_set >  viables,
ptr< exprlist >  exprs 
)

This function selects the best function from set of viable functions.

Returns:
The functional, which represents the corresponding funcall, for the selected function.

Definition at line 232 of file or.cc.

References is_better_function(), and llog.

Referenced by overload_resolution().

00233 {
00234         func_decl_set::iterator it = viables->begin();
00235         ptr< ss_function_declaration > best = *it;
00236         bool was_better = true;
00237 
00238         if (viables->size() == 0) {
00239                 /* there are no candidates */
00240                 return or_or_functional_noviable::create(ss_void::instance());
00241         }
00242         for(++it; it != viables->end(); ++it) {
00243                 if(is_better_function(best, *it, exprs)) {
00244                         llog(or_logger) << "1: true\n";
00245                         was_better = true;
00246                 } else if (is_better_function(*it, best, exprs)) {
00247                         llog(or_logger) << "2: true\n";
00248                         was_better = true;
00249                         best = *it; 
00250                 } else {
00251                         llog(or_logger) << "3: false\n";
00252                         was_better = false;
00253                 }
00254         }
00255 
00256         it = viables->begin();
00257         for(++it; it != viables->end(); ++it) {
00258                 if(!((*it)->equals(best)) && !is_better_function(*it, best, exprs) && !is_better_function(best, *it, exprs))
00259                         return or_or_functional_ambiguous::create(best->type_get().dncast<ss_function>()->returns_get(), viables);
00260         }
00261 
00262         return or_or_functional_concrete::create(best->type_get().dncast<ss_function>()->returns_get(), exprs, best);
00263 }

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( bxor   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( bor   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( band   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( shl   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( shr   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( mod   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( div   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( mul   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( sub   ) 

lestes::lang::cplus::sem::BIND_EQUAL_SS_PI ( add   ) 

ptr< func_decl_set > lestes::lang::cplus::sem::collect_candidates ( ptr< ss_operator>  func_name,
ptr< ss_decl_seq >  ctxt 
)

Definition at line 270 of file or.cc.

References llog.

Referenced by overload_resolution().

00271 {
00272         ptr< li_func_by_name > lookup = li_func_by_name::create();
00273         ptr< li_func_by_name_in_single_scope > lookup_builtin = li_func_by_name_in_single_scope::create();
00274         ptr< func_decl_set > res_lu, res_builtin;
00275         func_decl_set::iterator it;
00276 
00277         /* lookup the name in the current scope */
00278         llog(or_log) << "Looking it up in the current scope\n";
00279 
00280         res_lu = lookup->process(func_name, ctxt);
00281 
00282         if (res_lu->empty()) {
00283                 llog(or_log) << "Found nothing\n";
00284         }
00285         /* lookup the name in the builtin op scope */
00286         llog(or_log) << "Looking it up in the builtin op scope\n";
00287         res_builtin = lookup_builtin->process(func_name, or_builtin_operator_declaration_creator::instance()->builtin_op_decl_seq_get());
00288 
00289         /* unite the result of the lookup and the result of lookup in builtin decl seq */
00290         if (!res_builtin->empty()) {
00291                 llog(or_log) << "Found something, pushing into return list\n";
00292                 
00293                 it = res_builtin->begin();
00294                 for(; it != res_builtin->end(); it++){
00295                         res_lu->insert(*it);
00296                 }
00297         }
00298         
00299         return res_lu; 
00300 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::conflicting_types ( ::lestes::msg::message_stencil0< bool >::  create("conflict types for declaration",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::conversion_not_found ( ::lestes::msg::message_stencil0< bool >::  create("Type conversion does not exist.",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ss_expression > lestes::lang::cplus::sem::convert_ptr_to_cv ( ptr< or_or_functional >  source  ) 

This functions converts the expression, which has type of pointer to cv1 P, to pointer to cv2 P, c2 being more cv-qualified than c1. See 4.4/1

We rely on source being expression of ss_pointer type

Definition of relation "to be more qualified": none < const none < volatile none < const volatile const < const volatile volatile < const volatile

Returns:
list of conversion expressions

Definition at line 535 of file or_ics.cc.

References lestes::lang::cplus::sem::or_ics_visitor_cv::create(), OR_CV_CONST, OR_CV_CONST_VOLATILE, OR_CV_NONE, and OR_CV_VOLATILE.

00536 {
00537         /* this is to store the result passed to caller */
00538         typedef ::lestes::std::list< srp< ss_expression > > funclist;
00539         ptr< funclist > seq = funclist::create();
00540 
00541         ptr< ss_type > p = source->type_get();
00542         ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00543         /* this gets the qualification of the type pointed to by the pointer */
00544         or_cv_enum q = p.dncast<ss_pointer>()->what_get()->accept_or_ics_base_cv(v);
00545 
00546         /* TODO this is unfinished */   
00547         switch (q){
00548                 case OR_CV_NONE:;       
00549                 case OR_CV_CONST:;
00550                 case OR_CV_VOLATILE:;
00551                 case OR_CV_CONST_VOLATILE:;
00552                 default:;
00553         }
00554                 
00555         /* FIXME */
00556         return NULL;
00557 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::declaration_without_type ( ::lestes::msg::message_stencil0< bool >::  create("declaration with no type",::lestes::msg::message::FLG_ERROR)  ) 

lestes::lang::cplus::sem::declare_logger ( gnl   ) 

lestes::lang::cplus::sem::declare_logger ( spl   ) 

lestes::lang::cplus::sem::declare_logger ( fll   ) 

lestes::lang::cplus::sem::declare_logger ( dtl   ) 

lestes::lang::cplus::sem::declare_logger ( sem_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_param_declaration_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_param_declaration_empty_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_param_declaration_type_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_statements_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_declarator_type_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_simple_declaration_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_class_declaration_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_class_base_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_class_type_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_class_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_parser_action_logger   ) 

lestes::lang::cplus::sem::declare_logger ( sa_logger   ) 

lestes::lang::cplus::sem::declare_logger ( or_logger   ) 

lestes::lang::cplus::sem::declare_logger ( or_ics_logger   ) 

lestes::lang::cplus::sem::declare_logger ( or_ics_log   ) 

lestes::lang::cplus::sem::declare_logger ( or_log   ) 

lestes::lang::cplus::sem::declare_logger ( lookup_log   ) 

lestes::lang::cplus::sem::declare_logger ( lu_logger   ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::declared_here ( ::lestes::msg::message_stencil0< bool >::  create("declared here",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::different_return_types ( ::lestes::msg::message_stencil0< bool >::  create("the return types are different",::lestes::msg::message::FLG_ERROR)  ) 

void lestes::lang::cplus::sem::dumb ( ptr< object x  ) 

Dumps objects hierarchy starting from dumpable x.

Definition at line 128 of file ss_ss2pi_base.cc.

References lestes::std::dumper::dump(), and plog.

00128                           {
00129 plog(gnl)<<"..dumbing..\n";
00130         ::std::ofstream f("dumb.xml");
00131 	::lestes::std::dumper::dump(f,x);
00132         f.close();
00133 }

void lestes::lang::cplus::sem::dump ( ptr< object x  ) 

Dumps objects hierarchy starting from dumpable x.

Definition at line 118 of file ss_ss2pi_base.cc.

References lestes::std::dumper::dump(), and plog.

Referenced by lestes::backend_v2::debug::b_dump(), lestes::lang::cplus::syn::do_it(), main(), and man().

00118                           {
00119 plog(gnl)<<"..dumping..\n";
00120         ::std::ofstream f("dump.xml");
00121 	::lestes::std::dumper::dump(f,x);
00122         f.close();
00123 }

template<typename X>
ptr<X> lestes::lang::cplus::sem::dung ( ptr< X >  x  )  [inline]

Dumps objects hierarchy starting from dumpable x. Usage a=func(b,dung(c),d);

Definition at line 140 of file ss_ss2pi_base.cc.

References lestes::std::dumper::dump(), and plog.

00140                        {
00141 plog(gnl)<<"..dumbing..\n";
00142         ::std::ofstream f("dumb.xml");
00143 	::lestes::std::dumper::dump(f,x);
00144         f.close();
00145         return x;
00146 }

bool lestes::lang::cplus::sem::exists_ics_conversion ( ptr< ss_function_declaration >  candidate,
ptr< exprlist >  exprs 
)

This function tests if there exists implicit conversion sequence from expressions, representing arguments in function call, to parameters of the candidate function.

Bug:
This functions doesn't deal with elipsis functions yet, as thery are not handled by sem so far
Returns:
true if the conversion exists, false otherwise

Definition at line 79 of file or.cc.

References or_find_ics().

Referenced by filter_ics_existence().

00080 {
00081         ptr< decl_list > params = candidate->parameters_get()->contents_get();
00082         decl_list::iterator it = params->begin();
00083         ::lestes::std::list< srp< or_or_functional > >::iterator it_expr = exprs->begin();
00084 
00085         for(; it_expr != exprs->end() && it != params->end(); ++it, ++it_expr) {
00086                 if(!or_find_ics(*it_expr, (*it)->type_get()))
00087                         return false;
00088         }
00089 
00090         /* TODO
00091         for(; it_exprs != exprs->end(); ++it_expr) {
00092                 if(!find_ics_ellipsis(*it_expr))
00093                         return false;
00094         }
00095         */
00096         return true;
00097 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::field_redefinition ( ::lestes::msg::message_stencil0< bool >::  create("field redefined",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::field_storage_specifier ( ::lestes::msg::message_stencil0< bool >::  create("storage specifier for field",::lestes::msg::message::FLG_ERROR)  ) 

ptr< func_decl_set > lestes::lang::cplus::sem::filter_ics_existence ( ptr< func_decl_set >  candidates,
ptr< exprlist >  exprs 
)

This function filters out those candidates from candidates list, for which the implicit conversion sequence from expressions coming from call, to function parameters, doesn't exist

Returns:
filtered list of candidates

Definition at line 106 of file or.cc.

References exists_ics_conversion().

Referenced by select_viable().

00107 {
00108         ptr< func_decl_set > new_cands = func_decl_set::create();
00109 
00110         func_decl_set::iterator it = candidates->begin(), it_end = candidates->end();
00111 
00112         for (it = candidates->begin(); it != it_end; ++it) {
00113                 if (exists_ics_conversion(*it, exprs)) 
00114                         new_cands->insert(*it);
00115                 
00116         }
00117         return new_cands;
00118 }

ptr< func_decl_set > lestes::lang::cplus::sem::filter_num_args ( ptr< func_decl_set >  candidates,
decl_list::size_type  num_args 
)

This function filters out those candidates from candidates list, which do not have proper count of arguments.

Bug:
This functions doesn't deal with elipsis functions yet, as thery are not handled by sem so far
Returns:
filtered list of candidates

Definition at line 129 of file or.cc.

Referenced by select_viable().

00130 {
00131         ptr< func_decl_set > filtered = func_decl_set::create();
00132 
00133         func_decl_set::iterator it = candidates->begin();
00134         
00135         for(; it != candidates->end(); ++it) {
00136                 if((*it)->parameters_get()->contents_get()->size() == num_args) {
00137                         filtered->insert(*it);
00138                 } else if ((*it)->parameters_get()->contents_get()->size() > num_args) {
00139                         /* FIXME for ps - has_default() ?? 
00140                         if((it->parameters_get()->begin()+num_args)->has_default())
00141                                 filtered->insert(*it);
00142                         */
00143                 }
00144                 /* FIXME - don't know how to get ellipsis yet 
00145                 else if(it->ellipsis_get()) {
00146                         filtered->insert(*it);
00147                 }
00148                 */
00149         }
00150         return filtered;
00151 }

ptr< ::lestes::std::list< srp< or_ics_functional > > > lestes::lang::cplus::sem::filter_type ( ptr< ::lestes::std::list< srp< or_ics_functional > > >  lst,
ptr< ss_type >  tgt 
)

This function filters out those conversions not converting to the type of the target

Returns:
the filtered list

Definition at line 224 of file or_ics.cc.

References llog.

Referenced by or_find_ics().

00225 {
00226         ::lestes::std::list< srp< or_ics_functional > >::iterator it, it_del;
00227         ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00228         ptr< ::lestes::std::list< srp< or_ics_functional > > > ret = ::lestes::std::list< srp< or_ics_functional > >::create();
00229         
00230         /* this cycle erases all functionals from list, not having target_type of tgt
00231          *
00232          * this takes care of (pseudo)references automatically
00233          */
00234         llog(or_ics_log) << "Filtering ...\n";
00235         for(it = lst->begin(); it != lst->end();it++){
00236                 /* are the types not references && are the same? */
00237                 if ( (*it)->target_type_get()->equals(tgt) ) {
00238                         ret->push_back(*it);
00239                         llog(or_ics_log) << "Found identical type\n";
00240                 }
00241         }
00242         return ret;
00243 }

ptr< or_ics_functional > lestes::lang::cplus::sem::get_best_conversion ( ptr< ::lestes::std::list< srp< or_ics_functional > > >  lst,
ptr< or_or_functional >  e 
)

Definition at line 245 of file or_ics.cc.

References is_better_conv_seq().

00246 {
00247         ::lestes::std::list< srp< or_ics_functional > >::iterator it = lst->begin();
00248         ptr< or_ics_functional > best = *it;
00249 
00250         for(; it != lst->end(); it++) {
00251                 if (is_better_conv_seq(*it, e, best, e)) 
00252                         best = *it;
00253         }
00254 
00255         return best;
00256 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::incompatible_types_conversion ( ::lestes::msg::message_stencil0< bool >::  create("Conversion between incompatible types requested.",::lestes::msg::message::FLG_ERROR)  ) 

Issued when conversion between incompatible types was requested.

lestes::lang::cplus::sem::initialize_logger ( gnl  ,
"ss2pi"  ,
sem_logger   
)

lestes::lang::cplus::sem::initialize_logger ( spl  ,
"SP"  ,
sem_logger   
)

lestes::lang::cplus::sem::initialize_logger ( fll  ,
"flow"  ,
sem_logger   
)

lestes::lang::cplus::sem::initialize_logger ( dtl  ,
"destr_tab"  ,
sem_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sem_logger  ,
"sem"  ,
cplus_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_statements_logger  ,
"sa_statements"  ,
sa_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_param_declaration_logger  ,
"sa_param_declaration"  ,
sa_simple_declaration_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_param_declaration_empty_logger  ,
"sa_param_declaration_empty"  ,
sa_simple_declaration_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_param_declaration_type_logger  ,
"sa_param_declaration_type"  ,
sa_simple_declaration_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_declarator_type_logger  ,
"sa_declarator_type"  ,
sa_simple_declaration_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_simple_declaration_logger  ,
"sa_simple_declaration"  ,
sa_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_class_declaration_logger  ,
"sa_class_declaration"  ,
sa_class_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_class_base_logger  ,
"sa_class_base"  ,
sa_class_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_class_type_logger  ,
"sa_class_type"  ,
sa_class_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_class_logger  ,
"sa_class"  ,
sa_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_parser_action_logger  ,
"sa_parser_action"  ,
sa_logger   
)

lestes::lang::cplus::sem::initialize_logger ( sa_logger  ,
"sa"  ,
sem_logger   
)

lestes::lang::cplus::sem::initialize_logger ( or_logger  ,
"or"  ,
sem_logger   
)

lestes::lang::cplus::sem::initialize_logger ( or_ics_logger  ,
"or_ics"  ,
sem_logger   
)

lestes::lang::cplus::sem::initialize_logger ( or_ics_log  ,
"or_ics_finder"  ,
or_ics_logger   
)

lestes::lang::cplus::sem::initialize_logger ( or_log  ,
"overload"  ,
or_logger   
)

lestes::lang::cplus::sem::initialize_logger ( lookup_log  ,
"lookup"  ,
lu_logger   
)

lestes::lang::cplus::sem::initialize_logger ( lu_logger  ,
"lu"  ,
sem_logger   
)

ptr< ::lestes::msg::message_stencil1< ucn_string > > lestes::lang::cplus::sem::integer_literal_cannot_be_represented ( ::lestes::msg::message_stencil1< ucn_string >::  create("integer literal %0 cannot be represented by any of the allowed types",::lestes::msg::message::FLG_ERROR,::lestes::msg::formatter< ucn_string >::instance())  ) 

[2.13.1/3] A program is ill-formed if one of its translation units contains an integer literal that cannot be represented by any of the allowed types.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_char_specifier ( ::lestes::msg::message_stencil0< bool >::  create("short or long invalid for char",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_double_specifier ( ::lestes::msg::message_stencil0< bool >::  create("signed, unsigned or short invalid for double",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_specifier_function ( ::lestes::msg::message_stencil0< bool >::  create("invalid specifier in function declaration",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_specifier_object ( ::lestes::msg::message_stencil0< bool >::  create("invalid specifier in object declaration",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_specifier_typedef ( ::lestes::msg::message_stencil0< bool >::  create("invalid specifier in typedef",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_storage_specifier ( ::lestes::msg::message_stencil0< bool >::  create("invalid storage specifier in declaration",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_type_specifier ( ::lestes::msg::message_stencil0< bool >::  create("signed, unsigned, short or long invalid for the type",::lestes::msg::message::FLG_ERROR)  ) 

bool lestes::lang::cplus::sem::is_better_conv_seq ( ptr< or_ics_functional >  r1,
ptr< or_or_functional >  e1,
ptr< or_ics_functional >  r2,
ptr< or_or_functional >  e2 
)

This function gets two conversions c1 and c2, represented by their "left" and "rights" SCS and uc (l1,u1,r1 and l2,u2,r2 respectively).

the passed expression is the source expression of the conversion

Returns:
true if conversion c1 is better than c2, else returns false

Definition at line 76 of file or_ics.cc.

References DEREF_PTR, DEREF_PTR_NOVIS, IS_CLASS, IS_MEMBER_PTR, IS_PTR, IS_PTR_BOOL_CONV, IS_VOID, and MEMBER_PTR_BASE.

Referenced by get_best_conversion(), is_better_function(), and is_not_worse_conv_seq().

00078 {
00079         typedef ::lestes::std::list< srp< ss_type > > typelist;
00080         ptr< typelist > conv_list = typelist::create();
00081         ptr< typelist > list1, list2;
00082         typelist::iterator it1, it2;
00083         ptr< or_ics_functional_visitor > v_t = or_ics_functional_visitor::create(conv_list);
00084 
00085          /* if u1 != u2 return false;
00086           * rationale: 13.3.3.2/3
00087 
00088           if (!(u1->equals(u2)))
00089                 return false;
00090 
00091           */    
00092 
00093         if (r1->rank_get() < r2->rank_get()) {
00094                 return true;
00095         }
00096         /* 
00097          * now linearize the functionals into list of target types, for easy comparsion. This is done
00098          * using visitor on or_ics_functional. 
00099          * 
00100          * in this list, lval->rval conversions are already excluded
00101          */      
00102         list1 = r1->accept_or_ics_functional_base(v_t);
00103         list2 = r2->accept_or_ics_functional_base(v_t);
00104         
00105         /* now check if r1 is proper subsequence of r2 */
00106         it1 = list1->begin();
00107         it2 = list2->end();
00108 
00109         while (it1 != list1->end() && it2 != list2->end() && (*it1)->equals(*it2)) {
00110                 it1++;
00111                 it2++;
00112         }
00113         
00114         if (it1 == list1->end() && it2 != list2->end()) {
00115                 return true;
00116         }
00117         
00118         return false;
00119         
00120         /* The following code is not reached now. Will be used when user types work */
00121         /* TODO qualification and reference binding conversions tests */
00122 
00123         /* a conversion of (member) ptr to bool is worse than conversion which is not such 
00124          * conversion 
00125          */
00126         /* source and destination types */
00127         ptr< ss_type > s1 = e1->type_get();
00128         ptr< ss_type > s2 = e2->type_get();
00129         ptr< ss_type > t1 = (*(list1->end()));
00130         ptr< ss_type > t2 = (*(list2->end()));
00131         
00132         ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create();
00133         or_cv_enum ts1 = t1->accept_or_ics_base_cv(v);
00134         or_cv_enum ts2 = t1->accept_or_ics_base_cv(v);
00135         or_cv_enum tt1 = t1->accept_or_ics_base_cv(v);
00136         or_cv_enum tt2 = t2->accept_or_ics_base_cv(v);
00137         if (IS_PTR_BOOL_CONV(ts2,tt2) && !IS_PTR_BOOL_CONV(ts1,tt1))
00138                 return true;
00139 
00140         /* if *ts1 derived from *tt1, then ts1 ->tt1 is better than ts1* -> void*  when ts1 == ts2 */
00141         if (IS_PTR(ts1) && IS_PTR(tt1) && 
00142                 IS_CLASS(DEREF_PTR(s1)) && IS_CLASS(DEREF_PTR(t1)) && DEREF_PTR_NOVIS(t1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s1).dncast<ss_class>()) &&
00143                 s1->equals(s2) && IS_PTR(tt2) && IS_VOID(DEREF_PTR(t2)))
00144                 return true;
00145         
00146         /* if *ts2 derived from *ts1, then ts1 -> void* is better than ts2 -> void* */
00147         if (IS_PTR(ts1) && IS_PTR(ts2) && IS_PTR(tt1) && IS_PTR(tt2) &&
00148                 IS_CLASS(DEREF_PTR(s1)) && IS_CLASS(DEREF_PTR(s2)) && IS_VOID(DEREF_PTR(t1)) && IS_VOID(DEREF_PTR(t2)) && 
00149                 DEREF_PTR_NOVIS(s1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s2).dncast<ss_class>()))
00150                 return true;
00151         
00152         /* if *ts1 derived from *tt1 and *tt1 derived from *tt2 and ts1 == ts2 then tt1->ts1 better than tt2->ts2 */
00153 
00154         if (IS_PTR(ts1) && IS_PTR(tt1) && IS_PTR(tt2) &&
00155                 IS_CLASS(DEREF_PTR(s1)) && IS_CLASS(DEREF_PTR(t1)) && IS_CLASS(DEREF_PTR(t2)) &&
00156                 DEREF_PTR_NOVIS(t2).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(t1).dncast<ss_class>()) 
00157                 && DEREF_PTR_NOVIS(t1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s1).dncast<ss_class>()) &&
00158                 s1->equals(s2))
00159                 return true;
00160 
00161         /* TODO binding C -> &B better than C->&A */
00162 
00163         /* if *tt1 derived from *ts1 and *tt2 derived from *tt1 and ts1 == ts2 then
00164          * ts1::* -> tt1::* is better than ts2::* -> tt2::x */ 
00165 
00166         if (IS_MEMBER_PTR(ts1) && IS_MEMBER_PTR(tt1) && IS_MEMBER_PTR(tt2) && 
00167                 MEMBER_PTR_BASE(s1)->is_ancestor(MEMBER_PTR_BASE(t1)) &&
00168                 MEMBER_PTR_BASE(t1)->is_ancestor(MEMBER_PTR_BASE(t2)) &&
00169                 s1->equals(s2))
00170                 return true;
00171         
00172         /* ts1 derived from tt1 and tt1 derived from tt2, then ts1->tt1 is better than ts2->tt2 (if ts1==ts2) */
00173         if (IS_CLASS(ts1) && IS_CLASS(tt1) && IS_CLASS(tt2) &&
00174                 s1->equals(s2) && 
00175                 t1.dncast<ss_class>()->is_ancestor(s1.dncast<ss_class>()) && t2.dncast<ss_class>()->is_ancestor(t1.dncast<ss_class>()))
00176                 return true;
00177                 
00178         /* if (*tt1 == *tt2) and *ts1 derived from *tt1 and *ts2 derived from *ts1 then ts1->tt1 is better than ts2->tt2 */
00179         if (IS_PTR(tt1) && IS_PTR(ts1) && IS_PTR(ts2) &&
00180                 IS_CLASS(DEREF_PTR(t1)) && IS_CLASS(DEREF_PTR(s1)) && IS_CLASS(DEREF_PTR(s2)) &&
00181                 DEREF_PTR_NOVIS(t1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s2).dncast<ss_class>()) &&
00182                 DEREF_PTR_NOVIS(s1).dncast<ss_class>()->is_ancestor(DEREF_PTR_NOVIS(s2).dncast<ss_class>()) &&
00183                 t1->equals(t2))
00184                 return true;
00185         /* TODO binding B->A& is better than binding C->A& */
00186 
00187         /* if *ts1 is derived from *ts2 and *tt1 is derived from *ts1 and tt1 == tt2, then ts1::*->tt1::* is better than 
00188          * ts2::*->tt2::*
00189          */
00190         
00191         if (IS_MEMBER_PTR(ts2) && IS_MEMBER_PTR(ts1) && IS_MEMBER_PTR(tt1) &&
00192                 MEMBER_PTR_BASE(s2)->is_ancestor(MEMBER_PTR_BASE(s1)) &&
00193                 MEMBER_PTR_BASE(s1)->is_ancestor(MEMBER_PTR_BASE(t1)) &&
00194                 t1->equals(t2))
00195                 return true;
00196 
00197         /* this happens only when initialization of user-defined conversion happens (13.3.3). this is the only case when
00198          * source types are diferrent 
00199          */
00200 
00201         if (IS_CLASS(tt1) && IS_CLASS(ts1) && IS_CLASS(ts2) &&
00202                 t1.dncast<ss_class>()->is_ancestor(s1.dncast<ss_class>()) &&
00203                 s1.dncast<ss_class>()->is_ancestor(s2.dncast<ss_class>())
00204                 && t1->equals(t2))
00205                 return true;
00206 
00207         return false;   
00208 }

bool lestes::lang::cplus::sem::is_better_function ( ptr< ss_function_declaration >  f,
ptr< ss_function_declaration >  g,
ptr< exprlist >  exprs 
)

This function tests if function f is better (in terms of overload resolution) than function g, when considering parameters in expression list exprlist.

Bug:
tests for templates not done, as templates are not yet supported. tests for user conversions are not done, as user conversions are not yet supported.
Returns:
true if f is better conversion than g, otherwise return false

Definition at line 180 of file or.cc.

References is_better_conv_seq(), is_not_worse_conv_seq(), and or_find_ics().

Referenced by best_selection().

00181 {
00182         //decl_list::size_type num_args = exprs->size();
00183 
00184         ptr< decl_list > params_f = f->parameters_get()->contents_get();
00185         decl_list::iterator it_f_param = params_f->begin();
00186 
00187         ptr< decl_list > params_g = g->parameters_get()->contents_get();
00188         decl_list::iterator it_g_param = params_g->begin();
00189 
00190         exprlist::iterator it_exprs = exprs->begin();
00191         
00192         
00193         for(; it_f_param != params_f->end() && it_g_param != params_g->end() && it_exprs != exprs->end(); 
00194                         ++it_f_param, ++it_g_param, ++it_exprs) {
00195                 ptr< or_ics_functional > f_func, g_func;
00196 
00197                 f_func = or_find_ics((*it_exprs), (*it_f_param)->type_get());
00198                 g_func = or_find_ics((*it_exprs), (*it_g_param)->type_get());
00199 
00200                 if(!is_not_worse_conv_seq(f_func, (*it_exprs), g_func, (*it_exprs))) {
00201                         return false;
00202                 }
00203         }
00204         for(it_f_param = params_f->begin(), it_g_param = params_g->begin(), it_exprs = exprs->begin(); 
00205                         it_f_param != params_f->end() && it_g_param != params_g->end() && it_exprs != exprs->end(); 
00206                         ++it_f_param, ++it_g_param, ++it_exprs) {
00207                 ptr< or_ics_functional > f_func, g_func;
00208 
00209                 f_func = or_find_ics((*it_exprs), (*it_f_param)->type_get());
00210                 g_func = or_find_ics((*it_exprs), (*it_g_param)->type_get());
00211                 
00212                 if(is_better_conv_seq(f_func, (*it_exprs), g_func, (*it_exprs))){
00213                         return true;
00214                 }
00215         }
00216         /* TODO 
00217          * - f is not template && G is a template specialization instance 
00218          *   && g are templates && f is a better template specialization than g (see 14.5.5.2) 
00219          * - context is inicialization by user conversion  && SCS from return_type(f) -> dest_type is better conv seq 
00220          *   than SCS from return_type(g) -> dest_type
00221          */
00222 
00223         return false;
00224 }

bool lestes::lang::cplus::sem::is_not_worse_conv_seq ( ptr< or_ics_functional >  r1,
ptr< or_or_functional >  e1,
ptr< or_ics_functional >  r2,
ptr< or_or_functional >  e2 
)

Definition at line 210 of file or_ics.cc.

References is_better_conv_seq().

Referenced by is_better_function().

00212 {
00213         return (!(is_better_conv_seq(/*l2, u2, */r2, e2, /* l1, u1,*/ r1, e1)));
00214 }

int lestes::lang::cplus::sem::log_indent ( ptr< ::lestes::msg::logger flow,
int  ind 
)

Definition at line 100 of file ss_ss2pi_base.cc.

References log_flow_indent.

00100                                                    {    //indentation for control_flow logs
00101         for (int i=0; i<ind; i++){
00102                 flow << log_flow_indent;
00103         }
00104         return ind;
00105 }

int lestes::lang::cplus::sem::man (  ) 

Definition at line 64 of file example1.cc.

References dump(), NOINIT, ss2pi_start(), and summary_seq_points().

Referenced by main().

00064          {
00065 
00066 //ptr<ss_compound_stmt> cmps1;// = ss_compound_stmt::create();
00067 
00068 ptr<ss_translation_unit> tu = ss_translation_unit::create( ss_decl_seq::root_instance() );
00069 
00070 #define NOINIT ss_decl_stmt::IK_DEFAULT_INITIALIZATION
00071 
00072 typedef  ::lestes::std::list< srp< ss_declaration > >  listdecl;
00073 typedef  ::lestes::std::list< srp< ss_type > >  listtype;
00074 typedef  ::lestes::std::list< srp< ss_statement > >  liststmt;
00075 typedef  ::lestes::std::list< srp< ss_label > >  listlbl;
00076 typedef  ::lestes::std::list< srp< ss_expression > >  listexpr;
00077 typedef  ::lestes::std::list< srp< ss_se > >  listse;
00078 typedef  ::lestes::std::list< srp< ss_sp > >  listsp;
00079 
00080 
00081 ptr<ss_sp> sp13= ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00082 ptr<ss_sp> sp12= ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00083 ptr<ss_sp> sp11= ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00084 ptr<ss_sp> sp10= ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00085 ptr<ss_sp> sp9 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,1);
00086 ptr<ss_sp> sp8 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,1);
00087 ptr<ss_sp> sp7 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00088 ptr<ss_sp> sp6 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00089 ptr<ss_sp> sp5 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00090 ptr<ss_sp> sp4 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00091 ptr<ss_sp> sp3 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00092 ptr<ss_sp> sp2 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00093 ptr<ss_sp> sp1 = ss_sp::create(NULL,NULL,NULL,listse::create(),listse::create(),NULL,0);
00094 
00095 
00096 ptr<ss_decl_seq> ds1 = ss_decl_seq::root_instance();
00097 /* commented out by Rudo
00098 ptr<ss_decl_seq> ds1 = ss_decl_seq::create(
00099                 NULL,   //location
00100                 listdecl::create(),     //decl_seq
00101                 NULL,   //parent
00102                 NULL,   //compound
00103                 NULL,   //using dir
00104                 NULL    //declaration
00105         );
00106 */
00107 
00108 ptr<ss_compound_stmt> cs1 = ss_compound_stmt::root_instance();
00109 /* commented out by Rudo
00110 ptr<ss_compound_stmt> cs1 = ss_compound_stmt::create(
00111                 NULL,   //location
00112                 listlbl::create(),      //labels
00113                 NULL,   //parent
00114                 NULL,   //psp
00115                 NULL,   //nsp
00116                 listsp::create(),       //sps
00117                 NULL,   //decl
00118                 liststmt::create()      //statements
00119                         );
00120 */
00121                         
00122 ptr<ss_function_declaration> fd1 = ss_function_declaration::create(
00123         NULL,   //loc
00124         ss_declaration_time::create(0), //visible
00125         ss_declaration_time::create(0), //declt time
00126         NULL,   //name
00127         NULL,   //contain scope
00128         NULL,   //type
00129         NULL,   //linkage
00130         NULL,   //params
00131         NULL    //body
00132         //false,        //pure virtual
00133         //false,        //virtuality
00134         //false         //ellipsis
00135         );
00136 
00137 ptr<ss_ordinary_name> on1 = ss_ordinary_name::create(NULL,"main");
00138 
00139 ptr<ss_type> sint = ss_type_sint::instance();
00140 
00141 ptr<ss_function> tfun1 = ss_function::create(sint,listtype::create(),false);
00142 
00143 ptr<ss_decl_seq> ds3 = ss_decl_seq::create(NULL,listdecl::create(),ds1,NULL,NULL,NULL);
00144 
00145 ptr<ss_decl_seq> ds2 = ss_decl_seq::create(NULL,listdecl::create(),ds3,NULL,NULL,NULL);
00146 
00147 ptr<ss_compound_stmt> cs3 = ss_compound_stmt::create(NULL,listlbl::create(),cs1,NULL,NULL,listsp::create(),ds3,liststmt::create(),NULL);
00148 
00149 ptr<ss_compound_stmt> cs2 = ss_compound_stmt::create(NULL,listlbl::create(),cs3,sp1,sp7,listsp::create(),ds2,liststmt::create(),sp6);
00150 
00151 ptr<ss_decl_stmt> dst1 = ss_decl_stmt::create(NULL,listlbl::create(),cs2,sp2,sp3,listsp::create(),NULL,listexpr::create(),NOINIT);
00152 
00153 ptr<ss_object_declaration> od1 = ss_object_declaration::create(NULL,ss_declaration_time::create(0),ss_declaration_time::create(0),NULL,NULL,sint,NULL,ss_declaration_time::infinity(),NULL);
00154 
00155 ptr<ss_ordinary_name> on2 = ss_ordinary_name::create(NULL,"i");
00156 
00157 ptr<ss_expr_stmt> est1 = ss_expr_stmt::create(NULL,listlbl::create(),NULL,sp4,sp5,listsp::create(),NULL);
00158 
00159 ptr<ss_assign> as1 = ss_assign::create(NULL,sint,sp4,sp5,NULL,NULL);
00160 
00161 ptr<ss_se> ase1 = ss_se::create(NULL,NULL,sp4,sp5);
00162 
00163 ptr<ss_var_ref> var1 = ss_var_ref::create(NULL,sint,sp4,sp5,NULL);
00164 
00165 ptr<ss_literal_info> linfo1 = ss_integral_literal_info::create(sint,"1");
00166 
00167 ptr<ss_literal> lit1 = ss_literal::create(NULL,sint,sp4,sp5,NULL); 
00168 
00169 ptr<ss_decl_stmt> dst2 = ss_decl_stmt::create(NULL,listlbl::create(),cs1,NULL,NULL,listsp::create(),NULL,listexpr::create(),NOINIT);
00170 
00171 ptr< ss_se > fse2 = ss_se::create(NULL,NULL,sp8,sp9);
00172 
00173 ptr< ss_funcall > fc1 = ss_funcall::create(NULL,sint,sp8,sp9,listexpr::create(),NULL);
00174 
00175 ptr<ss_expr_stmt> est2 = ss_expr_stmt::create(NULL,listlbl::create(),cs2,sp6,sp7,listsp::create(),NULL);
00176 
00177 
00178 
00179 
00180 
00181 ptr<ss_decl_stmt> dst3 = ss_decl_stmt::create(NULL,listlbl::create(),cs3,NULL,NULL,listsp::create(),NULL,listexpr::create(),NOINIT);
00182 
00183 ptr< ss_parameter_declaration > dpar1 = ss_parameter_declaration::create(NULL,ss_declaration_time::create(0),ss_declaration_time::create(0),NULL,NULL,sint,NULL,ss_access_specifier::ACCESS_PUBLIC,ss_storage_class::ST_NONE,ss_declaration_time::infinity(),NULL,0);
00184 
00185 ptr< ss_ordinary_name > on3 = ss_ordinary_name::create(NULL,"j");
00186 
00187 ptr< ss_get > get1 = ss_get::create(NULL,sint,sp8,sp9,NULL);
00188 
00189 ptr< ss_var_ref > var2 = ss_var_ref::create(NULL,sint,sp6,sp8,NULL);
00190 
00191 ptr< ss_fake_declaration > fake1 = ss_fake_declaration::create(NULL,ss_declaration_time::create(0),ss_declaration_time::create(0),NULL,NULL,sint,NULL,ss_access_specifier::ACCESS_PUBLIC,ss_storage_class::ST_NONE,NULL);
00192 
00193 ptr< ss_compound_stmt_declaration > csd1 = ss_compound_stmt_declaration::create(NULL,ss_declaration_time::create(0),ss_declaration_time::create(0),NULL,NULL,NULL,NULL,cs2);
00194 
00195 
00196 ptr< ss_get > get2 = ss_get::create(NULL,sint,sp10,sp11,NULL);
00197 
00198 ptr< ss_var_ref > var3 = ss_var_ref::create(NULL,sint,sp10,sp11,NULL);
00199 
00200 ptr< ss_return > ret1 = ss_return::create(NULL,NULL,cs2,sp10,sp11,listsp::create(),NULL);
00201 
00202 ptr< ss_get > get3 = ss_get::create(NULL,sint,sp10,sp11,NULL);
00203 
00204 ptr< ss_var_ref > var4 = ss_var_ref::create(NULL,sint,sp10,sp11,NULL);
00205 
00206 ptr< ss_add > add1 = ss_add::create(NULL,sint,sp10,sp11,NULL,NULL);
00207 
00208 ptr< ss_linkage > link1 = ss_linkage::create("C",ss_linkage::LINKAGE_EXTERNAL);
00209 
00210 //**************************************************************************************************************************
00211 
00212 //Rudo: tu->global_scope_set(ds1);
00213 
00214 tfun1->params_get()->push_back(sint);
00215 
00216 ds1->contents_get()->push_back(fd1);
00217 //Rudo: ds1->compound_stmt_set(cs1);
00218 
00219 //Rudo: cs1->decl_seq_set(ds1);
00220 cs1->statements_get()->push_back(dst2);
00221 
00222 //Rudo: dst2->parent_set(cs1);
00223 dst2->decl_set(fd1);
00224 
00225 fd1->name_set(on1);
00226 fd1->type_set(tfun1);
00227 fd1->body_set(cs2);
00228 fd1->contained_in_set(ds1);
00229 fd1->parameters_set(ds3);
00230 fd1->linkage_set(link1);
00231 
00232 //Rudo: cs2->parent_set(cs1);
00233 //Rudo: cs2->decl_seq_set(ds2);
00234 cs2->statements_get()->push_back(dst1);
00235 cs2->statements_get()->push_back(est1);
00236 cs2->statements_get()->push_back(est2);
00237 cs2->statements_get()->push_back(ret1);
00238 
00239 
00240 //Rudo: ds2->parent_set(ds1);
00241 ds2->compound_stmt_set(cs2);
00242 ds2->contents_get()->push_back(fake1);
00243 ds2->contents_get()->push_back(od1);
00244 ds2->declared_by_set(csd1);
00245 
00246 //Rudo: dst1->parent_set(cs2);
00247 dst1->decl_set(od1);
00248 
00249 od1->contained_in_set(ds2);
00250 od1->name_set(on2);
00251 
00252 est1->expression_set(as1);
00253 est1->sequence_points_get()->push_back(sp4);
00254 est1->sequence_points_get()->push_back(sp5);
00255 
00256 as1->left_set(var1);
00257 as1->right_set(lit1);
00258 //as1->side_effect_set(ase1);
00259 
00260 ase1->from_set(as1);
00261 
00262 var1->var_decl_set(od1);
00263 
00264 lit1->value_set(linfo1);
00265 
00266 est2->expression_set(fc1);
00267 est2->sequence_points_get()->push_back(sp6);
00268 est2->sequence_points_get()->push_back(sp7);
00269 est2->sequence_points_get()->push_back(sp8);
00270 est2->sequence_points_get()->push_back(sp9);
00271 
00272 fc1->function_set(fd1);
00273 fc1->args_get()->push_back(get1);
00274 
00275 fse2->from_set(fc1);
00276 
00277 
00278 
00279 ds3->compound_stmt_set(cs3);
00280 ds3->contents_get()->push_back(dpar1);
00281 ds3->declared_by_set(fd1);
00282 
00283 cs3->statements_get()->push_back(dst3);
00284 
00285 dst3->decl_set(dpar1);
00286 
00287 dpar1->name_set(on3);
00288 dpar1->contained_in_set(ds3);
00289 
00290 get1->expr_set(var2);
00291 
00292 var2->var_decl_set(fake1);
00293 
00294 fake1->real_decl_set(dpar1);
00295 fake1->name_set(on3);
00296 fake1->contained_in_set(ds2);
00297 
00298 
00299 get2->expr_set(var3);
00300 
00301 var3->var_decl_set(fake1);
00302 
00303 ret1->result_set(add1);
00304 ret1->sequence_points_get()->push_back(sp10);
00305 ret1->sequence_points_get()->push_back(sp11);
00306 
00307 get3->expr_set(var4);
00308 
00309 var4->var_decl_set(fake1);
00310 
00311 add1->left_set(get2);
00312 add1->right_set(get3);
00313 
00314 
00315                   sp1->nsp_set(sp2);
00316 sp2->psp_set(sp1);sp2->nsp_set(sp3);
00317 sp3->psp_set(sp2);sp3->nsp_set(sp4);
00318 sp4->psp_set(sp3);sp4->nsp_set(sp5);sp4->nse_get()->push_back(ase1);
00319 sp5->psp_set(sp4);sp5->nsp_set(sp6);sp5->pse_get()->push_back(ase1);
00320 sp6->psp_set(sp5);sp6->nsp_set(sp7);
00321 sp7->psp_set(sp6);sp7->nsp_set(sp10);
00322 sp8->psp_set(sp6);sp8->nsp_set(sp9);sp8->nse_get()->push_back(fse2);
00323 sp9->psp_set(sp8);sp9->nsp_set(sp7);sp9->pse_get()->push_back(fse2);
00324 sp10->psp_set(sp7);sp10->nsp_set(sp11);
00325 sp11->psp_set(sp10);sp11->nsp_set(sp12);
00326 sp12->psp_set(sp11);sp12->nsp_set(sp13);
00327 sp13->psp_set(sp12);
00328 
00329 
00330 
00331                         //FIXME chybi vyplnene filedy ss.statement.sequence-points
00332 
00333 ::std::ofstream f("example1.xml");
00334 dumper::dump( f, tu );
00335 f.close();
00336 
00337 ss2pi_start(tu);
00338 summary_seq_points(sp1);
00339 lestes::backend::backend::create(::std::cout)->main();
00340 
00341 return 1;
00342 }//man

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::methods_not_implemented ( ::lestes::msg::message_stencil0< bool >::  create("method declarations are not implemented",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil1< ptr< as_id > > > lestes::lang::cplus::sem::name_already_declared ( ::lestes::msg::message_stencil1< ptr< as_id > >::  create("name already declared when trying to define namespace '%0'",::lestes::msg::message::FLG_ERROR,::lestes::msg::formatter< ptr< as_id > >::instance())  ) 

[7.3.1/2]

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::no_viable_found ( ::lestes::msg::message_stencil0< bool >::  create("Found no viable function to call",::lestes::msg::message::FLG_ERROR)  ) 

Issued when the overload resolution process doesn't find any viable function.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::non_lval_assign ( ::lestes::msg::message_stencil0< bool >::  create("Non-lvalue used in assign.",::lestes::msg::message::FLG_ERROR)  ) 

Issued when the left argument of assign was not lvalue.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::non_lval_crement ( ::lestes::msg::message_stencil0< bool >::  create("Non-lvalue used in increment/decrement.",::lestes::msg::message::FLG_ERROR)  ) 

Issued when the argument of (postfix/prefix) increment/decrement was not lvalue.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::non_lvalue_in_unary_amp ( ::lestes::msg::message_stencil0< bool >::  create("Non-lvalue used in unary &",::lestes::msg::message::FLG_ERROR)  ) 

Issued when rvalue is used as argument to unary amp, which accepts only lvalues.

ptr< or_ics_functional > lestes::lang::cplus::sem::or_find_ics ( ptr< or_or_functional >  source,
ptr< ss_type >  target 
)

This is the main function called by outside world - used to find implicit conversion sequence between source and target. It fires up visitor, depending on the source type, which then constructs the conversion sequence. TODO: if the source expression is funcall && to vraci rval (neni referencni) potom identita je get (rank IDENTITY)

Returns:
expression representing the implicit conversion sequence

Definition at line 266 of file or_ics.cc.

References filter_type(), llog, OR_CV_PSEUDOREFERENCE, and RANK_EXACT.

Referenced by lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_bin_op_nosideeff(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_bin_op_nosideeff_arith(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_bin_op_nosideeff_newsp(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_op_crement(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_op_equal_sideeff(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_un_op_nosideeff(), exists_ics_conversion(), and is_better_function().

00267 {
00268         typedef ::lestes::std::list< srp< or_ics_functional > > funclist;
00269 
00270         llog(or_ics_log) << "Entering or_find_ics()\n";
00271 
00272         ptr< funclist > scs_tgts_seq = funclist::create();
00273         ptr< funclist > scs_srcs_seq = funclist::create();
00274         ptr< funclist > filtered_list;
00275         
00276         ptr< or_ics_visitor_tgts > v_t = or_ics_visitor_tgts::create(source, 1, scs_tgts_seq);
00277         ptr< or_ics_functional > best_conv;
00278         
00279         ptr< funclist > scs_imaginable_tgts, scs_imaginable_srcs;
00280         
00281         /* this finds all SCS-imaginable types for source type. It can remember the phase 
00282          * so calling it three times causes multiple phases to be called.
00283          */
00284 
00285         llog(or_ics_log) << "Executing first phase\n";
00286         scs_imaginable_tgts = source->type_get()->accept_or_ics_base(v_t);
00287 
00288         /* the pseudoreference performs the recursion itself, so we must not to run it here again */
00289         ptr< or_ics_visitor_cv > v = or_ics_visitor_cv::create(); 
00290         if(source->type_get()->accept_or_ics_base_cv(v) != OR_CV_PSEUDOREFERENCE) {
00291                 /* for non-pseudoreferences, the identity is handled here */
00292                 ptr< ss_type > type1 = source->type_get();
00293                 ptr< or_ics_functional_for_std_conversion > conversion1 = or_ics_functional_for_std_conversion::create(RANK_EXACT, type1);
00294                 scs_tgts_seq->push_back(conversion1);
00295                 
00296                 llog(or_ics_log) << "Source is not pseudoreference, executing second and third phases\n";
00297                 scs_imaginable_tgts = source->type_get()->accept_or_ics_base(v_t);
00298                 scs_imaginable_tgts = source->type_get()->accept_or_ics_base(v_t);
00299         }
00300                 
00301         llog(or_ics_log) << "Found " << scs_imaginable_tgts->size() << " imaginable target types\n";
00302         
00303         /* for each element of the target, 
00304          * - if the imaginable tgt is builtin type, lookup is performed and user-defined conversions (by constructor)
00305          * possible and create list of pairs {l1, u1}, where l1\elem scs_imaginable_tgts and
00306          * u1 \elem user_defined_conversions from type l1 
00307          *
00308          * - if the imaginable tgt is class (and therefore the source was also class and the conversion
00309          * was just derived-to-base standard conversion), it is now neccessary to search for user-defined
00310          * conversion functions, generate appropriate conversion by this conversion function, and continue
00311          * with generating 'left' part of the ICS
00312          * 
00313          * this is TODO
00314          */
00315         
00316         /* filter out those not having the type of target */
00317 
00318         filtered_list = filter_type(scs_imaginable_tgts, target);
00319         
00320         llog(or_ics_log) << "After filtering " << filtered_list->size() << " left\n";
00321         
00322         /* now get the best conversion from those remaining in the list.
00323          * this will be more useful as soon as user-def conversions come
00324          * on scene. 
00325          *
00326          * Just for now, not having user types and user conversions 
00327          * so far, return the first from filtered_list (if we are
00328          * in builtin type situation, there should be just one anyway).
00329          * 
00330          * this is TODO FIXME as long as we are going to handle user types and conversions
00331          */
00332 //      best_conv = get_best_conversion(filtered_list, source);
00333 //      return best_conv;       
00334         
00335         if (filtered_list->size() > 0) 
00336                 return filtered_list->front();
00337         else
00338                 return NULL;
00339 }

ptr< or_or_functional > lestes::lang::cplus::sem::overload_resolution ( ptr< exprlist >  exprs,
ptr< func_decl_set >  candidates 
)

This is the main function performing overload resolution algorithm. It differs from the previous one in the sense of how it is collecting candidates - this one receives candidates from "upstream" and then just (will one day) performs Koenig lookup, but the set of candidates is given and not obtained using lookup.

This is used in the case of sa_deconstruct_spse::visit_as_expression_function_call, for distinguisging the function prefix. See the apropriate comment in there

Bug:
Koenig lookup not ready yet
Returns:
functional representing the best selected overloaded function

Definition at line 360 of file or.cc.

References best_selection(), and select_viable().

00361 {
00362         ptr< func_decl_set > viable_candidates = select_viable(candidates, exprs);
00363 
00364         return best_selection(viable_candidates, exprs);
00365 }

ptr< or_or_functional > lestes::lang::cplus::sem::overload_resolution ( ptr< exprlist >  exprs,
ptr< ss_operator>  func_name 
)

This is the main function performing overload resolution algorithm. It first collects candidates (performs lookup for function name), selects viable functions from these candidates, and then returns best of the viable functions found

Bug:
Koenig lookup not ready yet
Returns:
functional representing the best selected overloaded function

Definition at line 313 of file or.cc.

References best_selection(), collect_candidates(), llog, and select_viable().

Referenced by lestes::lang::cplus::sem::sa_deconstruct_spse::construct_bin_op(), lestes::lang::cplus::sem::sa_deconstruct_spse::construct_unary_op_create(), and lestes::lang::cplus::sem::sa_deconstruct_spse::construct_unary_op_nocreate().

00314 {
00315         /* search func_name in current context & associated namespaces (exprs) */
00316         /* Rudo will search according to decl_seq and decl_name and returns 
00317          * collection ss_declarations (will have to be dncasted to ss_function_delcaration
00318          */
00319 
00320         ptr< ss_decl_seq > ctxt = sa_context_manager::instance()->current()->ss_get()->scope_get();
00321 
00322         llog(or_log) << "Before collect candidates\n";
00323 
00324         ptr< func_decl_set > candidates = collect_candidates(func_name, ctxt);
00325 
00326         llog(or_log) << "Done, selected " << candidates->size() <<  " candidates\n";
00327 
00328         ptr< func_decl_set > viable_candidates = select_viable(candidates, exprs);
00329 
00330         llog(or_log) << "After viable candidates selection, selected " << viable_candidates->size() << " viable\n";
00331         
00332         /* if no viable functions were found, look if it is not the case of 'there exists builtin
00333          * declaration for every type', which is ',' and some others. See [13.6] and [13.3] for more
00334          * details.
00335          *
00336          * In such case, add the declaration of given ss_operator with current parameters to the decl_seq. 
00337          * This is immediate TODO, just after a few tests.
00338          */
00339         if (viable_candidates->size() == 0) {
00340                 return NULL;
00341         }
00342         return best_selection(viable_candidates, exprs);
00343 }

ptr< pi_mem > lestes::lang::cplus::sem::pi_operand2pi_mem ( ptr< pi_operand >  x  ) 

Converts returned result from expression visitor for requested type. TODO: reformulate dncast via visitors on pi_operand structures

Definition at line 208 of file ss_ss2pi_base.cc.

Referenced by lestes::lang::cplus::sem::ss_expr2pi::returns_mem().

00208                                                    {
00209         
00210         ptr<pi_mem>p = x.dncast<pi_mem>();
00211         return p;
00212 }

ptr< pi_mem_ptr_deref > lestes::lang::cplus::sem::pi_operand2pi_mem_pointer ( ptr< pi_operand >  x  ) 

Converts returned result from expression visitor for requested type. TODO: reformulate dncast via visitors on pi_operand structures

Definition at line 218 of file ss_ss2pi_base.cc.

Referenced by lestes::lang::cplus::sem::ss_expr2pi::returns_mem_pointer().

00218                                                                      {
00219         
00220         ptr<pi_mem_ptr_deref>p = x.dncast<pi_mem_ptr_deref>();
00221         return p;
00222 }

ptr< pi_preg > lestes::lang::cplus::sem::pi_operand2pi_preg ( ptr< pi_operand >  x  ) 

Converts returned result from expression visitor for requested type. TODO: reformulate dncast via visitors on pi_operand structures

Definition at line 228 of file ss_ss2pi_base.cc.

Referenced by lestes::lang::cplus::sem::ss_expr2pi::returns_preg().

00228                                                      {
00229 
00230         ptr<pi_preg>p = x.dncast<pi_preg>();
00231         return p;
00232 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::previous_declaration ( ::lestes::msg::message_stencil0< bool >::  create("previously declared here",::lestes::msg::message::FLG_ERROR)  ) 

void lestes::lang::cplus::sem::process_friend_function_declaration ( ptr< sa_context >  ctx,
ptr< sa_declaration_specifiers >  specifiers,
ptr< as_declarator >  declarator 
)

Definition at line 467 of file sa_simple_declaration.cc.

References lassert.

00469 {
00470         lassert(ctx && specifiers && declarator);
00471         lassert(false);
00472 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::redeclaration_different ( ::lestes::msg::message_stencil0< bool >::  create("redeclaration as different kind of symbol",::lestes::msg::message::FLG_ERROR)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::redefinition ( ::lestes::msg::message_stencil0< bool >::  create("redefinition of object",::lestes::msg::message::FLG_ERROR)  ) 

void lestes::lang::cplus::sem::run ( void   ) 

Definition at line 50 of file sa_class_creation.test.cc.

References lestes::std::dumper::dump(), and loc.

00051 {
00052         /* these are conceivably comming from the context */
00053         ptr < source_location > loc = source_location::create(file_info::create("",NULL),1,1);
00054         ptr < ss_compound_stmt > parent_stmt = ss_compound_stmt::root_instance();
00055         ptr < ss_decl_seq > parent_scope = ss_decl_seq::root_instance();
00056         ss_access_specifier::type access_specifier = ss_access_specifier::ACCESS_PUBLIC;
00057         
00058 
00059         /* these could be comming from the handled thing */
00060         /* their form is not fixed. they might come in different flavor */
00061         ptr < ss_decl_name > name = ss_ordinary_name::create(loc, "name_of_the_class");
00062         ptr < ::lestes::std::list < srp < ss_base_specifier > > > base_class_list = ::lestes::std::list < srp < ss_base_specifier > >::create();
00063 
00064         /* these are the ``true'' local variables */
00065 
00066         ptr < pair < srp < ss_decl_seq >, srp < ss_compound_stmt > > > p = sa_decl_seq_compound_pair_creator::instance()->process(loc, parent_scope, parent_stmt);
00067 
00068         ptr < ss_decl_seq > decl_seq = p->first;
00069         ptr < ss_compound_stmt > stmt = p->second;
00070 
00071 
00072         ptr < ss_class > a_class = ss_class::create(
00073                         decl_seq, /* members */
00074                         ss_decl_seq::root_instance()->declared_by_get(), /* declaration */
00075                         // FIXME more complicated approach needed
00076                         // to handle the POD requirements wrt/ to base classes
00077                         true, /* POD */
00078                         ss_declaration_time::infinity(), /* completition time */
00079                         base_class_list /* bases */
00080                         /* descendants */
00081                         );
00082 
00083 
00084 
00085         ptr < ss_structure_declaration > class_decl = ss_structure_declaration::create(
00086                         loc, // location
00087                         ss_declaration_time::create(loc->order_get()), // visible
00088                         ss_declaration_time::create(loc->order_get()), // decl time
00089                         name, //name
00090                         parent_scope, // contained in
00091                         a_class, // type
00092                         ss_linkage::create("C++", ss_linkage::LINKAGE_EXTERNAL), // linkage
00093                         // FIXME: lookup needed here:
00094                         access_specifier, // access specifier
00095                         ss_storage_class::ST_NONE, // storage class
00096                         ::lestes::std::set< srp< ss_struct_base > >::create(), // friends
00097                         decl_seq
00098                         );
00099 
00100         ptr < ss_injected_class_declaration > class_decl_alias = ss_injected_class_declaration::create(
00101                         loc, // location
00102                         ss_declaration_time::create(loc->order_get()), // visible
00103                         ss_declaration_time::create(loc->order_get()), // decl time
00104                         name, //name
00105                         parent_scope, // contained in
00106                         a_class, // type
00107                         ss_linkage::create("C++", ss_linkage::LINKAGE_EXTERNAL), // linkage
00108                         ss_access_specifier::ACCESS_PUBLIC, // access specifier
00109                         ss_storage_class::ST_NONE, // storage class
00110                         class_decl // real class
00111                         );
00112 
00113         /* fill 'em with THE RIGHT values */
00114         a_class->decl_set(class_decl);
00115         decl_seq->declared_by_set(class_decl);
00116         decl_seq->contents_get()->push_back(class_decl_alias);
00117         parent_scope->contents_get()->push_back(class_decl);
00118 
00119         ::std::ofstream f("sa_class_creation.test.xml");
00120 	::lestes::std::dumper::dump(f, a_class);
00121         f.close();
00122         //lassert2(false, "AAAAAAAAAAAAAAAAAAAAAAA");
00123         //lassert2(false, "BBBBBBBBBBBBBBBBBBBBBBB");
00124 }

int lestes::lang::cplus::sem::run_test (  ) 

Definition at line 38 of file ss_decl_name_matcher.test.cc.

References lassert.

Referenced by main().

00039 {
00040         ptr<source_location> l = source_location::create(file_info::create("",NULL),1,1);
00041         ptr<source_location> ll = source_location::create(file_info::create("",NULL),2,3);
00042 
00043         ptr<ss_decl_name> nvoid1 = ss_conversion_name::create( l, ss_void::instance() );
00044         ptr<ss_decl_name> nvoid2 = ss_conversion_name::create( ll, ss_void::instance() );
00045         ptr<ss_decl_name> nsint = ss_conversion_name::create( ll, ss_type_sint::instance() );
00046 
00047         ptr<ss_decl_name> dummy = ss_dummy_name::create( ll );
00048 
00049         ptr<ss_decl_name> ord1 = ss_ordinary_name::create( l, "name" );
00050         ptr<ss_decl_name> ord2 = ss_ordinary_name::create( ll, "name" );
00051         ptr<ss_decl_name> ordx = ss_ordinary_name::create( ll, "x" );
00052 
00053         ptr<ss_decl_name> nopbe1 = ss_operator_sbe::create( l );
00054         ptr<ss_decl_name> nopbe2 = ss_operator_sbe::create( ll );
00055         ptr<ss_decl_name> nopbg = ss_operator_sbg::create( ll );
00056 
00057         lassert( nvoid1->matches(nvoid2) );
00058         lassert( nvoid2->matches(nvoid1) );
00059         lassert( !nvoid1->matches(nsint) );
00060 
00061         lassert( !dummy->matches(dummy) );
00062 
00063         lassert( ord1->matches(ord2) );
00064         lassert( ord2->matches(ord1) );
00065         lassert( ordx->matches(ordx) );
00066         lassert( !ord1->matches(ordx) );
00067 
00068         lassert( nopbe1->matches(nopbe2) );
00069         lassert( nopbe2->matches(nopbe1) );
00070         lassert( !nopbe2->matches(nopbg) );
00071 
00072         lassert( !dummy->matches(nopbg) );
00073         lassert( !ord1->matches(nsint) );
00074         lassert( !nopbe1->matches(nvoid1) );
00075 
00076         return 0;
00077 }

void lestes::lang::cplus::sem::sa_decl_spec_test ( void   ) 

Tests sa_decl_spec class.

Performs testing of sa_decl_spec class.

Definition at line 63 of file sa_decl_spec.test.cc.

References lassert, lassert_no_specifiers, and loc.

Referenced by main().

00064 {
00065         ptr<file_info> fi = file_info::create("abc",NULL);
00066         ptr<source_location> loc = source_location::create(fi,1,1);
00067         typedef sa_decl_spec::as_decl_spec_list_type ds_list_type;
00068         
00069         ptr<ds_list_type> dsl = ds_list_type::create();
00070         ptr<sa_decl_spec_context> ctx =
00071                 sa_decl_spec_context::create(declaration_context::CTX_NAMESPACE);
00072         ptr<sa_decl_spec> sads = sa_decl_spec::create(ctx);
00073                 
00074         dsl->push_back(as_int_simple_type_specifier::create(loc));
00075         sads->process(dsl);
00076         lassert(sads->type_get() == ss_type_sint::instance());
00077         lassert_no_specifiers(sads);
00078         dsl->clear();
00079 
00080         dsl->push_back(as_unsigned_simple_type_specifier::create(loc));
00081         sads->process(dsl);
00082         lassert(sads->type_get() == ss_type_uint::instance());
00083         lassert_no_specifiers(sads);
00084         dsl->clear();
00085 
00086         dsl->push_back(as_short_simple_type_specifier::create(loc));
00087         sads->process(dsl);
00088         lassert(sads->type_get() == ss_type_sshort::instance());
00089         lassert_no_specifiers(sads);
00090         dsl->clear();
00091 
00092         dsl->push_back(as_int_simple_type_specifier::create(loc));
00093         dsl->push_back(as_long_simple_type_specifier::create(loc));
00094         dsl->push_back(as_unsigned_simple_type_specifier::create(loc));
00095         sads->process(dsl);
00096         lassert(sads->type_get() == ss_type_ulong::instance());
00097         lassert_no_specifiers(sads);
00098         dsl->clear();
00099         
00100         dsl->push_back(as_char_simple_type_specifier::create(loc));
00101         dsl->push_back(as_unsigned_simple_type_specifier::create(loc));
00102         sads->process(dsl);
00103         lassert(sads->type_get() == ss_type_uchar::instance());
00104         lassert_no_specifiers(sads);
00105         dsl->clear();
00106         
00107         dsl->push_back(as_char_simple_type_specifier::create(loc));
00108         dsl->push_back(as_signed_simple_type_specifier::create(loc));
00109         sads->process(dsl);
00110         lassert(sads->type_get() == ss_type_schar::instance());
00111         lassert_no_specifiers(sads);
00112         dsl->clear();
00113         
00114         dsl->push_back(as_char_simple_type_specifier::create(loc));
00115         sads->process(dsl);
00116         lassert(sads->type_get() == ss_type_pchar::instance());
00117         lassert_no_specifiers(sads);
00118         dsl->clear();
00119 
00120         dsl->push_back(as_int_simple_type_specifier::create(loc));
00121         dsl->push_back(as_cv_qualifier_const::create(loc));
00122         sads->process(dsl);
00123         lassert(sads->type_get() == ss_const::instance(ss_type_sint::instance()));
00124         lassert_no_specifiers(sads);
00125         dsl->clear();
00126 
00127         lassert(ss_const::instance(ss_volatile::instance(ss_type_sint::instance())) ==
00128                 ss_const::instance(ss_volatile::instance(ss_type_sint::instance())));
00129                 
00130         lassert(ss_const::instance(ss_volatile::instance(ss_type_sint::instance())) ==
00131                 ss_volatile::instance(ss_const::instance(ss_type_sint::instance())));
00132                 
00133         dsl->push_back(as_int_simple_type_specifier::create(loc));
00134         dsl->push_back(as_cv_qualifier_const::create(loc));
00135         dsl->push_back(as_cv_qualifier_volatile::create(loc));
00136         sads->process(dsl);
00137         lassert(sads->type_get() ==
00138                 ss_const::instance(ss_volatile::instance(ss_type_sint::instance())));
00139         lassert_no_specifiers(sads);
00140         dsl->clear();
00141 
00142 }

void lestes::lang::cplus::sem::sa_declarator_test ( void   ) 

Tests sa_declarator class.

Performs testing of sa_declarator class.

Definition at line 58 of file sa_declarator.test.cc.

References loc.

Referenced by main().

00059 {
00060         ptr<file_info> fi = file_info::create("abc",NULL);
00061         ptr<source_location> loc = source_location::create(fi,1,1);
00062 
00063 #if 0
00064         ptr<ss_sp> psp = ss_sp::create(
00065                 loc,
00066                 NULL, // a__ss_sp__psp,
00067                 NULL, //  a__ss_sp__nsp,
00068                 ::lestes::std::list< srp< ss_se > >::create(),  //  a__ss_sp__pse,
00069                 ::lestes::std::list< srp< ss_se > >::create(),  //  a__ss_sp__nse,
00070                 NULL, // ptr< ::lestes::backend::intercode::pi_sp >   a__ss_sp__pi_spe,
00071                 0    //ulint    a__ss_sp__level
00072                 );
00073                 
00074         ptr<ss_sp> nsp = ss_sp::create(
00075                 loc,
00076                 NULL, // a__ss_sp__psp,
00077                 NULL, //  a__ss_sp__nsp,
00078                 ::lestes::std::list< srp< ss_se > >::create(),  //  a__ss_sp__pse,
00079                 ::lestes::std::list< srp< ss_se > >::create(),  //  a__ss_sp__nse,
00080                 NULL, // ptr< ::lestes::backend::intercode::pi_sp >   a__ss_sp__pi_spe,
00081                 0    //ulint    a__ss_sp__level
00082                 );
00083                 
00084         ptr<ss_compound_stmt> containing_compound =
00085                 ss_compound_stmt::create(
00086                         loc, // ptr< ::lestes::std::object >      a__ss_base_with_location__location,
00087                         ::lestes::std::list< srp< ss_label > >::create(), //   a__ss_statement__labels,
00088                         NULL, // a__ss_statement__parent,
00089                         psp, // a__ss_statement__psp,
00090                         nsp, // a__ss_statement__nsp,
00091                         ::lestes::std::list< srp< ss_sp > >::create(), // a__ss_statement__sequence_points,
00092                         NULL,     // ptr< ss_decl_seq >,  a__ss_compound_stmt__decl,
00093                         ::lestes::std::list< srp< ss_statement > >::create() // statements
00094                         );
00095         
00096         ptr<ss_decl_seq> containing_scope = ss_decl_seq::create(
00097                         loc,
00098                         ::lestes::std::list< srp< ss_declaration > >::create(), // a__ss_decl_seq__declarations
00099                         NULL, //ptr< ss_decl_seq > a__ss_decl_seq__parent
00100                         containing_compound, //ptr< ss_compound_stmt > a__ss_decl_seq__compound_stmt
00101                         ::lestes::std::list< srp< ss_using_directive > >::create(), // using directives
00102                         NULL //   ptr< ss_declaration >       a__ss_decl_seq__declared_by         
00103                         );
00104 #endif
00105 
00106         ptr<ss_compound_stmt> containing_compound = ss_compound_stmt::root_instance();
00107         ptr<ss_decl_seq> containing_scope = ss_decl_seq::root_instance();
00108         
00109         typedef sa_declarator_context::as_decl_spec_list_type ds_list_type;
00110         
00111         ptr<ds_list_type> dsl = ds_list_type::create();
00112         ptr<sa_decl_spec_context> sadsc =
00113                 sa_decl_spec_context::create(declaration_context::CTX_NAMESPACE);
00114         ptr<sa_decl_spec> sads = sa_decl_spec::create(sadsc);
00115         dsl->push_back(as_int_simple_type_specifier::create(loc));
00116         sads->process(dsl);
00117 
00118         typedef ::lestes::std::list< srp<as_cv_qualifier> > as_cv_qualifier_list;
00119         ptr<as_cv_qualifier_list> ascvql = as_cv_qualifier_list::create();
00120         ascvql->push_back(as_cv_qualifier_const::create(loc));
00121         
00122         ptr<as_ptr_op_star> aspos = as_ptr_op_star::create(loc,ascvql);
00123         
00124         typedef ::lestes::std::list< srp<as_declarator_op> > as_declarator_op_list;
00125         ptr<as_declarator_op_list> asdol = as_declarator_op_list::create();
00126         asdol->push_back(aspos);
00127         
00128         ptr<as_name> asn = as_name::create(
00129                         loc,
00130                         as_name::create(loc, NULL,as_global_namespace_fake_id::create(loc),false),
00131                         as_global_namespace_fake_id::create(loc),
00132                         true);
00133         
00134         ptr<as_declarator> asd = as_declarator::create(
00135                         loc,
00136                         asn,
00137                         asdol
00138                         );
00139 
00140         ptr<sa_declarator_context> sadc =
00141                 sa_declarator_context::create(
00142                                 declaration_context::CTX_NAMESPACE,
00143                                 containing_scope,
00144                                 sads);
00145         ptr<sa_declarator> sad = sa_declarator::create(sadc);
00146         sad->process(asd);
00147 
00148 }

ptr< func_decl_set > lestes::lang::cplus::sem::select_viable ( ptr< func_decl_set >  candidates,
ptr< exprlist >  exprs 
)

This function returns the viable functions for overload resolution - those functions are those having correct number of arguments && those for which's parameters implicit conversion sequence from expressions to function parameters exists.

Returns:
set of viable functions

Definition at line 160 of file or.cc.

References filter_ics_existence(), filter_num_args(), and llog.

Referenced by overload_resolution().

00161 {
00162         llog(or_log) << "Filtering according to num of arguments\n";
00163 
00164         ptr< func_decl_set > enough_arg_funcs = filter_num_args(candidates, exprs->size());
00165 
00166         llog(or_log) << "Selected " << enough_arg_funcs->size() << " enough-arg funcs\n";
00167 
00168         return filter_ics_existence(enough_arg_funcs, exprs);
00169 }

void lestes::lang::cplus::sem::ss2pi_start ( ptr< ss_translation_unit >  x  ) 

Main entry point for ss2pi transformation.

Definition at line 190 of file ss_ss2pi_base.cc.

References entry, and outry.

Referenced by lestes::lang::cplus::syn::do_it(), and man().

00190                                               {entry("start");
00191 
00192         //      dumb(x);        //To mantain constant numbers for structures in dumps
00193               
00194         ptr< variable_map_type > namespace_variable_map = variable_map_type::create();  //namespace-scope map
00195         
00196         ptr< ss_stmt2pi > stmt_visitor =                        //new visitor - new destructor list has to be created
00197                 ss_stmt2pi::create( NULL, NULL, namespace_variable_map );
00198         
00199         x->global_scope_get()->compound_stmt_get()->accept_ss_statement_visitor(stmt_visitor);
00200         
00201 outry("start");
00202 }

ptr<::lestes::backend_v2::intercode::pi_sp > lestes::lang::cplus::sem::ss_sp2pi_sp ( ptr< ss_sp >  sp  ) 

Definition at line 308 of file ss_ss2pi_base.cc.

References lestes::msg::eolog, and plog.

Referenced by lestes::lang::cplus::sem::ss_destructor_tables_stack::back_roll_from_current_compound_stmt(), summary_seq_points(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_address_of(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_assign(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_bind_reference(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_conversion(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_funcall(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_get(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_literal(), lestes::lang::cplus::sem::ss_expr2pi::visit_ss_var_ref(), and lestes::lang::cplus::sem::ss_expr2pi::visit_ss_vol_get().

00308                                           {
00309         
00310         if (sp->pi_spe_get()) return sp->pi_spe_get();                          //already constructed
00311         
00312         ptr< pi_sp > empty = NULL;
00313         
00314         ptr<pi_sp> tmp = pi_sp::create (NULL,NULL,sp->level_get());     //Dont mix ordering of commands below !
00315         
00316         sp->pi_spe_set(tmp);
00317         
00318         if (sp->psp_get()) tmp->psp_set(ss_sp2pi_sp(sp->psp_get()));            //recursion
00319         if (sp->nsp_get()) tmp->nsp_set(ss_sp2pi_sp(sp->nsp_get()));
00320         
00321         plog(spl) << "  SP: ss " <<sp->uid_get() <<" -> pi " << tmp->uid_get() << "\n" << eolog;
00322         
00323         ptr<backend_data_builder> initial_structure_builder = backend_data_builder::instance();
00324         initial_structure_builder->add_sp(tmp);         //backend shall know about constructed sequnce point
00325 
00326         return tmp;
00327 }

void lestes::lang::cplus::sem::ss_type2info_test ( void   ) 

Tests ss_type2info class.

Performs testing of ss_type2info class.

Definition at line 51 of file ss_type2info.test.cc.

References lassert.

Referenced by main().

00052 {
00053         ptr<ss_type2info> ssti = ss_type2info::create();
00054         ptr<ss_type> sint = ss_type_sint::instance();
00055         ptr<ss_type> st;
00056         
00057         st = sint;
00058         st->accept_ss_type_visitor(ssti);
00059         lassert(ssti->info_get() == ss_type2info::UNKNOWN);
00060         
00061         st = ss_const::instance(sint);
00062         st->accept_ss_type_visitor(ssti);
00063         lassert(ssti->info_get() == ss_type2info::SS_CONST);
00064 
00065         st = ss_volatile::instance(sint);
00066         st->accept_ss_type_visitor(ssti);
00067         lassert(ssti->info_get() == ss_type2info::SS_VOLATILE);
00068 
00069         st = ss_const::instance(ss_volatile::instance(sint));
00070         st->accept_ss_type_visitor(ssti);
00071         lassert(ssti->info_get() == ss_type2info::SS_CONST_VOLATILE);
00072 
00073         st = ss_pointer::instance(sint);
00074         st->accept_ss_type_visitor(ssti);
00075         lassert(ssti->info_get() == ss_type2info::SS_POINTER);
00076 
00077         st = ss_member_pointer::instance(sint,sint);
00078         st->accept_ss_type_visitor(ssti);
00079         lassert(ssti->info_get() == ss_type2info::SS_MEMBER_POINTER);
00080 
00081         st = ss_reference::instance(sint);
00082         st->accept_ss_type_visitor(ssti);
00083         lassert(ssti->info_get() == ss_type2info::SS_REFERENCE);
00084 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::static_and_extern ( ::lestes::msg::message_stencil0< bool >::  create("declaration is both static and extern",::lestes::msg::message::FLG_ERROR)  ) 

void lestes::lang::cplus::sem::summary_seq_points ( ptr< ss_sp >  x  ) 

Print out top_level sequence points. For debuging purposes.

Definition at line 152 of file ss_ss2pi_base.cc.

References lestes::msg::eolog, plog, and ss_sp2pi_sp().

Referenced by man().

00152                                        {
00153  {
00154         while (x->psp_get()) x=x->psp_get();
00155         ptr< ss_sp > tmp, tmp2;
00156         
00157         for (tmp=x; tmp->nsp_get(); tmp=tmp->nsp_get()){
00158                 plog(spl)<<tmp->uid_get()<<"->";
00159         }
00160         plog(spl)<<tmp->uid_get()<<"\n";
00161         
00162         for (tmp2=tmp; tmp2->psp_get(); tmp2=tmp2->psp_get()){
00163                 plog(spl)<<tmp2->uid_get()<<"->";
00164         }
00165         plog(spl)<<tmp2->uid_get()<<"\n";
00166  }
00167  {
00168         ptr< pi_pi >X = ss_sp2pi_sp(x);
00169         ptr< pi_pi > tmp, tmp2;
00170         
00171         for (tmp=X; tmp->nsp_get(); tmp=tmp->nsp_get()){
00172                 plog(spl)<<tmp->uid_get()<<"->";
00173         }
00174         plog(spl)<<tmp->uid_get()<<"\n";
00175         
00176         for (tmp2=tmp; tmp2->psp_get(); tmp2=tmp2->psp_get()){
00177                 plog(spl)<<tmp2->uid_get()<<"->";
00178         }
00179         plog(spl)<<tmp2->uid_get()<<"\n"<<eolog;
00180  }
00181 }

ptr< ::lestes::std::list< srp<as_declaration_specifier> > > lestes::lang::cplus::sem::ts2ds ( ptr< ::lestes::std::list< srp< as_type_specifier > > >  tsl  ) 

This is helper function for the sizeof type for converting list of type specifiers to declaration specifiers

Definition at line 648 of file sa_deconstruct_spse.cc.

References lestes::lang::cplus::sem::sa_deconstruct_spse::create().

00649 {
00650         ptr< list< srp<as_declaration_specifier> > > dsl = ::lestes::std::list< srp<as_declaration_specifier> >::create();
00651         ::std::copy(tsl->begin(),tsl->end(),::std::back_inserter(*dsl));
00652         return dsl;
00653 }

static ptr<declaration_set_type> lestes::lang::cplus::sem::unify ( const ptr< declaration_set_type > &  s1,
const ptr< declaration_set_type > &  s2 
) [static]

Computes union of two given sets of declarations.

Definition at line 111 of file lu_lu.cc.

Referenced by lestes::lang::cplus::sem::lu_lookup::deep_scan().

00114 {
00115         ptr<declaration_set_type> result = declaration_set_type::create();
00116         ::std::set_union( s1->begin(), s1->end(), s2->begin(), s2->end(),
00117                         ::std::inserter( *result, result->end() ) );
00118         return result;
00119 }

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::union_shall_not_have_bases ( ::lestes::msg::message_stencil0< bool >::  create("base classes cannot be specified in a union declaration",::lestes::msg::message::FLG_ERROR)  ) 

Unions shall not have bases. This message reports a violation of this rule.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::unnamed_not_yet ( ::lestes::msg::message_stencil0< bool >::  create("unnamed namespaces are not implemented yet",::lestes::msg::message::FLG_WARNING)  ) 

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::unrecognized_identifier ( ::lestes::msg::message_stencil0< bool >::  create("Unrecognized identifier.",::lestes::msg::message::FLG_ERROR)  ) 

Issued when there are was no declaration found for identifier.


Variable Documentation

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::ambiguous_function_prefix

The function prefix is ambiguous.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::ambiguous_result

Overload resolution was ambiguous.

Referenced by lestes::lang::cplus::sem::or_or_functional_ambiguous::operator()().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::assign_incompatible_types

Assignment for incompatible types was requested.

Referenced by lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_op_equal_sideeff().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::conflicting_types

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::conversion_not_found

or_find_ics returned NULL - the conversion sequence could not be found.

ptr< declaration_broadcaster > lestes::lang::cplus::sem::declaration_finished

Definition at line 37 of file declaration_broadcasting.cc.

Referenced by lestes::lang::cplus::sem::sa_statements::instance().

ptr< declaration_broadcaster > lestes::lang::cplus::sem::declaration_finished = declaration_broadcaster::create()

Definition at line 37 of file declaration_broadcasting.cc.

Referenced by lestes::lang::cplus::sem::sa_statements::instance().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::declaration_without_type

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::declared_here

Referenced by lestes::lang::cplus::sem::sa_namespace_definition::process_named().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::different_return_types

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::field_redefinition

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::field_storage_specifier

bool lestes::lang::cplus::sem::hack_used = false [static]

Definition at line 42 of file ss_statement.cc.

Referenced by lestes::lang::cplus::sem::ss_statement::parent_set_once_hack().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::incompatible_types_conversion

Conversion between incompatible types was requested.

Referenced by lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_bin_op_nosideeff(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_bin_op_nosideeff_arith(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_bin_op_nosideeff_newsp(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_op_crement(), lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_op_equal_sideeff(), and lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_un_op_nosideeff().

ptr< ::lestes::msg::message_stencil1< ucn_string > > lestes::lang::cplus::sem::integer_literal_cannot_be_represented

Integer literal cannot be represented by any type error.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_char_specifier

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_double_specifier

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_specifier_function

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_specifier_object

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_specifier_typedef

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_storage_specifier

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::invalid_type_specifier

int lestes::lang::cplus::sem::log_count = 0

Definition at line 99 of file ss_ss2pi_base.cc.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::methods_not_implemented

ptr< ::lestes::msg::message_stencil1< ptr< as_id > > > lestes::lang::cplus::sem::name_already_declared

Referenced by lestes::lang::cplus::sem::sa_namespace_definition::process_named().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::no_viable_found

No viable function found.

Referenced by lestes::lang::cplus::sem::sa_deconstruct_spse::construct_bin_op(), lestes::lang::cplus::sem::sa_deconstruct_spse::construct_unary_op_create(), lestes::lang::cplus::sem::sa_deconstruct_spse::construct_unary_op_nocreate(), and lestes::lang::cplus::sem::or_or_functional_noviable::operator()().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::non_lval_assign

Non-lvalue was used in assign.

Referenced by lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_op_equal_sideeff().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::non_lval_crement

Non-lvalue was used increment/decrement.

Referenced by lestes::lang::cplus::sem::or_builtin_operator_expression_creator::construct_op_crement().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::non_lvalue_in_unary_amp

rvalue used in unary amp.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::previous_declaration

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::redeclaration_different

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::redefinition

ptr<ss_decl_seq> lestes::lang::cplus::sem::seq_param [static]

Definition at line 61 of file lu_lu.cc.

Referenced by lestes::lang::cplus::sem::lu_lookup::deep_scan().

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::static_and_extern

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::union_shall_not_have_bases

Union shall not have bases.

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::unnamed_not_yet

ptr< ::lestes::msg::message_stencil0< bool > > lestes::lang::cplus::sem::unrecognized_identifier

Identifier was not found.


Generated on Mon Feb 12 18:24:20 2007 for lestes by doxygen 1.5.1-20070107