diff -r 90c3772e6547 -r 41d4ac0b4821 stage4/generate_c/il_code_gen.c --- a/stage4/generate_c/il_code_gen.c Mon Jun 06 14:05:28 2011 +0100 +++ b/stage4/generate_c/il_code_gen.c Mon Jun 06 16:28:41 2011 +0200 @@ -44,14 +44,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_sint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -81,14 +80,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_sint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -118,14 +116,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_sint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -191,14 +188,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -300,14 +296,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_uint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -337,14 +332,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::word_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -410,14 +404,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -447,14 +440,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_uint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -521,14 +513,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -558,14 +549,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_uint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -595,14 +585,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_uint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -632,14 +621,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -705,14 +693,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::real_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_sint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::int_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -8667,14 +8654,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_sint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::sint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -8704,14 +8690,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_sint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::lint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -8741,14 +8726,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_sint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::dint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -8814,14 +8798,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::dword_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -8923,14 +8906,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_uint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::udint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -8960,14 +8942,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::word_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -9033,14 +9014,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::lword_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -9070,14 +9050,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_uint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::uint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -9107,14 +9086,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::byte_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -9144,14 +9122,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_uint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::usint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -9181,14 +9158,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_uint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::ulint_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -9218,14 +9194,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_bit")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::bool_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -9291,14 +9266,13 @@ if(IN_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::lreal_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__move_")); + function_name = (symbol_c*)(new pragma_c("__real_to_sint")); if (IN_type_symbol == NULL) IN_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::int_type_name; function_type_prefix = return_type_symbol; - function_type_suffix = IN_type_symbol; break; } @@ -14368,192 +14342,6 @@ break; /**** - *ADD_TIME - */ - case function_add_time : - { - symbol_c *last_type_symbol = NULL; - - { - symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN1_param_value = &this->default_variable_name; - - symbol_c *IN1_type_symbol = param_data_type; - last_type_symbol = param_data_type; - - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) - { - - { - symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); - symbol_c *IN2_type_symbol = NULL; - - /* Get the value from a foo() style call */ - if (IN2_param_value == NULL) - IN2_param_value = function_call_param_iterator.next_nf(); - if (IN2_param_value != NULL) { - IN2_type_symbol = search_expression_type->get_type(IN2_param_value); - last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; - } - - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__time_add")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; - break; - - } - - - ERROR; - } - - } - - - ERROR; - } - - }/*function_add_time*/ - break; - -/**** - *ADD_TOD_TIME - */ - case function_add_tod_time : - { - symbol_c *last_type_symbol = NULL; - - { - symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN1_param_value = &this->default_variable_name; - - symbol_c *IN1_type_symbol = param_data_type; - last_type_symbol = param_data_type; - - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) - { - - { - symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); - symbol_c *IN2_type_symbol = NULL; - - /* Get the value from a foo() style call */ - if (IN2_param_value == NULL) - IN2_param_value = function_call_param_iterator.next_nf(); - if (IN2_param_value != NULL) { - IN2_type_symbol = search_expression_type->get_type(IN2_param_value); - last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; - } - - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__time_add")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name; - break; - - } - - - ERROR; - } - - } - - - ERROR; - } - - }/*function_add_tod_time*/ - break; - -/**** - *ADD_DT_TIME - */ - case function_add_dt_time : - { - symbol_c *last_type_symbol = NULL; - - { - symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN1_param_value = &this->default_variable_name; - - symbol_c *IN1_type_symbol = param_data_type; - last_type_symbol = param_data_type; - - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) - { - - { - symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); - symbol_c *IN2_type_symbol = NULL; - - /* Get the value from a foo() style call */ - if (IN2_param_value == NULL) - IN2_param_value = function_call_param_iterator.next_nf(); - if (IN2_param_value != NULL) { - IN2_type_symbol = search_expression_type->get_type(IN2_param_value); - last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; - } - - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__time_add")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name; - break; - - } - - - ERROR; - } - - } - - - ERROR; - } - - }/*function_add_dt_time*/ - break; - -/**** *MUL */ case function_mul : @@ -14690,9 +14478,9 @@ break; /**** - *MULTIME - */ - case function_multime : + *SUB + */ + case function_sub : { symbol_c *last_type_symbol = NULL; @@ -14704,7 +14492,7 @@ symbol_c *IN1_type_symbol = param_data_type; last_type_symbol = param_data_type; - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol)) { { @@ -14724,7 +14512,305 @@ if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__time_mul")); + function_name = (symbol_c*)(new pragma_c("__sub_")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = last_type_symbol; + function_type_suffix = return_type_symbol; + break; + + } + + + ERROR; + } + + } + + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol)) + { + + { + symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); + symbol_c *IN2_type_symbol = NULL; + + /* Get the value from a foo() style call */ + if (IN2_param_value == NULL) + IN2_param_value = function_call_param_iterator.next_nf(); + if (IN2_param_value != NULL) { + IN2_type_symbol = search_expression_type->get_type(IN2_param_value); + last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; + } + + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__time_sub")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + break; + + } + + + ERROR; + } + + } + + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) + { + + { + symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); + symbol_c *IN2_type_symbol = NULL; + + /* Get the value from a foo() style call */ + if (IN2_param_value == NULL) + IN2_param_value = function_call_param_iterator.next_nf(); + if (IN2_param_value != NULL) { + IN2_type_symbol = search_expression_type->get_type(IN2_param_value); + last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; + } + + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__time_sub")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + break; + + } + + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__time_sub")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name; + break; + + } + + + ERROR; + } + + } + + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) + { + + { + symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); + symbol_c *IN2_type_symbol = NULL; + + /* Get the value from a foo() style call */ + if (IN2_param_value == NULL) + IN2_param_value = function_call_param_iterator.next_nf(); + if (IN2_param_value != NULL) { + IN2_type_symbol = search_expression_type->get_type(IN2_param_value); + last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; + } + + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__time_sub")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + break; + + } + + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__time_sub")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name; + break; + + } + + + ERROR; + } + + } + + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + { + + { + symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); + symbol_c *IN2_type_symbol = NULL; + + /* Get the value from a foo() style call */ + if (IN2_param_value == NULL) + IN2_param_value = function_call_param_iterator.next_nf(); + if (IN2_param_value != NULL) { + IN2_type_symbol = search_expression_type->get_type(IN2_param_value); + last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; + } + + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__time_sub")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + break; + + } + + + ERROR; + } + + } + + + ERROR; + } + + }/*function_sub*/ + break; + +/**** + *DIV + */ + case function_div : + { + symbol_c *last_type_symbol = NULL; + + { + symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN1_param_value = &this->default_variable_name; + + symbol_c *IN1_type_symbol = param_data_type; + last_type_symbol = param_data_type; + + if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol)) + { + + { + symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); + symbol_c *IN2_type_symbol = NULL; + + /* Get the value from a foo() style call */ + if (IN2_param_value == NULL) + IN2_param_value = function_call_param_iterator.next_nf(); + if (IN2_param_value != NULL) { + IN2_type_symbol = search_expression_type->get_type(IN2_param_value); + last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; + } + + if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__div_")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = last_type_symbol; + function_type_suffix = return_type_symbol; + break; + + } + + + ERROR; + } + + } + + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + { + + { + symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); + symbol_c *IN2_type_symbol = NULL; + + /* Get the value from a foo() style call */ + if (IN2_param_value == NULL) + IN2_param_value = function_call_param_iterator.next_nf(); + if (IN2_param_value != NULL) { + IN2_type_symbol = search_expression_type->get_type(IN2_param_value); + last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; + } + + if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__time_div")); if (IN1_type_symbol == NULL) IN1_type_symbol = last_type_symbol; @@ -14750,13 +14836,13 @@ ERROR; } - }/*function_multime*/ - break; - -/**** - *SUB - */ - case function_sub : + }/*function_div*/ + break; + +/**** + *MOD + */ + case function_mod : { symbol_c *last_type_symbol = NULL; @@ -14788,7 +14874,7 @@ if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__sub_")); + function_name = (symbol_c*)(new pragma_c("__mod_")); if (IN1_type_symbol == NULL) IN1_type_symbol = last_type_symbol; @@ -14809,7 +14895,29 @@ } - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol)) + + ERROR; + } + + }/*function_mod*/ + break; + +/**** + *EXPT + */ + case function_expt : + { + symbol_c *last_type_symbol = NULL; + + { + symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN1_param_value = &this->default_variable_name; + + symbol_c *IN1_type_symbol = param_data_type; + last_type_symbol = param_data_type; + + if(IN1_type_symbol == NULL || search_expression_type->is_real_type(IN1_type_symbol)) { { @@ -14826,10 +14934,10 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol)) + if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__time_sub")); + function_name = (symbol_c*)(new pragma_c("__expt_")); if (IN1_type_symbol == NULL) IN1_type_symbol = last_type_symbol; @@ -14838,7 +14946,8 @@ if (IN2_type_symbol == NULL) IN2_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + symbol_c * return_type_symbol = last_type_symbol; + function_type_suffix = IN1_type_symbol; break; } @@ -14849,7 +14958,69 @@ } - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) + + ERROR; + } + + }/*function_expt*/ + break; + +/**** + *MOVE + */ + case function_move : + { + symbol_c *last_type_symbol = NULL; + + { + symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN_param_value = &this->default_variable_name; + + symbol_c *IN_type_symbol = param_data_type; + last_type_symbol = param_data_type; + + + { + + function_name = (symbol_c*)(new pragma_c("__move_")); + + if (IN_type_symbol == NULL) + IN_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = last_type_symbol; + function_type_suffix = return_type_symbol; + if (search_expression_type->is_literal_integer_type(function_type_suffix)) + function_type_suffix = &search_constant_type_c::lint_type_name; + else if (search_expression_type->is_literal_real_type(function_type_suffix)) + function_type_suffix = &search_constant_type_c::lreal_type_name; + break; + + } + + + ERROR; + } + + }/*function_move*/ + break; + +/**** + *ADD_TIME + */ + case function_add_time : + { + symbol_c *last_type_symbol = NULL; + + { + symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN1_param_value = &this->default_variable_name; + + symbol_c *IN1_type_symbol = param_data_type; + last_type_symbol = param_data_type; + + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) { { @@ -14866,10 +15037,10 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__time_sub")); + function_name = (symbol_c*)(new pragma_c("__time_add")); if (IN1_type_symbol == NULL) IN1_type_symbol = last_type_symbol; @@ -14883,29 +15054,34 @@ } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__time_sub")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name; - break; - - } - ERROR; } } + + ERROR; + } + + }/*function_add_time*/ + break; + +/**** + *ADD_TOD_TIME + */ + case function_add_tod_time : + { + symbol_c *last_type_symbol = NULL; + + { + symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN1_param_value = &this->default_variable_name; + + symbol_c *IN1_type_symbol = param_data_type; + last_type_symbol = param_data_type; + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) { @@ -14923,27 +15099,10 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__time_sub")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; - break; - - } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__time_sub")); + function_name = (symbol_c*)(new pragma_c("__time_add")); if (IN1_type_symbol == NULL) IN1_type_symbol = last_type_symbol; @@ -14963,7 +15122,29 @@ } - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + + ERROR; + } + + }/*function_add_tod_time*/ + break; + +/**** + *ADD_DT_TIME + */ + case function_add_dt_time : + { + symbol_c *last_type_symbol = NULL; + + { + symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN1_param_value = &this->default_variable_name; + + symbol_c *IN1_type_symbol = param_data_type; + last_type_symbol = param_data_type; + + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) { { @@ -14983,7 +15164,7 @@ if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__time_sub")); + function_name = (symbol_c*)(new pragma_c("__time_add")); if (IN1_type_symbol == NULL) IN1_type_symbol = last_type_symbol; @@ -14992,7 +15173,7 @@ if (IN2_type_symbol == NULL) IN2_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name; break; } @@ -15007,13 +15188,13 @@ ERROR; } - }/*function_sub*/ - break; - -/**** - *SUB_TIME - */ - case function_sub_time : + }/*function_add_dt_time*/ + break; + +/**** + *MULTIME + */ + case function_multime : { symbol_c *last_type_symbol = NULL; @@ -15042,10 +15223,10 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__time_sub")); + function_name = (symbol_c*)(new pragma_c("__time_mul")); if (IN1_type_symbol == NULL) IN1_type_symbol = last_type_symbol; @@ -15055,6 +15236,8 @@ IN2_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + if (search_expression_type->is_literal_integer_type(function_type_suffix)) + function_type_suffix = &search_constant_type_c::lint_type_name; break; } @@ -15069,13 +15252,13 @@ ERROR; } - }/*function_sub_time*/ - break; - -/**** - *SUB_DATE_DATE - */ - case function_sub_date_date : + }/*function_multime*/ + break; + +/**** + *SUB_TIME + */ + case function_sub_time : { symbol_c *last_type_symbol = NULL; @@ -15087,7 +15270,7 @@ symbol_c *IN1_type_symbol = param_data_type; last_type_symbol = param_data_type; - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol)) + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) { { @@ -15104,7 +15287,7 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol)) + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) { function_name = (symbol_c*)(new pragma_c("__time_sub")); @@ -15131,13 +15314,13 @@ ERROR; } - }/*function_sub_date_date*/ - break; - -/**** - *SUB_TOD_TIME - */ - case function_sub_tod_time : + }/*function_sub_time*/ + break; + +/**** + *SUB_DATE_DATE + */ + case function_sub_date_date : { symbol_c *last_type_symbol = NULL; @@ -15149,7 +15332,7 @@ symbol_c *IN1_type_symbol = param_data_type; last_type_symbol = param_data_type; - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol)) { { @@ -15166,7 +15349,7 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::date_type_name, last_type_symbol)) { function_name = (symbol_c*)(new pragma_c("__time_sub")); @@ -15178,7 +15361,7 @@ if (IN2_type_symbol == NULL) IN2_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name; + symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; break; } @@ -15193,13 +15376,13 @@ ERROR; } - }/*function_sub_tod_time*/ - break; - -/**** - *SUB_TOD_TOD - */ - case function_sub_tod_tod : + }/*function_sub_date_date*/ + break; + +/**** + *SUB_TOD_TIME + */ + case function_sub_tod_time : { symbol_c *last_type_symbol = NULL; @@ -15228,7 +15411,7 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) { function_name = (symbol_c*)(new pragma_c("__time_sub")); @@ -15240,7 +15423,7 @@ if (IN2_type_symbol == NULL) IN2_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + symbol_c * return_type_symbol = &search_constant_type_c::tod_type_name; break; } @@ -15255,13 +15438,13 @@ ERROR; } - }/*function_sub_tod_tod*/ - break; - -/**** - *SUB_DT_TIME - */ - case function_sub_dt_time : + }/*function_sub_tod_time*/ + break; + +/**** + *SUB_TOD_TOD + */ + case function_sub_tod_tod : { symbol_c *last_type_symbol = NULL; @@ -15273,7 +15456,7 @@ symbol_c *IN1_type_symbol = param_data_type; last_type_symbol = param_data_type; - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) { { @@ -15290,7 +15473,7 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::tod_type_name, last_type_symbol)) { function_name = (symbol_c*)(new pragma_c("__time_sub")); @@ -15307,23 +15490,6 @@ } - if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__time_sub")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name; - break; - - } - ERROR; } @@ -15334,13 +15500,13 @@ ERROR; } - }/*function_sub_dt_time*/ - break; - -/**** - *DIV - */ - case function_div : + }/*function_sub_tod_tod*/ + break; + +/**** + *SUB_DT_TIME + */ + case function_sub_dt_time : { symbol_c *last_type_symbol = NULL; @@ -15352,7 +15518,7 @@ symbol_c *IN1_type_symbol = param_data_type; last_type_symbol = param_data_type; - if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol)) + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) { { @@ -15369,10 +15535,10 @@ last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; } - if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::dt_type_name, last_type_symbol)) { - function_name = (symbol_c*)(new pragma_c("__div_")); + function_name = (symbol_c*)(new pragma_c("__time_sub")); if (IN1_type_symbol == NULL) IN1_type_symbol = last_type_symbol; @@ -15381,8 +15547,24 @@ if (IN2_type_symbol == NULL) IN2_type_symbol = last_type_symbol; ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = last_type_symbol; - function_type_suffix = return_type_symbol; + symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; + break; + + } + + if(IN2_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) + { + + function_name = (symbol_c*)(new pragma_c("__time_sub")); + + if (IN1_type_symbol == NULL) + IN1_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) + + if (IN2_type_symbol == NULL) + IN2_type_symbol = last_type_symbol; + ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) + symbol_c * return_type_symbol = &search_constant_type_c::dt_type_name; break; } @@ -15393,6 +15575,28 @@ } + + ERROR; + } + + }/*function_sub_dt_time*/ + break; + +/**** + *DIVTIME + */ + case function_divtime : + { + symbol_c *last_type_symbol = NULL; + + { + symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); + /* Get the value from a foo( = ) style call */ + symbol_c *IN1_param_value = &this->default_variable_name; + + symbol_c *IN1_type_symbol = param_data_type; + last_type_symbol = param_data_type; + if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) { @@ -15439,240 +15643,10 @@ ERROR; } - }/*function_div*/ - break; - -/**** - *DIVTIME - */ - case function_divtime : - { - symbol_c *last_type_symbol = NULL; - - { - symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN1_param_value = &this->default_variable_name; - - symbol_c *IN1_type_symbol = param_data_type; - last_type_symbol = param_data_type; - - if(IN1_type_symbol == NULL || search_expression_type->is_same_type(&search_constant_type_c::time_type_name, last_type_symbol)) - { - - { - symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); - symbol_c *IN2_type_symbol = NULL; - - /* Get the value from a foo() style call */ - if (IN2_param_value == NULL) - IN2_param_value = function_call_param_iterator.next_nf(); - if (IN2_param_value != NULL) { - IN2_type_symbol = search_expression_type->get_type(IN2_param_value); - last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; - } - - if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__time_div")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = &search_constant_type_c::time_type_name; - if (search_expression_type->is_literal_integer_type(function_type_suffix)) - function_type_suffix = &search_constant_type_c::lint_type_name; - break; - - } - - - ERROR; - } - - } - - - ERROR; - } - }/*function_divtime*/ break; /**** - *MOD - */ - case function_mod : - { - symbol_c *last_type_symbol = NULL; - - { - symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN1_param_value = &this->default_variable_name; - - symbol_c *IN1_type_symbol = param_data_type; - last_type_symbol = param_data_type; - - if(IN1_type_symbol == NULL || search_expression_type->is_num_type(IN1_type_symbol)) - { - - { - symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); - symbol_c *IN2_type_symbol = NULL; - - /* Get the value from a foo() style call */ - if (IN2_param_value == NULL) - IN2_param_value = function_call_param_iterator.next_nf(); - if (IN2_param_value != NULL) { - IN2_type_symbol = search_expression_type->get_type(IN2_param_value); - last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; - } - - if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__mod_")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = last_type_symbol; - function_type_suffix = return_type_symbol; - break; - - } - - - ERROR; - } - - } - - - ERROR; - } - - }/*function_mod*/ - break; - -/**** - *EXPT - */ - case function_expt : - { - symbol_c *last_type_symbol = NULL; - - { - symbol_c *IN1_param_name = (symbol_c *)(new identifier_c("IN1")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN1_param_value = &this->default_variable_name; - - symbol_c *IN1_type_symbol = param_data_type; - last_type_symbol = param_data_type; - - if(IN1_type_symbol == NULL || search_expression_type->is_real_type(IN1_type_symbol)) - { - - { - symbol_c *IN2_param_name = (symbol_c *)(new identifier_c("IN2")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN2_param_value = function_call_param_iterator.search_f(IN2_param_name); - symbol_c *IN2_type_symbol = NULL; - - /* Get the value from a foo() style call */ - if (IN2_param_value == NULL) - IN2_param_value = function_call_param_iterator.next_nf(); - if (IN2_param_value != NULL) { - IN2_type_symbol = search_expression_type->get_type(IN2_param_value); - last_type_symbol = last_type_symbol && IN2_type_symbol && search_expression_type->is_same_type(IN2_type_symbol, last_type_symbol) ? search_expression_type->common_type(IN2_type_symbol, last_type_symbol) : IN2_type_symbol ; - } - - if(IN2_type_symbol == NULL || search_expression_type->is_num_type(IN2_type_symbol)) - { - - function_name = (symbol_c*)(new pragma_c("__expt_")); - - if (IN1_type_symbol == NULL) - IN1_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN1_param_name, IN1_param_value, IN1_type_symbol, function_param_iterator_c::direction_in) - - if (IN2_type_symbol == NULL) - IN2_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN2_param_name, IN2_param_value, IN2_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = last_type_symbol; - function_type_suffix = IN1_type_symbol; - break; - - } - - - ERROR; - } - - } - - - ERROR; - } - - }/*function_expt*/ - break; - -/**** - *MOVE - */ - case function_move : - { - symbol_c *last_type_symbol = NULL; - - { - symbol_c *IN_param_name = (symbol_c *)(new identifier_c("IN")); - /* Get the value from a foo( = ) style call */ - symbol_c *IN_param_value = &this->default_variable_name; - - symbol_c *IN_type_symbol = param_data_type; - last_type_symbol = param_data_type; - - - { - - function_name = (symbol_c*)(new pragma_c("__move_")); - - if (IN_type_symbol == NULL) - IN_type_symbol = last_type_symbol; - ADD_PARAM_LIST(IN_param_name, IN_param_value, IN_type_symbol, function_param_iterator_c::direction_in) - symbol_c * return_type_symbol = last_type_symbol; - function_type_suffix = return_type_symbol; - if (search_expression_type->is_literal_integer_type(function_type_suffix)) - function_type_suffix = &search_constant_type_c::lint_type_name; - else if (search_expression_type->is_literal_real_type(function_type_suffix)) - function_type_suffix = &search_constant_type_c::lreal_type_name; - break; - - } - - - ERROR; - } - - }/*function_move*/ - break; - -/**** *SHL */ case function_shl :