diff options
| -rw-r--r-- | p2pvr/ice/commonHelpers.cpp | 32 | ||||
| -rw-r--r-- | p2pvr/ice/commonHelpers.h | 28 | 
2 files changed, 38 insertions, 22 deletions
| diff --git a/p2pvr/ice/commonHelpers.cpp b/p2pvr/ice/commonHelpers.cpp index 81d6b2a..8f5519a 100644 --- a/p2pvr/ice/commonHelpers.cpp +++ b/p2pvr/ice/commonHelpers.cpp @@ -1,7 +1,39 @@  #include "commonHelpers.h" +#include <iomanip>  #include <boost/numeric/conversion/cast.hpp> +#include <compileTimeFormatter.h> + +namespace AdHoc { +	template<const char * const & S, int start, typename stream, char size, char pad, char ... sn> +	struct StreamWriter<S, start, stream, '%', size, pad, sn...> : +			public StreamWriterBase<S, start, BOOST_PP_VARIADIC_SIZE(C) + 1, stream, sn...> { +		template<typename P, typename ... Pn> +		static void write(stream & s, const P & p, const Pn & ... pn) +		{ +			s << std::setw(size) << std::setfill(pad) << p; +			StreamWriter::next(s, pn...); +		} +	}; +}  namespace Common { +	AdHocFormatter(DateTimeFormat, "%\x40p-%\x20p-%\x20pT%\x20p:%\x20p"); +	std::ostream & +	operator<<(std::ostream & o, const Common::DateTime & dt) +	{ +		return DateTimeFormat::write(o, dt.Year, dt.Month, dt.Day, dt.Hour, dt.Minute); +	} + +	std::ostream & +	operator<<(std::ostream & o, const Common::Duration & d) +	{ +		if (d.Hours) { +			o << d.Hours << "hrs "; +		} +		o << d.Minutes << "min"; +		return o; +	} +  	boost::posix_time::ptime operator*(const Common::DateTime & dt)  	{  		return boost::posix_time::ptime( diff --git a/p2pvr/ice/commonHelpers.h b/p2pvr/ice/commonHelpers.h index 67e861c..fb7826d 100644 --- a/p2pvr/ice/commonHelpers.h +++ b/p2pvr/ice/commonHelpers.h @@ -3,33 +3,17 @@  #include <common.h>  #include <ostream> -#include <iomanip>  #include <boost/date_time/posix_time/posix_time_types.hpp>  #include <visibility.h>  namespace Common { -	template<typename C, typename T> -	std::basic_ostream<C, T> & -	operator<<(std::basic_ostream<C, T> & o, const Common::DateTime & dt) -	{ -		o << std::setw(4) << std::setfill('0') << dt.Year -			<< "-" << std::setw(2) << std::setfill('0') << dt.Month -			<< "-" << std::setw(2) << std::setfill('0') << dt.Day -			<< "T" << std::setw(2) << std::setfill('0') << dt.Hour -			<< ":" << std::setw(2) << std::setfill('0') << dt.Minute; -		return o; -	} +	DLL_PUBLIC +	std::ostream & +	operator<<(std::ostream & o, const Common::DateTime & dt); -	template<typename C, typename T> -	std::basic_ostream<C, T> & -	operator<<(std::basic_ostream<C, T> & o, const Common::Duration & d) -	{ -		if (d.Hours) { -			o << d.Hours << "hrs "; -		} -		o << d.Minutes << "min"; -		return o; -	} +	DLL_PUBLIC +	std::ostream & +	operator<<(std::ostream & o, const Common::Duration & d);  	DLL_PUBLIC boost::posix_time::ptime operator*(const Common::DateTime &);  	DLL_PUBLIC boost::posix_time::time_duration operator*(const Common::Duration &); | 
