stage4/generate_c/generate_c.cc
changeset 1077 b37de6a9ad7f
parent 1072 2dc67df52e59
child 1078 81e2a100db14
child 1079 585445abc4a2
equal deleted inserted replaced
1076:efaa818ef637 1077:b37de6a9ad7f
   542 /***********************************************************************/
   542 /***********************************************************************/
   543 /***********************************************************************/
   543 /***********************************************************************/
   544 /***********************************************************************/
   544 /***********************************************************************/
   545 /***********************************************************************/
   545 /***********************************************************************/
   546 
   546 
   547 #define MILLISECOND 1000000
   547 #define MILLISECOND 1
   548 #define SECOND 1000 * MILLISECOND
   548 #define SECOND 1000 * MILLISECOND
   549 
   549 
   550 unsigned long long calculate_time(symbol_c *symbol) {
   550 unsigned long long calculate_time(symbol_c *symbol) {
   551   if (NULL == symbol) return 0;
   551   if (NULL == symbol) return 0;
   552   
   552   
   565 
   565 
   566   if (NULL != interval) {
   566   if (NULL != interval) {
   567     /* SYM_REF5(interval_c, days, hours, minutes, seconds, milliseconds) */
   567     /* SYM_REF5(interval_c, days, hours, minutes, seconds, milliseconds) */
   568       unsigned long long int time_ull = 0; 
   568       unsigned long long int time_ull = 0; 
   569       long double            time_ld  = 0;
   569       long double            time_ld  = 0;
   570       /*
       
   571       const unsigned long long int MILLISECOND = 1000000;
       
   572       const unsigned long long int      SECOND = 1000 * MILLISECOND
       
   573       */
       
   574       
   570       
   575       if (NULL != interval->milliseconds) {
   571       if (NULL != interval->milliseconds) {
   576         if      (VALID_CVALUE( int64, interval->milliseconds) &&           GET_CVALUE( int64, interval->milliseconds) < 0) ERROR; // interval elements should always be positive!
   572         if      (VALID_CVALUE( int64, interval->milliseconds) &&           GET_CVALUE( int64, interval->milliseconds) < 0) ERROR; // interval elements should always be positive!
   577         if      (VALID_CVALUE( int64, interval->milliseconds)) time_ull += GET_CVALUE( int64, interval->milliseconds) * MILLISECOND;
   573         if      (VALID_CVALUE( int64, interval->milliseconds)) time_ull += GET_CVALUE( int64, interval->milliseconds) * MILLISECOND;
   578         else if (VALID_CVALUE(uint64, interval->milliseconds)) time_ull += GET_CVALUE(uint64, interval->milliseconds) * MILLISECOND;
   574         else if (VALID_CVALUE(uint64, interval->milliseconds)) time_ull += GET_CVALUE(uint64, interval->milliseconds) * MILLISECOND;
  2668         generate_c_config_c generate_c_config(&config_s4o, &config_incl_s4o);
  2664         generate_c_config_c generate_c_config(&config_s4o, &config_incl_s4o);
  2669         symbol->accept(generate_c_config);
  2665         symbol->accept(generate_c_config);
  2670 
  2666 
  2671         config_s4o.print("unsigned long long common_ticktime__ = ");
  2667         config_s4o.print("unsigned long long common_ticktime__ = ");
  2672         config_s4o.print_long_long_integer(common_ticktime);
  2668         config_s4o.print_long_long_integer(common_ticktime);
       
  2669         config_s4o.print(" * ");
       
  2670         config_s4o.print_long_long_integer(1000000 / MILLISECOND);
  2673         config_s4o.print("; /*ns*/\n");
  2671         config_s4o.print("; /*ns*/\n");
  2674         config_s4o.print("unsigned long greatest_tick_count__ = (unsigned long)");
  2672         config_s4o.print("unsigned long greatest_tick_count__ = (unsigned long)");
  2675         config_s4o.print_long_integer(calculate_common_ticktime.get_greatest_tick_count());
  2673         config_s4o.print_long_integer(calculate_common_ticktime.get_greatest_tick_count());
  2676         config_s4o.print("; /*tick*/\n");
  2674         config_s4o.print("; /*tick*/\n");
  2677 
  2675