generate_IEC_std.py
changeset 488 93bf600bae11
parent 486 0daecbcbfbf4
child 521 457578c31074
equal deleted inserted replaced
487:580b04db8c65 488:93bf600bae11
   136             if do_il:
   136             if do_il:
   137                 res += """
   137                 res += """
   138 {"""
   138 {"""
   139                 if not do_type_search_only:
   139                 if not do_type_search_only:
   140                     res += """
   140                     res += """
   141     identifier_c %(input_name)s_param_name("%(input_name)s");
   141     symbol_c *%(input_name)s_param_name = (symbol_c *)(new identifier_c("%(input_name)s"));
   142     /* Get the value from a foo(<param_name> = <param_value>) style call */
   142     /* Get the value from a foo(<param_name> = <param_value>) style call */
   143     symbol_c *%(input_name)s_param_value = &this->default_variable_name;
   143     symbol_c *%(input_name)s_param_value = &this->default_variable_name;
   144 """%{"input_name":Paramname}
   144 """%{"input_name":Paramname}
   145                 res += """
   145                 res += """
   146     symbol_c *%(input_name)s_type_symbol = param_data_type;
   146     symbol_c *%(input_name)s_type_symbol = param_data_type;
   147     last_type_symbol = param_data_type;
   147     last_type_symbol = param_data_type;
   148 """%{"input_name":Paramname}
   148 """%{"input_name":Paramname}
   149             else:
   149             else:
   150                 res += """
   150                 res += """
   151 {
   151 {
   152     identifier_c %(input_name)s_param_name("%(input_name)s");
   152     symbol_c *%(input_name)s_param_name = (symbol_c *)(new identifier_c("%(input_name)s"));
   153     /* Get the value from a foo(<param_name> = <param_value>) style call */
   153     /* Get the value from a foo(<param_name> = <param_value>) style call */
   154     symbol_c *%(input_name)s_param_value = function_call_param_iterator.search_f(&%(input_name)s_param_name);
   154     symbol_c *%(input_name)s_param_value = function_call_param_iterator.search_f(%(input_name)s_param_name);
   155     symbol_c *%(input_name)s_type_symbol = NULL;
   155     symbol_c *%(input_name)s_type_symbol = NULL;
   156     
   156     
   157     /* Get the value from a foo(<param_value>) style call */
   157     /* Get the value from a foo(<param_value>) style call */
   158     if (%(input_name)s_param_value == NULL)
   158     if (%(input_name)s_param_value == NULL)
   159       %(input_name)s_param_value = function_call_param_iterator.next_nf();
   159       %(input_name)s_param_value = function_call_param_iterator.next_nf();
   194                 res += """
   194                 res += """
   195 if (nb_param < %(min_nb_param)d)
   195 if (nb_param < %(min_nb_param)d)
   196   nb_param = %(min_nb_param)d;
   196   nb_param = %(min_nb_param)d;
   197 char* nb_param_str = new char[10];
   197 char* nb_param_str = new char[10];
   198 sprintf(nb_param_str, "%%d", nb_param);
   198 sprintf(nb_param_str, "%%d", nb_param);
   199 identifier_c nb_param_name("nb_param");
   199 symbol_c * nb_param_name = (symbol_c *)(new identifier_c("nb_param"));
   200 ADD_PARAM_LIST(&nb_param_name, (symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
   200 ADD_PARAM_LIST(nb_param_name, (symbol_c*)(new integer_c((const char *)nb_param_str)), (symbol_c*)(new int_type_name_c()), function_param_iterator_c::direction_in)
   201 """%{"min_nb_param" : len(fdecl["inputs"])}
   201 """%{"min_nb_param" : len(fdecl["inputs"])}
   202             for paramname,paramtype,unused in fdecl["inputs"]:
   202             for paramname,paramtype,unused in fdecl["inputs"]:
   203                 res += """
   203                 res += """
   204 if (%(input_name)s_type_symbol == NULL)
   204 if (%(input_name)s_type_symbol == NULL)
   205   %(input_name)s_type_symbol = last_type_symbol;
   205   %(input_name)s_type_symbol = last_type_symbol;
   206 ADD_PARAM_LIST(&%(input_name)s_param_name, %(input_name)s_param_value, %(input_name)s_type_symbol, function_param_iterator_c::direction_in)
   206 ADD_PARAM_LIST(%(input_name)s_param_name, %(input_name)s_param_value, %(input_name)s_type_symbol, function_param_iterator_c::direction_in)
   207 """%{"input_name" : paramname}
   207 """%{"input_name" : paramname}
   208             if fdecl["extensible"]:
   208             if fdecl["extensible"]:
   209                 res += """
   209                 res += """
   210 int base_num = %d;
   210 int base_num = %d;
   211 symbol_c *param_value = NULL;
   211 symbol_c *param_value = NULL;
       
   212 symbol_c *param_name = NULL;
   212 do{
   213 do{
   213     char my_name[10];
   214     char my_name[10];
   214     sprintf(my_name, "IN%%d", base_num++);
   215     sprintf(my_name, "IN%%d", base_num++);
   215     identifier_c param_name(my_name);
   216     param_name = (symbol_c*)(new identifier_c(my_name));
   216     
   217     
   217     /* Get the value from a foo(<param_name> = <param_value>) style call */
   218     /* Get the value from a foo(<param_name> = <param_value>) style call */
   218     param_value = function_call_param_iterator.search_f(&param_name);
   219     param_value = function_call_param_iterator.search_f(param_name);
   219     
   220     
   220     /* Get the value from a foo(<param_value>) style call */
   221     /* Get the value from a foo(<param_value>) style call */
   221     if (param_value == NULL)
   222     if (param_value == NULL)
   222       param_value = function_call_param_iterator.next_nf();
   223       param_value = function_call_param_iterator.next_nf();
   223     if (param_value != NULL){
   224     if (param_value != NULL){
   224         symbol_c *current_type_symbol = search_expression_type->get_type(param_value);
   225         symbol_c *current_type_symbol = search_expression_type->get_type(param_value);
   225         last_type_symbol = last_type_symbol && search_expression_type->is_same_type(current_type_symbol, last_type_symbol) ? search_expression_type->common_type(current_type_symbol, last_type_symbol) : current_type_symbol ;
   226         last_type_symbol = last_type_symbol && search_expression_type->is_same_type(current_type_symbol, last_type_symbol) ? search_expression_type->common_type(current_type_symbol, last_type_symbol) : current_type_symbol ;
   226     
   227     
   227         /*Function specific CODE */
   228         /*Function specific CODE */
   228         ADD_PARAM_LIST(&param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
   229         ADD_PARAM_LIST(param_name, param_value, current_type_symbol, function_param_iterator_c::direction_in)
   229     }
   230     }
   230     
   231     
   231 }while(param_value != NULL);
   232 }while(param_value != NULL);
   232 """%(fdecl["baseinputnumber"] + 2)
   233 """%(fdecl["baseinputnumber"] + 2)
   233         
   234