diff -r 0b472e25eb16 -r e8b99f896416 stage4/generate_cc/generate_cc_base.cc --- a/stage4/generate_cc/generate_cc_base.cc Wed Feb 14 19:57:01 2007 +0100 +++ b/stage4/generate_cc/generate_cc_base.cc Tue Feb 20 18:17:21 2007 +0100 @@ -172,7 +172,6 @@ return NULL; } - void *print_unary_expression(symbol_c *exp, const char *operation) { s4o.print(operation); @@ -182,6 +181,32 @@ return NULL; } + void *print_binary_function(const char *function, + symbol_c *l_exp, + symbol_c *r_exp) { + s4o.print(function); + s4o.print("("); + l_exp->accept(*this); + s4o.print(", "); + r_exp->accept(*this); + s4o.print(")"); + return NULL; + } + + void *print_compare_function(const char *function, + const char *compare_sign, + symbol_c *l_exp, + symbol_c *r_exp) { + s4o.print(function); + s4o.print("("); + s4o.print(compare_sign); + s4o.print(", "); + l_exp->accept(*this); + s4o.print(", "); + r_exp->accept(*this); + s4o.print(")"); + return NULL; + } /***************************/ /* 2.1.6 - Pragmas */ @@ -309,7 +334,7 @@ /* SYM_REF2(duration_c, neg, interval) */ void *visit(duration_c *symbol) { TRACE("duration_c"); - s4o.print("TIME("); + s4o.print("__time_to_timespec("); if (NULL == symbol->neg) s4o.print("1"); /* positive time value */ else @@ -318,6 +343,10 @@ s4o.print(", "); symbol->interval->accept(*this); + if (typeid(*symbol->interval) == typeid(hours_c)) {s4o.print(", 0");} + if (typeid(*symbol->interval) == typeid(minutes_c)) {s4o.print(", 0, 0");} + if (typeid(*symbol->interval) == typeid(seconds_c)) {s4o.print(", 0, 0, 0");} + if (typeid(*symbol->interval) == typeid(milliseconds_c)) {s4o.print(", 0, 0, 0, 0");} s4o.print(")"); return NULL; } @@ -401,7 +430,7 @@ /* SYM_REF2(time_of_day_c, daytime, unused) */ void *visit(time_of_day_c *symbol) { TRACE("time_of_day_c"); - s4o.print("TOD("); + s4o.print("__tod_to_timespec("); symbol->daytime->accept(*this); s4o.print(")"); return NULL; @@ -423,7 +452,7 @@ /* SYM_REF2(date_c, date_literal, unused) */ void *visit(date_c *symbol) { TRACE("date_c"); - s4o.print("DATE("); + s4o.print("__date_to_timespec("); symbol->date_literal->accept(*this); s4o.print(")"); return NULL; @@ -445,7 +474,7 @@ /* SYM_REF2(date_and_time_c, date_literal, daytime) */ void *visit(date_and_time_c *symbol) { TRACE("date_and_time_c"); - s4o.print("DT("); + s4o.print("__dt_to_timespec("); symbol->daytime->accept(*this); s4o.print(", "); symbol->date_literal->accept(*this);