Chris@16: // ratio_io Chris@16: // Chris@16: // (C) Copyright Howard Hinnant Chris@16: // (C) Copyright 2010 Vicente J. Botet Escriba Chris@16: // Use, modification and distribution are subject to the Boost Software License, Chris@16: // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt). Chris@16: // Chris@16: // This code was adapted by Vicente from Howard Hinnant's experimental work Chris@16: // on chrono i/o under lvm/libc++ to Boost Chris@16: Chris@16: #ifndef BOOST_RATIO_RATIO_IO_HPP Chris@16: #define BOOST_RATIO_RATIO_IO_HPP Chris@16: Chris@16: /* Chris@16: Chris@16: ratio_io synopsis Chris@16: Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost Chris@16: { Chris@16: Chris@16: template Chris@16: struct ratio_string Chris@16: { Chris@16: static basic_string prefix(); Chris@16: static basic_string symbol(); Chris@16: }; Chris@16: Chris@16: } // boost Chris@16: Chris@16: */ Chris@16: #include Chris@16: Chris@16: #ifdef BOOST_RATIO_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 Chris@16: #include Chris@16: #else Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: Chris@16: #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) Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: #undef BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: #endif Chris@16: #else Chris@16: #define BOOST_RATIO_HAS_UNICODE_SUPPORT 1 Chris@16: #endif Chris@16: Chris@16: namespace boost { Chris@16: Chris@16: //template Chris@16: //struct ratio_string_is_localizable : false_type {}; Chris@16: //template Chris@16: //struct ratio_string_id : integral_constant {}; Chris@16: Chris@16: template Chris@16: struct ratio_string Chris@16: { Chris@16: static std::basic_string symbol() {return prefix();} Chris@16: static std::basic_string prefix(); Chris@16: }; Chris@16: Chris@16: template Chris@16: std::basic_string Chris@16: ratio_string::prefix() Chris@16: { Chris@16: std::basic_ostringstream os; Chris@16: os << CharT('[') << Ratio::num << CharT('/') Chris@16: << Ratio::den << CharT(']'); Chris@16: return os.str(); Chris@16: } Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: namespace ratio_detail { Chris@16: template Chris@16: struct ratio_string_static Chris@16: { Chris@16: static std::string symbol() { Chris@16: return std::basic_string( Chris@16: static_string::c_str< Chris@16: typename ratio_static_string::symbol Chris@16: >::value); Chris@16: } Chris@16: static std::string prefix() { Chris@16: return std::basic_string( Chris@16: static_string::c_str< Chris@16: typename ratio_static_string::prefix Chris@16: >::value); Chris@16: } Chris@16: }; Chris@16: } Chris@16: #endif Chris@16: // atto Chris@16: //template <> Chris@16: //struct ratio_string_is_localizable : true_type {}; Chris@16: // Chris@16: //template <> Chris@16: //struct ratio_string_id : integral_constant {}; Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'a');} Chris@16: static std::string prefix() {return std::string("atto");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'a');} Chris@16: static std::u16string prefix() {return std::u16string(u"atto");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'a');} Chris@16: static std::u32string prefix() {return std::u32string(U"atto");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'a');} Chris@16: static std::wstring prefix() {return std::wstring(L"atto");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // femto Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'f');} Chris@16: static std::string prefix() {return std::string("femto");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'f');} Chris@16: static std::u16string prefix() {return std::u16string(u"femto");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'f');} Chris@16: static std::u32string prefix() {return std::u32string(U"femto");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'f');} Chris@16: static std::wstring prefix() {return std::wstring(L"femto");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // pico Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'p');} Chris@16: static std::string prefix() {return std::string("pico");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'p');} Chris@16: static std::u16string prefix() {return std::u16string(u"pico");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'p');} Chris@16: static std::u32string prefix() {return std::u32string(U"pico");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'p');} Chris@16: static std::wstring prefix() {return std::wstring(L"pico");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // nano Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'n');} Chris@16: static std::string prefix() {return std::string("nano");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'n');} Chris@16: static std::u16string prefix() {return std::u16string(u"nano");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'n');} Chris@16: static std::u32string prefix() {return std::u32string(U"nano");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'n');} Chris@16: static std::wstring prefix() {return std::wstring(L"nano");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // micro Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string("\xC2\xB5");} Chris@16: static std::string prefix() {return std::string("micro");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'\xB5');} Chris@16: static std::u16string prefix() {return std::u16string(u"micro");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'\xB5');} Chris@16: static std::u32string prefix() {return std::u32string(U"micro");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'\xB5');} Chris@16: static std::wstring prefix() {return std::wstring(L"micro");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // milli Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'm');} Chris@16: static std::string prefix() {return std::string("milli");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'm');} Chris@16: static std::u16string prefix() {return std::u16string(u"milli");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'm');} Chris@16: static std::u32string prefix() {return std::u32string(U"milli");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'm');} Chris@16: static std::wstring prefix() {return std::wstring(L"milli");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // centi Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'c');} Chris@16: static std::string prefix() {return std::string("centi");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'c');} Chris@16: static std::u16string prefix() {return std::u16string(u"centi");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'c');} Chris@16: static std::u32string prefix() {return std::u32string(U"centi");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'c');} Chris@16: static std::wstring prefix() {return std::wstring(L"centi");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // deci Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'd');} Chris@16: static std::string prefix() {return std::string("deci");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'd');} Chris@16: static std::u16string prefix() {return std::u16string(u"deci");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'd');} Chris@16: static std::u32string prefix() {return std::u32string(U"deci");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'd');} Chris@16: static std::wstring prefix() {return std::wstring(L"deci");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // unit Chris@16: Chris@16: // deca Chris@16: Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string("da");} Chris@16: static std::string prefix() {return std::string("deca");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(u"da");} Chris@16: static std::u16string prefix() {return std::u16string(u"deca");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(U"da");} Chris@16: static std::u32string prefix() {return std::u32string(U"deca");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(L"da");} Chris@16: static std::wstring prefix() {return std::wstring(L"deca");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // hecto Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'h');} Chris@16: static std::string prefix() {return std::string("hecto");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'h');} Chris@16: static std::u16string prefix() {return std::u16string(u"hecto");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'h');} Chris@16: static std::u32string prefix() {return std::u32string(U"hecto");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'h');} Chris@16: static std::wstring prefix() {return std::wstring(L"hecto");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // kilo Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'k');} Chris@16: static std::string prefix() {return std::string("kilo");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'k');} Chris@16: static std::u16string prefix() {return std::u16string(u"kilo");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'k');} Chris@16: static std::u32string prefix() {return std::u32string(U"kilo");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'k');} Chris@16: static std::wstring prefix() {return std::wstring(L"kilo");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // mega Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'M');} Chris@16: static std::string prefix() {return std::string("mega");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'M');} Chris@16: static std::u16string prefix() {return std::u16string(u"mega");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'M');} Chris@16: static std::u32string prefix() {return std::u32string(U"mega");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'M');} Chris@16: static std::wstring prefix() {return std::wstring(L"mega");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // giga Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'G');} Chris@16: static std::string prefix() {return std::string("giga");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'G');} Chris@16: static std::u16string prefix() {return std::u16string(u"giga");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'G');} Chris@16: static std::u32string prefix() {return std::u32string(U"giga");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'G');} Chris@16: static std::wstring prefix() {return std::wstring(L"giga");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // tera Chris@16: Chris@16: //template <> Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'T');} Chris@16: static std::string prefix() {return std::string("tera");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'T');} Chris@16: static std::u16string prefix() {return std::u16string(u"tera");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'T');} Chris@16: static std::u32string prefix() {return std::u32string(U"tera");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'T');} Chris@16: static std::wstring prefix() {return std::wstring(L"tera");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // peta Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'P');} Chris@16: static std::string prefix() {return std::string("peta");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'P');} Chris@16: static std::u16string prefix() {return std::u16string(u"peta");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'P');} Chris@16: static std::u32string prefix() {return std::u32string(U"peta");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'P');} Chris@16: static std::wstring prefix() {return std::wstring(L"peta");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@16: // exa Chris@16: Chris@16: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@16: template Chris@16: struct ratio_string : Chris@16: ratio_detail::ratio_string_static Chris@16: {}; Chris@16: Chris@16: #else Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::string symbol() {return std::string(1, 'E');} Chris@16: static std::string prefix() {return std::string("exa");} Chris@16: }; Chris@16: Chris@16: #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u16string symbol() {return std::u16string(1, u'E');} Chris@16: static std::u16string prefix() {return std::u16string(u"exa");} Chris@16: }; Chris@16: Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::u32string symbol() {return std::u32string(1, U'E');} Chris@16: static std::u32string prefix() {return std::u32string(U"exa");} Chris@16: }; Chris@16: Chris@16: #endif Chris@16: Chris@16: #ifndef BOOST_NO_STD_WSTRING Chris@16: template <> Chris@16: struct ratio_string Chris@16: { Chris@16: static std::wstring symbol() {return std::wstring(1, L'E');} Chris@16: static std::wstring prefix() {return std::wstring(L"exa");} Chris@16: }; Chris@16: #endif Chris@16: #endif Chris@16: Chris@101: Chris@101: #ifdef BOOST_RATIO_EXTENSIONS Chris@101: Chris@101: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@101: template Chris@101: struct ratio_string : Chris@101: ratio_detail::ratio_string_static Chris@101: {}; Chris@101: Chris@101: #else Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::string symbol() {return std::string("Ki");} Chris@101: static std::string prefix() {return std::string("kibi");} Chris@101: }; Chris@101: Chris@101: #if BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u16string symbol() {return std::u16string(u"Ki");} Chris@101: static std::u16string prefix() {return std::u16string(u"kibi");} Chris@101: }; Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u32string symbol() {return std::u32string(U"Ki");} Chris@101: static std::u32string prefix() {return std::u32string(U"kibi");} Chris@101: }; Chris@101: Chris@101: #endif Chris@101: Chris@101: #ifndef BOOST_NO_STD_WSTRING Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::wstring symbol() {return std::wstring(L"Ki");} Chris@101: static std::wstring prefix() {return std::wstring(L"kibi");} Chris@101: }; Chris@101: #endif Chris@101: #endif Chris@101: Chris@101: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@101: template Chris@101: struct ratio_string : Chris@101: ratio_detail::ratio_string_static Chris@101: {}; Chris@101: Chris@101: #else Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::string symbol() {return std::string("Mi");} Chris@101: static std::string prefix() {return std::string("mebi");} Chris@101: }; Chris@101: Chris@101: #if BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u16string symbol() {return std::u16string(u"Mi");} Chris@101: static std::u16string prefix() {return std::u16string(u"mebi");} Chris@101: }; Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u32string symbol() {return std::u32string(U"Mi");} Chris@101: static std::u32string prefix() {return std::u32string(U"mebi");} Chris@101: }; Chris@101: Chris@101: #endif Chris@101: Chris@101: #ifndef BOOST_NO_STD_WSTRING Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::wstring symbol() {return std::wstring(L"Mi");} Chris@101: static std::wstring prefix() {return std::wstring(L"mebi");} Chris@101: }; Chris@101: #endif Chris@101: #endif Chris@101: Chris@101: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@101: template Chris@101: struct ratio_string : Chris@101: ratio_detail::ratio_string_static Chris@101: {}; Chris@101: Chris@101: #else Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::string symbol() {return std::string("Gi");} Chris@101: static std::string prefix() {return std::string("gibi");} Chris@101: }; Chris@101: Chris@101: #if BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u16string symbol() {return std::u16string(u"Gi");} Chris@101: static std::u16string prefix() {return std::u16string(u"gibi");} Chris@101: }; Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u32string symbol() {return std::u32string(U"Gi");} Chris@101: static std::u32string prefix() {return std::u32string(U"gibi");} Chris@101: }; Chris@101: Chris@101: #endif Chris@101: Chris@101: #ifndef BOOST_NO_STD_WSTRING Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::wstring symbol() {return std::wstring(L"Gi");} Chris@101: static std::wstring prefix() {return std::wstring(L"gibi");} Chris@101: }; Chris@101: #endif Chris@101: #endif Chris@101: Chris@101: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@101: template Chris@101: struct ratio_string : Chris@101: ratio_detail::ratio_string_static Chris@101: {}; Chris@101: Chris@101: #else Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::string symbol() {return std::string("Ti");} Chris@101: static std::string prefix() {return std::string("tebi");} Chris@101: }; Chris@101: Chris@101: #if BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u16string symbol() {return std::u16string(u"Ti");} Chris@101: static std::u16string prefix() {return std::u16string(u"tebi");} Chris@101: }; Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u32string symbol() {return std::u32string(U"Ti");} Chris@101: static std::u32string prefix() {return std::u32string(U"tebi");} Chris@101: }; Chris@101: Chris@101: #endif Chris@101: Chris@101: #ifndef BOOST_NO_STD_WSTRING Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::wstring symbol() {return std::wstring(L"Ti");} Chris@101: static std::wstring prefix() {return std::wstring(L"tebi");} Chris@101: }; Chris@101: #endif Chris@101: #endif Chris@101: Chris@101: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@101: template Chris@101: struct ratio_string : Chris@101: ratio_detail::ratio_string_static Chris@101: {}; Chris@101: Chris@101: #else Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::string symbol() {return std::string("Pi");} Chris@101: static std::string prefix() {return std::string("pebi");} Chris@101: }; Chris@101: Chris@101: #if BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u16string symbol() {return std::u16string(u"Pi");} Chris@101: static std::u16string prefix() {return std::u16string(u"pebi");} Chris@101: }; Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u32string symbol() {return std::u32string(U"Pi");} Chris@101: static std::u32string prefix() {return std::u32string(U"pebi");} Chris@101: }; Chris@101: Chris@101: #endif Chris@101: Chris@101: #ifndef BOOST_NO_STD_WSTRING Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::wstring symbol() {return std::wstring(L"Pi");} Chris@101: static std::wstring prefix() {return std::wstring(L"pebi");} Chris@101: }; Chris@101: #endif Chris@101: #endif Chris@101: Chris@101: #ifdef BOOST_RATIO_HAS_STATIC_STRING Chris@101: template Chris@101: struct ratio_string : Chris@101: ratio_detail::ratio_string_static Chris@101: {}; Chris@101: Chris@101: #else Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::string symbol() {return std::string("Ei");} Chris@101: static std::string prefix() {return std::string("exbi");} Chris@101: }; Chris@101: Chris@101: #if BOOST_RATIO_HAS_UNICODE_SUPPORT Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u16string symbol() {return std::u16string(u"Ei");} Chris@101: static std::u16string prefix() {return std::u16string(u"exbi");} Chris@101: }; Chris@101: Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::u32string symbol() {return std::u32string(U"Ei");} Chris@101: static std::u32string prefix() {return std::u32string(U"exbi");} Chris@101: }; Chris@101: Chris@101: #endif Chris@101: Chris@101: #ifndef BOOST_NO_STD_WSTRING Chris@101: template <> Chris@101: struct ratio_string Chris@101: { Chris@101: static std::wstring symbol() {return std::wstring(L"Ei");} Chris@101: static std::wstring prefix() {return std::wstring(L"exbi");} Chris@101: }; Chris@101: #endif Chris@101: #endif Chris@101: #endif Chris@101: Chris@16: } Chris@16: Chris@16: #endif // BOOST_RATIO_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0 Chris@16: #endif // BOOST_RATIO_RATIO_IO_HPP