mario@181: /*
msousa@265: * matiec - a compiler for the programming languages defined in IEC 61131-3
mario@181: *
msousa@265: * Copyright (C) 2008 Edouard TISSERANT
mario@181: *
msousa@265: * This program is free software: you can redistribute it and/or modify
msousa@265: * it under the terms of the GNU General Public License as published by
msousa@265: * the Free Software Foundation, either version 3 of the License, or
msousa@265: * (at your option) any later version.
msousa@265: *
msousa@265: * This program is distributed in the hope that it will be useful,
msousa@265: * but WITHOUT ANY WARRANTY; without even the implied warranty of
msousa@265: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
msousa@265: * GNU General Public License for more details.
msousa@265: *
msousa@265: * You should have received a copy of the GNU General Public License
msousa@265: * along with this program. If not, see .
msousa@265: *
mario@181: *
mario@181: * This code is made available on the understanding that it will not be
mario@181: * used in safety-critical situations without a full and competent review.
mario@181: */
mario@181:
mario@181: /*
msousa@265: * An IEC 61131-3 compiler.
mario@181: *
mario@181: * Based on the
mario@181: * FINAL DRAFT - IEC 61131-3, 2nd Ed. (2001-12-10)
mario@181: *
mario@181: */
mario@181:
mario@181: /****
mario@181: * IEC 61131-3 standard function library
mario@181: * generated code, do not edit by hand
mario@181: */
mario@181:
mario@181:
mario@181:
laurent@208: void *search_expression_type_c::compute_standard_function_default(function_invocation_c *st_symbol = NULL, il_formal_funct_call_c *il_symbol = NULL) {
mario@181: function_type_t current_function_type;
mario@181: function_call_param_iterator_c *tmp_function_call_param_iterator;
mario@181: if (st_symbol != NULL && il_symbol == NULL) {
mario@181: current_function_type = get_function_type((identifier_c *)st_symbol->function_name);
mario@181: tmp_function_call_param_iterator = new function_call_param_iterator_c(st_symbol);
mario@181: }
mario@181: else if (st_symbol == NULL && il_symbol != NULL) {
mario@181: current_function_type = get_function_type((identifier_c *)il_symbol->function_name);
mario@181: tmp_function_call_param_iterator = new function_call_param_iterator_c(il_symbol);
mario@181: }
mario@181: else
mario@181: ERROR;
mario@181: function_call_param_iterator_c function_call_param_iterator(*tmp_function_call_param_iterator);
mario@181: search_expression_type_c* search_expression_type = this;
mario@181:
mario@181: switch(current_function_type){
mario@181:
mario@181: /****
mario@181: *REAL_TO_SINT
mario@181: */
mario@181: case function_real_to_sint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_sint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_LINT
mario@181: */
mario@181: case function_real_to_lint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_lint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_DINT
mario@181: */
mario@181: case function_real_to_dint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_dint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_DATE
mario@181: */
mario@181: case function_real_to_date :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_date*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_DWORD
mario@181: */
mario@181: case function_real_to_dword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_dword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_DT
mario@181: */
mario@181: case function_real_to_dt :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_dt*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_TOD
mario@181: */
mario@181: case function_real_to_tod :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_tod*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_UDINT
mario@181: */
mario@181: case function_real_to_udint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_udint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_WORD
mario@181: */
mario@181: case function_real_to_word :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_word*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_STRING
mario@181: */
mario@181: case function_real_to_string :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_string*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_LWORD
mario@181: */
mario@181: case function_real_to_lword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_lword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_UINT
mario@181: */
mario@181: case function_real_to_uint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_uint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_LREAL
mario@181: */
mario@181: case function_real_to_lreal :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_lreal*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_BYTE
mario@181: */
mario@181: case function_real_to_byte :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_byte*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_USINT
mario@181: */
mario@181: case function_real_to_usint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_usint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_ULINT
mario@181: */
mario@181: case function_real_to_ulint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_ulint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_BOOL
mario@181: */
mario@181: case function_real_to_bool :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_bool*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_TIME
mario@181: */
mario@181: case function_real_to_time :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_time*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *REAL_TO_INT
mario@181: */
mario@181: case function_real_to_int :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_real_to_int*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_REAL
mario@181: */
mario@181: case function_sint_to_real :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_real*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_LINT
mario@181: */
mario@181: case function_sint_to_lint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_lint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_DINT
mario@181: */
mario@181: case function_sint_to_dint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_dint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_DATE
mario@181: */
mario@181: case function_sint_to_date :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_date*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_DWORD
mario@181: */
mario@181: case function_sint_to_dword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_dword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_DT
mario@181: */
mario@181: case function_sint_to_dt :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_dt*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_TOD
mario@181: */
mario@181: case function_sint_to_tod :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_tod*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_UDINT
mario@181: */
mario@181: case function_sint_to_udint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_udint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_WORD
mario@181: */
mario@181: case function_sint_to_word :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_word*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_STRING
mario@181: */
mario@181: case function_sint_to_string :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_string*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_LWORD
mario@181: */
mario@181: case function_sint_to_lword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_lword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_UINT
mario@181: */
mario@181: case function_sint_to_uint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_uint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_LREAL
mario@181: */
mario@181: case function_sint_to_lreal :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_lreal*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_BYTE
mario@181: */
mario@181: case function_sint_to_byte :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_byte*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_USINT
mario@181: */
mario@181: case function_sint_to_usint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_usint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_ULINT
mario@181: */
mario@181: case function_sint_to_ulint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_ulint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_BOOL
mario@181: */
mario@181: case function_sint_to_bool :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_bool*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_TIME
mario@181: */
mario@181: case function_sint_to_time :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_time*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *SINT_TO_INT
mario@181: */
mario@181: case function_sint_to_int :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::sint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_sint_to_int*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_REAL
mario@181: */
mario@181: case function_lint_to_real :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_real*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_SINT
mario@181: */
mario@181: case function_lint_to_sint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_sint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_DINT
mario@181: */
mario@181: case function_lint_to_dint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_dint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_DATE
mario@181: */
mario@181: case function_lint_to_date :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_date*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_DWORD
mario@181: */
mario@181: case function_lint_to_dword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_dword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_DT
mario@181: */
mario@181: case function_lint_to_dt :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_dt*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_TOD
mario@181: */
mario@181: case function_lint_to_tod :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_tod*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_UDINT
mario@181: */
mario@181: case function_lint_to_udint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_udint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_WORD
mario@181: */
mario@181: case function_lint_to_word :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_word*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_STRING
mario@181: */
mario@181: case function_lint_to_string :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_string*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_LWORD
mario@181: */
mario@181: case function_lint_to_lword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_lword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_UINT
mario@181: */
mario@181: case function_lint_to_uint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_uint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_LREAL
mario@181: */
mario@181: case function_lint_to_lreal :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_lreal*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_BYTE
mario@181: */
mario@181: case function_lint_to_byte :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_byte*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_USINT
mario@181: */
mario@181: case function_lint_to_usint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_usint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_ULINT
mario@181: */
mario@181: case function_lint_to_ulint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_ulint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_BOOL
mario@181: */
mario@181: case function_lint_to_bool :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_bool*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_TIME
mario@181: */
mario@181: case function_lint_to_time :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_time*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *LINT_TO_INT
mario@181: */
mario@181: case function_lint_to_int :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_lint_to_int*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_REAL
mario@181: */
mario@181: case function_dint_to_real :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_real*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_SINT
mario@181: */
mario@181: case function_dint_to_sint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_sint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_LINT
mario@181: */
mario@181: case function_dint_to_lint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_lint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_DATE
mario@181: */
mario@181: case function_dint_to_date :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::date_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_date*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_DWORD
mario@181: */
mario@181: case function_dint_to_dword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_dword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_DT
mario@181: */
mario@181: case function_dint_to_dt :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_dt*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_TOD
mario@181: */
mario@181: case function_dint_to_tod :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_tod*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_UDINT
mario@181: */
mario@181: case function_dint_to_udint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_udint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_WORD
mario@181: */
mario@181: case function_dint_to_word :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_word*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_STRING
mario@181: */
mario@181: case function_dint_to_string :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_string*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_LWORD
mario@181: */
mario@181: case function_dint_to_lword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_lword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_UINT
mario@181: */
mario@181: case function_dint_to_uint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_uint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_LREAL
mario@181: */
mario@181: case function_dint_to_lreal :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lreal_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_lreal*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_BYTE
mario@181: */
mario@181: case function_dint_to_byte :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_byte*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_USINT
mario@181: */
mario@181: case function_dint_to_usint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_usint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_ULINT
mario@181: */
mario@181: case function_dint_to_ulint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_ulint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_BOOL
mario@181: */
mario@181: case function_dint_to_bool :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_bool*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_TIME
mario@181: */
mario@181: case function_dint_to_time :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::time_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_time*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DINT_TO_INT
mario@181: */
mario@181: case function_dint_to_int :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dint_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::int_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_dint_to_int*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_REAL
mario@181: */
mario@181: case function_date_to_real :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::real_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_date_to_real*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_SINT
mario@181: */
mario@181: case function_date_to_sint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_date_to_sint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_LINT
mario@181: */
mario@181: case function_date_to_lint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_date_to_lint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_DINT
mario@181: */
mario@181: case function_date_to_dint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_date_to_dint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_DWORD
mario@181: */
mario@181: case function_date_to_dword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_date_to_dword*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_UDINT
mario@181: */
mario@181: case function_date_to_udint :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_date_to_udint*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_WORD
mario@181: */
mario@181: case function_date_to_word :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::word_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_date_to_word*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_STRING
mario@181: */
mario@181: case function_date_to_string :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo() style call */
laurent@208: if (IN_param_value == NULL)
laurent@208: IN_param_value = function_call_param_iterator.next_nf();
mario@181: if (IN_param_value != NULL) {
mario@181: IN_type_symbol = search_expression_type->get_type(IN_param_value);
mario@181: last_type_symbol = last_type_symbol && IN_type_symbol && search_expression_type->is_same_type(IN_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN_type_symbol, last_type_symbol) : IN_type_symbol ;
mario@181: }
mario@181:
mario@181: if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol))
mario@181: {
mario@181:
mario@181: symbol_c * return_type_symbol = &search_constant_type_c::string_type_name;
mario@181: return return_type_symbol;
mario@181:
mario@181: }
mario@181:
mario@181:
mario@181: ERROR;
mario@181: }
mario@181:
mario@181: }/*function_date_to_string*/
mario@181: break;
mario@181:
mario@181: /****
mario@181: *DATE_TO_LWORD
mario@181: */
mario@181: case function_date_to_lword :
mario@181: {
mario@181: symbol_c *last_type_symbol = NULL;
mario@181:
mario@181: {
laurent@235: symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN"));
laurent@235: /* Get the value from a foo( = ) style call */
laurent@235: symbol_c *IN_param_value = function_call_param_iterator.search_f(IN_param_name);
laurent@208: symbol_c *IN_type_symbol = NULL;
laurent@208:
laurent@208: /* Get the value from a foo(