annotate DEPENDENCIES/generic/include/boost/ratio/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_RATIO_IO_HPP
Chris@16 13 #define BOOST_RATIO_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> prefix();
Chris@16 29 static basic_string<CharT> symbol();
Chris@16 30 };
Chris@16 31
Chris@16 32 } // boost
Chris@16 33
Chris@16 34 */
Chris@16 35 #include <boost/ratio/config.hpp>
Chris@16 36
Chris@16 37 #ifdef BOOST_RATIO_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
Chris@16 38 #include <boost/ratio/detail/ratio_io.hpp>
Chris@16 39 #else
Chris@16 40
Chris@16 41 #include <boost/config.hpp>
Chris@16 42 #include <boost/ratio/ratio.hpp>
Chris@16 43 #include <boost/type_traits/integral_constant.hpp>
Chris@16 44 #include <string>
Chris@16 45 #include <sstream>
Chris@16 46
Chris@16 47
Chris@16 48 #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 49 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 50 #undef BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 51 #endif
Chris@16 52 #else
Chris@16 53 #define BOOST_RATIO_HAS_UNICODE_SUPPORT 1
Chris@16 54 #endif
Chris@16 55
Chris@16 56 namespace boost {
Chris@16 57
Chris@16 58 //template <class Ratio>
Chris@16 59 //struct ratio_string_is_localizable : false_type {};
Chris@16 60 //template <class Ratio>
Chris@16 61 //struct ratio_string_id : integral_constant<int,0> {};
Chris@16 62
Chris@16 63 template <class Ratio, class CharT>
Chris@16 64 struct ratio_string
Chris@16 65 {
Chris@16 66 static std::basic_string<CharT> symbol() {return prefix();}
Chris@16 67 static std::basic_string<CharT> prefix();
Chris@16 68 };
Chris@16 69
Chris@16 70 template <class Ratio, class CharT>
Chris@16 71 std::basic_string<CharT>
Chris@16 72 ratio_string<Ratio, CharT>::prefix()
Chris@16 73 {
Chris@16 74 std::basic_ostringstream<CharT> os;
Chris@16 75 os << CharT('[') << Ratio::num << CharT('/')
Chris@16 76 << Ratio::den << CharT(']');
Chris@16 77 return os.str();
Chris@16 78 }
Chris@16 79
Chris@16 80 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 81 namespace ratio_detail {
Chris@16 82 template <class Ratio, class CharT>
Chris@16 83 struct ratio_string_static
Chris@16 84 {
Chris@16 85 static std::string symbol() {
Chris@16 86 return std::basic_string<CharT>(
Chris@16 87 static_string::c_str<
Chris@16 88 typename ratio_static_string<Ratio, CharT>::symbol
Chris@16 89 >::value);
Chris@16 90 }
Chris@16 91 static std::string prefix() {
Chris@16 92 return std::basic_string<CharT>(
Chris@16 93 static_string::c_str<
Chris@16 94 typename ratio_static_string<Ratio, CharT>::prefix
Chris@16 95 >::value);
Chris@16 96 }
Chris@16 97 };
Chris@16 98 }
Chris@16 99 #endif
Chris@16 100 // atto
Chris@16 101 //template <>
Chris@16 102 //struct ratio_string_is_localizable<atto> : true_type {};
Chris@16 103 //
Chris@16 104 //template <>
Chris@16 105 //struct ratio_string_id<atto> : integral_constant<int,-18> {};
Chris@16 106
Chris@16 107 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 108 template <typename CharT>
Chris@16 109 struct ratio_string<atto, CharT> :
Chris@16 110 ratio_detail::ratio_string_static<atto,CharT>
Chris@16 111 {};
Chris@16 112
Chris@16 113 #else
Chris@16 114 template <>
Chris@16 115 struct ratio_string<atto, char>
Chris@16 116 {
Chris@16 117 static std::string symbol() {return std::string(1, 'a');}
Chris@16 118 static std::string prefix() {return std::string("atto");}
Chris@16 119 };
Chris@16 120
Chris@16 121 #if defined 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 symbol() {return std::u16string(1, u'a');}
Chris@16 127 static std::u16string prefix() {return std::u16string(u"atto");}
Chris@16 128 };
Chris@16 129
Chris@16 130 template <>
Chris@16 131 struct ratio_string<atto, char32_t>
Chris@16 132 {
Chris@16 133 static std::u32string symbol() {return std::u32string(1, U'a');}
Chris@16 134 static std::u32string prefix() {return std::u32string(U"atto");}
Chris@16 135 };
Chris@16 136
Chris@16 137 #endif
Chris@16 138
Chris@16 139 #ifndef BOOST_NO_STD_WSTRING
Chris@16 140 template <>
Chris@16 141 struct ratio_string<atto, wchar_t>
Chris@16 142 {
Chris@16 143 static std::wstring symbol() {return std::wstring(1, L'a');}
Chris@16 144 static std::wstring prefix() {return std::wstring(L"atto");}
Chris@16 145 };
Chris@16 146 #endif
Chris@16 147 #endif
Chris@16 148
Chris@16 149 // femto
Chris@16 150
Chris@16 151 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 152 template <typename CharT>
Chris@16 153 struct ratio_string<femto, CharT> :
Chris@16 154 ratio_detail::ratio_string_static<femto,CharT>
Chris@16 155 {};
Chris@16 156
Chris@16 157 #else
Chris@16 158
Chris@16 159 template <>
Chris@16 160 struct ratio_string<femto, char>
Chris@16 161 {
Chris@16 162 static std::string symbol() {return std::string(1, 'f');}
Chris@16 163 static std::string prefix() {return std::string("femto");}
Chris@16 164 };
Chris@16 165
Chris@16 166 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 167
Chris@16 168 template <>
Chris@16 169 struct ratio_string<femto, char16_t>
Chris@16 170 {
Chris@16 171 static std::u16string symbol() {return std::u16string(1, u'f');}
Chris@16 172 static std::u16string prefix() {return std::u16string(u"femto");}
Chris@16 173 };
Chris@16 174
Chris@16 175 template <>
Chris@16 176 struct ratio_string<femto, char32_t>
Chris@16 177 {
Chris@16 178 static std::u32string symbol() {return std::u32string(1, U'f');}
Chris@16 179 static std::u32string prefix() {return std::u32string(U"femto");}
Chris@16 180 };
Chris@16 181
Chris@16 182 #endif
Chris@16 183
Chris@16 184 #ifndef BOOST_NO_STD_WSTRING
Chris@16 185 template <>
Chris@16 186 struct ratio_string<femto, wchar_t>
Chris@16 187 {
Chris@16 188 static std::wstring symbol() {return std::wstring(1, L'f');}
Chris@16 189 static std::wstring prefix() {return std::wstring(L"femto");}
Chris@16 190 };
Chris@16 191 #endif
Chris@16 192 #endif
Chris@16 193
Chris@16 194 // pico
Chris@16 195
Chris@16 196 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 197 template <typename CharT>
Chris@16 198 struct ratio_string<pico, CharT> :
Chris@16 199 ratio_detail::ratio_string_static<pico,CharT>
Chris@16 200 {};
Chris@16 201
Chris@16 202 #else
Chris@16 203 template <>
Chris@16 204 struct ratio_string<pico, char>
Chris@16 205 {
Chris@16 206 static std::string symbol() {return std::string(1, 'p');}
Chris@16 207 static std::string prefix() {return std::string("pico");}
Chris@16 208 };
Chris@16 209
Chris@16 210 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 211
Chris@16 212 template <>
Chris@16 213 struct ratio_string<pico, char16_t>
Chris@16 214 {
Chris@16 215 static std::u16string symbol() {return std::u16string(1, u'p');}
Chris@16 216 static std::u16string prefix() {return std::u16string(u"pico");}
Chris@16 217 };
Chris@16 218
Chris@16 219 template <>
Chris@16 220 struct ratio_string<pico, char32_t>
Chris@16 221 {
Chris@16 222 static std::u32string symbol() {return std::u32string(1, U'p');}
Chris@16 223 static std::u32string prefix() {return std::u32string(U"pico");}
Chris@16 224 };
Chris@16 225
Chris@16 226 #endif
Chris@16 227
Chris@16 228 #ifndef BOOST_NO_STD_WSTRING
Chris@16 229 template <>
Chris@16 230 struct ratio_string<pico, wchar_t>
Chris@16 231 {
Chris@16 232 static std::wstring symbol() {return std::wstring(1, L'p');}
Chris@16 233 static std::wstring prefix() {return std::wstring(L"pico");}
Chris@16 234 };
Chris@16 235 #endif
Chris@16 236 #endif
Chris@16 237
Chris@16 238 // nano
Chris@16 239
Chris@16 240 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 241 template <typename CharT>
Chris@16 242 struct ratio_string<nano, CharT> :
Chris@16 243 ratio_detail::ratio_string_static<nano,CharT>
Chris@16 244 {};
Chris@16 245
Chris@16 246 #else
Chris@16 247 template <>
Chris@16 248 struct ratio_string<nano, char>
Chris@16 249 {
Chris@16 250 static std::string symbol() {return std::string(1, 'n');}
Chris@16 251 static std::string prefix() {return std::string("nano");}
Chris@16 252 };
Chris@16 253
Chris@16 254 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 255
Chris@16 256 template <>
Chris@16 257 struct ratio_string<nano, char16_t>
Chris@16 258 {
Chris@16 259 static std::u16string symbol() {return std::u16string(1, u'n');}
Chris@16 260 static std::u16string prefix() {return std::u16string(u"nano");}
Chris@16 261 };
Chris@16 262
Chris@16 263 template <>
Chris@16 264 struct ratio_string<nano, char32_t>
Chris@16 265 {
Chris@16 266 static std::u32string symbol() {return std::u32string(1, U'n');}
Chris@16 267 static std::u32string prefix() {return std::u32string(U"nano");}
Chris@16 268 };
Chris@16 269
Chris@16 270 #endif
Chris@16 271
Chris@16 272 #ifndef BOOST_NO_STD_WSTRING
Chris@16 273 template <>
Chris@16 274 struct ratio_string<nano, wchar_t>
Chris@16 275 {
Chris@16 276 static std::wstring symbol() {return std::wstring(1, L'n');}
Chris@16 277 static std::wstring prefix() {return std::wstring(L"nano");}
Chris@16 278 };
Chris@16 279 #endif
Chris@16 280 #endif
Chris@16 281
Chris@16 282 // micro
Chris@16 283
Chris@16 284 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 285 template <typename CharT>
Chris@16 286 struct ratio_string<micro, CharT> :
Chris@16 287 ratio_detail::ratio_string_static<micro,CharT>
Chris@16 288 {};
Chris@16 289
Chris@16 290 #else
Chris@16 291 template <>
Chris@16 292 struct ratio_string<micro, char>
Chris@16 293 {
Chris@16 294 static std::string symbol() {return std::string("\xC2\xB5");}
Chris@16 295 static std::string prefix() {return std::string("micro");}
Chris@16 296 };
Chris@16 297
Chris@16 298 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 299
Chris@16 300 template <>
Chris@16 301 struct ratio_string<micro, char16_t>
Chris@16 302 {
Chris@16 303 static std::u16string symbol() {return std::u16string(1, u'\xB5');}
Chris@16 304 static std::u16string prefix() {return std::u16string(u"micro");}
Chris@16 305 };
Chris@16 306
Chris@16 307 template <>
Chris@16 308 struct ratio_string<micro, char32_t>
Chris@16 309 {
Chris@16 310 static std::u32string symbol() {return std::u32string(1, U'\xB5');}
Chris@16 311 static std::u32string prefix() {return std::u32string(U"micro");}
Chris@16 312 };
Chris@16 313
Chris@16 314 #endif
Chris@16 315
Chris@16 316 #ifndef BOOST_NO_STD_WSTRING
Chris@16 317 template <>
Chris@16 318 struct ratio_string<micro, wchar_t>
Chris@16 319 {
Chris@16 320 static std::wstring symbol() {return std::wstring(1, L'\xB5');}
Chris@16 321 static std::wstring prefix() {return std::wstring(L"micro");}
Chris@16 322 };
Chris@16 323 #endif
Chris@16 324 #endif
Chris@16 325
Chris@16 326 // milli
Chris@16 327
Chris@16 328 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 329 template <typename CharT>
Chris@16 330 struct ratio_string<milli, CharT> :
Chris@16 331 ratio_detail::ratio_string_static<milli,CharT>
Chris@16 332 {};
Chris@16 333
Chris@16 334 #else
Chris@16 335 template <>
Chris@16 336 struct ratio_string<milli, char>
Chris@16 337 {
Chris@16 338 static std::string symbol() {return std::string(1, 'm');}
Chris@16 339 static std::string prefix() {return std::string("milli");}
Chris@16 340 };
Chris@16 341
Chris@16 342 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 343
Chris@16 344 template <>
Chris@16 345 struct ratio_string<milli, char16_t>
Chris@16 346 {
Chris@16 347 static std::u16string symbol() {return std::u16string(1, u'm');}
Chris@16 348 static std::u16string prefix() {return std::u16string(u"milli");}
Chris@16 349 };
Chris@16 350
Chris@16 351 template <>
Chris@16 352 struct ratio_string<milli, char32_t>
Chris@16 353 {
Chris@16 354 static std::u32string symbol() {return std::u32string(1, U'm');}
Chris@16 355 static std::u32string prefix() {return std::u32string(U"milli");}
Chris@16 356 };
Chris@16 357
Chris@16 358 #endif
Chris@16 359
Chris@16 360 #ifndef BOOST_NO_STD_WSTRING
Chris@16 361 template <>
Chris@16 362 struct ratio_string<milli, wchar_t>
Chris@16 363 {
Chris@16 364 static std::wstring symbol() {return std::wstring(1, L'm');}
Chris@16 365 static std::wstring prefix() {return std::wstring(L"milli");}
Chris@16 366 };
Chris@16 367 #endif
Chris@16 368 #endif
Chris@16 369
Chris@16 370 // centi
Chris@16 371
Chris@16 372 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 373 template <typename CharT>
Chris@16 374 struct ratio_string<centi, CharT> :
Chris@16 375 ratio_detail::ratio_string_static<centi,CharT>
Chris@16 376 {};
Chris@16 377
Chris@16 378 #else
Chris@16 379 template <>
Chris@16 380 struct ratio_string<centi, char>
Chris@16 381 {
Chris@16 382 static std::string symbol() {return std::string(1, 'c');}
Chris@16 383 static std::string prefix() {return std::string("centi");}
Chris@16 384 };
Chris@16 385
Chris@16 386 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 387
Chris@16 388 template <>
Chris@16 389 struct ratio_string<centi, char16_t>
Chris@16 390 {
Chris@16 391 static std::u16string symbol() {return std::u16string(1, u'c');}
Chris@16 392 static std::u16string prefix() {return std::u16string(u"centi");}
Chris@16 393 };
Chris@16 394
Chris@16 395 template <>
Chris@16 396 struct ratio_string<centi, char32_t>
Chris@16 397 {
Chris@16 398 static std::u32string symbol() {return std::u32string(1, U'c');}
Chris@16 399 static std::u32string prefix() {return std::u32string(U"centi");}
Chris@16 400 };
Chris@16 401
Chris@16 402 #endif
Chris@16 403
Chris@16 404 #ifndef BOOST_NO_STD_WSTRING
Chris@16 405 template <>
Chris@16 406 struct ratio_string<centi, wchar_t>
Chris@16 407 {
Chris@16 408 static std::wstring symbol() {return std::wstring(1, L'c');}
Chris@16 409 static std::wstring prefix() {return std::wstring(L"centi");}
Chris@16 410 };
Chris@16 411 #endif
Chris@16 412 #endif
Chris@16 413
Chris@16 414 // deci
Chris@16 415
Chris@16 416 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 417 template <typename CharT>
Chris@16 418 struct ratio_string<deci, CharT> :
Chris@16 419 ratio_detail::ratio_string_static<deci,CharT>
Chris@16 420 {};
Chris@16 421
Chris@16 422 #else
Chris@16 423
Chris@16 424 template <>
Chris@16 425 struct ratio_string<deci, char>
Chris@16 426 {
Chris@16 427 static std::string symbol() {return std::string(1, 'd');}
Chris@16 428 static std::string prefix() {return std::string("deci");}
Chris@16 429 };
Chris@16 430
Chris@16 431 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 432
Chris@16 433 template <>
Chris@16 434 struct ratio_string<deci, char16_t>
Chris@16 435 {
Chris@16 436 static std::u16string symbol() {return std::u16string(1, u'd');}
Chris@16 437 static std::u16string prefix() {return std::u16string(u"deci");}
Chris@16 438 };
Chris@16 439
Chris@16 440 template <>
Chris@16 441 struct ratio_string<deci, char32_t>
Chris@16 442 {
Chris@16 443 static std::u32string symbol() {return std::u32string(1, U'd');}
Chris@16 444 static std::u32string prefix() {return std::u32string(U"deci");}
Chris@16 445 };
Chris@16 446
Chris@16 447 #endif
Chris@16 448
Chris@16 449 #ifndef BOOST_NO_STD_WSTRING
Chris@16 450 template <>
Chris@16 451 struct ratio_string<deci, wchar_t>
Chris@16 452 {
Chris@16 453 static std::wstring symbol() {return std::wstring(1, L'd');}
Chris@16 454 static std::wstring prefix() {return std::wstring(L"deci");}
Chris@16 455 };
Chris@16 456 #endif
Chris@16 457 #endif
Chris@16 458
Chris@16 459 // unit
Chris@16 460
Chris@16 461 // deca
Chris@16 462
Chris@16 463
Chris@16 464 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 465 template <typename CharT>
Chris@16 466 struct ratio_string<deca, CharT> :
Chris@16 467 ratio_detail::ratio_string_static<deca,CharT>
Chris@16 468 {};
Chris@16 469
Chris@16 470 #else
Chris@16 471 template <>
Chris@16 472 struct ratio_string<deca, char>
Chris@16 473 {
Chris@16 474 static std::string symbol() {return std::string("da");}
Chris@16 475 static std::string prefix() {return std::string("deca");}
Chris@16 476 };
Chris@16 477
Chris@16 478 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 479
Chris@16 480 template <>
Chris@16 481 struct ratio_string<deca, char16_t>
Chris@16 482 {
Chris@16 483 static std::u16string symbol() {return std::u16string(u"da");}
Chris@16 484 static std::u16string prefix() {return std::u16string(u"deca");}
Chris@16 485 };
Chris@16 486
Chris@16 487 template <>
Chris@16 488 struct ratio_string<deca, char32_t>
Chris@16 489 {
Chris@16 490 static std::u32string symbol() {return std::u32string(U"da");}
Chris@16 491 static std::u32string prefix() {return std::u32string(U"deca");}
Chris@16 492 };
Chris@16 493
Chris@16 494 #endif
Chris@16 495
Chris@16 496 #ifndef BOOST_NO_STD_WSTRING
Chris@16 497 template <>
Chris@16 498 struct ratio_string<deca, wchar_t>
Chris@16 499 {
Chris@16 500 static std::wstring symbol() {return std::wstring(L"da");}
Chris@16 501 static std::wstring prefix() {return std::wstring(L"deca");}
Chris@16 502 };
Chris@16 503 #endif
Chris@16 504 #endif
Chris@16 505
Chris@16 506 // hecto
Chris@16 507
Chris@16 508 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 509 template <typename CharT>
Chris@16 510 struct ratio_string<hecto, CharT> :
Chris@16 511 ratio_detail::ratio_string_static<hecto,CharT>
Chris@16 512 {};
Chris@16 513
Chris@16 514 #else
Chris@16 515 template <>
Chris@16 516 struct ratio_string<hecto, char>
Chris@16 517 {
Chris@16 518 static std::string symbol() {return std::string(1, 'h');}
Chris@16 519 static std::string prefix() {return std::string("hecto");}
Chris@16 520 };
Chris@16 521
Chris@16 522 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 523
Chris@16 524 template <>
Chris@16 525 struct ratio_string<hecto, char16_t>
Chris@16 526 {
Chris@16 527 static std::u16string symbol() {return std::u16string(1, u'h');}
Chris@16 528 static std::u16string prefix() {return std::u16string(u"hecto");}
Chris@16 529 };
Chris@16 530
Chris@16 531 template <>
Chris@16 532 struct ratio_string<hecto, char32_t>
Chris@16 533 {
Chris@16 534 static std::u32string symbol() {return std::u32string(1, U'h');}
Chris@16 535 static std::u32string prefix() {return std::u32string(U"hecto");}
Chris@16 536 };
Chris@16 537
Chris@16 538 #endif
Chris@16 539
Chris@16 540 #ifndef BOOST_NO_STD_WSTRING
Chris@16 541 template <>
Chris@16 542 struct ratio_string<hecto, wchar_t>
Chris@16 543 {
Chris@16 544 static std::wstring symbol() {return std::wstring(1, L'h');}
Chris@16 545 static std::wstring prefix() {return std::wstring(L"hecto");}
Chris@16 546 };
Chris@16 547 #endif
Chris@16 548 #endif
Chris@16 549
Chris@16 550 // kilo
Chris@16 551
Chris@16 552 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 553 template <typename CharT>
Chris@16 554 struct ratio_string<kilo, CharT> :
Chris@16 555 ratio_detail::ratio_string_static<kilo,CharT>
Chris@16 556 {};
Chris@16 557
Chris@16 558 #else
Chris@16 559 template <>
Chris@16 560 struct ratio_string<kilo, char>
Chris@16 561 {
Chris@16 562 static std::string symbol() {return std::string(1, 'k');}
Chris@16 563 static std::string prefix() {return std::string("kilo");}
Chris@16 564 };
Chris@16 565
Chris@16 566 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 567
Chris@16 568 template <>
Chris@16 569 struct ratio_string<kilo, char16_t>
Chris@16 570 {
Chris@16 571 static std::u16string symbol() {return std::u16string(1, u'k');}
Chris@16 572 static std::u16string prefix() {return std::u16string(u"kilo");}
Chris@16 573 };
Chris@16 574
Chris@16 575 template <>
Chris@16 576 struct ratio_string<kilo, char32_t>
Chris@16 577 {
Chris@16 578 static std::u32string symbol() {return std::u32string(1, U'k');}
Chris@16 579 static std::u32string prefix() {return std::u32string(U"kilo");}
Chris@16 580 };
Chris@16 581
Chris@16 582 #endif
Chris@16 583
Chris@16 584 #ifndef BOOST_NO_STD_WSTRING
Chris@16 585 template <>
Chris@16 586 struct ratio_string<kilo, wchar_t>
Chris@16 587 {
Chris@16 588 static std::wstring symbol() {return std::wstring(1, L'k');}
Chris@16 589 static std::wstring prefix() {return std::wstring(L"kilo");}
Chris@16 590 };
Chris@16 591 #endif
Chris@16 592 #endif
Chris@16 593
Chris@16 594 // mega
Chris@16 595
Chris@16 596 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 597 template <typename CharT>
Chris@16 598 struct ratio_string<mega, CharT> :
Chris@16 599 ratio_detail::ratio_string_static<mega,CharT>
Chris@16 600 {};
Chris@16 601
Chris@16 602 #else
Chris@16 603
Chris@16 604 template <>
Chris@16 605 struct ratio_string<mega, char>
Chris@16 606 {
Chris@16 607 static std::string symbol() {return std::string(1, 'M');}
Chris@16 608 static std::string prefix() {return std::string("mega");}
Chris@16 609 };
Chris@16 610
Chris@16 611 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 612
Chris@16 613 template <>
Chris@16 614 struct ratio_string<mega, char16_t>
Chris@16 615 {
Chris@16 616 static std::u16string symbol() {return std::u16string(1, u'M');}
Chris@16 617 static std::u16string prefix() {return std::u16string(u"mega");}
Chris@16 618 };
Chris@16 619
Chris@16 620 template <>
Chris@16 621 struct ratio_string<mega, char32_t>
Chris@16 622 {
Chris@16 623 static std::u32string symbol() {return std::u32string(1, U'M');}
Chris@16 624 static std::u32string prefix() {return std::u32string(U"mega");}
Chris@16 625 };
Chris@16 626
Chris@16 627 #endif
Chris@16 628
Chris@16 629 #ifndef BOOST_NO_STD_WSTRING
Chris@16 630 template <>
Chris@16 631 struct ratio_string<mega, wchar_t>
Chris@16 632 {
Chris@16 633 static std::wstring symbol() {return std::wstring(1, L'M');}
Chris@16 634 static std::wstring prefix() {return std::wstring(L"mega");}
Chris@16 635 };
Chris@16 636 #endif
Chris@16 637 #endif
Chris@16 638
Chris@16 639 // giga
Chris@16 640
Chris@16 641 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 642 template <typename CharT>
Chris@16 643 struct ratio_string<giga, CharT> :
Chris@16 644 ratio_detail::ratio_string_static<giga,CharT>
Chris@16 645 {};
Chris@16 646
Chris@16 647 #else
Chris@16 648
Chris@16 649 template <>
Chris@16 650 struct ratio_string<giga, char>
Chris@16 651 {
Chris@16 652 static std::string symbol() {return std::string(1, 'G');}
Chris@16 653 static std::string prefix() {return std::string("giga");}
Chris@16 654 };
Chris@16 655
Chris@16 656 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 657
Chris@16 658 template <>
Chris@16 659 struct ratio_string<giga, char16_t>
Chris@16 660 {
Chris@16 661 static std::u16string symbol() {return std::u16string(1, u'G');}
Chris@16 662 static std::u16string prefix() {return std::u16string(u"giga");}
Chris@16 663 };
Chris@16 664
Chris@16 665 template <>
Chris@16 666 struct ratio_string<giga, char32_t>
Chris@16 667 {
Chris@16 668 static std::u32string symbol() {return std::u32string(1, U'G');}
Chris@16 669 static std::u32string prefix() {return std::u32string(U"giga");}
Chris@16 670 };
Chris@16 671
Chris@16 672 #endif
Chris@16 673
Chris@16 674 #ifndef BOOST_NO_STD_WSTRING
Chris@16 675 template <>
Chris@16 676 struct ratio_string<giga, wchar_t>
Chris@16 677 {
Chris@16 678 static std::wstring symbol() {return std::wstring(1, L'G');}
Chris@16 679 static std::wstring prefix() {return std::wstring(L"giga");}
Chris@16 680 };
Chris@16 681 #endif
Chris@16 682 #endif
Chris@16 683
Chris@16 684 // tera
Chris@16 685
Chris@16 686 //template <>
Chris@16 687 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 688 template <typename CharT>
Chris@16 689 struct ratio_string<tera, CharT> :
Chris@16 690 ratio_detail::ratio_string_static<tera,CharT>
Chris@16 691 {};
Chris@16 692
Chris@16 693 #else
Chris@16 694 template <>
Chris@16 695 struct ratio_string<tera, char>
Chris@16 696 {
Chris@16 697 static std::string symbol() {return std::string(1, 'T');}
Chris@16 698 static std::string prefix() {return std::string("tera");}
Chris@16 699 };
Chris@16 700
Chris@16 701 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 702
Chris@16 703 template <>
Chris@16 704 struct ratio_string<tera, char16_t>
Chris@16 705 {
Chris@16 706 static std::u16string symbol() {return std::u16string(1, u'T');}
Chris@16 707 static std::u16string prefix() {return std::u16string(u"tera");}
Chris@16 708 };
Chris@16 709
Chris@16 710 template <>
Chris@16 711 struct ratio_string<tera, char32_t>
Chris@16 712 {
Chris@16 713 static std::u32string symbol() {return std::u32string(1, U'T');}
Chris@16 714 static std::u32string prefix() {return std::u32string(U"tera");}
Chris@16 715 };
Chris@16 716
Chris@16 717 #endif
Chris@16 718
Chris@16 719 #ifndef BOOST_NO_STD_WSTRING
Chris@16 720 template <>
Chris@16 721 struct ratio_string<tera, wchar_t>
Chris@16 722 {
Chris@16 723 static std::wstring symbol() {return std::wstring(1, L'T');}
Chris@16 724 static std::wstring prefix() {return std::wstring(L"tera");}
Chris@16 725 };
Chris@16 726 #endif
Chris@16 727 #endif
Chris@16 728
Chris@16 729 // peta
Chris@16 730
Chris@16 731 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 732 template <typename CharT>
Chris@16 733 struct ratio_string<peta, CharT> :
Chris@16 734 ratio_detail::ratio_string_static<peta,CharT>
Chris@16 735 {};
Chris@16 736
Chris@16 737 #else
Chris@16 738 template <>
Chris@16 739 struct ratio_string<peta, char>
Chris@16 740 {
Chris@16 741 static std::string symbol() {return std::string(1, 'P');}
Chris@16 742 static std::string prefix() {return std::string("peta");}
Chris@16 743 };
Chris@16 744
Chris@16 745 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 746
Chris@16 747 template <>
Chris@16 748 struct ratio_string<peta, char16_t>
Chris@16 749 {
Chris@16 750 static std::u16string symbol() {return std::u16string(1, u'P');}
Chris@16 751 static std::u16string prefix() {return std::u16string(u"peta");}
Chris@16 752 };
Chris@16 753
Chris@16 754 template <>
Chris@16 755 struct ratio_string<peta, char32_t>
Chris@16 756 {
Chris@16 757 static std::u32string symbol() {return std::u32string(1, U'P');}
Chris@16 758 static std::u32string prefix() {return std::u32string(U"peta");}
Chris@16 759 };
Chris@16 760
Chris@16 761 #endif
Chris@16 762
Chris@16 763 #ifndef BOOST_NO_STD_WSTRING
Chris@16 764 template <>
Chris@16 765 struct ratio_string<peta, wchar_t>
Chris@16 766 {
Chris@16 767 static std::wstring symbol() {return std::wstring(1, L'P');}
Chris@16 768 static std::wstring prefix() {return std::wstring(L"peta");}
Chris@16 769 };
Chris@16 770 #endif
Chris@16 771 #endif
Chris@16 772
Chris@16 773 // exa
Chris@16 774
Chris@16 775 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 776 template <typename CharT>
Chris@16 777 struct ratio_string<exa, CharT> :
Chris@16 778 ratio_detail::ratio_string_static<exa,CharT>
Chris@16 779 {};
Chris@16 780
Chris@16 781 #else
Chris@16 782 template <>
Chris@16 783 struct ratio_string<exa, char>
Chris@16 784 {
Chris@16 785 static std::string symbol() {return std::string(1, 'E');}
Chris@16 786 static std::string prefix() {return std::string("exa");}
Chris@16 787 };
Chris@16 788
Chris@16 789 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 790
Chris@16 791 template <>
Chris@16 792 struct ratio_string<exa, char16_t>
Chris@16 793 {
Chris@16 794 static std::u16string symbol() {return std::u16string(1, u'E');}
Chris@16 795 static std::u16string prefix() {return std::u16string(u"exa");}
Chris@16 796 };
Chris@16 797
Chris@16 798 template <>
Chris@16 799 struct ratio_string<exa, char32_t>
Chris@16 800 {
Chris@16 801 static std::u32string symbol() {return std::u32string(1, U'E');}
Chris@16 802 static std::u32string prefix() {return std::u32string(U"exa");}
Chris@16 803 };
Chris@16 804
Chris@16 805 #endif
Chris@16 806
Chris@16 807 #ifndef BOOST_NO_STD_WSTRING
Chris@16 808 template <>
Chris@16 809 struct ratio_string<exa, wchar_t>
Chris@16 810 {
Chris@16 811 static std::wstring symbol() {return std::wstring(1, L'E');}
Chris@16 812 static std::wstring prefix() {return std::wstring(L"exa");}
Chris@16 813 };
Chris@16 814 #endif
Chris@16 815 #endif
Chris@16 816
Chris@101 817
Chris@101 818 #ifdef BOOST_RATIO_EXTENSIONS
Chris@101 819
Chris@101 820 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 821 template <typename CharT>
Chris@101 822 struct ratio_string<kibi, CharT> :
Chris@101 823 ratio_detail::ratio_string_static<kibi,CharT>
Chris@101 824 {};
Chris@101 825
Chris@101 826 #else
Chris@101 827 template <>
Chris@101 828 struct ratio_string<kibi, char>
Chris@101 829 {
Chris@101 830 static std::string symbol() {return std::string("Ki");}
Chris@101 831 static std::string prefix() {return std::string("kibi");}
Chris@101 832 };
Chris@101 833
Chris@101 834 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 835
Chris@101 836 template <>
Chris@101 837 struct ratio_string<kibi, char16_t>
Chris@101 838 {
Chris@101 839 static std::u16string symbol() {return std::u16string(u"Ki");}
Chris@101 840 static std::u16string prefix() {return std::u16string(u"kibi");}
Chris@101 841 };
Chris@101 842
Chris@101 843 template <>
Chris@101 844 struct ratio_string<kibi, char32_t>
Chris@101 845 {
Chris@101 846 static std::u32string symbol() {return std::u32string(U"Ki");}
Chris@101 847 static std::u32string prefix() {return std::u32string(U"kibi");}
Chris@101 848 };
Chris@101 849
Chris@101 850 #endif
Chris@101 851
Chris@101 852 #ifndef BOOST_NO_STD_WSTRING
Chris@101 853 template <>
Chris@101 854 struct ratio_string<kibi, wchar_t>
Chris@101 855 {
Chris@101 856 static std::wstring symbol() {return std::wstring(L"Ki");}
Chris@101 857 static std::wstring prefix() {return std::wstring(L"kibi");}
Chris@101 858 };
Chris@101 859 #endif
Chris@101 860 #endif
Chris@101 861
Chris@101 862 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 863 template <typename CharT>
Chris@101 864 struct ratio_string<mebi, CharT> :
Chris@101 865 ratio_detail::ratio_string_static<mebi,CharT>
Chris@101 866 {};
Chris@101 867
Chris@101 868 #else
Chris@101 869 template <>
Chris@101 870 struct ratio_string<mebi, char>
Chris@101 871 {
Chris@101 872 static std::string symbol() {return std::string("Mi");}
Chris@101 873 static std::string prefix() {return std::string("mebi");}
Chris@101 874 };
Chris@101 875
Chris@101 876 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 877
Chris@101 878 template <>
Chris@101 879 struct ratio_string<mebi, char16_t>
Chris@101 880 {
Chris@101 881 static std::u16string symbol() {return std::u16string(u"Mi");}
Chris@101 882 static std::u16string prefix() {return std::u16string(u"mebi");}
Chris@101 883 };
Chris@101 884
Chris@101 885 template <>
Chris@101 886 struct ratio_string<mebi, char32_t>
Chris@101 887 {
Chris@101 888 static std::u32string symbol() {return std::u32string(U"Mi");}
Chris@101 889 static std::u32string prefix() {return std::u32string(U"mebi");}
Chris@101 890 };
Chris@101 891
Chris@101 892 #endif
Chris@101 893
Chris@101 894 #ifndef BOOST_NO_STD_WSTRING
Chris@101 895 template <>
Chris@101 896 struct ratio_string<mebi, wchar_t>
Chris@101 897 {
Chris@101 898 static std::wstring symbol() {return std::wstring(L"Mi");}
Chris@101 899 static std::wstring prefix() {return std::wstring(L"mebi");}
Chris@101 900 };
Chris@101 901 #endif
Chris@101 902 #endif
Chris@101 903
Chris@101 904 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 905 template <typename CharT>
Chris@101 906 struct ratio_string<gibi, CharT> :
Chris@101 907 ratio_detail::ratio_string_static<gibi,CharT>
Chris@101 908 {};
Chris@101 909
Chris@101 910 #else
Chris@101 911 template <>
Chris@101 912 struct ratio_string<gibi, char>
Chris@101 913 {
Chris@101 914 static std::string symbol() {return std::string("Gi");}
Chris@101 915 static std::string prefix() {return std::string("gibi");}
Chris@101 916 };
Chris@101 917
Chris@101 918 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 919
Chris@101 920 template <>
Chris@101 921 struct ratio_string<gibi, char16_t>
Chris@101 922 {
Chris@101 923 static std::u16string symbol() {return std::u16string(u"Gi");}
Chris@101 924 static std::u16string prefix() {return std::u16string(u"gibi");}
Chris@101 925 };
Chris@101 926
Chris@101 927 template <>
Chris@101 928 struct ratio_string<gibi, char32_t>
Chris@101 929 {
Chris@101 930 static std::u32string symbol() {return std::u32string(U"Gi");}
Chris@101 931 static std::u32string prefix() {return std::u32string(U"gibi");}
Chris@101 932 };
Chris@101 933
Chris@101 934 #endif
Chris@101 935
Chris@101 936 #ifndef BOOST_NO_STD_WSTRING
Chris@101 937 template <>
Chris@101 938 struct ratio_string<gibi, wchar_t>
Chris@101 939 {
Chris@101 940 static std::wstring symbol() {return std::wstring(L"Gi");}
Chris@101 941 static std::wstring prefix() {return std::wstring(L"gibi");}
Chris@101 942 };
Chris@101 943 #endif
Chris@101 944 #endif
Chris@101 945
Chris@101 946 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 947 template <typename CharT>
Chris@101 948 struct ratio_string<tebi, CharT> :
Chris@101 949 ratio_detail::ratio_string_static<tebi,CharT>
Chris@101 950 {};
Chris@101 951
Chris@101 952 #else
Chris@101 953 template <>
Chris@101 954 struct ratio_string<tebi, char>
Chris@101 955 {
Chris@101 956 static std::string symbol() {return std::string("Ti");}
Chris@101 957 static std::string prefix() {return std::string("tebi");}
Chris@101 958 };
Chris@101 959
Chris@101 960 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 961
Chris@101 962 template <>
Chris@101 963 struct ratio_string<tebi, char16_t>
Chris@101 964 {
Chris@101 965 static std::u16string symbol() {return std::u16string(u"Ti");}
Chris@101 966 static std::u16string prefix() {return std::u16string(u"tebi");}
Chris@101 967 };
Chris@101 968
Chris@101 969 template <>
Chris@101 970 struct ratio_string<tebi, char32_t>
Chris@101 971 {
Chris@101 972 static std::u32string symbol() {return std::u32string(U"Ti");}
Chris@101 973 static std::u32string prefix() {return std::u32string(U"tebi");}
Chris@101 974 };
Chris@101 975
Chris@101 976 #endif
Chris@101 977
Chris@101 978 #ifndef BOOST_NO_STD_WSTRING
Chris@101 979 template <>
Chris@101 980 struct ratio_string<tebi, wchar_t>
Chris@101 981 {
Chris@101 982 static std::wstring symbol() {return std::wstring(L"Ti");}
Chris@101 983 static std::wstring prefix() {return std::wstring(L"tebi");}
Chris@101 984 };
Chris@101 985 #endif
Chris@101 986 #endif
Chris@101 987
Chris@101 988 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 989 template <typename CharT>
Chris@101 990 struct ratio_string<pebi, CharT> :
Chris@101 991 ratio_detail::ratio_string_static<pebi,CharT>
Chris@101 992 {};
Chris@101 993
Chris@101 994 #else
Chris@101 995 template <>
Chris@101 996 struct ratio_string<pebi, char>
Chris@101 997 {
Chris@101 998 static std::string symbol() {return std::string("Pi");}
Chris@101 999 static std::string prefix() {return std::string("pebi");}
Chris@101 1000 };
Chris@101 1001
Chris@101 1002 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 1003
Chris@101 1004 template <>
Chris@101 1005 struct ratio_string<pebi, char16_t>
Chris@101 1006 {
Chris@101 1007 static std::u16string symbol() {return std::u16string(u"Pi");}
Chris@101 1008 static std::u16string prefix() {return std::u16string(u"pebi");}
Chris@101 1009 };
Chris@101 1010
Chris@101 1011 template <>
Chris@101 1012 struct ratio_string<pebi, char32_t>
Chris@101 1013 {
Chris@101 1014 static std::u32string symbol() {return std::u32string(U"Pi");}
Chris@101 1015 static std::u32string prefix() {return std::u32string(U"pebi");}
Chris@101 1016 };
Chris@101 1017
Chris@101 1018 #endif
Chris@101 1019
Chris@101 1020 #ifndef BOOST_NO_STD_WSTRING
Chris@101 1021 template <>
Chris@101 1022 struct ratio_string<pebi, wchar_t>
Chris@101 1023 {
Chris@101 1024 static std::wstring symbol() {return std::wstring(L"Pi");}
Chris@101 1025 static std::wstring prefix() {return std::wstring(L"pebi");}
Chris@101 1026 };
Chris@101 1027 #endif
Chris@101 1028 #endif
Chris@101 1029
Chris@101 1030 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@101 1031 template <typename CharT>
Chris@101 1032 struct ratio_string<exbi, CharT> :
Chris@101 1033 ratio_detail::ratio_string_static<exbi,CharT>
Chris@101 1034 {};
Chris@101 1035
Chris@101 1036 #else
Chris@101 1037 template <>
Chris@101 1038 struct ratio_string<exbi, char>
Chris@101 1039 {
Chris@101 1040 static std::string symbol() {return std::string("Ei");}
Chris@101 1041 static std::string prefix() {return std::string("exbi");}
Chris@101 1042 };
Chris@101 1043
Chris@101 1044 #if BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@101 1045
Chris@101 1046 template <>
Chris@101 1047 struct ratio_string<exbi, char16_t>
Chris@101 1048 {
Chris@101 1049 static std::u16string symbol() {return std::u16string(u"Ei");}
Chris@101 1050 static std::u16string prefix() {return std::u16string(u"exbi");}
Chris@101 1051 };
Chris@101 1052
Chris@101 1053 template <>
Chris@101 1054 struct ratio_string<exbi, char32_t>
Chris@101 1055 {
Chris@101 1056 static std::u32string symbol() {return std::u32string(U"Ei");}
Chris@101 1057 static std::u32string prefix() {return std::u32string(U"exbi");}
Chris@101 1058 };
Chris@101 1059
Chris@101 1060 #endif
Chris@101 1061
Chris@101 1062 #ifndef BOOST_NO_STD_WSTRING
Chris@101 1063 template <>
Chris@101 1064 struct ratio_string<exbi, wchar_t>
Chris@101 1065 {
Chris@101 1066 static std::wstring symbol() {return std::wstring(L"Ei");}
Chris@101 1067 static std::wstring prefix() {return std::wstring(L"exbi");}
Chris@101 1068 };
Chris@101 1069 #endif
Chris@101 1070 #endif
Chris@101 1071 #endif
Chris@101 1072
Chris@16 1073 }
Chris@16 1074
Chris@16 1075 #endif // BOOST_RATIO_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
Chris@16 1076 #endif // BOOST_RATIO_RATIO_IO_HPP