You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1076 lines
24 KiB
1076 lines
24 KiB
// ratio_io |
|
// |
|
// (C) Copyright Howard Hinnant |
|
// (C) Copyright 2010 Vicente J. Botet Escriba |
|
// Use, modification and distribution are subject to the Boost Software License, |
|
// Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at |
|
// http://www.boost.org/LICENSE_1_0.txt). |
|
// |
|
// This code was adapted by Vicente from Howard Hinnant's experimental work |
|
// on chrono i/o under lvm/libc++ to Boost |
|
|
|
#ifndef BOOST_RATIO_RATIO_IO_HPP |
|
#define BOOST_RATIO_RATIO_IO_HPP |
|
|
|
/* |
|
|
|
ratio_io synopsis |
|
|
|
#include <ratio> |
|
#include <string> |
|
|
|
namespace boost |
|
{ |
|
|
|
template <class Ratio, class CharT> |
|
struct ratio_string |
|
{ |
|
static basic_string<CharT> prefix(); |
|
static basic_string<CharT> symbol(); |
|
}; |
|
|
|
} // boost |
|
|
|
*/ |
|
#include <boost/ratio/config.hpp> |
|
|
|
#ifdef BOOST_RATIO_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 |
|
#include <boost/ratio/detail/ratio_io.hpp> |
|
#else |
|
|
|
#include <boost/config.hpp> |
|
#include <boost/ratio/ratio.hpp> |
|
#include <boost/type_traits/integral_constant.hpp> |
|
#include <string> |
|
#include <sstream> |
|
|
|
|
|
#if defined(BOOST_NO_CXX11_UNICODE_LITERALS) || defined(BOOST_NO_CXX11_CHAR16_T) || defined(BOOST_NO_CXX11_CHAR32_T) || defined(BOOST_NO_CXX11_U16STRING) || defined(BOOST_NO_CXX11_U32STRING) |
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
#undef BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
#endif |
|
#else |
|
#define BOOST_RATIO_HAS_UNICODE_SUPPORT 1 |
|
#endif |
|
|
|
namespace boost { |
|
|
|
//template <class Ratio> |
|
//struct ratio_string_is_localizable : false_type {}; |
|
//template <class Ratio> |
|
//struct ratio_string_id : integral_constant<int,0> {}; |
|
|
|
template <class Ratio, class CharT> |
|
struct ratio_string |
|
{ |
|
static std::basic_string<CharT> symbol() {return prefix();} |
|
static std::basic_string<CharT> prefix(); |
|
}; |
|
|
|
template <class Ratio, class CharT> |
|
std::basic_string<CharT> |
|
ratio_string<Ratio, CharT>::prefix() |
|
{ |
|
std::basic_ostringstream<CharT> os; |
|
os << CharT('[') << Ratio::num << CharT('/') |
|
<< Ratio::den << CharT(']'); |
|
return os.str(); |
|
} |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
namespace ratio_detail { |
|
template <class Ratio, class CharT> |
|
struct ratio_string_static |
|
{ |
|
static std::string symbol() { |
|
return std::basic_string<CharT>( |
|
static_string::c_str< |
|
typename ratio_static_string<Ratio, CharT>::symbol |
|
>::value); |
|
} |
|
static std::string prefix() { |
|
return std::basic_string<CharT>( |
|
static_string::c_str< |
|
typename ratio_static_string<Ratio, CharT>::prefix |
|
>::value); |
|
} |
|
}; |
|
} |
|
#endif |
|
// atto |
|
//template <> |
|
//struct ratio_string_is_localizable<atto> : true_type {}; |
|
// |
|
//template <> |
|
//struct ratio_string_id<atto> : integral_constant<int,-18> {}; |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<atto, CharT> : |
|
ratio_detail::ratio_string_static<atto,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<atto, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'a');} |
|
static std::string prefix() {return std::string("atto");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<atto, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'a');} |
|
static std::u16string prefix() {return std::u16string(u"atto");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<atto, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'a');} |
|
static std::u32string prefix() {return std::u32string(U"atto");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<atto, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'a');} |
|
static std::wstring prefix() {return std::wstring(L"atto");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// femto |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<femto, CharT> : |
|
ratio_detail::ratio_string_static<femto,CharT> |
|
{}; |
|
|
|
#else |
|
|
|
template <> |
|
struct ratio_string<femto, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'f');} |
|
static std::string prefix() {return std::string("femto");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<femto, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'f');} |
|
static std::u16string prefix() {return std::u16string(u"femto");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<femto, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'f');} |
|
static std::u32string prefix() {return std::u32string(U"femto");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<femto, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'f');} |
|
static std::wstring prefix() {return std::wstring(L"femto");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// pico |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<pico, CharT> : |
|
ratio_detail::ratio_string_static<pico,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<pico, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'p');} |
|
static std::string prefix() {return std::string("pico");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<pico, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'p');} |
|
static std::u16string prefix() {return std::u16string(u"pico");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<pico, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'p');} |
|
static std::u32string prefix() {return std::u32string(U"pico");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<pico, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'p');} |
|
static std::wstring prefix() {return std::wstring(L"pico");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// nano |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<nano, CharT> : |
|
ratio_detail::ratio_string_static<nano,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<nano, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'n');} |
|
static std::string prefix() {return std::string("nano");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<nano, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'n');} |
|
static std::u16string prefix() {return std::u16string(u"nano");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<nano, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'n');} |
|
static std::u32string prefix() {return std::u32string(U"nano");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<nano, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'n');} |
|
static std::wstring prefix() {return std::wstring(L"nano");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// micro |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<micro, CharT> : |
|
ratio_detail::ratio_string_static<micro,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<micro, char> |
|
{ |
|
static std::string symbol() {return std::string("\xC2\xB5");} |
|
static std::string prefix() {return std::string("micro");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<micro, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'\xB5');} |
|
static std::u16string prefix() {return std::u16string(u"micro");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<micro, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'\xB5');} |
|
static std::u32string prefix() {return std::u32string(U"micro");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<micro, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'\xB5');} |
|
static std::wstring prefix() {return std::wstring(L"micro");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// milli |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<milli, CharT> : |
|
ratio_detail::ratio_string_static<milli,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<milli, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'm');} |
|
static std::string prefix() {return std::string("milli");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<milli, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'm');} |
|
static std::u16string prefix() {return std::u16string(u"milli");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<milli, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'm');} |
|
static std::u32string prefix() {return std::u32string(U"milli");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<milli, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'm');} |
|
static std::wstring prefix() {return std::wstring(L"milli");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// centi |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<centi, CharT> : |
|
ratio_detail::ratio_string_static<centi,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<centi, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'c');} |
|
static std::string prefix() {return std::string("centi");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<centi, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'c');} |
|
static std::u16string prefix() {return std::u16string(u"centi");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<centi, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'c');} |
|
static std::u32string prefix() {return std::u32string(U"centi");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<centi, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'c');} |
|
static std::wstring prefix() {return std::wstring(L"centi");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// deci |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<deci, CharT> : |
|
ratio_detail::ratio_string_static<deci,CharT> |
|
{}; |
|
|
|
#else |
|
|
|
template <> |
|
struct ratio_string<deci, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'd');} |
|
static std::string prefix() {return std::string("deci");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<deci, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'd');} |
|
static std::u16string prefix() {return std::u16string(u"deci");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<deci, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'd');} |
|
static std::u32string prefix() {return std::u32string(U"deci");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<deci, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'd');} |
|
static std::wstring prefix() {return std::wstring(L"deci");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// unit |
|
|
|
// deca |
|
|
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<deca, CharT> : |
|
ratio_detail::ratio_string_static<deca,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<deca, char> |
|
{ |
|
static std::string symbol() {return std::string("da");} |
|
static std::string prefix() {return std::string("deca");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<deca, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(u"da");} |
|
static std::u16string prefix() {return std::u16string(u"deca");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<deca, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(U"da");} |
|
static std::u32string prefix() {return std::u32string(U"deca");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<deca, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(L"da");} |
|
static std::wstring prefix() {return std::wstring(L"deca");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// hecto |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<hecto, CharT> : |
|
ratio_detail::ratio_string_static<hecto,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<hecto, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'h');} |
|
static std::string prefix() {return std::string("hecto");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<hecto, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'h');} |
|
static std::u16string prefix() {return std::u16string(u"hecto");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<hecto, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'h');} |
|
static std::u32string prefix() {return std::u32string(U"hecto");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<hecto, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'h');} |
|
static std::wstring prefix() {return std::wstring(L"hecto");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// kilo |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<kilo, CharT> : |
|
ratio_detail::ratio_string_static<kilo,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<kilo, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'k');} |
|
static std::string prefix() {return std::string("kilo");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<kilo, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'k');} |
|
static std::u16string prefix() {return std::u16string(u"kilo");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<kilo, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'k');} |
|
static std::u32string prefix() {return std::u32string(U"kilo");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<kilo, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'k');} |
|
static std::wstring prefix() {return std::wstring(L"kilo");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// mega |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<mega, CharT> : |
|
ratio_detail::ratio_string_static<mega,CharT> |
|
{}; |
|
|
|
#else |
|
|
|
template <> |
|
struct ratio_string<mega, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'M');} |
|
static std::string prefix() {return std::string("mega");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<mega, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'M');} |
|
static std::u16string prefix() {return std::u16string(u"mega");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<mega, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'M');} |
|
static std::u32string prefix() {return std::u32string(U"mega");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<mega, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'M');} |
|
static std::wstring prefix() {return std::wstring(L"mega");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// giga |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<giga, CharT> : |
|
ratio_detail::ratio_string_static<giga,CharT> |
|
{}; |
|
|
|
#else |
|
|
|
template <> |
|
struct ratio_string<giga, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'G');} |
|
static std::string prefix() {return std::string("giga");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<giga, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'G');} |
|
static std::u16string prefix() {return std::u16string(u"giga");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<giga, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'G');} |
|
static std::u32string prefix() {return std::u32string(U"giga");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<giga, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'G');} |
|
static std::wstring prefix() {return std::wstring(L"giga");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// tera |
|
|
|
//template <> |
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<tera, CharT> : |
|
ratio_detail::ratio_string_static<tera,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<tera, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'T');} |
|
static std::string prefix() {return std::string("tera");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<tera, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'T');} |
|
static std::u16string prefix() {return std::u16string(u"tera");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<tera, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'T');} |
|
static std::u32string prefix() {return std::u32string(U"tera");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<tera, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'T');} |
|
static std::wstring prefix() {return std::wstring(L"tera");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// peta |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<peta, CharT> : |
|
ratio_detail::ratio_string_static<peta,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<peta, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'P');} |
|
static std::string prefix() {return std::string("peta");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<peta, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'P');} |
|
static std::u16string prefix() {return std::u16string(u"peta");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<peta, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'P');} |
|
static std::u32string prefix() {return std::u32string(U"peta");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<peta, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'P');} |
|
static std::wstring prefix() {return std::wstring(L"peta");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
// exa |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<exa, CharT> : |
|
ratio_detail::ratio_string_static<exa,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<exa, char> |
|
{ |
|
static std::string symbol() {return std::string(1, 'E');} |
|
static std::string prefix() {return std::string("exa");} |
|
}; |
|
|
|
#if defined BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<exa, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(1, u'E');} |
|
static std::u16string prefix() {return std::u16string(u"exa");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<exa, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(1, U'E');} |
|
static std::u32string prefix() {return std::u32string(U"exa");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<exa, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(1, L'E');} |
|
static std::wstring prefix() {return std::wstring(L"exa");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
|
|
#ifdef BOOST_RATIO_EXTENSIONS |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<kibi, CharT> : |
|
ratio_detail::ratio_string_static<kibi,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<kibi, char> |
|
{ |
|
static std::string symbol() {return std::string("Ki");} |
|
static std::string prefix() {return std::string("kibi");} |
|
}; |
|
|
|
#if BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<kibi, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(u"Ki");} |
|
static std::u16string prefix() {return std::u16string(u"kibi");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<kibi, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(U"Ki");} |
|
static std::u32string prefix() {return std::u32string(U"kibi");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<kibi, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(L"Ki");} |
|
static std::wstring prefix() {return std::wstring(L"kibi");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<mebi, CharT> : |
|
ratio_detail::ratio_string_static<mebi,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<mebi, char> |
|
{ |
|
static std::string symbol() {return std::string("Mi");} |
|
static std::string prefix() {return std::string("mebi");} |
|
}; |
|
|
|
#if BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<mebi, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(u"Mi");} |
|
static std::u16string prefix() {return std::u16string(u"mebi");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<mebi, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(U"Mi");} |
|
static std::u32string prefix() {return std::u32string(U"mebi");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<mebi, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(L"Mi");} |
|
static std::wstring prefix() {return std::wstring(L"mebi");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<gibi, CharT> : |
|
ratio_detail::ratio_string_static<gibi,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<gibi, char> |
|
{ |
|
static std::string symbol() {return std::string("Gi");} |
|
static std::string prefix() {return std::string("gibi");} |
|
}; |
|
|
|
#if BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<gibi, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(u"Gi");} |
|
static std::u16string prefix() {return std::u16string(u"gibi");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<gibi, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(U"Gi");} |
|
static std::u32string prefix() {return std::u32string(U"gibi");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<gibi, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(L"Gi");} |
|
static std::wstring prefix() {return std::wstring(L"gibi");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<tebi, CharT> : |
|
ratio_detail::ratio_string_static<tebi,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<tebi, char> |
|
{ |
|
static std::string symbol() {return std::string("Ti");} |
|
static std::string prefix() {return std::string("tebi");} |
|
}; |
|
|
|
#if BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<tebi, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(u"Ti");} |
|
static std::u16string prefix() {return std::u16string(u"tebi");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<tebi, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(U"Ti");} |
|
static std::u32string prefix() {return std::u32string(U"tebi");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<tebi, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(L"Ti");} |
|
static std::wstring prefix() {return std::wstring(L"tebi");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<pebi, CharT> : |
|
ratio_detail::ratio_string_static<pebi,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<pebi, char> |
|
{ |
|
static std::string symbol() {return std::string("Pi");} |
|
static std::string prefix() {return std::string("pebi");} |
|
}; |
|
|
|
#if BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<pebi, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(u"Pi");} |
|
static std::u16string prefix() {return std::u16string(u"pebi");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<pebi, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(U"Pi");} |
|
static std::u32string prefix() {return std::u32string(U"pebi");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<pebi, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(L"Pi");} |
|
static std::wstring prefix() {return std::wstring(L"pebi");} |
|
}; |
|
#endif |
|
#endif |
|
|
|
#ifdef BOOST_RATIO_HAS_STATIC_STRING |
|
template <typename CharT> |
|
struct ratio_string<exbi, CharT> : |
|
ratio_detail::ratio_string_static<exbi,CharT> |
|
{}; |
|
|
|
#else |
|
template <> |
|
struct ratio_string<exbi, char> |
|
{ |
|
static std::string symbol() {return std::string("Ei");} |
|
static std::string prefix() {return std::string("exbi");} |
|
}; |
|
|
|
#if BOOST_RATIO_HAS_UNICODE_SUPPORT |
|
|
|
template <> |
|
struct ratio_string<exbi, char16_t> |
|
{ |
|
static std::u16string symbol() {return std::u16string(u"Ei");} |
|
static std::u16string prefix() {return std::u16string(u"exbi");} |
|
}; |
|
|
|
template <> |
|
struct ratio_string<exbi, char32_t> |
|
{ |
|
static std::u32string symbol() {return std::u32string(U"Ei");} |
|
static std::u32string prefix() {return std::u32string(U"exbi");} |
|
}; |
|
|
|
#endif |
|
|
|
#ifndef BOOST_NO_STD_WSTRING |
|
template <> |
|
struct ratio_string<exbi, wchar_t> |
|
{ |
|
static std::wstring symbol() {return std::wstring(L"Ei");} |
|
static std::wstring prefix() {return std::wstring(L"exbi");} |
|
}; |
|
#endif |
|
#endif |
|
#endif |
|
|
|
} |
|
|
|
#endif // BOOST_RATIO_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 |
|
#endif // BOOST_RATIO_RATIO_IO_HPP
|
|
|