|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r56384 - in trunk/boost/date_time: . local_time posix_time
From: andrey.semashev_at_[hidden]
Date: 2009-09-25 15:39:08
Author: andysem
Date: 2009-09-25 15:39:08 EDT (Fri, 25 Sep 2009)
New Revision: 56384
URL: http://svn.boost.org/trac/boost/changeset/56384
Log:
Added some missing includes.
Text files modified:
trunk/boost/date_time/local_time/local_date_time.hpp | 155 ++++++------
trunk/boost/date_time/posix_time/conversion.hpp | 31 +-
trunk/boost/date_time/posix_time/time_formatters.hpp | 62 ++--
trunk/boost/date_time/posix_time/time_formatters_limited.hpp | 69 ++--
trunk/boost/date_time/time_facet.hpp | 509 ++++++++++++++++++++-------------------
5 files changed, 415 insertions(+), 411 deletions(-)
Modified: trunk/boost/date_time/local_time/local_date_time.hpp
==============================================================================
--- trunk/boost/date_time/local_time/local_date_time.hpp (original)
+++ trunk/boost/date_time/local_time/local_date_time.hpp 2009-09-25 15:39:08 EDT (Fri, 25 Sep 2009)
@@ -2,7 +2,7 @@
#define LOCAL_TIME_LOCAL_DATE_TIME_HPP__
/* Copyright (c) 2003-2005 CrystalClear Software, Inc.
- * Subject to the Boost Software License, Version 1.0.
+ * Subject to the Boost Software License, Version 1.0.
* (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
* Author: Jeff Garland, Bart Garst
* $Date$
@@ -19,6 +19,7 @@
#include <boost/date_time/dst_rules.hpp>
#include <boost/date_time/time_zone_base.hpp>
#include <boost/date_time/special_defs.hpp>
+#include <boost/date_time/time_resolution_traits.hpp> // absolute_value
namespace boost {
namespace local_time {
@@ -41,7 +42,7 @@
std::logic_error(std::string("is_dst flag does not match resulting dst for time label given: " + msg)) {}
};
- //TODO: I think these should be in local_date_time_base and not
+ //TODO: I think these should be in local_date_time_base and not
// necessarily brought into the namespace
using date_time::time_is_dst_result;
using date_time::is_in_dst;
@@ -51,17 +52,17 @@
//! Representation of "wall-clock" time in a particular time zone
/*! Representation of "wall-clock" time in a particular time zone
- * Local_date_time_base holds a time value (date and time offset from 00:00)
- * along with a time zone. The time value is stored as UTC and conversions
- * to wall clock time are made as needed. This approach allows for
- * operations between wall-clock times in different time zones, and
- * daylight savings time considerations, to be made. Time zones are
+ * Local_date_time_base holds a time value (date and time offset from 00:00)
+ * along with a time zone. The time value is stored as UTC and conversions
+ * to wall clock time are made as needed. This approach allows for
+ * operations between wall-clock times in different time zones, and
+ * daylight savings time considerations, to be made. Time zones are
* required to be in the form of a boost::shared_ptr<time_zone_base>.
*/
- template<class utc_time_=posix_time::ptime,
+ template<class utc_time_=posix_time::ptime,
class tz_type=date_time::time_zone_base<utc_time_,char> >
- class local_date_time_base : public date_time::base_time<utc_time_,
- boost::posix_time::posix_time_system> {
+ class local_date_time_base : public date_time::base_time<utc_time_,
+ boost::posix_time::posix_time_system> {
public:
typedef utc_time_ utc_time_type;
typedef typename utc_time_type::time_duration_type time_duration_type;
@@ -70,41 +71,41 @@
typedef typename utc_time_type::time_system_type time_system_type;
/*! This constructor interprets the passed time as a UTC time.
* So, for example, if the passed timezone is UTC-5 then the
- * time will be adjusted back 5 hours. The time zone allows for
+ * time will be adjusted back 5 hours. The time zone allows for
* automatic calculation of whether the particular time is adjusted for
* daylight savings, etc.
* If the time zone shared pointer is null then time stays unadjusted.
*@param t A UTC time
*@param tz Timezone for to adjust the UTC time to.
*/
- local_date_time_base(utc_time_type t,
- boost::shared_ptr<tz_type> tz) :
+ local_date_time_base(utc_time_type t,
+ boost::shared_ptr<tz_type> tz) :
date_time::base_time<utc_time_type, time_system_type>(t),
zone_(tz)
{
// param was already utc so nothing more to do
- }
+ }
- /*! This constructs a local time -- the passed time information
- * understood to be in the passed tz. The DST flag must be passed
- * to indicate whether the time is in daylight savings or not.
- * @throws -- time_label_invalid if the time passed does not exist in
- * the given locale. The non-existent case occurs typically
- * during the shift-back from daylight savings time. When
- * the clock is shifted forward a range of times
+ /*! This constructs a local time -- the passed time information
+ * understood to be in the passed tz. The DST flag must be passed
+ * to indicate whether the time is in daylight savings or not.
+ * @throws -- time_label_invalid if the time passed does not exist in
+ * the given locale. The non-existent case occurs typically
+ * during the shift-back from daylight savings time. When
+ * the clock is shifted forward a range of times
* (2 am to 3 am in the US) is skipped and hence is invalid.
- * @throws -- dst_not_valid if the DST flag is passed for a period
+ * @throws -- dst_not_valid if the DST flag is passed for a period
* where DST is not active.
*/
- local_date_time_base(date_type d,
+ local_date_time_base(date_type d,
time_duration_type td,
- boost::shared_ptr<tz_type> tz,
+ boost::shared_ptr<tz_type> tz,
bool dst_flag) : //necessary for constr_adj()
date_time::base_time<utc_time_type,time_system_type>(construction_adjustment(utc_time_type(d, td), tz, dst_flag)),
zone_(tz)
{
if(tz != boost::shared_ptr<tz_type>() && tz->has_dst()){
-
+
// d & td are already local so we use them
time_is_dst_result result = check_dst(d, td, tz);
bool in_dst = (result == is_in_dst); // less processing than is_dst()
@@ -124,23 +125,23 @@
ss << "flag given: dst=" << dst_flag << ", dst calculated: dst=" << in_dst;
boost::throw_exception(dst_not_valid(ss.str()));
}
-
+
// everything checks out and conversion to utc already done
}
- }
-
+ }
+
//TODO maybe not the right set...Ignore the last 2 for now...
- enum DST_CALC_OPTIONS { EXCEPTION_ON_ERROR, NOT_DATE_TIME_ON_ERROR };
+ enum DST_CALC_OPTIONS { EXCEPTION_ON_ERROR, NOT_DATE_TIME_ON_ERROR };
//ASSUME_DST_ON_ERROR, ASSUME_NOT_DST_ON_ERROR };
- /*! This constructs a local time -- the passed time information
- * understood to be in the passed tz. The DST flag is calculated
- * according to the specified rule.
+ /*! This constructs a local time -- the passed time information
+ * understood to be in the passed tz. The DST flag is calculated
+ * according to the specified rule.
*/
- local_date_time_base(date_type d,
+ local_date_time_base(date_type d,
time_duration_type td,
- boost::shared_ptr<tz_type> tz,
- DST_CALC_OPTIONS calc_option) :
+ boost::shared_ptr<tz_type> tz,
+ DST_CALC_OPTIONS calc_option) :
// dummy value - time_ is set in constructor code
date_time::base_time<utc_time_type,time_system_type>(utc_time_type(d,td)),
zone_(tz)
@@ -167,36 +168,36 @@
}
}
else if(result == is_in_dst){
- utc_time_type t =
+ utc_time_type t =
construction_adjustment(utc_time_type(d, td), tz, true);
- this->time_ = posix_time::posix_time_system::get_time_rep(t.date(),
+ this->time_ = posix_time::posix_time_system::get_time_rep(t.date(),
t.time_of_day());
}
else{
- utc_time_type t =
+ utc_time_type t =
construction_adjustment(utc_time_type(d, td), tz, false);
- this->time_ = posix_time::posix_time_system::get_time_rep(t.date(),
+ this->time_ = posix_time::posix_time_system::get_time_rep(t.date(),
t.time_of_day());
}
}
//! Determines if given time label is in daylight savings for given zone
- /*! Determines if given time label is in daylight savings for given zone.
- * Takes a date and time_duration representing a local time, along
+ /*! Determines if given time label is in daylight savings for given zone.
+ * Takes a date and time_duration representing a local time, along
* with time zone, and returns a time_is_dst_result object as result.
*/
- static time_is_dst_result check_dst(date_type d,
+ static time_is_dst_result check_dst(date_type d,
time_duration_type td,
- boost::shared_ptr<tz_type> tz)
+ boost::shared_ptr<tz_type> tz)
{
if(tz != boost::shared_ptr<tz_type>() && tz->has_dst()) {
typedef typename date_time::dst_calculator<date_type, time_duration_type> dst_calculator;
return dst_calculator::local_is_dst(
- d, td,
- tz->dst_local_start_time(d.year()).date(),
- tz->dst_local_start_time(d.year()).time_of_day(),
- tz->dst_local_end_time(d.year()).date(),
+ d, td,
+ tz->dst_local_start_time(d.year()).date(),
+ tz->dst_local_start_time(d.year()).time_of_day(),
+ tz->dst_local_end_time(d.year()).date(),
tz->dst_local_end_time(d.year()).time_of_day(),
tz->dst_offset()
);
@@ -210,7 +211,7 @@
~local_date_time_base() {};
//! Copy constructor
- local_date_time_base(const local_date_time_base& rhs) :
+ local_date_time_base(const local_date_time_base& rhs) :
date_time::base_time<utc_time_type, time_system_type>(rhs),
zone_(rhs.zone_)
{}
@@ -223,7 +224,7 @@
{}
//! returns time zone associated with calling instance
- boost::shared_ptr<tz_type> zone() const
+ boost::shared_ptr<tz_type> zone() const
{
return zone_;
}
@@ -242,12 +243,12 @@
return false;
case is_in_dst:
return true;
- case ambiguous:
+ case ambiguous:
if(lt + zone_->dst_offset() < zone_->dst_local_end_time(lt.date().year())) {
return true;
}
break;
- case invalid_time_label:
+ case invalid_time_label:
if(lt >= zone_->dst_local_start_time(lt.date().year())) {
return true;
}
@@ -257,12 +258,12 @@
return false;
}
//! Returns object's time value as a utc representation
- utc_time_type utc_time() const
+ utc_time_type utc_time() const
{
return utc_time_type(this->time_);
}
//! Returns object's time value as a local representation
- utc_time_type local_time() const
+ utc_time_type local_time() const
{
if(zone_ != boost::shared_ptr<tz_type>()){
utc_time_type lt = this->utc_time() + zone_->base_utc_offset();
@@ -275,7 +276,7 @@
}
//! Returns string in the form "2003-Aug-20 05:00:00 EDT"
/*! Returns string in the form "2003-Aug-20 05:00:00 EDT". If
- * time_zone is NULL the time zone abbreviation will be "UTC". The time
+ * time_zone is NULL the time zone abbreviation will be "UTC". The time
* zone abbrev will not be included if calling object is a special_value*/
std::string to_string() const
{
@@ -303,17 +304,17 @@
}
return ss.str();
}
- /*! returns a local_date_time_base in the given time zone with the
+ /*! returns a local_date_time_base in the given time zone with the
* optional time_duration added. */
- local_date_time_base local_time_in(boost::shared_ptr<tz_type> new_tz,
- time_duration_type td=time_duration_type(0,0,0)) const
+ local_date_time_base local_time_in(boost::shared_ptr<tz_type> new_tz,
+ time_duration_type td=time_duration_type(0,0,0)) const
{
return local_date_time_base(utc_time_type(this->time_) + td, new_tz);
}
-
+
//! Returns name of associated time zone or "Coordinated Universal Time".
- /*! Optional bool parameter will return time zone as an offset
- * (ie "+07:00" extended iso format). Empty string is returned for
+ /*! Optional bool parameter will return time zone as an offset
+ * (ie "+07:00" extended iso format). Empty string is returned for
* classes that do not use a time_zone */
std::string zone_name(bool as_offset=false) const
{
@@ -346,8 +347,8 @@
}
}
//! Returns abbreviation of associated time zone or "UTC".
- /*! Optional bool parameter will return time zone as an offset
- * (ie "+0700" iso format). Empty string is returned for classes
+ /*! Optional bool parameter will return time zone as an offset
+ * (ie "+0700" iso format). Empty string is returned for classes
* that do not use a time_zone */
std::string zone_abbrev(bool as_offset=false) const
{
@@ -388,7 +389,7 @@
}
return zone_->to_posix_string();
}
-
+
//! Equality comparison operator
/*bool operator==(const date_time::base_time<boost::posix_time::ptime,boost::posix_time::posix_time_system>& rhs) const
{ // fails due to rhs.time_ being protected
@@ -426,45 +427,45 @@
return (*this > rhs || *this == rhs);
}
- //! Local_date_time + date_duration
+ //! Local_date_time + date_duration
local_date_time_base operator+(const date_duration_type& dd) const
{
return local_date_time_base(time_system_type::add_days(this->time_,dd), zone_);
}
- //! Local_date_time += date_duration
+ //! Local_date_time += date_duration
local_date_time_base operator+=(const date_duration_type& dd)
{
this->time_ = time_system_type::add_days(this->time_,dd);
return *this;
}
- //! Local_date_time - date_duration
+ //! Local_date_time - date_duration
local_date_time_base operator-(const date_duration_type& dd) const
{
return local_date_time_base(time_system_type::subtract_days(this->time_,dd), zone_);
}
- //! Local_date_time -= date_duration
+ //! Local_date_time -= date_duration
local_date_time_base operator-=(const date_duration_type& dd)
{
this->time_ = time_system_type::subtract_days(this->time_,dd);
return *this;
}
- //! Local_date_time + time_duration
+ //! Local_date_time + time_duration
local_date_time_base operator+(const time_duration_type& td) const
{
return local_date_time_base(time_system_type::add_time_duration(this->time_,td), zone_);
}
- //! Local_date_time += time_duration
- local_date_time_base operator+=(const time_duration_type& td)
+ //! Local_date_time += time_duration
+ local_date_time_base operator+=(const time_duration_type& td)
{
this->time_ = time_system_type::add_time_duration(this->time_,td);
return *this;
}
- //! Local_date_time - time_duration
+ //! Local_date_time - time_duration
local_date_time_base operator-(const time_duration_type& td) const
{
return local_date_time_base(time_system_type::subtract_time_duration(this->time_,td), zone_);
}
- //! Local_date_time -= time_duration
+ //! Local_date_time -= time_duration
local_date_time_base operator-=(const time_duration_type& td)
{
this->time_ = time_system_type::subtract_time_duration(this->time_,td);
@@ -481,7 +482,7 @@
/*! Adjust the passed in time to UTC?
*/
- utc_time_type construction_adjustment(utc_time_type t,
+ utc_time_type construction_adjustment(utc_time_type t,
boost::shared_ptr<tz_type> z,
bool dst_flag)
{
@@ -496,21 +497,21 @@
/*! Simple formatting code -- todo remove this?
*/
- std::string zone_as_offset(const time_duration_type& td,
+ std::string zone_as_offset(const time_duration_type& td,
const std::string& separator) const
{
std::ostringstream ss;
if(td.is_negative()) {
// a negative duration is represented as "-[h]h:mm"
- // we require two digits for the hour. A positive duration
+ // we require two digits for the hour. A positive duration
// with the %H flag will always give two digits
ss << "-";
}
else {
ss << "+";
}
- ss << std::setw(2) << std::setfill('0')
- << date_time::absolute_value(td.hours())
+ ss << std::setw(2) << std::setfill('0')
+ << date_time::absolute_value(td.hours())
<< separator
<< std::setw(2) << std::setfill('0')
<< date_time::absolute_value(td.minutes());
Modified: trunk/boost/date_time/posix_time/conversion.hpp
==============================================================================
--- trunk/boost/date_time/posix_time/conversion.hpp (original)
+++ trunk/boost/date_time/posix_time/conversion.hpp 2009-09-25 15:39:08 EDT (Fri, 25 Sep 2009)
@@ -2,18 +2,19 @@
#define POSIX_TIME_CONVERSION_HPP___
/* Copyright (c) 2002-2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
+ * Use, modification and distribution is subject to the
* Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
* Author: Jeff Garland, Bart Garst
* $Date$
*/
-#include "boost/date_time/posix_time/ptime.hpp"
-#include "boost/date_time/posix_time/posix_time_duration.hpp"
-#include "boost/date_time/filetime_functions.hpp"
-#include "boost/date_time/c_time.hpp"
-#include "boost/date_time/gregorian/conversion.hpp"
+#include <boost/date_time/posix_time/ptime.hpp>
+#include <boost/date_time/posix_time/posix_time_duration.hpp>
+#include <boost/date_time/filetime_functions.hpp>
+#include <boost/date_time/c_time.hpp>
+#include <boost/date_time/time_resolution_traits.hpp> // absolute_value
+#include <boost/date_time/gregorian/conversion.hpp>
namespace boost {
@@ -28,18 +29,18 @@
return start + seconds(static_cast<long>(t));
}
- //! Convert a time to a tm structure truncating any fractional seconds
+ //! Convert a time to a tm structure truncating any fractional seconds
inline
std::tm to_tm(const boost::posix_time::ptime& t) {
std::tm timetm = boost::gregorian::to_tm(t.date());
boost::posix_time::time_duration td = t.time_of_day();
- timetm.tm_hour = td.hours();
- timetm.tm_min = td.minutes();
+ timetm.tm_hour = td.hours();
+ timetm.tm_min = td.minutes();
timetm.tm_sec = td.seconds();
- timetm.tm_isdst = -1; // -1 used when dst info is unknown
+ timetm.tm_isdst = -1; // -1 used when dst info is unknown
return timetm;
}
- //! Convert a time_duration to a tm structure truncating any fractional seconds and zeroing fields for date components
+ //! Convert a time_duration to a tm structure truncating any fractional seconds and zeroing fields for date components
inline
std::tm to_tm(const boost::posix_time::time_duration& td) {
std::tm timetm = {};
@@ -59,12 +60,12 @@
#if defined(BOOST_HAS_FTIME)
-
+
//! Function to create a time object from an initialized FILETIME struct.
/*! Function to create a time object from an initialized FILETIME struct.
- * A FILETIME struct holds 100-nanosecond units (0.0000001). When
- * built with microsecond resolution the FILETIME's sub second value
- * will be truncated. Nanosecond resolution has no truncation.
+ * A FILETIME struct holds 100-nanosecond units (0.0000001). When
+ * built with microsecond resolution the FILETIME's sub second value
+ * will be truncated. Nanosecond resolution has no truncation.
*
* \note FILETIME is part of the Win32 API, so it is not portable to non-windows
* platforms.
Modified: trunk/boost/date_time/posix_time/time_formatters.hpp
==============================================================================
--- trunk/boost/date_time/posix_time/time_formatters.hpp (original)
+++ trunk/boost/date_time/posix_time/time_formatters.hpp 2009-09-25 15:39:08 EDT (Fri, 25 Sep 2009)
@@ -2,24 +2,24 @@
#define POSIXTIME_FORMATTERS_HPP___
/* Copyright (c) 2002-2004 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
+ * Use, modification and distribution is subject to the
* Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
* Author: Jeff Garland, Bart Garst
* $Date$
*/
-#include "boost/date_time/gregorian/gregorian.hpp"
-#include "boost/date_time/compiler_config.hpp"
-#include "boost/date_time/iso_format.hpp"
-#include "boost/date_time/date_format_simple.hpp"
-#include "boost/date_time/posix_time/posix_time_types.hpp"
-#include "boost/date_time/time_formatting_streams.hpp"
+#include <boost/date_time/gregorian/gregorian.hpp>
+#include <boost/date_time/compiler_config.hpp>
+#include <boost/date_time/iso_format.hpp>
+#include <boost/date_time/date_format_simple.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/date_time/time_formatting_streams.hpp>
+#include <boost/date_time/time_resolution_traits.hpp> // absolute_value
+#include <boost/date_time/time_parsing.hpp>
-#include "boost/date_time/time_parsing.hpp"
-
-/* NOTE: The "to_*_string" code for older compilers, ones that define
- * BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS, is located in
+/* NOTE: The "to_*_string" code for older compilers, ones that define
+ * BOOST_DATE_TIME_INCLUDE_LIMITED_HEADERS, is located in
* formatters_limited.hpp
*/
@@ -57,27 +57,27 @@
if(td.is_negative()) {
ss << '-';
}
- ss << std::setw(2) << std::setfill(fill_char)
+ ss << std::setw(2) << std::setfill(fill_char)
<< date_time::absolute_value(td.hours()) << ":";
- ss << std::setw(2) << std::setfill(fill_char)
+ ss << std::setw(2) << std::setfill(fill_char)
<< date_time::absolute_value(td.minutes()) << ":";
- ss << std::setw(2) << std::setfill(fill_char)
+ ss << std::setw(2) << std::setfill(fill_char)
<< date_time::absolute_value(td.seconds());
//TODO the following is totally non-generic, yelling FIXME
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
- boost::int64_t frac_sec =
+ boost::int64_t frac_sec =
date_time::absolute_value(td.fractional_seconds());
// JDG [7/6/02 VC++ compatibility]
charT buff[32];
_i64toa(frac_sec, buff, 10);
#else
- time_duration::fractional_seconds_type frac_sec =
+ time_duration::fractional_seconds_type frac_sec =
date_time::absolute_value(td.fractional_seconds());
#endif
if (frac_sec != 0) {
ss << "." << std::setw(time_duration::num_fractional_digits())
<< std::setfill(fill_char)
-
+
// JDG [7/6/02 VC++ compatibility]
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
<< buff;
@@ -99,7 +99,7 @@
// template function called by wrapper functions:
// to_*_string(time_duration) & to_*_wstring(time_duration)
template<class charT>
- inline std::basic_string<charT> to_iso_string_type(time_duration td)
+ inline std::basic_string<charT> to_iso_string_type(time_duration td)
{
std::basic_ostringstream<charT> ss;
if(td.is_special()) {
@@ -126,27 +126,27 @@
if(td.is_negative()) {
ss << '-';
}
- ss << std::setw(2) << std::setfill(fill_char)
+ ss << std::setw(2) << std::setfill(fill_char)
<< date_time::absolute_value(td.hours());
- ss << std::setw(2) << std::setfill(fill_char)
+ ss << std::setw(2) << std::setfill(fill_char)
<< date_time::absolute_value(td.minutes());
- ss << std::setw(2) << std::setfill(fill_char)
+ ss << std::setw(2) << std::setfill(fill_char)
<< date_time::absolute_value(td.seconds());
//TODO the following is totally non-generic, yelling FIXME
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
- boost::int64_t frac_sec =
+ boost::int64_t frac_sec =
date_time::absolute_value(td.fractional_seconds());
// JDG [7/6/02 VC++ compatibility]
charT buff[32];
_i64toa(frac_sec, buff, 10);
#else
- time_duration::fractional_seconds_type frac_sec =
+ time_duration::fractional_seconds_type frac_sec =
date_time::absolute_value(td.fractional_seconds());
#endif
if (frac_sec != 0) {
ss << "." << std::setw(time_duration::num_fractional_digits())
<< std::setfill(fill_char)
-
+
// JDG [7/6/02 VC++ compatibility]
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
<< buff;
@@ -168,7 +168,7 @@
/*!\ingroup time_format
*/
template<class charT>
- inline std::basic_string<charT> to_simple_string_type(ptime t)
+ inline std::basic_string<charT> to_simple_string_type(ptime t)
{
// can't use this w/gcc295, no to_simple_string_type<>(td) available
std::basic_string<charT> ts = gregorian::to_simple_string_type<charT>(t.date());// + " ";
@@ -184,10 +184,10 @@
return to_simple_string_type<char>(t);
}
- // function called by wrapper functions to_*_string(time_period)
+ // function called by wrapper functions to_*_string(time_period)
// & to_*_wstring(time_period)
template<class charT>
- inline std::basic_string<charT> to_simple_string_type(time_period tp)
+ inline std::basic_string<charT> to_simple_string_type(time_period tp)
{
charT beg = '[', mid = '/', end = ']';
std::basic_string<charT> d1(to_simple_string_type<charT>(tp.begin()));
@@ -201,10 +201,10 @@
return to_simple_string_type<char>(tp);
}
- // function called by wrapper functions to_*_string(time_period)
+ // function called by wrapper functions to_*_string(time_period)
// & to_*_wstring(time_period)
template<class charT>
- inline std::basic_string<charT> to_iso_string_type(ptime t)
+ inline std::basic_string<charT> to_iso_string_type(ptime t)
{
std::basic_string<charT> ts = gregorian::to_iso_string_type<charT>(t.date());// + "T";
if(!t.time_of_day().is_special()) {
@@ -223,10 +223,10 @@
}
- // function called by wrapper functions to_*_string(time_period)
+ // function called by wrapper functions to_*_string(time_period)
// & to_*_wstring(time_period)
template<class charT>
- inline std::basic_string<charT> to_iso_extended_string_type(ptime t)
+ inline std::basic_string<charT> to_iso_extended_string_type(ptime t)
{
std::basic_string<charT> ts = gregorian::to_iso_extended_string_type<charT>(t.date());// + "T";
if(!t.time_of_day().is_special()) {
Modified: trunk/boost/date_time/posix_time/time_formatters_limited.hpp
==============================================================================
--- trunk/boost/date_time/posix_time/time_formatters_limited.hpp (original)
+++ trunk/boost/date_time/posix_time/time_formatters_limited.hpp 2009-09-25 15:39:08 EDT (Fri, 25 Sep 2009)
@@ -2,20 +2,21 @@
#define POSIXTIME_FORMATTERS_LIMITED_HPP___
/* Copyright (c) 2002,2003 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
+ * Use, modification and distribution is subject to the
* Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
* Author: Jeff Garland, Bart Garst
* $Date$
*/
-#include "boost/date_time/gregorian/gregorian.hpp"
-#include "boost/date_time/compiler_config.hpp"
-#include "boost/date_time/iso_format.hpp"
-#include "boost/date_time/date_format_simple.hpp"
-#include "boost/date_time/posix_time/posix_time_types.hpp"
-#include "boost/date_time/time_formatting_streams.hpp"
-
+#include <boost/date_time/gregorian/gregorian.hpp>
+#include <boost/date_time/compiler_config.hpp>
+#include <boost/date_time/iso_format.hpp>
+#include <boost/date_time/date_format_simple.hpp>
+#include <boost/date_time/posix_time/posix_time_types.hpp>
+#include <boost/date_time/time_formatting_streams.hpp>
+#include <boost/date_time/time_resolution_traits.hpp> // absolute_value
+
namespace boost {
namespace posix_time {
@@ -49,27 +50,27 @@
if(td.is_negative()) {
ss << '-';
}
- ss << std::setw(2) << std::setfill('0')
+ ss << std::setw(2) << std::setfill('0')
<< date_time::absolute_value(td.hours()) << ":";
- ss << std::setw(2) << std::setfill('0')
+ ss << std::setw(2) << std::setfill('0')
<< date_time::absolute_value(td.minutes()) << ":";
- ss << std::setw(2) << std::setfill('0')
+ ss << std::setw(2) << std::setfill('0')
<< date_time::absolute_value(td.seconds());
//TODO the following is totally non-generic, yelling FIXME
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
- boost::int64_t frac_sec =
+ boost::int64_t frac_sec =
date_time::absolute_value(td.fractional_seconds());
// JDG [7/6/02 VC++ compatibility]
char buff[32];
_i64toa(frac_sec, buff, 10);
#else
- time_duration::fractional_seconds_type frac_sec =
+ time_duration::fractional_seconds_type frac_sec =
date_time::absolute_value(td.fractional_seconds());
#endif
if (frac_sec != 0) {
ss << "." << std::setw(time_duration::num_fractional_digits())
<< std::setfill('0')
-
+
// JDG [7/6/02 VC++ compatibility]
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
<< buff;
@@ -84,9 +85,9 @@
//! Time duration in iso format -hhmmss,fffffff Example: 10:09:03,0123456
/*!\ingroup time_format
*/
- inline
- std::string
- to_iso_string(time_duration td)
+ inline
+ std::string
+ to_iso_string(time_duration td)
{
std::ostringstream ss;
if(td.is_special()) {
@@ -112,27 +113,27 @@
if(td.is_negative()) {
ss << '-';
}
- ss << std::setw(2) << std::setfill('0')
+ ss << std::setw(2) << std::setfill('0')
<< date_time::absolute_value(td.hours());
- ss << std::setw(2) << std::setfill('0')
+ ss << std::setw(2) << std::setfill('0')
<< date_time::absolute_value(td.minutes());
- ss << std::setw(2) << std::setfill('0')
+ ss << std::setw(2) << std::setfill('0')
<< date_time::absolute_value(td.seconds());
//TODO the following is totally non-generic, yelling FIXME
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
- boost::int64_t frac_sec =
+ boost::int64_t frac_sec =
date_time::absolute_value(td.fractional_seconds());
// JDG [7/6/02 VC++ compatibility]
char buff[32];
_i64toa(frac_sec, buff, 10);
#else
- time_duration::fractional_seconds_type frac_sec =
+ time_duration::fractional_seconds_type frac_sec =
date_time::absolute_value(td.fractional_seconds());
#endif
if (frac_sec != 0) {
ss << "." << std::setw(time_duration::num_fractional_digits())
<< std::setfill('0')
-
+
// JDG [7/6/02 VC++ compatibility]
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
<< buff;
@@ -147,9 +148,9 @@
//! Time to simple format CCYY-mmm-dd hh:mm:ss.fffffff
/*!\ingroup time_format
*/
- inline
- std::string
- to_simple_string(ptime t)
+ inline
+ std::string
+ to_simple_string(ptime t)
{
std::string ts = gregorian::to_simple_string(t.date());// + " ";
if(!t.time_of_day().is_special()) {
@@ -163,9 +164,9 @@
//! Convert to string of form [YYYY-mmm-DD HH:MM::SS.ffffff/YYYY-mmm-DD HH:MM::SS.fffffff]
/*!\ingroup time_format
*/
- inline
- std::string
- to_simple_string(time_period tp)
+ inline
+ std::string
+ to_simple_string(time_period tp)
{
std::string d1(to_simple_string(tp.begin()));
std::string d2(to_simple_string(tp.last()));
@@ -175,8 +176,8 @@
//! Convert iso short form YYYYMMDDTHHMMSS where T is the date-time separator
/*!\ingroup time_format
*/
- inline
- std::string to_iso_string(ptime t)
+ inline
+ std::string to_iso_string(ptime t)
{
std::string ts = gregorian::to_iso_string(t.date());// + "T";
if(!t.time_of_day().is_special()) {
@@ -190,9 +191,9 @@
//! Convert to form YYYY-MM-DDTHH:MM:SS where T is the date-time separator
/*!\ingroup time_format
*/
- inline
- std::string
- to_iso_extended_string(ptime t)
+ inline
+ std::string
+ to_iso_extended_string(ptime t)
{
std::string ts = gregorian::to_iso_extended_string(t.date());// + "T";
if(!t.time_of_day().is_special()) {
Modified: trunk/boost/date_time/time_facet.hpp
==============================================================================
--- trunk/boost/date_time/time_facet.hpp (original)
+++ trunk/boost/date_time/time_facet.hpp 2009-09-25 15:39:08 EDT (Fri, 25 Sep 2009)
@@ -3,7 +3,7 @@
#define _DATE_TIME_FACET__HPP__
/* Copyright (c) 2004-2005 CrystalClear Software, Inc.
- * Use, modification and distribution is subject to the
+ * Use, modification and distribution is subject to the
* Boost Software License, Version 1.0. (See accompanying
* file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
* Author: Martin Andrian, Jeff Garland, Bart Garst
@@ -27,6 +27,7 @@
#include <boost/date_time/date_facet.hpp>
#include <boost/date_time/string_convert.hpp>
#include <boost/date_time/special_defs.hpp>
+#include <boost/date_time/time_resolution_traits.hpp> // absolute_value
namespace boost {
namespace date_time {
@@ -55,129 +56,129 @@
static const char_type iso_time_format_specifier[18];
static const char_type iso_time_format_extended_specifier[22];
//default ptime format is YYYY-Mon-DD HH:MM:SS[.fff...][ zzz]
- static const char_type default_time_format[23];
+ static const char_type default_time_format[23];
// default_time_input_format uses a posix_time_zone_string instead of a time zone abbrev
- static const char_type default_time_input_format[24];
+ static const char_type default_time_input_format[24];
//default time_duration format is HH:MM:SS[.fff...]
static const char_type default_time_duration_format[11];
};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::fractional_seconds_format[3] = {'%','f'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::fractional_seconds_or_none_format[3] = {'%','F'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
- time_formats<CharT>::seconds_with_fractional_seconds_format[3] =
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::seconds_with_fractional_seconds_format[3] =
{'%','s'};
template <class CharT>
- const typename time_formats<CharT>::char_type
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::seconds_format[3] = {'%','S'};
template <class CharT>
- const typename time_formats<CharT>::char_type
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::hours_format[3] = {'%','H'};
template <class CharT>
- const typename time_formats<CharT>::char_type
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::unrestricted_hours_format[3] = {'%','O'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
//time_formats<CharT>::standard_format[5] = {'%','c',' ','%','z'};
time_formats<CharT>::standard_format[9] = {'%','x',' ','%','X',' ','%','z'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::zone_abbrev_format[3] = {'%','z'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::zone_name_format[3] = {'%','Z'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::zone_iso_format[3] = {'%','q'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::zone_iso_extended_format[3] ={'%','Q'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::posix_zone_string_format[4] ={'%','Z','P'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::duration_seperator[2] = {':'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::negative_sign[2] = {'-'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::positive_sign[2] = {'+'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::duration_sign_negative_only[3] ={'%','-'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
time_formats<CharT>::duration_sign_always[3] ={'%','+'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
- time_formats<CharT>::iso_time_format_specifier[18] =
- {'%', 'Y', '%', 'm', '%', 'd', 'T',
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::iso_time_format_specifier[18] =
+ {'%', 'Y', '%', 'm', '%', 'd', 'T',
'%', 'H', '%', 'M', '%', 'S', '%', 'F', '%','q' };
- template <class CharT>
- const typename time_formats<CharT>::char_type
- time_formats<CharT>::iso_time_format_extended_specifier[22] =
- {'%', 'Y', '-', '%', 'm', '-', '%', 'd', ' ',
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::iso_time_format_extended_specifier[22] =
+ {'%', 'Y', '-', '%', 'm', '-', '%', 'd', ' ',
'%', 'H', ':', '%', 'M', ':', '%', 'S', '%', 'F','%','Q'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
- time_formats<CharT>::default_time_format[23] =
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::default_time_format[23] =
{'%','Y','-','%','b','-','%','d',' ',
'%','H',':','%','M',':','%','S','%','F',' ','%','z'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
- time_formats<CharT>::default_time_input_format[24] =
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::default_time_input_format[24] =
{'%','Y','-','%','b','-','%','d',' ',
'%','H',':','%','M',':','%','S','%','F',' ','%','Z','P'};
- template <class CharT>
- const typename time_formats<CharT>::char_type
- time_formats<CharT>::default_time_duration_format[11] =
+ template <class CharT>
+ const typename time_formats<CharT>::char_type
+ time_formats<CharT>::default_time_duration_format[11] =
{'%','H',':','%','M',':','%','S','%','F'};
- /*! Facet used for format-based output of time types
+ /*! Facet used for format-based output of time types
* This class provides for the use of format strings to output times. In addition
* to the flags for formatting date elements, the following are the allowed format flags:
* - %x %X => default format - enables addition of more flags to default (ie. "%x %X %z")
* - %f => fractional seconds ".123456"
* - %F => fractional seconds or none: like frac sec but empty if frac sec == 0
- * - %s => seconds w/ fractional sec "02.123" (this is the same as "%S%f)
+ * - %s => seconds w/ fractional sec "02.123" (this is the same as "%S%f)
* - %S => seconds "02"
* - %z => abbreviated time zone "EDT"
* - %Z => full time zone name "Eastern Daylight Time"
*/
template <class time_type,
- class CharT,
+ class CharT,
class OutItrT = std::ostreambuf_iterator<CharT, std::char_traits<CharT> > >
- class time_facet :
+ class time_facet :
public boost::date_time::date_facet<typename time_type::date_type , CharT, OutItrT> {
public:
typedef typename time_type::date_type date_type;
@@ -210,7 +211,7 @@
static const char_type* iso_time_format_extended_specifier;
//default ptime format is YYYY-Mon-DD HH:MM:SS[.fff...][ zzz]
- static const char_type* default_time_format;
+ static const char_type* default_time_format;
//default time_duration format is HH:MM:SS[.fff...]
static const char_type* default_time_duration_format;
static std::locale::id id;
@@ -227,20 +228,20 @@
//! Construct the facet with an explicitly specified format
explicit time_facet(const char_type* a_format,
- period_formatter_type period_formatter = period_formatter_type(),
- const special_values_formatter_type& special_value_formatter = special_values_formatter_type(),
+ period_formatter_type period_formatter = period_formatter_type(),
+ const special_values_formatter_type& special_value_formatter = special_values_formatter_type(),
date_gen_formatter_type dg_formatter = date_gen_formatter_type(),
- ::size_t a_ref = 0)
- : base_type(a_format,
+ ::size_t a_ref = 0)
+ : base_type(a_format,
period_formatter,
- special_value_formatter,
- dg_formatter,
+ special_value_formatter,
+ dg_formatter,
a_ref),
m_time_duration_format(string_type(duration_sign_negative_only) + default_time_duration_format)
{}
//! Changes format for time_duration
- void time_duration_format(const char_type* const format)
+ void time_duration_format(const char_type* const format)
{
m_time_duration_format = format;
}
@@ -254,33 +255,33 @@
this->m_format = iso_time_format_extended_specifier;
}
- OutItrT put(OutItrT a_next,
- std::ios_base& a_ios,
- char_type a_fill,
- const time_type& a_time) const
+ OutItrT put(OutItrT a_next,
+ std::ios_base& a_ios,
+ char_type a_fill,
+ const time_type& a_time) const
{
- if (a_time.is_special()) {
- return this->do_put_special(a_next, a_ios, a_fill,
+ if (a_time.is_special()) {
+ return this->do_put_special(a_next, a_ios, a_fill,
a_time.date().as_special());
}
string_type format(this->m_format);
string_type frac_str;
if (format.find(seconds_with_fractional_seconds_format) != string_type::npos) {
- // replace %s with %S.nnn
- frac_str =
+ // replace %s with %S.nnn
+ frac_str =
fractional_seconds_as_string(a_time.time_of_day(), false);
char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
-
+
string_type replace_string(seconds_format);
replace_string += sep;
replace_string += frac_str;
- boost::algorithm::replace_all(format,
- seconds_with_fractional_seconds_format,
+ boost::algorithm::replace_all(format,
+ seconds_with_fractional_seconds_format,
replace_string);
}
/* NOTE: replacing posix_zone_string_format must be done BEFORE
- * zone_name_format: "%ZP" & "%Z", if Z is checked first it will
+ * zone_name_format: "%ZP" & "%Z", if Z is checked first it will
* incorrectly replace a zone_name where a posix_string should go */
if (format.find(posix_zone_string_format) != string_type::npos) {
if(a_time.zone_abbrev().empty()) {
@@ -296,8 +297,8 @@
}
if (format.find(zone_name_format) != string_type::npos) {
if(a_time.zone_name().empty()) {
- /* TODO: this'll probably create problems if a user places
- * the zone_*_format flag in the format with a ptime. This
+ /* TODO: this'll probably create problems if a user places
+ * the zone_*_format flag in the format with a ptime. This
* code removes the flag from the default formats */
// if zone_name() returns an empty string, we want to
@@ -314,8 +315,8 @@
}
if (format.find(zone_abbrev_format) != string_type::npos) {
if(a_time.zone_abbrev(false).empty()) {
- /* TODO: this'll probably create problems if a user places
- * the zone_*_format flag in the format with a ptime. This
+ /* TODO: this'll probably create problems if a user places
+ * the zone_*_format flag in the format with a ptime. This
* code removes the flag from the default formats */
// if zone_abbrev() returns an empty string, we want to
@@ -332,8 +333,8 @@
}
if (format.find(zone_iso_extended_format) != string_type::npos) {
if(a_time.zone_name(true).empty()) {
- /* TODO: this'll probably create problems if a user places
- * the zone_*_format flag in the format with a ptime. This
+ /* TODO: this'll probably create problems if a user places
+ * the zone_*_format flag in the format with a ptime. This
* code removes the flag from the default formats */
// if zone_name() returns an empty string, we want to
@@ -349,8 +350,8 @@
if (format.find(zone_iso_format) != string_type::npos) {
if(a_time.zone_abbrev(true).empty()) {
- /* TODO: this'll probably create problems if a user places
- * the zone_*_format flag in the format with a ptime. This
+ /* TODO: this'll probably create problems if a user places
+ * the zone_*_format flag in the format with a ptime. This
* code removes the flag from the default formats */
// if zone_abbrev() returns an empty string, we want to
@@ -369,13 +370,13 @@
frac_str = fractional_seconds_as_string(a_time.time_of_day(), false);
}
boost::algorithm::replace_all(format,
- fractional_seconds_format,
+ fractional_seconds_format,
frac_str);
}
if (format.find(fractional_seconds_or_none_format) != string_type::npos) {
// replace %F with nnnnnnn or nothing if fs == 0
- frac_str =
+ frac_str =
fractional_seconds_as_string(a_time.time_of_day(), true);
if (frac_str.size()) {
char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
@@ -383,7 +384,7 @@
replace_string += sep;
replace_string += frac_str;
boost::algorithm::replace_all(format,
- fractional_seconds_or_none_format,
+ fractional_seconds_or_none_format,
replace_string);
}
else {
@@ -392,46 +393,46 @@
}
}
- return this->do_put_tm(a_next, a_ios, a_fill,
+ return this->do_put_tm(a_next, a_ios, a_fill,
to_tm(a_time), format);
}
//! put function for time_duration
- OutItrT put(OutItrT a_next,
- std::ios_base& a_ios,
- char_type a_fill,
- const time_duration_type& a_time_dur) const
+ OutItrT put(OutItrT a_next,
+ std::ios_base& a_ios,
+ char_type a_fill,
+ const time_duration_type& a_time_dur) const
{
- if (a_time_dur.is_special()) {
- return this->do_put_special(a_next, a_ios, a_fill,
+ if (a_time_dur.is_special()) {
+ return this->do_put_special(a_next, a_ios, a_fill,
a_time_dur.get_rep().as_special());
}
string_type format(m_time_duration_format);
if (a_time_dur.is_negative()) {
// replace %- with minus sign. Should we use the numpunct facet?
- boost::algorithm::replace_all(format,
- duration_sign_negative_only,
+ boost::algorithm::replace_all(format,
+ duration_sign_negative_only,
negative_sign);
// remove all the %+ in the string with '-'
- boost::algorithm::replace_all(format,
- duration_sign_always,
+ boost::algorithm::replace_all(format,
+ duration_sign_always,
negative_sign);
}
else { //duration is positive
// remove all the %- combos from the string
boost::algorithm::erase_all(format, duration_sign_negative_only);
// remove all the %+ in the string with '+'
- boost::algorithm::replace_all(format,
- duration_sign_always,
+ boost::algorithm::replace_all(format,
+ duration_sign_always,
positive_sign);
}
/*
- * It is possible for a time duration to span more then 24 hours.
- * Standard time_put::put is obliged to behave the same as strftime
- * (See ISO 14882-2003 22.2.5.3.1 par. 1) and strftime's behavior is
- * unspecified for the case when tm_hour field is outside 0-23 range
+ * It is possible for a time duration to span more then 24 hours.
+ * Standard time_put::put is obliged to behave the same as strftime
+ * (See ISO 14882-2003 22.2.5.3.1 par. 1) and strftime's behavior is
+ * unspecified for the case when tm_hour field is outside 0-23 range
* (See ISO 9899-1999 7.23.3.5 par. 3). So we must output %H and %O
* here ourself.
*/
@@ -452,16 +453,16 @@
string_type frac_str;
if (format.find(seconds_with_fractional_seconds_format) != string_type::npos) {
- // replace %s with %S.nnn
- frac_str =
+ // replace %s with %S.nnn
+ frac_str =
fractional_seconds_as_string(a_time_dur, false);
char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
-
+
string_type replace_string(seconds_format);
replace_string += sep;
replace_string += frac_str;
- boost::algorithm::replace_all(format,
- seconds_with_fractional_seconds_format,
+ boost::algorithm::replace_all(format,
+ seconds_with_fractional_seconds_format,
replace_string);
}
if (format.find(fractional_seconds_format) != string_type::npos) {
@@ -470,13 +471,13 @@
frac_str = fractional_seconds_as_string(a_time_dur, false);
}
boost::algorithm::replace_all(format,
- fractional_seconds_format,
+ fractional_seconds_format,
frac_str);
}
if (format.find(fractional_seconds_or_none_format) != string_type::npos) {
// replace %F with nnnnnnn or nothing if fs == 0
- frac_str =
+ frac_str =
fractional_seconds_as_string(a_time_dur, true);
if (frac_str.size()) {
char_type sep = std::use_facet<std::numpunct<char_type> >(a_ios.getloc()).decimal_point();
@@ -484,7 +485,7 @@
replace_string += sep;
replace_string += frac_str;
boost::algorithm::replace_all(format,
- fractional_seconds_or_none_format,
+ fractional_seconds_or_none_format,
replace_string);
}
else {
@@ -493,12 +494,12 @@
}
}
- return this->do_put_tm(a_next, a_ios, a_fill,
+ return this->do_put_tm(a_next, a_ios, a_fill,
to_tm(a_time_dur), format);
}
-
- OutItrT put(OutItrT next, std::ios_base& a_ios,
- char_type fill, const period_type& p) const
+
+ OutItrT put(OutItrT next, std::ios_base& a_ios,
+ char_type fill, const period_type& p) const
{
return this->m_period_formatter.put_period(next, a_ios, fill,p,*this);
}
@@ -506,12 +507,12 @@
protected:
- static
- string_type
+ static
+ string_type
fractional_seconds_as_string(const time_duration_type& a_time,
- bool null_when_zero)
+ bool null_when_zero)
{
- typename time_duration_type::fractional_seconds_type frac_sec =
+ typename time_duration_type::fractional_seconds_type frac_sec =
a_time.fractional_seconds();
if (null_when_zero && (frac_sec == 0)) {
@@ -538,7 +539,7 @@
{
std::basic_ostringstream<char_type> ss;
ss.imbue(std::locale::classic()); // don't want any formatting
- ss << std::setw(width)
+ ss << std::setw(width)
<< std::setfill(static_cast<char_type>('0'));
#if (defined(BOOST_MSVC) && (_MSC_VER < 1300))
// JDG [7/6/02 VC++ compatibility]
@@ -555,105 +556,105 @@
};
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
std::locale::id time_facet<time_type, CharT, OutItrT>::id;
- template <class time_type, class CharT, class OutItrT>
- const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::fractional_seconds_format = time_formats<CharT>::fractional_seconds_format;
- template <class time_type, class CharT, class OutItrT>
- const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::fractional_seconds_or_none_format = time_formats<CharT>::fractional_seconds_or_none_format;
- template <class time_type, class CharT, class OutItrT>
- const typename time_facet<time_type, CharT, OutItrT>::char_type*
- time_facet<time_type, CharT, OutItrT>::seconds_with_fractional_seconds_format =
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::seconds_with_fractional_seconds_format =
time_formats<CharT>::seconds_with_fractional_seconds_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::zone_name_format = time_formats<CharT>::zone_name_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::zone_abbrev_format = time_formats<CharT>::zone_abbrev_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::zone_iso_extended_format =time_formats<CharT>::zone_iso_extended_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::posix_zone_string_format =time_formats<CharT>::posix_zone_string_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::zone_iso_format = time_formats<CharT>::zone_iso_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::seconds_format = time_formats<CharT>::seconds_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::hours_format = time_formats<CharT>::hours_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::unrestricted_hours_format = time_formats<CharT>::unrestricted_hours_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::standard_format = time_formats<CharT>::standard_format;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::duration_seperator = time_formats<CharT>::duration_seperator;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::negative_sign = time_formats<CharT>::negative_sign;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::positive_sign = time_formats<CharT>::positive_sign;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::duration_sign_negative_only = time_formats<CharT>::duration_sign_negative_only;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::duration_sign_always = time_formats<CharT>::duration_sign_always;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type,CharT, OutItrT>::char_type*
time_facet<time_type,CharT, OutItrT>::iso_time_format_specifier = time_formats<CharT>::iso_time_format_specifier;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
time_facet<time_type, CharT, OutItrT>::iso_time_format_extended_specifier = time_formats<CharT>::iso_time_format_extended_specifier;
- template <class time_type, class CharT, class OutItrT>
+ template <class time_type, class CharT, class OutItrT>
const typename time_facet<time_type, CharT, OutItrT>::char_type*
- time_facet<time_type, CharT, OutItrT>::default_time_format =
+ time_facet<time_type, CharT, OutItrT>::default_time_format =
time_formats<CharT>::default_time_format;
- template <class time_type, class CharT, class OutItrT>
- const typename time_facet<time_type, CharT, OutItrT>::char_type*
- time_facet<time_type, CharT, OutItrT>::default_time_duration_format =
+ template <class time_type, class CharT, class OutItrT>
+ const typename time_facet<time_type, CharT, OutItrT>::char_type*
+ time_facet<time_type, CharT, OutItrT>::default_time_duration_format =
time_formats<CharT>::default_time_duration_format;
- //! Facet for format-based input.
+ //! Facet for format-based input.
/*!
*/
template <class time_type,
- class CharT,
+ class CharT,
class InItrT = std::istreambuf_iterator<CharT, std::char_traits<CharT> > >
- class time_input_facet :
+ class time_input_facet :
public boost::date_time::date_input_facet<typename time_type::date_type , CharT, InItrT> {
public:
typedef typename time_type::date_type date_type;
@@ -686,13 +687,13 @@
static const char_type* duration_seperator;
static const char_type* iso_time_format_specifier;
static const char_type* iso_time_format_extended_specifier;
- static const char_type* default_time_input_format;
+ static const char_type* default_time_input_format;
static const char_type* default_time_duration_format;
static std::locale::id id;
//! Constructor that takes a format string for a ptime
- explicit time_input_facet(const string_type& format, ::size_t a_ref = 0)
- : base_type(format, a_ref),
+ explicit time_input_facet(const string_type& format, ::size_t a_ref = 0)
+ : base_type(format, a_ref),
m_time_duration_format(default_time_duration_format)
{ }
@@ -707,16 +708,16 @@
sv_parser,
per_parser,
date_gen_parser,
- a_ref),
+ a_ref),
m_time_duration_format(default_time_duration_format)
{}
//! sets default formats for ptime, local_date_time, and time_duration
- explicit time_input_facet(::size_t a_ref = 0)
- : base_type(default_time_input_format, a_ref),
+ explicit time_input_facet(::size_t a_ref = 0)
+ : base_type(default_time_input_format, a_ref),
m_time_duration_format(default_time_duration_format)
{ }
-
+
//! Set the format for time_duration
void time_duration_format(const char_type* const format) {
m_time_duration_format = format;
@@ -729,47 +730,47 @@
{
this->m_format = iso_time_format_extended_specifier;
}
-
+
InItrT get(InItrT& sitr,
InItrT& stream_end,
std::ios_base& a_ios,
period_type& p) const
{
- p = this->m_period_parser.get_period(sitr,
- stream_end,
- a_ios,
- p,
- time_duration_type::unit(),
+ p = this->m_period_parser.get_period(sitr,
+ stream_end,
+ a_ios,
+ p,
+ time_duration_type::unit(),
*this);
return sitr;
}
-
+
//default ptime format is YYYY-Mon-DD HH:MM:SS[.fff...][ zzz]
//default time_duration format is %H:%M:%S%F HH:MM:SS[.fff...]
- InItrT get(InItrT& sitr,
- InItrT& stream_end,
- std::ios_base& a_ios,
+ InItrT get(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
time_duration_type& td) const
{
// skip leading whitespace
while((sitr != stream_end) && std::isspace(*sitr)) { ++sitr; }
-
+
bool use_current_char = false;
-
+
// num_get will consume the +/-, we may need a copy if special_value
char_type c = '\0';
if((sitr != stream_end) && (*sitr == '-' || *sitr == '+')) {
c = *sitr;
}
-
+
typedef typename time_duration_type::hour_type hour_type;
typedef typename time_duration_type::min_type min_type;
typedef typename time_duration_type::sec_type sec_type;
- hour_type hour = 0;
- min_type min = 0;
- sec_type sec = 0;
+ hour_type hour = 0;
+ min_type min = 0;
+ sec_type sec = 0;
typename time_duration_type::fractional_seconds_type frac(0);
typedef std::num_get<CharT, InItrT> num_get;
@@ -778,25 +779,25 @@
std::locale loc = std::locale(a_ios.getloc(), ng);
a_ios.imbue(loc);
}
-
+
const_itr itr(m_time_duration_format.begin());
while (itr != m_time_duration_format.end() && (sitr != stream_end)) {
if (*itr == '%') {
++itr;
if (*itr != '%') {
switch(*itr) {
- case 'O':
+ case 'O':
{
// A period may span more than 24 hours. In that case the format
// string should be composed with the unrestricted hours specifier.
- hour = var_string_to_int<hour_type, CharT>(sitr, stream_end,
+ hour = var_string_to_int<hour_type, CharT>(sitr, stream_end,
std::numeric_limits<hour_type>::digits10 + 1);
if(hour == -1){
return check_special_value(sitr, stream_end, td, c);
}
break;
}
- case 'H':
+ case 'H':
{
match_results mr;
hour = fixed_string_to_int<hour_type, CharT>(sitr, stream_end, mr, 2);
@@ -805,7 +806,7 @@
}
break;
}
- case 'M':
+ case 'M':
{
match_results mr;
min = fixed_string_to_int<min_type, CharT>(sitr, stream_end, mr, 2);
@@ -815,7 +816,7 @@
break;
}
case 's':
- case 'S':
+ case 'S':
{
match_results mr;
sec = fixed_string_to_int<sec_type, CharT>(sitr, stream_end, mr, 2);
@@ -832,7 +833,7 @@
if(*sitr == '.') {
++sitr;
parse_frac_type(sitr, stream_end, frac);
- // sitr will point to next expected char after this parsing
+ // sitr will point to next expected char after this parsing
// is complete so no need to advance it
use_current_char = true;
}
@@ -841,13 +842,13 @@
}
break;
}
- case 'F':
+ case 'F':
{
// check for decimal, skip if missing
if(*sitr == '.') {
++sitr;
parse_frac_type(sitr, stream_end, frac);
- // sitr will point to next expected char after this parsing
+ // sitr will point to next expected char after this parsing
// is complete so no need to advance it
use_current_char = true;
}
@@ -864,12 +865,12 @@
else { // itr == '%', second consecutive
++sitr;
}
-
+
++itr; //advance past format specifier
}
else { //skip past chars in format and in buffer
++itr;
- // set use_current_char when sitr is already
+ // set use_current_char when sitr is already
// pointing at the next character to process
if (use_current_char) {
use_current_char = false;
@@ -883,21 +884,21 @@
td = time_duration_type(hour, min, sec, frac);
return sitr;
}
-
+
//! Parses a time object from the input stream
- InItrT get(InItrT& sitr,
- InItrT& stream_end,
- std::ios_base& a_ios,
+ InItrT get(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
time_type& t) const
{
string_type tz_str;
return get(sitr, stream_end, a_ios, t, tz_str, false);
}
//! Expects a time_zone in the input stream
- InItrT get_local_time(InItrT& sitr,
- InItrT& stream_end,
- std::ios_base& a_ios,
+ InItrT get_local_time(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
time_type& t,
string_type& tz_str) const
{
@@ -906,19 +907,19 @@
protected:
- InItrT get(InItrT& sitr,
- InItrT& stream_end,
- std::ios_base& a_ios,
+ InItrT get(InItrT& sitr,
+ InItrT& stream_end,
+ std::ios_base& a_ios,
time_type& t,
string_type& tz_str,
bool time_is_local) const
{
// skip leading whitespace
while((sitr != stream_end) && std::isspace(*sitr)) { ++sitr; }
-
+
bool use_current_char = false;
bool use_current_format_char = false; // used whith two character flags
-
+
// num_get will consume the +/-, we may need a copy if special_value
char_type c = '\0';
if((sitr != stream_end) && (*sitr == '-' || *sitr == '+')) {
@@ -930,27 +931,27 @@
typedef typename time_duration_type::sec_type sec_type;
// time elements
- hour_type hour = 0;
- min_type min = 0;
- sec_type sec = 0;
+ hour_type hour = 0;
+ min_type min = 0;
+ sec_type sec = 0;
typename time_duration_type::fractional_seconds_type frac(0);
// date elements
short day_of_year(0);
- /* Initialized the following to their minimum values. These intermediate
- * objects are used so we get specific exceptions when part of the input
- * is unparsable.
+ /* Initialized the following to their minimum values. These intermediate
+ * objects are used so we get specific exceptions when part of the input
+ * is unparsable.
* Ex: "205-Jan-15" will throw a bad_year, "2005-Jsn-15"- bad_month, etc.*/
year_type t_year(1400);
month_type t_month(1);
day_type t_day(1);
-
+
typedef std::num_get<CharT, InItrT> num_get;
if(!std::has_facet<num_get>(a_ios.getloc())) {
num_get* ng = new num_get();
std::locale loc = std::locale(a_ios.getloc(), ng);
a_ios.imbue(loc);
}
-
+
const_itr itr(this->m_format.begin());
while (itr != this->m_format.end() && (sitr != stream_end)) {
if (*itr == '%') {
@@ -1065,7 +1066,7 @@
break;
}
// time flags
- case 'H':
+ case 'H':
{
match_results mr;
hour = fixed_string_to_int<hour_type, CharT>(sitr, stream_end, mr, 2);
@@ -1074,7 +1075,7 @@
}
break;
}
- case 'M':
+ case 'M':
{
match_results mr;
min = fixed_string_to_int<min_type, CharT>(sitr, stream_end, mr, 2);
@@ -1084,7 +1085,7 @@
break;
}
case 's':
- case 'S':
+ case 'S':
{
match_results mr;
sec = fixed_string_to_int<sec_type, CharT>(sitr, stream_end, mr, 2);
@@ -1101,7 +1102,7 @@
if(*sitr == '.') {
++sitr;
parse_frac_type(sitr, stream_end, frac);
- // sitr will point to next expected char after this parsing
+ // sitr will point to next expected char after this parsing
// is complete so no need to advance it
use_current_char = true;
}
@@ -1110,13 +1111,13 @@
}
break;
}
- case 'F':
+ case 'F':
{
// check for decimal, skip if missing
if(*sitr == '.') {
++sitr;
parse_frac_type(sitr, stream_end, frac);
- // sitr will point to next expected char after this parsing
+ // sitr will point to next expected char after this parsing
// is complete so no need to advance it
use_current_char = true;
}
@@ -1146,34 +1147,34 @@
else {
use_current_format_char = true;
}
-
+
}
else {
// nothing was parsed so we don't want to advance sitr
use_current_char = true;
}
-
+
break;
}
default:
{} // ignore what we don't understand?
}// switch
- }
+ }
else { // itr == '%', second consecutive
++sitr;
}
-
+
if(use_current_format_char) {
use_current_format_char = false;
}
else {
++itr; //advance past format specifier
}
-
+
}
else { //skip past chars in format and in buffer
++itr;
- // set use_current_char when sitr is already
+ // set use_current_char when sitr is already
// pointing at the next character to process
if (use_current_char) {
use_current_char = false;
@@ -1183,7 +1184,7 @@
}
}
}
-
+
date_type d(not_a_date_time);
if (day_of_year > 0) {
d = date_type(static_cast<unsigned short>(t_year-1),12,31) + date_duration_type(day_of_year);
@@ -1198,8 +1199,8 @@
}
//! Helper function to check for special_value
- /*! First character may have been consumed during original parse
- * attempt. Parameter 'c' should be a copy of that character.
+ /*! First character may have been consumed during original parse
+ * attempt. Parameter 'c' should be a copy of that character.
* Throws ios_base::failure if parse fails. */
template<class temporal_type>
inline
@@ -1215,13 +1216,13 @@
boost::throw_exception(std::ios_base::failure("Parse failed. No match found for '" + tmp + "'"));
BOOST_DATE_TIME_UNREACHABLE_EXPRESSION(return sitr); // should never reach
}
- tt = temporal_type(static_cast<special_values>(mr.current_match));
+ tt = temporal_type(static_cast<special_values>(mr.current_match));
return sitr;
}
//! Helper function for parsing a fractional second type from the stream
- void parse_frac_type(InItrT& sitr,
- InItrT& stream_end,
+ void parse_frac_type(InItrT& sitr,
+ InItrT& stream_end,
fracional_seconds_type& frac) const
{
string_type cache;
@@ -1242,7 +1243,7 @@
}
}
}
-
+
private:
string_type m_time_duration_format;
@@ -1263,60 +1264,60 @@
template <class time_type, class CharT, class InItrT>
std::locale::id time_input_facet<time_type, CharT, InItrT>::id;
-template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::fractional_seconds_format = time_formats<CharT>::fractional_seconds_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::fractional_seconds_or_none_format = time_formats<CharT>::fractional_seconds_or_none_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::seconds_with_fractional_seconds_format = time_formats<CharT>::seconds_with_fractional_seconds_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::seconds_format = time_formats<CharT>::seconds_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::standard_format = time_formats<CharT>::standard_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::zone_abbrev_format = time_formats<CharT>::zone_abbrev_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::zone_name_format = time_formats<CharT>::zone_name_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::zone_iso_format = time_formats<CharT>::zone_iso_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::zone_iso_extended_format = time_formats<CharT>::zone_iso_extended_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::duration_seperator = time_formats<CharT>::duration_seperator;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::iso_time_format_specifier = time_formats<CharT>::iso_time_format_specifier;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::iso_time_format_extended_specifier = time_formats<CharT>::iso_time_format_extended_specifier;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::default_time_input_format = time_formats<CharT>::default_time_input_format;
- template <class time_type, class CharT, class InItrT>
- const typename time_input_facet<time_type, CharT, InItrT>::char_type*
+ template <class time_type, class CharT, class InItrT>
+ const typename time_input_facet<time_type, CharT, InItrT>::char_type*
time_input_facet<time_type, CharT, InItrT>::default_time_duration_format = time_formats<CharT>::default_time_duration_format;
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk