stage4/generate_c/generate_c_il.cc
changeset 169 bea932bc60b0
parent 149 05ca171a3d57
child 201 e657008f43d0
equal deleted inserted replaced
168:225db59fe6fe 169:bea932bc60b0
   947     return_data_type = (symbol_c *)search_expression_type->compute_standard_function_default(NULL, symbol);
   947     return_data_type = (symbol_c *)search_expression_type->compute_standard_function_default(NULL, symbol);
   948     if (NULL == return_data_type) ERROR;
   948     if (NULL == return_data_type) ERROR;
   949     
   949     
   950     function_call_param_iterator_c function_call_param_iterator(symbol);
   950     function_call_param_iterator_c function_call_param_iterator(symbol);
   951     
   951     
       
   952     int nb_param = 0;
       
   953     if (symbol->il_param_list != NULL)
       
   954       nb_param += ((list_c *)symbol->il_param_list)->n;
       
   955     
   952     identifier_c en_param_name("EN");
   956     identifier_c en_param_name("EN");
   953     /* Get the value from EN param */
   957     /* Get the value from EN param */
   954     symbol_c *EN_param_value = function_call_param_iterator.search(&en_param_name);
   958     symbol_c *EN_param_value = function_call_param_iterator.search(&en_param_name);
   955     if (EN_param_value == NULL)
   959     if (EN_param_value == NULL)
   956       EN_param_value = (symbol_c*)(new boolean_literal_c((symbol_c*)(new bool_type_name_c()), new boolean_true_c()));
   960       EN_param_value = (symbol_c*)(new boolean_literal_c((symbol_c*)(new bool_type_name_c()), new boolean_true_c()));
       
   961     else
       
   962       nb_param --;
   957     ADD_PARAM_LIST(EN_param_value, (symbol_c*)(new bool_type_name_c()), function_param_iterator_c::direction_in)
   963     ADD_PARAM_LIST(EN_param_value, (symbol_c*)(new bool_type_name_c()), function_param_iterator_c::direction_in)
   958     
   964     
   959     identifier_c eno_param_name("EN0");
   965     identifier_c eno_param_name("EN0");
   960     /* Get the value from ENO param */
   966     /* Get the value from ENO param */
   961     symbol_c *ENO_param_value = function_call_param_iterator.search(&eno_param_name);
   967     symbol_c *ENO_param_value = function_call_param_iterator.search(&eno_param_name);
       
   968     if (ENO_param_value != NULL)
       
   969       nb_param --;
   962     ADD_PARAM_LIST(ENO_param_value, (symbol_c*)(new bool_type_name_c()), function_param_iterator_c::direction_out)
   970     ADD_PARAM_LIST(ENO_param_value, (symbol_c*)(new bool_type_name_c()), function_param_iterator_c::direction_out)
   963     
   971     
   964     int nb_param = 0;
       
   965     if (symbol->il_param_list != NULL)
       
   966       nb_param += ((list_c *)symbol->il_param_list)->n;
       
   967 
       
   968     #include "st_code_gen.c"
   972     #include "st_code_gen.c"
   969     
   973     
   970   }
   974   }
   971   else {
   975   else {
   972     /* determine the base data type returned by the function being called... */
   976     /* determine the base data type returned by the function being called... */