Example #1
0
    static 
    string_type 
    fractional_seconds_as_string(const time_duration_type& a_time,
                                 bool null_when_zero) 
    {
      typename time_duration_type::fractional_seconds_type frac_sec = 
        a_time.fractional_seconds();

      if (null_when_zero && (frac_sec == 0)) {
        return string_type();
      }

      std::basic_ostringstream<char_type> ss;
      ss.imbue(std::locale::classic()); // don't want any formatting
      ss << std::setw(time_duration_type::num_fractional_digits())
         << std::setfill(static_cast<char_type>('0'));
#if (defined(BOOST_MSVC) && (_MSC_VER <= 1200))  // 1200 == VC++ 6.0
      // JDG [7/6/02 VC++ compatibility]
      char_type buff[34];
      ss << _i64toa(static_cast<boost::int64_t>(frac_sec), buff, 10);
#else
      ss << frac_sec;
#endif
      return ss.str();
    }
 //! Put time into an ostream 
 static void duration_put(const time_duration_type& td, 
                          ostream_type& os)
 {
   if(td.is_special()) {
     os << td.get_rep(); 
   }
   else {
     charT fill_char = '0';
     if(td.is_negative()) {
       os << '-';
     }
     os  << std::setw(2) << std::setfill(fill_char) 
         << absolute_value(td.hours()) << ":";
     os  << std::setw(2) << std::setfill(fill_char) 
         << absolute_value(td.minutes()) << ":";
     os  << std::setw(2) << std::setfill(fill_char) 
         << absolute_value(td.seconds());
     fractional_seconds_type frac_sec = 
       absolute_value(td.fractional_seconds());
     if (frac_sec != 0) {
       os  << "." 
           << std::setw(time_duration_type::num_fractional_digits())
           << std::setfill(fill_char)
           << frac_sec;
     }
   } // else
 } // duration_put
 //! Put time into an ostream 
 static void duration_put(const time_duration_type& td, 
                          ostream_type& os)
 {
   os  << std::setw(2) << std::setfill('0') << td.hours() << ":";
   os  << std::setw(2) << std::setfill('0') << td.minutes() << ":";
   os  << std::setw(2) << std::setfill('0') << td.seconds();
   fractional_seconds_type frac_sec = td.fractional_seconds();
   if (frac_sec != 0) {
     os  << "." << std::setw(time_duration_type::num_fractional_digits())
         << std::setfill('0')
         << frac_sec;
   }
   
 } // duration_put