stage3/narrow_candidate_datatypes.hh
changeset 438 744b125d911e
parent 423 f4a2d400ddbd
child 443 ff4d26b7e51d
equal deleted inserted replaced
437:0e09a8840c92 438:744b125d911e
    32  *
    32  *
    33  */
    33  */
    34 
    34 
    35 
    35 
    36 #include "../absyntax_utils/absyntax_utils.hh"
    36 #include "../absyntax_utils/absyntax_utils.hh"
       
    37 #include "datatype_functions.hh"
    37 
    38 
    38 class narrow_candidate_datatypes_c: public iterator_visitor_c {
    39 class narrow_candidate_datatypes_c: public iterator_visitor_c {
    39 
    40 
    40   private:
    41   private:
    41     symbol_c * selected_datatype;
    42     symbol_c * selected_datatype;
    45     symbol_c *il_operand;
    46     symbol_c *il_operand;
    46     symbol_c *prev_il_instruction;
    47     symbol_c *prev_il_instruction;
    47 
    48 
    48     bool is_widening_compatible(symbol_c *left_type, symbol_c *right_type, symbol_c *result_type, const struct widen_entry widen_table[]);
    49     bool is_widening_compatible(symbol_c *left_type, symbol_c *right_type, symbol_c *result_type, const struct widen_entry widen_table[]);
    49 
    50 
       
    51     void narrow_function_invocation(symbol_c *f_call, generic_function_call_t fcall_data);
       
    52     void narrow_nonformal_call(symbol_c *f_call, symbol_c *f_decl, int *ext_parm_count = NULL);
       
    53     void narrow_formal_call(symbol_c *f_call, symbol_c *f_decl, int *ext_parm_count = NULL);
       
    54 
    50   public:
    55   public:
    51     narrow_candidate_datatypes_c(symbol_c *ignore);
    56     narrow_candidate_datatypes_c(symbol_c *ignore);
    52     virtual ~narrow_candidate_datatypes_c(void);
    57     virtual ~narrow_candidate_datatypes_c(void);
    53     void narrow_nonformal_call(symbol_c *f_call, symbol_c *f_decl, int *ext_parm_count = NULL);
       
    54     void narrow_formal_call(symbol_c *f_call, symbol_c *f_decl, int *ext_parm_count = NULL);
       
    55 
    58 
    56     symbol_c *base_type(symbol_c *symbol);
    59     symbol_c *base_type(symbol_c *symbol);
    57 
    60 
    58     /**********************/
    61     /**********************/
    59     /* B 1.3 - Data types */
    62     /* B 1.3 - Data types */