stage4/generate_c/generate_c_st.cc
changeset 1011 76175defb87b
parent 999 dd50a82ae8da
child 1012 1f2af384fb1f
--- a/stage4/generate_c/generate_c_st.cc	Sat May 07 21:17:49 2016 +0100
+++ b/stage4/generate_c/generate_c_st.cc	Sun May 08 20:01:15 2016 +0100
@@ -623,7 +623,7 @@
   if (get_datatype_info_c::is_TIME_compatible      (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_DATE_compatible  (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype))
-    return print_compare_function("EQ_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
+    return print_compare_function("EQ", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
   return print_binary_expression(symbol->l_exp, symbol->r_exp, " == ");
 }
 
@@ -631,7 +631,7 @@
   if (get_datatype_info_c::is_TIME_compatible      (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_DATE_compatible  (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype))
-    return print_compare_function("NE_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
+    return print_compare_function("NE", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
   return print_binary_expression(symbol->l_exp, symbol->r_exp, " != ");
 }
 
@@ -639,7 +639,7 @@
   if (get_datatype_info_c::is_TIME_compatible      (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_DATE_compatible  (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype))
-    return print_compare_function("LT_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
+    return print_compare_function("LT", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
   return print_binary_expression(symbol->l_exp, symbol->r_exp, " < ");
 }
 
@@ -647,7 +647,7 @@
   if (get_datatype_info_c::is_TIME_compatible      (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_DATE_compatible  (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype))
-    return print_compare_function("GT_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
+    return print_compare_function("GT", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
   return print_binary_expression(symbol->l_exp, symbol->r_exp, " > ");
 }
 
@@ -655,7 +655,7 @@
   if (get_datatype_info_c::is_TIME_compatible      (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_DATE_compatible  (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype))
-    return print_compare_function("LE_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
+    return print_compare_function("LE", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
   return print_binary_expression(symbol->l_exp, symbol->r_exp, " <= ");
 }
 
@@ -663,19 +663,11 @@
   if (get_datatype_info_c::is_TIME_compatible      (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_DATE_compatible  (symbol->l_exp->datatype) ||
       get_datatype_info_c::is_ANY_STRING_compatible(symbol->l_exp->datatype))
-    return print_compare_function("GE_", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
+    return print_compare_function("GE", symbol->l_exp->datatype, symbol->l_exp, symbol->r_exp);
   return print_binary_expression(symbol->l_exp, symbol->r_exp, " >= ");
 }
 
 void *visit(add_expression_c *symbol) {
-/*
-  symbol_c *left_type  = symbol->l_exp->datatype;
-  symbol_c *right_type = symbol->r_exp->datatype;
-  if ((typeid(*left_type) == typeid(time_type_name_c) && typeid(*right_type) == typeid(time_type_name_c)) ||
-      (typeid(*left_type) == typeid(tod_type_name_c)  && typeid(*right_type) == typeid(time_type_name_c)) ||
-      (typeid(*left_type) == typeid(dt_type_name_c)   && typeid(*right_type) == typeid(time_type_name_c)))
-    return print_binary_function("__time_add", symbol->l_exp, symbol->r_exp);
-*/
   if (get_datatype_info_c::is_TIME_compatible      (symbol->datatype) ||
       get_datatype_info_c::is_ANY_DATE_compatible  (symbol->datatype))
     return print_binary_function("__time_add", symbol->l_exp, symbol->r_exp);
@@ -683,17 +675,6 @@
 }
 
 void *visit(sub_expression_c *symbol) {
-/*
-  symbol_c *left_type  = symbol->l_exp->datatype;
-  symbol_c *right_type = symbol->r_exp->datatype;
-  if ((typeid(*left_type) == typeid(time_type_name_c) && typeid(*right_type) == typeid(time_type_name_c)) ||
-      (typeid(*left_type) == typeid(date_type_name_c) && typeid(*right_type) == typeid(date_type_name_c)) ||
-      (typeid(*left_type) == typeid(tod_type_name_c)  && typeid(*right_type) == typeid(time_type_name_c)) ||
-      (typeid(*left_type) == typeid(tod_type_name_c)  && typeid(*right_type) == typeid(tod_type_name_c))  ||
-      (typeid(*left_type) == typeid(dt_type_name_c)   && typeid(*right_type) == typeid(time_type_name_c)) ||
-      (typeid(*left_type) == typeid(dt_type_name_c)   && typeid(*right_type) == typeid(dt_type_name_c)))
-    return print_binary_function("__time_sub", symbol->l_exp, symbol->r_exp);
-*/  
   if (get_datatype_info_c::is_TIME_compatible      (symbol->datatype) ||
       get_datatype_info_c::is_ANY_DATE_compatible  (symbol->datatype))
     return print_binary_function("__time_sub", symbol->l_exp, symbol->r_exp);
@@ -701,26 +682,12 @@
 }
 
 void *visit(mul_expression_c *symbol) {
-/*
-  symbol_c *left_type  = symbol->l_exp->datatype;
-  symbol_c *right_type = symbol->r_exp->datatype;
-  if ((typeid(*left_type) == typeid(time_type_name_c) && get_datatype_info_c::is_ANY_INT_compatible (right_type)) ||
-      (typeid(*left_type) == typeid(time_type_name_c) && get_datatype_info_c::is_ANY_REAL_compatible(right_type)))
-    return print_binary_function("__time_mul", symbol->l_exp, symbol->r_exp);
-*/  
   if (get_datatype_info_c::is_TIME_compatible      (symbol->datatype))
     return print_binary_function("__time_mul", symbol->l_exp, symbol->r_exp);
   return print_binary_expression(symbol->l_exp, symbol->r_exp, " * ");
 }
 
 void *visit(div_expression_c *symbol) {
-/*
-  symbol_c *left_type  = symbol->l_exp->datatype;
-  symbol_c *right_type = symbol->r_exp->datatype;
-  if ((typeid(*left_type) == typeid(time_type_name_c) && get_datatype_info_c::is_ANY_INT_compatible (right_type)) ||
-      (typeid(*left_type) == typeid(time_type_name_c) && get_datatype_info_c::is_ANY_REAL_compatible(right_type)))
-    return print_binary_function("__time_div", symbol->l_exp, symbol->r_exp);
-*/
   if (get_datatype_info_c::is_TIME_compatible      (symbol->datatype))
     return print_binary_function("__time_div", symbol->l_exp, symbol->r_exp);
   return print_binary_expression(symbol->l_exp, symbol->r_exp, " / ");
@@ -736,13 +703,9 @@
 }
 
 void *visit(power_expression_c *symbol) {
-  s4o.print("EXPT__LREAL__LREAL__LREAL((BOOL)__BOOL_LITERAL(TRUE),\n");
-  s4o.indent_right();
-  s4o.print(s4o.indent_spaces + "NULL,\n");
-  s4o.print(s4o.indent_spaces + "(LREAL)(");
+  s4o.print("__expt((LREAL)(");
   symbol->l_exp->accept(*this);
-  s4o.print("),\n");
-  s4o.print(s4o.indent_spaces + "(LREAL)(");
+  s4o.print("), (LREAL)(");
   symbol->r_exp->accept(*this);
   s4o.print("))");
   return NULL;
@@ -895,6 +858,7 @@
   }
   s4o.print("(");
   s4o.indent_right();
+  s4o.print("\n"+s4o.indent_spaces);
   
   int nb_param = 0;
   PARAM_LIST_ITERATOR() {