annotate DEPENDENCIES/generic/include/boost/ratio/detail/ratio_io.hpp @ 125:34e428693f5d vext

Vext -> Repoint
author Chris Cannam
date Thu, 14 Jun 2018 11:15:39 +0100
parents c530137014c0
children
rev   line source
Chris@16 1 // ratio_io
Chris@16 2 //
Chris@16 3 // (C) Copyright Howard Hinnant
Chris@16 4 // (C) Copyright 2010 Vicente J. Botet Escriba
Chris@16 5 // Use, modification and distribution are subject to the Boost Software License,
Chris@16 6 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
Chris@16 7 // http://www.boost.org/LICENSE_1_0.txt).
Chris@16 8 //
Chris@16 9 // This code was adapted by Vicente from Howard Hinnant's experimental work
Chris@16 10 // on chrono i/o under lvm/libc++ to Boost
Chris@16 11
Chris@16 12 #ifndef BOOST_RATIO_DETAIL_RATIO_IO_HPP
Chris@16 13 #define BOOST_RATIO_DETAIL_RATIO_IO_HPP
Chris@16 14
Chris@16 15 /*
Chris@16 16
Chris@16 17 ratio_io synopsis
Chris@16 18
Chris@16 19 #include <ratio>
Chris@16 20 #include <string>
Chris@16 21
Chris@16 22 namespace boost
Chris@16 23 {
Chris@16 24
Chris@16 25 template <class Ratio, class CharT>
Chris@16 26 struct ratio_string
Chris@16 27 {
Chris@16 28 static basic_string<CharT> short_name();
Chris@16 29 static basic_string<CharT> long_name();
Chris@16 30 };
Chris@16 31
Chris@16 32 } // boost
Chris@16 33
Chris@16 34 */
Chris@16 35
Chris@16 36 #include <boost/config.hpp>
Chris@16 37 #include <boost/ratio/ratio.hpp>
Chris@16 38 #include <boost/type_traits/integral_constant.hpp>
Chris@16 39 #include <string>
Chris@16 40 #include <sstream>
Chris@16 41
Chris@16 42 #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 43 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 44 #undef BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 45 #endif
Chris@16 46 #else
Chris@16 47 #define BOOST_RATIO_HAS_UNICODE_SUPPORT 1
Chris@16 48 #endif
Chris@16 49
Chris@16 50 namespace boost {
Chris@16 51
Chris@16 52 //template <class Ratio>
Chris@16 53 //struct ratio_string_is_localizable : false_type {};
Chris@16 54 //template <class Ratio>
Chris@16 55 //struct ratio_string_id : integral_constant<int,0> {};
Chris@16 56
Chris@16 57 template <class Ratio, class CharT>
Chris@16 58 struct ratio_string
Chris@16 59 {
Chris@16 60 static std::basic_string<CharT> short_name() {return long_name();}
Chris@16 61 static std::basic_string<CharT> long_name();
Chris@16 62 static std::basic_string<CharT> symbol() {return short_name();}
Chris@16 63 static std::basic_string<CharT> prefix() {return long_name();}
Chris@16 64 };
Chris@16 65
Chris@16 66 template <class Ratio, class CharT>
Chris@16 67 std::basic_string<CharT>
Chris@16 68 ratio_string<Ratio, CharT>::long_name()
Chris@16 69 {
Chris@16 70 std::basic_ostringstream<CharT> os;
Chris@16 71 os << CharT('[') << Ratio::num << CharT('/')
Chris@16 72 << Ratio::den << CharT(']');
Chris@16 73 return os.str();
Chris@16 74 }
Chris@16 75
Chris@16 76 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 77 namespace ratio_detail {
Chris@16 78 template <class Ratio, class CharT>
Chris@16 79 struct ratio_string_static
Chris@16 80 {
Chris@16 81 static std::string short_name() {
Chris@16 82 return std::basic_string<CharT>(
Chris@16 83 static_string::c_str<
Chris@16 84 typename ratio_static_string<Ratio, CharT>::short_name
Chris@16 85 >::value);
Chris@16 86 }
Chris@16 87 static std::string long_name() {
Chris@16 88 return std::basic_string<CharT>(
Chris@16 89 static_string::c_str<
Chris@16 90 typename ratio_static_string<Ratio, CharT>::long_name
Chris@16 91 >::value);
Chris@16 92 }
Chris@16 93 static std::basic_string<CharT> symbol() {return short_name();}
Chris@16 94 static std::basic_string<CharT> prefix() {return long_name();}
Chris@16 95 };
Chris@16 96 }
Chris@16 97 #endif
Chris@16 98 // atto
Chris@16 99 //template <>
Chris@16 100 //struct ratio_string_is_localizable<atto> : true_type {};
Chris@16 101 //
Chris@16 102 //template <>
Chris@16 103 //struct ratio_string_id<atto> : integral_constant<int,-18> {};
Chris@16 104
Chris@16 105 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 106 template <typename CharT>
Chris@16 107 struct ratio_string<atto, CharT> :
Chris@16 108 ratio_detail::ratio_string_static<atto,CharT>
Chris@16 109 {};
Chris@16 110
Chris@16 111 #else
Chris@16 112 template <>
Chris@16 113 struct ratio_string<atto, char>
Chris@16 114 {
Chris@16 115 static std::string short_name() {return std::string(1, 'a');}
Chris@16 116 static std::string long_name() {return std::string("atto");}
Chris@16 117 static std::string symbol() {return short_name();}
Chris@16 118 static std::string prefix() {return long_name();}
Chris@16 119 };
Chris@16 120
Chris@16 121 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 122
Chris@16 123 template <>
Chris@16 124 struct ratio_string<atto, char16_t>
Chris@16 125 {
Chris@16 126 static std::u16string short_name() {return std::u16string(1, u'a');}
Chris@16 127 static std::u16string long_name() {return std::u16string(u"atto");}
Chris@16 128 static std::u16string symbol() {return short_name();}
Chris@16 129 static std::u16string prefix() {return long_name();}
Chris@16 130 };
Chris@16 131
Chris@16 132 template <>
Chris@16 133 struct ratio_string<atto, char32_t>
Chris@16 134 {
Chris@16 135 static std::u32string short_name() {return std::u32string(1, U'a');}
Chris@16 136 static std::u32string long_name() {return std::u32string(U"atto");}
Chris@16 137 static std::u32string symbol() {return short_name();}
Chris@16 138 static std::u32string prefix() {return long_name();}
Chris@16 139 };
Chris@16 140
Chris@16 141 #endif
Chris@16 142
Chris@16 143 #ifndef BOOST_NO_STD_WSTRING
Chris@16 144 template <>
Chris@16 145 struct ratio_string<atto, wchar_t>
Chris@16 146 {
Chris@16 147 static std::wstring short_name() {return std::wstring(1, L'a');}
Chris@16 148 static std::wstring long_name() {return std::wstring(L"atto");}
Chris@16 149 static std::wstring symbol() {return short_name();}
Chris@16 150 static std::wstring prefix() {return long_name();}
Chris@16 151 };
Chris@16 152 #endif
Chris@16 153 #endif
Chris@16 154
Chris@16 155 // femto
Chris@16 156
Chris@16 157 //template <>
Chris@16 158 //struct ratio_string_is_localizable<femto> : true_type {};
Chris@16 159 //
Chris@16 160 //template <>
Chris@16 161 //struct ratio_string_id<femto> : integral_constant<int,-15> {};
Chris@16 162
Chris@16 163 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 164 template <typename CharT>
Chris@16 165 struct ratio_string<femto, CharT> :
Chris@16 166 ratio_detail::ratio_string_static<femto,CharT>
Chris@16 167 {};
Chris@16 168
Chris@16 169 #else
Chris@16 170
Chris@16 171 template <>
Chris@16 172 struct ratio_string<femto, char>
Chris@16 173 {
Chris@16 174 static std::string short_name() {return std::string(1, 'f');}
Chris@16 175 static std::string long_name() {return std::string("femto");}
Chris@16 176 static std::string symbol() {return short_name();}
Chris@16 177 static std::string prefix() {return long_name();}
Chris@16 178 };
Chris@16 179
Chris@16 180 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 181
Chris@16 182 template <>
Chris@16 183 struct ratio_string<femto, char16_t>
Chris@16 184 {
Chris@16 185 static std::u16string short_name() {return std::u16string(1, u'f');}
Chris@16 186 static std::u16string long_name() {return std::u16string(u"femto");}
Chris@16 187 static std::u16string symbol() {return short_name();}
Chris@16 188 static std::u16string prefix() {return long_name();}
Chris@16 189 };
Chris@16 190
Chris@16 191 template <>
Chris@16 192 struct ratio_string<femto, char32_t>
Chris@16 193 {
Chris@16 194 static std::u32string short_name() {return std::u32string(1, U'f');}
Chris@16 195 static std::u32string long_name() {return std::u32string(U"femto");}
Chris@16 196 static std::u32string symbol() {return short_name();}
Chris@16 197 static std::u32string prefix() {return long_name();}
Chris@16 198 };
Chris@16 199
Chris@16 200 #endif
Chris@16 201
Chris@16 202 #ifndef BOOST_NO_STD_WSTRING
Chris@16 203 template <>
Chris@16 204 struct ratio_string<femto, wchar_t>
Chris@16 205 {
Chris@16 206 static std::wstring short_name() {return std::wstring(1, L'f');}
Chris@16 207 static std::wstring long_name() {return std::wstring(L"femto");}
Chris@16 208 static std::wstring symbol() {return short_name();}
Chris@16 209 static std::wstring prefix() {return long_name();}
Chris@16 210 };
Chris@16 211 #endif
Chris@16 212 #endif
Chris@16 213
Chris@16 214 // pico
Chris@16 215
Chris@16 216 //template <>
Chris@16 217 //struct ratio_string_is_localizable<pico> : true_type {};
Chris@16 218 //
Chris@16 219 //template <>
Chris@16 220 //struct ratio_string_id<pico> : integral_constant<int,-12> {};
Chris@16 221
Chris@16 222 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 223 template <typename CharT>
Chris@16 224 struct ratio_string<pico, CharT> :
Chris@16 225 ratio_detail::ratio_string_static<pico,CharT>
Chris@16 226 {};
Chris@16 227
Chris@16 228 #else
Chris@16 229 template <>
Chris@16 230 struct ratio_string<pico, char>
Chris@16 231 {
Chris@16 232 static std::string short_name() {return std::string(1, 'p');}
Chris@16 233 static std::string long_name() {return std::string("pico");}
Chris@16 234 static std::string symbol() {return short_name();}
Chris@16 235 static std::string prefix() {return long_name();}
Chris@16 236 };
Chris@16 237
Chris@16 238 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 239
Chris@16 240 template <>
Chris@16 241 struct ratio_string<pico, char16_t>
Chris@16 242 {
Chris@16 243 static std::u16string short_name() {return std::u16string(1, u'p');}
Chris@16 244 static std::u16string long_name() {return std::u16string(u"pico");}
Chris@16 245 static std::u16string symbol() {return short_name();}
Chris@16 246 static std::u16string prefix() {return long_name();}
Chris@16 247 };
Chris@16 248
Chris@16 249 template <>
Chris@16 250 struct ratio_string<pico, char32_t>
Chris@16 251 {
Chris@16 252 static std::u32string short_name() {return std::u32string(1, U'p');}
Chris@16 253 static std::u32string long_name() {return std::u32string(U"pico");}
Chris@16 254 static std::u32string symbol() {return short_name();}
Chris@16 255 static std::u32string prefix() {return long_name();}
Chris@16 256 };
Chris@16 257
Chris@16 258 #endif
Chris@16 259
Chris@16 260 #ifndef BOOST_NO_STD_WSTRING
Chris@16 261 template <>
Chris@16 262 struct ratio_string<pico, wchar_t>
Chris@16 263 {
Chris@16 264 static std::wstring short_name() {return std::wstring(1, L'p');}
Chris@16 265 static std::wstring long_name() {return std::wstring(L"pico");}
Chris@16 266 static std::wstring symbol() {return short_name();}
Chris@16 267 static std::wstring prefix() {return long_name();}
Chris@16 268 };
Chris@16 269 #endif
Chris@16 270 #endif
Chris@16 271
Chris@16 272 // nano
Chris@16 273
Chris@16 274 //template <>
Chris@16 275 //struct ratio_string_is_localizable<nano> : true_type {};
Chris@16 276 //
Chris@16 277 //template <>
Chris@16 278 //struct ratio_string_id<nano> : integral_constant<int,-9> {};
Chris@16 279
Chris@16 280 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 281 template <typename CharT>
Chris@16 282 struct ratio_string<nano, CharT> :
Chris@16 283 ratio_detail::ratio_string_static<nano,CharT>
Chris@16 284 {};
Chris@16 285
Chris@16 286 #else
Chris@16 287 template <>
Chris@16 288 struct ratio_string<nano, char>
Chris@16 289 {
Chris@16 290 static std::string short_name() {return std::string(1, 'n');}
Chris@16 291 static std::string long_name() {return std::string("nano");}
Chris@16 292 static std::string symbol() {return short_name();}
Chris@16 293 static std::string prefix() {return long_name();}
Chris@16 294 };
Chris@16 295
Chris@16 296 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 297
Chris@16 298 template <>
Chris@16 299 struct ratio_string<nano, char16_t>
Chris@16 300 {
Chris@16 301 static std::u16string short_name() {return std::u16string(1, u'n');}
Chris@16 302 static std::u16string long_name() {return std::u16string(u"nano");}
Chris@16 303 static std::u16string symbol() {return short_name();}
Chris@16 304 static std::u16string prefix() {return long_name();}
Chris@16 305 };
Chris@16 306
Chris@16 307 template <>
Chris@16 308 struct ratio_string<nano, char32_t>
Chris@16 309 {
Chris@16 310 static std::u32string short_name() {return std::u32string(1, U'n');}
Chris@16 311 static std::u32string long_name() {return std::u32string(U"nano");}
Chris@16 312 static std::u32string symbol() {return short_name();}
Chris@16 313 static std::u32string prefix() {return long_name();}
Chris@16 314 };
Chris@16 315
Chris@16 316 #endif
Chris@16 317
Chris@16 318 #ifndef BOOST_NO_STD_WSTRING
Chris@16 319 template <>
Chris@16 320 struct ratio_string<nano, wchar_t>
Chris@16 321 {
Chris@16 322 static std::wstring short_name() {return std::wstring(1, L'n');}
Chris@16 323 static std::wstring long_name() {return std::wstring(L"nano");}
Chris@16 324 static std::wstring symbol() {return short_name();}
Chris@16 325 static std::wstring prefix() {return long_name();}
Chris@16 326 };
Chris@16 327 #endif
Chris@16 328 #endif
Chris@16 329
Chris@16 330 // micro
Chris@16 331
Chris@16 332 //template <>
Chris@16 333 //struct ratio_string_is_localizable<micro> : true_type {};
Chris@16 334 //
Chris@16 335 //template <>
Chris@16 336 //struct ratio_string_id<micro> : integral_constant<int,-6> {};
Chris@16 337
Chris@16 338 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 339 template <typename CharT>
Chris@16 340 struct ratio_string<micro, CharT> :
Chris@16 341 ratio_detail::ratio_string_static<micro,CharT>
Chris@16 342 {};
Chris@16 343
Chris@16 344 #else
Chris@16 345 template <>
Chris@16 346 struct ratio_string<micro, char>
Chris@16 347 {
Chris@16 348 static std::string short_name() {return std::string("\xC2\xB5");}
Chris@16 349 static std::string long_name() {return std::string("micro");}
Chris@16 350 static std::string symbol() {return short_name();}
Chris@16 351 static std::string prefix() {return long_name();}
Chris@16 352 };
Chris@16 353
Chris@16 354 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 355
Chris@16 356 template <>
Chris@16 357 struct ratio_string<micro, char16_t>
Chris@16 358 {
Chris@16 359 static std::u16string short_name() {return std::u16string(1, u'\xB5');}
Chris@16 360 static std::u16string long_name() {return std::u16string(u"micro");}
Chris@16 361 static std::u16string symbol() {return short_name();}
Chris@16 362 static std::u16string prefix() {return long_name();}
Chris@16 363 };
Chris@16 364
Chris@16 365 template <>
Chris@16 366 struct ratio_string<micro, char32_t>
Chris@16 367 {
Chris@16 368 static std::u32string short_name() {return std::u32string(1, U'\xB5');}
Chris@16 369 static std::u32string long_name() {return std::u32string(U"micro");}
Chris@16 370 static std::u32string symbol() {return short_name();}
Chris@16 371 static std::u32string prefix() {return long_name();}
Chris@16 372 };
Chris@16 373
Chris@16 374 #endif
Chris@16 375
Chris@16 376 #ifndef BOOST_NO_STD_WSTRING
Chris@16 377 template <>
Chris@16 378 struct ratio_string<micro, wchar_t>
Chris@16 379 {
Chris@16 380 static std::wstring short_name() {return std::wstring(1, L'\xB5');}
Chris@16 381 static std::wstring long_name() {return std::wstring(L"micro");}
Chris@16 382 static std::wstring symbol() {return short_name();}
Chris@16 383 static std::wstring prefix() {return long_name();}
Chris@16 384 };
Chris@16 385 #endif
Chris@16 386 #endif
Chris@16 387
Chris@16 388 // milli
Chris@16 389
Chris@16 390 //template <>
Chris@16 391 //struct ratio_string_is_localizable<milli> : true_type {};
Chris@16 392 //
Chris@16 393 //template <>
Chris@16 394 //struct ratio_string_id<milli> : integral_constant<int,-3> {};
Chris@16 395
Chris@16 396 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 397 template <typename CharT>
Chris@16 398 struct ratio_string<milli, CharT> :
Chris@16 399 ratio_detail::ratio_string_static<milli,CharT>
Chris@16 400 {};
Chris@16 401
Chris@16 402 #else
Chris@16 403 template <>
Chris@16 404 struct ratio_string<milli, char>
Chris@16 405 {
Chris@16 406 static std::string short_name() {return std::string(1, 'm');}
Chris@16 407 static std::string long_name() {return std::string("milli");}
Chris@16 408 static std::string symbol() {return short_name();}
Chris@16 409 static std::string prefix() {return long_name();}
Chris@16 410 };
Chris@16 411
Chris@16 412 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 413
Chris@16 414 template <>
Chris@16 415 struct ratio_string<milli, char16_t>
Chris@16 416 {
Chris@16 417 static std::u16string short_name() {return std::u16string(1, u'm');}
Chris@16 418 static std::u16string long_name() {return std::u16string(u"milli");}
Chris@16 419 static std::u16string symbol() {return short_name();}
Chris@16 420 static std::u16string prefix() {return long_name();}
Chris@16 421 };
Chris@16 422
Chris@16 423 template <>
Chris@16 424 struct ratio_string<milli, char32_t>
Chris@16 425 {
Chris@16 426 static std::u32string short_name() {return std::u32string(1, U'm');}
Chris@16 427 static std::u32string long_name() {return std::u32string(U"milli");}
Chris@16 428 static std::u32string symbol() {return short_name();}
Chris@16 429 static std::u32string prefix() {return long_name();}
Chris@16 430 };
Chris@16 431
Chris@16 432 #endif
Chris@16 433
Chris@16 434 #ifndef BOOST_NO_STD_WSTRING
Chris@16 435 template <>
Chris@16 436 struct ratio_string<milli, wchar_t>
Chris@16 437 {
Chris@16 438 static std::wstring short_name() {return std::wstring(1, L'm');}
Chris@16 439 static std::wstring long_name() {return std::wstring(L"milli");}
Chris@16 440 static std::wstring symbol() {return short_name();}
Chris@16 441 static std::wstring prefix() {return long_name();}
Chris@16 442 };
Chris@16 443 #endif
Chris@16 444 #endif
Chris@16 445
Chris@16 446 // centi
Chris@16 447
Chris@16 448 //template <>
Chris@16 449 //struct ratio_string_is_localizable<centi> : true_type {};
Chris@16 450 //
Chris@16 451 //template <>
Chris@16 452 //struct ratio_string_id<centi> : integral_constant<int,-2> {};
Chris@16 453
Chris@16 454 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 455 template <typename CharT>
Chris@16 456 struct ratio_string<centi, CharT> :
Chris@16 457 ratio_detail::ratio_string_static<centi,CharT>
Chris@16 458 {};
Chris@16 459
Chris@16 460 #else
Chris@16 461 template <>
Chris@16 462 struct ratio_string<centi, char>
Chris@16 463 {
Chris@16 464 static std::string short_name() {return std::string(1, 'c');}
Chris@16 465 static std::string long_name() {return std::string("centi");}
Chris@16 466 static std::string symbol() {return short_name();}
Chris@16 467 static std::string prefix() {return long_name();}
Chris@16 468 };
Chris@16 469
Chris@16 470 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 471
Chris@16 472 template <>
Chris@16 473 struct ratio_string<centi, char16_t>
Chris@16 474 {
Chris@16 475 static std::u16string short_name() {return std::u16string(1, u'c');}
Chris@16 476 static std::u16string long_name() {return std::u16string(u"centi");}
Chris@16 477 static std::u16string symbol() {return short_name();}
Chris@16 478 static std::u16string prefix() {return long_name();}
Chris@16 479 };
Chris@16 480
Chris@16 481 template <>
Chris@16 482 struct ratio_string<centi, char32_t>
Chris@16 483 {
Chris@16 484 static std::u32string short_name() {return std::u32string(1, U'c');}
Chris@16 485 static std::u32string long_name() {return std::u32string(U"centi");}
Chris@16 486 static std::u32string symbol() {return short_name();}
Chris@16 487 static std::u32string prefix() {return long_name();}
Chris@16 488 };
Chris@16 489
Chris@16 490 #endif
Chris@16 491
Chris@16 492 #ifndef BOOST_NO_STD_WSTRING
Chris@16 493 template <>
Chris@16 494 struct ratio_string<centi, wchar_t>
Chris@16 495 {
Chris@16 496 static std::wstring short_name() {return std::wstring(1, L'c');}
Chris@16 497 static std::wstring long_name() {return std::wstring(L"centi");}
Chris@16 498 static std::wstring symbol() {return short_name();}
Chris@16 499 static std::wstring prefix() {return long_name();}
Chris@16 500 };
Chris@16 501 #endif
Chris@16 502 #endif
Chris@16 503
Chris@16 504 // deci
Chris@16 505
Chris@16 506 //template <>
Chris@16 507 //struct ratio_string_is_localizable<deci> : true_type {};
Chris@16 508 //
Chris@16 509 //template <>
Chris@16 510 //struct ratio_string_id<deci> : integral_constant<int,-1> {};
Chris@16 511
Chris@16 512 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 513 template <typename CharT>
Chris@16 514 struct ratio_string<deci, CharT> :
Chris@16 515 ratio_detail::ratio_string_static<deci,CharT>
Chris@16 516 {};
Chris@16 517
Chris@16 518 #else
Chris@16 519
Chris@16 520 template <>
Chris@16 521 struct ratio_string<deci, char>
Chris@16 522 {
Chris@16 523 static std::string short_name() {return std::string(1, 'd');}
Chris@16 524 static std::string long_name() {return std::string("deci");}
Chris@16 525 static std::string symbol() {return short_name();}
Chris@16 526 static std::string prefix() {return long_name();}
Chris@16 527 };
Chris@16 528
Chris@16 529 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 530
Chris@16 531 template <>
Chris@16 532 struct ratio_string<deci, char16_t>
Chris@16 533 {
Chris@16 534 static std::u16string short_name() {return std::u16string(1, u'd');}
Chris@16 535 static std::u16string long_name() {return std::u16string(u"deci");}
Chris@16 536 static std::u16string symbol() {return short_name();}
Chris@16 537 static std::u16string prefix() {return long_name();}
Chris@16 538 };
Chris@16 539
Chris@16 540 template <>
Chris@16 541 struct ratio_string<deci, char32_t>
Chris@16 542 {
Chris@16 543 static std::u32string short_name() {return std::u32string(1, U'd');}
Chris@16 544 static std::u32string long_name() {return std::u32string(U"deci");}
Chris@16 545 static std::u32string symbol() {return short_name();}
Chris@16 546 static std::u32string prefix() {return long_name();}
Chris@16 547 };
Chris@16 548
Chris@16 549 #endif
Chris@16 550
Chris@16 551 #ifndef BOOST_NO_STD_WSTRING
Chris@16 552 template <>
Chris@16 553 struct ratio_string<deci, wchar_t>
Chris@16 554 {
Chris@16 555 static std::wstring short_name() {return std::wstring(1, L'd');}
Chris@16 556 static std::wstring long_name() {return std::wstring(L"deci");}
Chris@16 557 static std::wstring symbol() {return short_name();}
Chris@16 558 static std::wstring prefix() {return long_name();}
Chris@16 559 };
Chris@16 560 #endif
Chris@16 561 #endif
Chris@16 562
Chris@16 563 // unit
Chris@16 564
Chris@16 565 //template <>
Chris@16 566 //struct ratio_string_is_localizable<ratio<1> > : true_type {};
Chris@16 567 //
Chris@16 568 //template <>
Chris@16 569 //struct ratio_string_id<ratio<1> > : integral_constant<int,0> {};
Chris@16 570 // deca
Chris@16 571
Chris@16 572 //template <>
Chris@16 573 //struct ratio_string_is_localizable<deca> : true_type {};
Chris@16 574 //
Chris@16 575 //template <>
Chris@16 576 //struct ratio_string_id<deca> : integral_constant<int,1> {};
Chris@16 577
Chris@16 578 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 579 template <typename CharT>
Chris@16 580 struct ratio_string<deca, CharT> :
Chris@16 581 ratio_detail::ratio_string_static<deca,CharT>
Chris@16 582 {};
Chris@16 583
Chris@16 584 #else
Chris@16 585 template <>
Chris@16 586 struct ratio_string<deca, char>
Chris@16 587 {
Chris@16 588 static std::string short_name() {return std::string("da");}
Chris@16 589 static std::string long_name() {return std::string("deca");}
Chris@16 590 static std::string symbol() {return short_name();}
Chris@16 591 static std::string prefix() {return long_name();}
Chris@16 592 };
Chris@16 593
Chris@16 594 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 595
Chris@16 596 template <>
Chris@16 597 struct ratio_string<deca, char16_t>
Chris@16 598 {
Chris@16 599 static std::u16string short_name() {return std::u16string(u"da");}
Chris@16 600 static std::u16string long_name() {return std::u16string(u"deca");}
Chris@16 601 static std::u16string symbol() {return short_name();}
Chris@16 602 static std::u16string prefix() {return long_name();}
Chris@16 603 };
Chris@16 604
Chris@16 605 template <>
Chris@16 606 struct ratio_string<deca, char32_t>
Chris@16 607 {
Chris@16 608 static std::u32string short_name() {return std::u32string(U"da");}
Chris@16 609 static std::u32string long_name() {return std::u32string(U"deca");}
Chris@16 610 static std::u32string symbol() {return short_name();}
Chris@16 611 static std::u32string prefix() {return long_name();}
Chris@16 612 };
Chris@16 613
Chris@16 614 #endif
Chris@16 615
Chris@16 616 #ifndef BOOST_NO_STD_WSTRING
Chris@16 617 template <>
Chris@16 618 struct ratio_string<deca, wchar_t>
Chris@16 619 {
Chris@16 620 static std::wstring short_name() {return std::wstring(L"da");}
Chris@16 621 static std::wstring long_name() {return std::wstring(L"deca");}
Chris@16 622 static std::wstring symbol() {return short_name();}
Chris@16 623 static std::wstring prefix() {return long_name();}
Chris@16 624 };
Chris@16 625 #endif
Chris@16 626 #endif
Chris@16 627
Chris@16 628 // hecto
Chris@16 629
Chris@16 630 //template <>
Chris@16 631 //struct ratio_string_is_localizable<hecto> : true_type {};
Chris@16 632 //
Chris@16 633 //template <>
Chris@16 634 //struct ratio_string_id<hecto> : integral_constant<int,2> {};
Chris@16 635
Chris@16 636
Chris@16 637 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 638 template <typename CharT>
Chris@16 639 struct ratio_string<hecto, CharT> :
Chris@16 640 ratio_detail::ratio_string_static<hecto,CharT>
Chris@16 641 {};
Chris@16 642
Chris@16 643 #else
Chris@16 644 template <>
Chris@16 645 struct ratio_string<hecto, char>
Chris@16 646 {
Chris@16 647 static std::string short_name() {return std::string(1, 'h');}
Chris@16 648 static std::string long_name() {return std::string("hecto");}
Chris@16 649 static std::string symbol() {return short_name();}
Chris@16 650 static std::string prefix() {return long_name();}
Chris@16 651 };
Chris@16 652
Chris@16 653 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 654
Chris@16 655 template <>
Chris@16 656 struct ratio_string<hecto, char16_t>
Chris@16 657 {
Chris@16 658 static std::u16string short_name() {return std::u16string(1, u'h');}
Chris@16 659 static std::u16string long_name() {return std::u16string(u"hecto");}
Chris@16 660 static std::u16string symbol() {return short_name();}
Chris@16 661 static std::u16string prefix() {return long_name();}
Chris@16 662 };
Chris@16 663
Chris@16 664 template <>
Chris@16 665 struct ratio_string<hecto, char32_t>
Chris@16 666 {
Chris@16 667 static std::u32string short_name() {return std::u32string(1, U'h');}
Chris@16 668 static std::u32string long_name() {return std::u32string(U"hecto");}
Chris@16 669 static std::u32string symbol() {return short_name();}
Chris@16 670 static std::u32string prefix() {return long_name();}
Chris@16 671 };
Chris@16 672
Chris@16 673 #endif
Chris@16 674
Chris@16 675 #ifndef BOOST_NO_STD_WSTRING
Chris@16 676 template <>
Chris@16 677 struct ratio_string<hecto, wchar_t>
Chris@16 678 {
Chris@16 679 static std::wstring short_name() {return std::wstring(1, L'h');}
Chris@16 680 static std::wstring long_name() {return std::wstring(L"hecto");}
Chris@16 681 static std::wstring symbol() {return short_name();}
Chris@16 682 static std::wstring prefix() {return long_name();}
Chris@16 683 };
Chris@16 684 #endif
Chris@16 685 #endif
Chris@16 686
Chris@16 687 // kilo
Chris@16 688
Chris@16 689 //template <>
Chris@16 690 //struct ratio_string_is_localizable<kilo> : true_type {};
Chris@16 691 //
Chris@16 692 //template <>
Chris@16 693 //struct ratio_string_id<kilo> : integral_constant<int,3> {};
Chris@16 694
Chris@16 695 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 696 template <typename CharT>
Chris@16 697 struct ratio_string<kilo, CharT> :
Chris@16 698 ratio_detail::ratio_string_static<kilo,CharT>
Chris@16 699 {};
Chris@16 700
Chris@16 701 #else
Chris@16 702 template <>
Chris@16 703 struct ratio_string<kilo, char>
Chris@16 704 {
Chris@16 705 static std::string short_name() {return std::string(1, 'k');}
Chris@16 706 static std::string long_name() {return std::string("kilo");}
Chris@16 707 static std::string symbol() {return short_name();}
Chris@16 708 static std::string prefix() {return long_name();}
Chris@16 709 };
Chris@16 710
Chris@16 711 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 712
Chris@16 713 template <>
Chris@16 714 struct ratio_string<kilo, char16_t>
Chris@16 715 {
Chris@16 716 static std::u16string short_name() {return std::u16string(1, u'k');}
Chris@16 717 static std::u16string long_name() {return std::u16string(u"kilo");}
Chris@16 718 static std::u16string symbol() {return short_name();}
Chris@16 719 static std::u16string prefix() {return long_name();}
Chris@16 720 };
Chris@16 721
Chris@16 722 template <>
Chris@16 723 struct ratio_string<kilo, char32_t>
Chris@16 724 {
Chris@16 725 static std::u32string short_name() {return std::u32string(1, U'k');}
Chris@16 726 static std::u32string long_name() {return std::u32string(U"kilo");}
Chris@16 727 static std::u32string symbol() {return short_name();}
Chris@16 728 static std::u32string prefix() {return long_name();}
Chris@16 729 };
Chris@16 730
Chris@16 731 #endif
Chris@16 732
Chris@16 733 #ifndef BOOST_NO_STD_WSTRING
Chris@16 734 template <>
Chris@16 735 struct ratio_string<kilo, wchar_t>
Chris@16 736 {
Chris@16 737 static std::wstring short_name() {return std::wstring(1, L'k');}
Chris@16 738 static std::wstring long_name() {return std::wstring(L"kilo");}
Chris@16 739 static std::wstring symbol() {return short_name();}
Chris@16 740 static std::wstring prefix() {return long_name();}
Chris@16 741 };
Chris@16 742 #endif
Chris@16 743 #endif
Chris@16 744
Chris@16 745 // mega
Chris@16 746
Chris@16 747 //template <>
Chris@16 748 //struct ratio_string_is_localizable<mega> : true_type {};
Chris@16 749 //
Chris@16 750 //template <>
Chris@16 751 //struct ratio_string_id<mega> : integral_constant<int,6> {};
Chris@16 752
Chris@16 753 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 754 template <typename CharT>
Chris@16 755 struct ratio_string<mega, CharT> :
Chris@16 756 ratio_detail::ratio_string_static<mega,CharT>
Chris@16 757 {};
Chris@16 758
Chris@16 759 #else
Chris@16 760
Chris@16 761 template <>
Chris@16 762 struct ratio_string<mega, char>
Chris@16 763 {
Chris@16 764 static std::string short_name() {return std::string(1, 'M');}
Chris@16 765 static std::string long_name() {return std::string("mega");}
Chris@16 766 static std::string symbol() {return short_name();}
Chris@16 767 static std::string prefix() {return long_name();}
Chris@16 768 };
Chris@16 769
Chris@16 770 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 771
Chris@16 772 template <>
Chris@16 773 struct ratio_string<mega, char16_t>
Chris@16 774 {
Chris@16 775 static std::u16string short_name() {return std::u16string(1, u'M');}
Chris@16 776 static std::u16string long_name() {return std::u16string(u"mega");}
Chris@16 777 static std::u16string symbol() {return short_name();}
Chris@16 778 static std::u16string prefix() {return long_name();}
Chris@16 779 };
Chris@16 780
Chris@16 781 template <>
Chris@16 782 struct ratio_string<mega, char32_t>
Chris@16 783 {
Chris@16 784 static std::u32string short_name() {return std::u32string(1, U'M');}
Chris@16 785 static std::u32string long_name() {return std::u32string(U"mega");}
Chris@16 786 static std::u32string symbol() {return short_name();}
Chris@16 787 static std::u32string prefix() {return long_name();}
Chris@16 788 };
Chris@16 789
Chris@16 790 #endif
Chris@16 791
Chris@16 792 #ifndef BOOST_NO_STD_WSTRING
Chris@16 793 template <>
Chris@16 794 struct ratio_string<mega, wchar_t>
Chris@16 795 {
Chris@16 796 static std::wstring short_name() {return std::wstring(1, L'M');}
Chris@16 797 static std::wstring long_name() {return std::wstring(L"mega");}
Chris@16 798 static std::wstring symbol() {return short_name();}
Chris@16 799 static std::wstring prefix() {return long_name();}
Chris@16 800 };
Chris@16 801 #endif
Chris@16 802 #endif
Chris@16 803
Chris@16 804 // giga
Chris@16 805
Chris@16 806 //template <>
Chris@16 807 //struct ratio_string_is_localizable<giga> : true_type {};
Chris@16 808 //
Chris@16 809 //template <>
Chris@16 810 //struct ratio_string_id<giga> : integral_constant<int,9> {};
Chris@16 811
Chris@16 812 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 813 template <typename CharT>
Chris@16 814 struct ratio_string<giga, CharT> :
Chris@16 815 ratio_detail::ratio_string_static<giga,CharT>
Chris@16 816 {};
Chris@16 817
Chris@16 818 #else
Chris@16 819
Chris@16 820 template <>
Chris@16 821 struct ratio_string<giga, char>
Chris@16 822 {
Chris@16 823 static std::string short_name() {return std::string(1, 'G');}
Chris@16 824 static std::string long_name() {return std::string("giga");}
Chris@16 825 static std::string symbol() {return short_name();}
Chris@16 826 static std::string prefix() {return long_name();}
Chris@16 827 };
Chris@16 828
Chris@16 829 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 830
Chris@16 831 template <>
Chris@16 832 struct ratio_string<giga, char16_t>
Chris@16 833 {
Chris@16 834 static std::u16string short_name() {return std::u16string(1, u'G');}
Chris@16 835 static std::u16string long_name() {return std::u16string(u"giga");}
Chris@16 836 static std::u16string symbol() {return short_name();}
Chris@16 837 static std::u16string prefix() {return long_name();}
Chris@16 838 };
Chris@16 839
Chris@16 840 template <>
Chris@16 841 struct ratio_string<giga, char32_t>
Chris@16 842 {
Chris@16 843 static std::u32string short_name() {return std::u32string(1, U'G');}
Chris@16 844 static std::u32string long_name() {return std::u32string(U"giga");}
Chris@16 845 static std::u32string symbol() {return short_name();}
Chris@16 846 static std::u32string prefix() {return long_name();}
Chris@16 847 };
Chris@16 848
Chris@16 849 #endif
Chris@16 850
Chris@16 851 #ifndef BOOST_NO_STD_WSTRING
Chris@16 852 template <>
Chris@16 853 struct ratio_string<giga, wchar_t>
Chris@16 854 {
Chris@16 855 static std::wstring short_name() {return std::wstring(1, L'G');}
Chris@16 856 static std::wstring long_name() {return std::wstring(L"giga");}
Chris@16 857 static std::wstring symbol() {return short_name();}
Chris@16 858 static std::wstring prefix() {return long_name();}
Chris@16 859 };
Chris@16 860 #endif
Chris@16 861 #endif
Chris@16 862
Chris@16 863 // tera
Chris@16 864
Chris@16 865 //template <>
Chris@16 866 //struct ratio_string_is_localizable<tera> : true_type {};
Chris@16 867 //
Chris@16 868 //template <>
Chris@16 869 //struct ratio_string_id<tera> : integral_constant<int,12> {};
Chris@16 870
Chris@16 871 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 872 template <typename CharT>
Chris@16 873 struct ratio_string<tera, CharT> :
Chris@16 874 ratio_detail::ratio_string_static<tera,CharT>
Chris@16 875 {};
Chris@16 876
Chris@16 877 #else
Chris@16 878 template <>
Chris@16 879 struct ratio_string<tera, char>
Chris@16 880 {
Chris@16 881 static std::string short_name() {return std::string(1, 'T');}
Chris@16 882 static std::string long_name() {return std::string("tera");}
Chris@16 883 static std::string symbol() {return short_name();}
Chris@16 884 static std::string prefix() {return long_name();}
Chris@16 885 };
Chris@16 886
Chris@16 887 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 888
Chris@16 889 template <>
Chris@16 890 struct ratio_string<tera, char16_t>
Chris@16 891 {
Chris@16 892 static std::u16string short_name() {return std::u16string(1, u'T');}
Chris@16 893 static std::u16string long_name() {return std::u16string(u"tera");}
Chris@16 894 static std::u16string symbol() {return short_name();}
Chris@16 895 static std::u16string prefix() {return long_name();}
Chris@16 896 };
Chris@16 897
Chris@16 898 template <>
Chris@16 899 struct ratio_string<tera, char32_t>
Chris@16 900 {
Chris@16 901 static std::u32string short_name() {return std::u32string(1, U'T');}
Chris@16 902 static std::u32string long_name() {return std::u32string(U"tera");}
Chris@16 903 static std::u32string symbol() {return short_name();}
Chris@16 904 static std::u32string prefix() {return long_name();}
Chris@16 905 };
Chris@16 906
Chris@16 907 #endif
Chris@16 908
Chris@16 909 #ifndef BOOST_NO_STD_WSTRING
Chris@16 910 template <>
Chris@16 911 struct ratio_string<tera, wchar_t>
Chris@16 912 {
Chris@16 913 static std::wstring short_name() {return std::wstring(1, L'T');}
Chris@16 914 static std::wstring long_name() {return std::wstring(L"tera");}
Chris@16 915 static std::wstring symbol() {return short_name();}
Chris@16 916 static std::wstring prefix() {return long_name();}
Chris@16 917 };
Chris@16 918 #endif
Chris@16 919 #endif
Chris@16 920
Chris@16 921 // peta
Chris@16 922
Chris@16 923 //template <>
Chris@16 924 //struct ratio_string_is_localizable<peta> : true_type {};
Chris@16 925 //
Chris@16 926 //template <>
Chris@16 927 //struct ratio_string_id<peta> : integral_constant<int,15> {};
Chris@16 928
Chris@16 929
Chris@16 930 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 931 template <typename CharT>
Chris@16 932 struct ratio_string<peta, CharT> :
Chris@16 933 ratio_detail::ratio_string_static<peta,CharT>
Chris@16 934 {};
Chris@16 935
Chris@16 936 #else
Chris@16 937 template <>
Chris@16 938 struct ratio_string<peta, char>
Chris@16 939 {
Chris@16 940 static std::string short_name() {return std::string(1, 'P');}
Chris@16 941 static std::string long_name() {return std::string("peta");}
Chris@16 942 static std::string symbol() {return short_name();}
Chris@16 943 static std::string prefix() {return long_name();}
Chris@16 944 };
Chris@16 945
Chris@16 946 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 947
Chris@16 948 template <>
Chris@16 949 struct ratio_string<peta, char16_t>
Chris@16 950 {
Chris@16 951 static std::u16string short_name() {return std::u16string(1, u'P');}
Chris@16 952 static std::u16string long_name() {return std::u16string(u"peta");}
Chris@16 953 static std::u16string symbol() {return short_name();}
Chris@16 954 static std::u16string prefix() {return long_name();}
Chris@16 955 };
Chris@16 956
Chris@16 957 template <>
Chris@16 958 struct ratio_string<peta, char32_t>
Chris@16 959 {
Chris@16 960 static std::u32string short_name() {return std::u32string(1, U'P');}
Chris@16 961 static std::u32string long_name() {return std::u32string(U"peta");}
Chris@16 962 static std::u32string symbol() {return short_name();}
Chris@16 963 static std::u32string prefix() {return long_name();}
Chris@16 964 };
Chris@16 965
Chris@16 966 #endif
Chris@16 967
Chris@16 968 #ifndef BOOST_NO_STD_WSTRING
Chris@16 969 template <>
Chris@16 970 struct ratio_string<peta, wchar_t>
Chris@16 971 {
Chris@16 972 static std::wstring short_name() {return std::wstring(1, L'P');}
Chris@16 973 static std::wstring long_name() {return std::wstring(L"peta");}
Chris@16 974 static std::wstring symbol() {return short_name();}
Chris@16 975 static std::wstring prefix() {return long_name();}
Chris@16 976 };
Chris@16 977 #endif
Chris@16 978 #endif
Chris@16 979
Chris@16 980 // exa
Chris@16 981
Chris@16 982 //template <>
Chris@16 983 //struct ratio_string_is_localizable<exa> : true_type {};
Chris@16 984 //
Chris@16 985 //template <>
Chris@16 986 //struct ratio_string_id<exa> : integral_constant<int,18> {};
Chris@16 987
Chris@16 988 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 989 template <typename CharT>
Chris@16 990 struct ratio_string<exa, CharT> :
Chris@16 991 ratio_detail::ratio_string_static<exa,CharT>
Chris@16 992 {};
Chris@16 993
Chris@16 994 #else
Chris@16 995 template <>
Chris@16 996 struct ratio_string<exa, char>
Chris@16 997 {
Chris@16 998 static std::string short_name() {return std::string(1, 'E');}
Chris@16 999 static std::string long_name() {return std::string("exa");}
Chris@16 1000 static std::string symbol() {return short_name();}
Chris@16 1001 static std::string prefix() {return long_name();}
Chris@16 1002 };
Chris@16 1003
Chris@16 1004 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 1005
Chris@16 1006 template <>
Chris@16 1007 struct ratio_string<exa, char16_t>
Chris@16 1008 {
Chris@16 1009 static std::u16string short_name() {return std::u16string(1, u'E');}
Chris@16 1010 static std::u16string long_name() {return std::u16string(u"exa");}
Chris@16 1011 static std::u16string symbol() {return short_name();}
Chris@16 1012 static std::u16string prefix() {return long_name();}
Chris@16 1013 };
Chris@16 1014
Chris@16 1015 template <>
Chris@16 1016 struct ratio_string<exa, char32_t>
Chris@16 1017 {
Chris@16 1018 static std::u32string short_name() {return std::u32string(1, U'E');}
Chris@16 1019 static std::u32string long_name() {return std::u32string(U"exa");}
Chris@16 1020 static std::u32string symbol() {return short_name();}
Chris@16 1021 static std::u32string prefix() {return long_name();}
Chris@16 1022 };
Chris@16 1023
Chris@16 1024 #endif
Chris@16 1025
Chris@16 1026 #ifndef BOOST_NO_STD_WSTRING
Chris@16 1027 template <>
Chris@16 1028 struct ratio_string<exa, wchar_t>
Chris@16 1029 {
Chris@16 1030 static std::wstring short_name() {return std::wstring(1, L'E');}
Chris@16 1031 static std::wstring long_name() {return std::wstring(L"exa");}
Chris@16 1032 static std::wstring symbol() {return short_name();}
Chris@16 1033 static std::wstring prefix() {return long_name();}
Chris@16 1034 };
Chris@16 1035 #endif
Chris@16 1036 #endif
Chris@16 1037
Chris@101 1038 #ifdef BOOST_RATIO_EXTENSIONS
Chris@101 1039
Chris@101 1040 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 1041 template <typename CharT>
Chris@101 1042 struct ratio_string<kibi, CharT> :
Chris@101 1043 ratio_detail::ratio_string_static<kibi,CharT>
Chris@101 1044 {};
Chris@101 1045
Chris@101 1046 #else
Chris@101 1047 template <>
Chris@101 1048 struct ratio_string<kibi, char>
Chris@101 1049 {
Chris@101 1050 static std::string short_name() {return std::string("Ki");}
Chris@101 1051 static std::string long_name() {return std::string("kibi");}
Chris@101 1052 static std::string symbol() {return short_name();}
Chris@101 1053 static std::string prefix() {return long_name();}
Chris@101 1054 };
Chris@101 1055
Chris@101 1056 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 1057
Chris@101 1058 template <>
Chris@101 1059 struct ratio_string<kibi, char16_t>
Chris@101 1060 {
Chris@101 1061 static std::u16string short_name() {return std::u16string(u"Ki");}
Chris@101 1062 static std::u16string long_name() {return std::u16string(u"kibi");}
Chris@101 1063 static std::u16string symbol() {return short_name();}
Chris@101 1064 static std::u16string prefix() {return long_name();}
Chris@101 1065 };
Chris@101 1066
Chris@101 1067 template <>
Chris@101 1068 struct ratio_string<kibi, char32_t>
Chris@101 1069 {
Chris@101 1070 static std::u32string short_name() {return std::u32string(U"Ki");}
Chris@101 1071 static std::u32string long_name() {return std::u32string(U"kibi");}
Chris@101 1072 static std::u32string symbol() {return short_name();}
Chris@101 1073 static std::u32string prefix() {return long_name();}
Chris@101 1074 };
Chris@101 1075
Chris@101 1076 #endif
Chris@101 1077
Chris@101 1078 #ifndef BOOST_NO_STD_WSTRING
Chris@101 1079 template <>
Chris@101 1080 struct ratio_string<kibi, wchar_t>
Chris@101 1081 {
Chris@101 1082 static std::wstring short_name() {return std::wstring(L"Ki");}
Chris@101 1083 static std::wstring long_name() {return std::wstring(L"kibi");}
Chris@101 1084 static std::wstring symbol() {return short_name();}
Chris@101 1085 static std::wstring prefix() {return long_name();}
Chris@101 1086 };
Chris@101 1087 #endif
Chris@101 1088 #endif
Chris@101 1089
Chris@101 1090 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 1091 template <typename CharT>
Chris@101 1092 struct ratio_string<mebi, CharT> :
Chris@101 1093 ratio_detail::ratio_string_static<mebi,CharT>
Chris@101 1094 {};
Chris@101 1095
Chris@101 1096 #else
Chris@101 1097 template <>
Chris@101 1098 struct ratio_string<mebi, char>
Chris@101 1099 {
Chris@101 1100 static std::string short_name() {return std::string("Mi");}
Chris@101 1101 static std::string long_name() {return std::string("mebi");}
Chris@101 1102 static std::string symbol() {return short_name();}
Chris@101 1103 static std::string prefix() {return long_name();}
Chris@101 1104 };
Chris@101 1105
Chris@101 1106 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 1107
Chris@101 1108 template <>
Chris@101 1109 struct ratio_string<mebi, char16_t>
Chris@101 1110 {
Chris@101 1111 static std::u16string short_name() {return std::u16string(u"Mi");}
Chris@101 1112 static std::u16string long_name() {return std::u16string(u"mebi");}
Chris@101 1113 static std::u16string symbol() {return short_name();}
Chris@101 1114 static std::u16string prefix() {return long_name();}
Chris@101 1115 };
Chris@101 1116
Chris@101 1117 template <>
Chris@101 1118 struct ratio_string<mebi, char32_t>
Chris@101 1119 {
Chris@101 1120 static std::u32string short_name() {return std::u32string(U"Mi");}
Chris@101 1121 static std::u32string long_name() {return std::u32string(U"mebi");}
Chris@101 1122 static std::u32string symbol() {return short_name();}
Chris@101 1123 static std::u32string prefix() {return long_name();}
Chris@101 1124 };
Chris@101 1125
Chris@101 1126 #endif
Chris@101 1127
Chris@101 1128 #ifndef BOOST_NO_STD_WSTRING
Chris@101 1129 template <>
Chris@101 1130 struct ratio_string<mebi, wchar_t>
Chris@101 1131 {
Chris@101 1132 static std::wstring short_name() {return std::wstring(L"Mi");}
Chris@101 1133 static std::wstring long_name() {return std::wstring(L"mebi");}
Chris@101 1134 static std::wstring symbol() {return short_name();}
Chris@101 1135 static std::wstring prefix() {return long_name();}
Chris@101 1136 };
Chris@101 1137 #endif
Chris@101 1138 #endif
Chris@101 1139
Chris@101 1140 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 1141 template <typename CharT>
Chris@101 1142 struct ratio_string<gibi, CharT> :
Chris@101 1143 ratio_detail::ratio_string_static<gibi,CharT>
Chris@101 1144 {};
Chris@101 1145
Chris@101 1146 #else
Chris@101 1147 template <>
Chris@101 1148 struct ratio_string<gibi, char>
Chris@101 1149 {
Chris@101 1150 static std::string short_name() {return std::string("Gi");}
Chris@101 1151 static std::string long_name() {return std::string("gibi");}
Chris@101 1152 static std::string symbol() {return short_name();}
Chris@101 1153 static std::string prefix() {return long_name();}
Chris@101 1154 };
Chris@101 1155
Chris@101 1156 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 1157
Chris@101 1158 template <>
Chris@101 1159 struct ratio_string<gibi, char16_t>
Chris@101 1160 {
Chris@101 1161 static std::u16string short_name() {return std::u16string(u"Gi");}
Chris@101 1162 static std::u16string long_name() {return std::u16string(u"gibi");}
Chris@101 1163 static std::u16string symbol() {return short_name();}
Chris@101 1164 static std::u16string prefix() {return long_name();}
Chris@101 1165 };
Chris@101 1166
Chris@101 1167 template <>
Chris@101 1168 struct ratio_string<gibi, char32_t>
Chris@101 1169 {
Chris@101 1170 static std::u32string short_name() {return std::u32string(U"Gi");}
Chris@101 1171 static std::u32string long_name() {return std::u32string(U"gibi");}
Chris@101 1172 static std::u32string symbol() {return short_name();}
Chris@101 1173 static std::u32string prefix() {return long_name();}
Chris@101 1174 };
Chris@101 1175
Chris@101 1176 #endif
Chris@101 1177
Chris@101 1178 #ifndef BOOST_NO_STD_WSTRING
Chris@101 1179 template <>
Chris@101 1180 struct ratio_string<gibi, wchar_t>
Chris@101 1181 {
Chris@101 1182 static std::wstring short_name() {return std::wstring(L"Gi");}
Chris@101 1183 static std::wstring long_name() {return std::wstring(L"gibi");}
Chris@101 1184 static std::wstring symbol() {return short_name();}
Chris@101 1185 static std::wstring prefix() {return long_name();}
Chris@101 1186 };
Chris@101 1187 #endif
Chris@101 1188 #endif
Chris@101 1189
Chris@101 1190 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 1191 template <typename CharT>
Chris@101 1192 struct ratio_string<tebi, CharT> :
Chris@101 1193 ratio_detail::ratio_string_static<tebi,CharT>
Chris@101 1194 {};
Chris@101 1195
Chris@101 1196 #else
Chris@101 1197 template <>
Chris@101 1198 struct ratio_string<tebi, char>
Chris@101 1199 {
Chris@101 1200 static std::string short_name() {return std::string("Ti");}
Chris@101 1201 static std::string long_name() {return std::string("tebi");}
Chris@101 1202 static std::string symbol() {return short_name();}
Chris@101 1203 static std::string prefix() {return long_name();}
Chris@101 1204 };
Chris@101 1205
Chris@101 1206 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 1207
Chris@101 1208 template <>
Chris@101 1209 struct ratio_string<tebi, char16_t>
Chris@101 1210 {
Chris@101 1211 static std::u16string short_name() {return std::u16string(u"Ti");}
Chris@101 1212 static std::u16string long_name() {return std::u16string(u"tebi");}
Chris@101 1213 static std::u16string symbol() {return short_name();}
Chris@101 1214 static std::u16string prefix() {return long_name();}
Chris@101 1215 };
Chris@101 1216
Chris@101 1217 template <>
Chris@101 1218 struct ratio_string<tebi, char32_t>
Chris@101 1219 {
Chris@101 1220 static std::u32string short_name() {return std::u32string(U"Ti");}
Chris@101 1221 static std::u32string long_name() {return std::u32string(U"tebi");}
Chris@101 1222 static std::u32string symbol() {return short_name();}
Chris@101 1223 static std::u32string prefix() {return long_name();}
Chris@101 1224 };
Chris@101 1225
Chris@101 1226 #endif
Chris@101 1227
Chris@101 1228 #ifndef BOOST_NO_STD_WSTRING
Chris@101 1229 template <>
Chris@101 1230 struct ratio_string<tebi, wchar_t>
Chris@101 1231 {
Chris@101 1232 static std::wstring short_name() {return std::wstring(L"Ti");}
Chris@101 1233 static std::wstring long_name() {return std::wstring(L"tebi");}
Chris@101 1234 static std::wstring symbol() {return short_name();}
Chris@101 1235 static std::wstring prefix() {return long_name();}
Chris@101 1236 };
Chris@101 1237 #endif
Chris@101 1238 #endif
Chris@101 1239
Chris@101 1240 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 1241 template <typename CharT>
Chris@101 1242 struct ratio_string<pebi, CharT> :
Chris@101 1243 ratio_detail::ratio_string_static<pebi,CharT>
Chris@101 1244 {};
Chris@101 1245
Chris@101 1246 #else
Chris@101 1247 template <>
Chris@101 1248 struct ratio_string<pebi, char>
Chris@101 1249 {
Chris@101 1250 static std::string short_name() {return std::string("Pi");}
Chris@101 1251 static std::string long_name() {return std::string("pebi");}
Chris@101 1252 static std::string symbol() {return short_name();}
Chris@101 1253 static std::string prefix() {return long_name();}
Chris@101 1254 };
Chris@101 1255
Chris@101 1256 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 1257
Chris@101 1258 template <>
Chris@101 1259 struct ratio_string<pebi, char16_t>
Chris@101 1260 {
Chris@101 1261 static std::u16string short_name() {return std::u16string(u"Pi");}
Chris@101 1262 static std::u16string long_name() {return std::u16string(u"pebi");}
Chris@101 1263 static std::u16string symbol() {return short_name();}
Chris@101 1264 static std::u16string prefix() {return long_name();}
Chris@101 1265 };
Chris@101 1266
Chris@101 1267 template <>
Chris@101 1268 struct ratio_string<pebi, char32_t>
Chris@101 1269 {
Chris@101 1270 static std::u32string short_name() {return std::u32string(U"Pi");}
Chris@101 1271 static std::u32string long_name() {return std::u32string(U"pebi");}
Chris@101 1272 static std::u32string symbol() {return short_name();}
Chris@101 1273 static std::u32string prefix() {return long_name();}
Chris@101 1274 };
Chris@101 1275
Chris@101 1276 #endif
Chris@101 1277
Chris@101 1278 #ifndef BOOST_NO_STD_WSTRING
Chris@101 1279 template <>
Chris@101 1280 struct ratio_string<pebi, wchar_t>
Chris@101 1281 {
Chris@101 1282 static std::wstring short_name() {return std::wstring(L"Pi");}
Chris@101 1283 static std::wstring long_name() {return std::wstring(L"pebi");}
Chris@101 1284 static std::wstring symbol() {return short_name();}
Chris@101 1285 static std::wstring prefix() {return long_name();}
Chris@101 1286 };
Chris@101 1287 #endif
Chris@101 1288 #endif
Chris@101 1289
Chris@101 1290 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 1291 template <typename CharT>
Chris@101 1292 struct ratio_string<exbi, CharT> :
Chris@101 1293 ratio_detail::ratio_string_static<exbi,CharT>
Chris@101 1294 {};
Chris@101 1295
Chris@101 1296 #else
Chris@101 1297 template <>
Chris@101 1298 struct ratio_string<exbi, char>
Chris@101 1299 {
Chris@101 1300 static std::string short_name() {return std::string("Ei");}
Chris@101 1301 static std::string long_name() {return std::string("exbi");}
Chris@101 1302 static std::string symbol() {return short_name();}
Chris@101 1303 static std::string prefix() {return long_name();}
Chris@101 1304 };
Chris@101 1305
Chris@101 1306 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 1307
Chris@101 1308 template <>
Chris@101 1309 struct ratio_string<exbi, char16_t>
Chris@101 1310 {
Chris@101 1311 static std::u16string short_name() {return std::u16string(u"Ei");}
Chris@101 1312 static std::u16string long_name() {return std::u16string(u"exbi");}
Chris@101 1313 static std::u16string symbol() {return short_name();}
Chris@101 1314 static std::u16string prefix() {return long_name();}
Chris@101 1315 };
Chris@101 1316
Chris@101 1317 template <>
Chris@101 1318 struct ratio_string<exbi, char32_t>
Chris@101 1319 {
Chris@101 1320 static std::u32string short_name() {return std::u32string(U"Ei");}
Chris@101 1321 static std::u32string long_name() {return std::u32string(U"exbi");}
Chris@101 1322 static std::u32string symbol() {return short_name();}
Chris@101 1323 static std::u32string prefix() {return long_name();}
Chris@101 1324 };
Chris@101 1325
Chris@101 1326 #endif
Chris@101 1327
Chris@101 1328 #ifndef BOOST_NO_STD_WSTRING
Chris@101 1329 template <>
Chris@101 1330 struct ratio_string<exbi, wchar_t>
Chris@101 1331 {
Chris@101 1332 static std::wstring short_name() {return std::wstring(L"Ei");}
Chris@101 1333 static std::wstring long_name() {return std::wstring(L"exbi");}
Chris@101 1334 static std::wstring symbol() {return short_name();}
Chris@101 1335 static std::wstring prefix() {return long_name();}
Chris@101 1336 };
Chris@101 1337 #endif
Chris@101 1338 #endif
Chris@101 1339 #endif
Chris@16 1340 }
Chris@16 1341
Chris@16 1342 #endif // BOOST_RATIO_RATIO_IO_HPP