annotate DEPENDENCIES/generic/include/boost/ratio/ratio_io.hpp @ 16:2665513ce2d3

Add boost headers
author Chris Cannam
date Tue, 05 Aug 2014 11:11:38 +0100
parents
children c530137014c0
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 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 48 #include <boost/ratio/ratio_static_string.hpp>
Chris@16 49 #include <boost/static_string/static_string.hpp>
Chris@16 50 #endif
Chris@16 51
Chris@16 52 #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 53 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 54 #undef BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 55 #endif
Chris@16 56 #else
Chris@16 57 #define BOOST_RATIO_HAS_UNICODE_SUPPORT 1
Chris@16 58 #endif
Chris@16 59
Chris@16 60 namespace boost {
Chris@16 61
Chris@16 62 //template <class Ratio>
Chris@16 63 //struct ratio_string_is_localizable : false_type {};
Chris@16 64 //template <class Ratio>
Chris@16 65 //struct ratio_string_id : integral_constant<int,0> {};
Chris@16 66
Chris@16 67 template <class Ratio, class CharT>
Chris@16 68 struct ratio_string
Chris@16 69 {
Chris@16 70 static std::basic_string<CharT> symbol() {return prefix();}
Chris@16 71 static std::basic_string<CharT> prefix();
Chris@16 72 };
Chris@16 73
Chris@16 74 template <class Ratio, class CharT>
Chris@16 75 std::basic_string<CharT>
Chris@16 76 ratio_string<Ratio, CharT>::prefix()
Chris@16 77 {
Chris@16 78 std::basic_ostringstream<CharT> os;
Chris@16 79 os << CharT('[') << Ratio::num << CharT('/')
Chris@16 80 << Ratio::den << CharT(']');
Chris@16 81 return os.str();
Chris@16 82 }
Chris@16 83
Chris@16 84 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 85 namespace ratio_detail {
Chris@16 86 template <class Ratio, class CharT>
Chris@16 87 struct ratio_string_static
Chris@16 88 {
Chris@16 89 static std::string symbol() {
Chris@16 90 return std::basic_string<CharT>(
Chris@16 91 static_string::c_str<
Chris@16 92 typename ratio_static_string<Ratio, CharT>::symbol
Chris@16 93 >::value);
Chris@16 94 }
Chris@16 95 static std::string prefix() {
Chris@16 96 return std::basic_string<CharT>(
Chris@16 97 static_string::c_str<
Chris@16 98 typename ratio_static_string<Ratio, CharT>::prefix
Chris@16 99 >::value);
Chris@16 100 }
Chris@16 101 };
Chris@16 102 }
Chris@16 103 #endif
Chris@16 104 // atto
Chris@16 105 //template <>
Chris@16 106 //struct ratio_string_is_localizable<atto> : true_type {};
Chris@16 107 //
Chris@16 108 //template <>
Chris@16 109 //struct ratio_string_id<atto> : integral_constant<int,-18> {};
Chris@16 110
Chris@16 111 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 112 template <typename CharT>
Chris@16 113 struct ratio_string<atto, CharT> :
Chris@16 114 ratio_detail::ratio_string_static<atto,CharT>
Chris@16 115 {};
Chris@16 116
Chris@16 117 #else
Chris@16 118 template <>
Chris@16 119 struct ratio_string<atto, char>
Chris@16 120 {
Chris@16 121 static std::string symbol() {return std::string(1, 'a');}
Chris@16 122 static std::string prefix() {return std::string("atto");}
Chris@16 123 };
Chris@16 124
Chris@16 125 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 126
Chris@16 127 template <>
Chris@16 128 struct ratio_string<atto, char16_t>
Chris@16 129 {
Chris@16 130 static std::u16string symbol() {return std::u16string(1, u'a');}
Chris@16 131 static std::u16string prefix() {return std::u16string(u"atto");}
Chris@16 132 };
Chris@16 133
Chris@16 134 template <>
Chris@16 135 struct ratio_string<atto, char32_t>
Chris@16 136 {
Chris@16 137 static std::u32string symbol() {return std::u32string(1, U'a');}
Chris@16 138 static std::u32string prefix() {return std::u32string(U"atto");}
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 symbol() {return std::wstring(1, L'a');}
Chris@16 148 static std::wstring prefix() {return std::wstring(L"atto");}
Chris@16 149 };
Chris@16 150 #endif
Chris@16 151 #endif
Chris@16 152
Chris@16 153 // femto
Chris@16 154
Chris@16 155 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 156 template <typename CharT>
Chris@16 157 struct ratio_string<femto, CharT> :
Chris@16 158 ratio_detail::ratio_string_static<femto,CharT>
Chris@16 159 {};
Chris@16 160
Chris@16 161 #else
Chris@16 162
Chris@16 163 template <>
Chris@16 164 struct ratio_string<femto, char>
Chris@16 165 {
Chris@16 166 static std::string symbol() {return std::string(1, 'f');}
Chris@16 167 static std::string prefix() {return std::string("femto");}
Chris@16 168 };
Chris@16 169
Chris@16 170 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 171
Chris@16 172 template <>
Chris@16 173 struct ratio_string<femto, char16_t>
Chris@16 174 {
Chris@16 175 static std::u16string symbol() {return std::u16string(1, u'f');}
Chris@16 176 static std::u16string prefix() {return std::u16string(u"femto");}
Chris@16 177 };
Chris@16 178
Chris@16 179 template <>
Chris@16 180 struct ratio_string<femto, char32_t>
Chris@16 181 {
Chris@16 182 static std::u32string symbol() {return std::u32string(1, U'f');}
Chris@16 183 static std::u32string prefix() {return std::u32string(U"femto");}
Chris@16 184 };
Chris@16 185
Chris@16 186 #endif
Chris@16 187
Chris@16 188 #ifndef BOOST_NO_STD_WSTRING
Chris@16 189 template <>
Chris@16 190 struct ratio_string<femto, wchar_t>
Chris@16 191 {
Chris@16 192 static std::wstring symbol() {return std::wstring(1, L'f');}
Chris@16 193 static std::wstring prefix() {return std::wstring(L"femto");}
Chris@16 194 };
Chris@16 195 #endif
Chris@16 196 #endif
Chris@16 197
Chris@16 198 // pico
Chris@16 199
Chris@16 200 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 201 template <typename CharT>
Chris@16 202 struct ratio_string<pico, CharT> :
Chris@16 203 ratio_detail::ratio_string_static<pico,CharT>
Chris@16 204 {};
Chris@16 205
Chris@16 206 #else
Chris@16 207 template <>
Chris@16 208 struct ratio_string<pico, char>
Chris@16 209 {
Chris@16 210 static std::string symbol() {return std::string(1, 'p');}
Chris@16 211 static std::string prefix() {return std::string("pico");}
Chris@16 212 };
Chris@16 213
Chris@16 214 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 215
Chris@16 216 template <>
Chris@16 217 struct ratio_string<pico, char16_t>
Chris@16 218 {
Chris@16 219 static std::u16string symbol() {return std::u16string(1, u'p');}
Chris@16 220 static std::u16string prefix() {return std::u16string(u"pico");}
Chris@16 221 };
Chris@16 222
Chris@16 223 template <>
Chris@16 224 struct ratio_string<pico, char32_t>
Chris@16 225 {
Chris@16 226 static std::u32string symbol() {return std::u32string(1, U'p');}
Chris@16 227 static std::u32string prefix() {return std::u32string(U"pico");}
Chris@16 228 };
Chris@16 229
Chris@16 230 #endif
Chris@16 231
Chris@16 232 #ifndef BOOST_NO_STD_WSTRING
Chris@16 233 template <>
Chris@16 234 struct ratio_string<pico, wchar_t>
Chris@16 235 {
Chris@16 236 static std::wstring symbol() {return std::wstring(1, L'p');}
Chris@16 237 static std::wstring prefix() {return std::wstring(L"pico");}
Chris@16 238 };
Chris@16 239 #endif
Chris@16 240 #endif
Chris@16 241
Chris@16 242 // nano
Chris@16 243
Chris@16 244 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 245 template <typename CharT>
Chris@16 246 struct ratio_string<nano, CharT> :
Chris@16 247 ratio_detail::ratio_string_static<nano,CharT>
Chris@16 248 {};
Chris@16 249
Chris@16 250 #else
Chris@16 251 template <>
Chris@16 252 struct ratio_string<nano, char>
Chris@16 253 {
Chris@16 254 static std::string symbol() {return std::string(1, 'n');}
Chris@16 255 static std::string prefix() {return std::string("nano");}
Chris@16 256 };
Chris@16 257
Chris@16 258 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 259
Chris@16 260 template <>
Chris@16 261 struct ratio_string<nano, char16_t>
Chris@16 262 {
Chris@16 263 static std::u16string symbol() {return std::u16string(1, u'n');}
Chris@16 264 static std::u16string prefix() {return std::u16string(u"nano");}
Chris@16 265 };
Chris@16 266
Chris@16 267 template <>
Chris@16 268 struct ratio_string<nano, char32_t>
Chris@16 269 {
Chris@16 270 static std::u32string symbol() {return std::u32string(1, U'n');}
Chris@16 271 static std::u32string prefix() {return std::u32string(U"nano");}
Chris@16 272 };
Chris@16 273
Chris@16 274 #endif
Chris@16 275
Chris@16 276 #ifndef BOOST_NO_STD_WSTRING
Chris@16 277 template <>
Chris@16 278 struct ratio_string<nano, wchar_t>
Chris@16 279 {
Chris@16 280 static std::wstring symbol() {return std::wstring(1, L'n');}
Chris@16 281 static std::wstring prefix() {return std::wstring(L"nano");}
Chris@16 282 };
Chris@16 283 #endif
Chris@16 284 #endif
Chris@16 285
Chris@16 286 // micro
Chris@16 287
Chris@16 288 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 289 template <typename CharT>
Chris@16 290 struct ratio_string<micro, CharT> :
Chris@16 291 ratio_detail::ratio_string_static<micro,CharT>
Chris@16 292 {};
Chris@16 293
Chris@16 294 #else
Chris@16 295 template <>
Chris@16 296 struct ratio_string<micro, char>
Chris@16 297 {
Chris@16 298 static std::string symbol() {return std::string("\xC2\xB5");}
Chris@16 299 static std::string prefix() {return std::string("micro");}
Chris@16 300 };
Chris@16 301
Chris@16 302 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 303
Chris@16 304 template <>
Chris@16 305 struct ratio_string<micro, char16_t>
Chris@16 306 {
Chris@16 307 static std::u16string symbol() {return std::u16string(1, u'\xB5');}
Chris@16 308 static std::u16string prefix() {return std::u16string(u"micro");}
Chris@16 309 };
Chris@16 310
Chris@16 311 template <>
Chris@16 312 struct ratio_string<micro, char32_t>
Chris@16 313 {
Chris@16 314 static std::u32string symbol() {return std::u32string(1, U'\xB5');}
Chris@16 315 static std::u32string prefix() {return std::u32string(U"micro");}
Chris@16 316 };
Chris@16 317
Chris@16 318 #endif
Chris@16 319
Chris@16 320 #ifndef BOOST_NO_STD_WSTRING
Chris@16 321 template <>
Chris@16 322 struct ratio_string<micro, wchar_t>
Chris@16 323 {
Chris@16 324 static std::wstring symbol() {return std::wstring(1, L'\xB5');}
Chris@16 325 static std::wstring prefix() {return std::wstring(L"micro");}
Chris@16 326 };
Chris@16 327 #endif
Chris@16 328 #endif
Chris@16 329
Chris@16 330 // milli
Chris@16 331
Chris@16 332 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 333 template <typename CharT>
Chris@16 334 struct ratio_string<milli, CharT> :
Chris@16 335 ratio_detail::ratio_string_static<milli,CharT>
Chris@16 336 {};
Chris@16 337
Chris@16 338 #else
Chris@16 339 template <>
Chris@16 340 struct ratio_string<milli, char>
Chris@16 341 {
Chris@16 342 static std::string symbol() {return std::string(1, 'm');}
Chris@16 343 static std::string prefix() {return std::string("milli");}
Chris@16 344 };
Chris@16 345
Chris@16 346 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 347
Chris@16 348 template <>
Chris@16 349 struct ratio_string<milli, char16_t>
Chris@16 350 {
Chris@16 351 static std::u16string symbol() {return std::u16string(1, u'm');}
Chris@16 352 static std::u16string prefix() {return std::u16string(u"milli");}
Chris@16 353 };
Chris@16 354
Chris@16 355 template <>
Chris@16 356 struct ratio_string<milli, char32_t>
Chris@16 357 {
Chris@16 358 static std::u32string symbol() {return std::u32string(1, U'm');}
Chris@16 359 static std::u32string prefix() {return std::u32string(U"milli");}
Chris@16 360 };
Chris@16 361
Chris@16 362 #endif
Chris@16 363
Chris@16 364 #ifndef BOOST_NO_STD_WSTRING
Chris@16 365 template <>
Chris@16 366 struct ratio_string<milli, wchar_t>
Chris@16 367 {
Chris@16 368 static std::wstring symbol() {return std::wstring(1, L'm');}
Chris@16 369 static std::wstring prefix() {return std::wstring(L"milli");}
Chris@16 370 };
Chris@16 371 #endif
Chris@16 372 #endif
Chris@16 373
Chris@16 374 // centi
Chris@16 375
Chris@16 376 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 377 template <typename CharT>
Chris@16 378 struct ratio_string<centi, CharT> :
Chris@16 379 ratio_detail::ratio_string_static<centi,CharT>
Chris@16 380 {};
Chris@16 381
Chris@16 382 #else
Chris@16 383 template <>
Chris@16 384 struct ratio_string<centi, char>
Chris@16 385 {
Chris@16 386 static std::string symbol() {return std::string(1, 'c');}
Chris@16 387 static std::string prefix() {return std::string("centi");}
Chris@16 388 };
Chris@16 389
Chris@16 390 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 391
Chris@16 392 template <>
Chris@16 393 struct ratio_string<centi, char16_t>
Chris@16 394 {
Chris@16 395 static std::u16string symbol() {return std::u16string(1, u'c');}
Chris@16 396 static std::u16string prefix() {return std::u16string(u"centi");}
Chris@16 397 };
Chris@16 398
Chris@16 399 template <>
Chris@16 400 struct ratio_string<centi, char32_t>
Chris@16 401 {
Chris@16 402 static std::u32string symbol() {return std::u32string(1, U'c');}
Chris@16 403 static std::u32string prefix() {return std::u32string(U"centi");}
Chris@16 404 };
Chris@16 405
Chris@16 406 #endif
Chris@16 407
Chris@16 408 #ifndef BOOST_NO_STD_WSTRING
Chris@16 409 template <>
Chris@16 410 struct ratio_string<centi, wchar_t>
Chris@16 411 {
Chris@16 412 static std::wstring symbol() {return std::wstring(1, L'c');}
Chris@16 413 static std::wstring prefix() {return std::wstring(L"centi");}
Chris@16 414 };
Chris@16 415 #endif
Chris@16 416 #endif
Chris@16 417
Chris@16 418 // deci
Chris@16 419
Chris@16 420 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 421 template <typename CharT>
Chris@16 422 struct ratio_string<deci, CharT> :
Chris@16 423 ratio_detail::ratio_string_static<deci,CharT>
Chris@16 424 {};
Chris@16 425
Chris@16 426 #else
Chris@16 427
Chris@16 428 template <>
Chris@16 429 struct ratio_string<deci, char>
Chris@16 430 {
Chris@16 431 static std::string symbol() {return std::string(1, 'd');}
Chris@16 432 static std::string prefix() {return std::string("deci");}
Chris@16 433 };
Chris@16 434
Chris@16 435 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 436
Chris@16 437 template <>
Chris@16 438 struct ratio_string<deci, char16_t>
Chris@16 439 {
Chris@16 440 static std::u16string symbol() {return std::u16string(1, u'd');}
Chris@16 441 static std::u16string prefix() {return std::u16string(u"deci");}
Chris@16 442 };
Chris@16 443
Chris@16 444 template <>
Chris@16 445 struct ratio_string<deci, char32_t>
Chris@16 446 {
Chris@16 447 static std::u32string symbol() {return std::u32string(1, U'd');}
Chris@16 448 static std::u32string prefix() {return std::u32string(U"deci");}
Chris@16 449 };
Chris@16 450
Chris@16 451 #endif
Chris@16 452
Chris@16 453 #ifndef BOOST_NO_STD_WSTRING
Chris@16 454 template <>
Chris@16 455 struct ratio_string<deci, wchar_t>
Chris@16 456 {
Chris@16 457 static std::wstring symbol() {return std::wstring(1, L'd');}
Chris@16 458 static std::wstring prefix() {return std::wstring(L"deci");}
Chris@16 459 };
Chris@16 460 #endif
Chris@16 461 #endif
Chris@16 462
Chris@16 463 // unit
Chris@16 464
Chris@16 465 // deca
Chris@16 466
Chris@16 467
Chris@16 468 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 469 template <typename CharT>
Chris@16 470 struct ratio_string<deca, CharT> :
Chris@16 471 ratio_detail::ratio_string_static<deca,CharT>
Chris@16 472 {};
Chris@16 473
Chris@16 474 #else
Chris@16 475 template <>
Chris@16 476 struct ratio_string<deca, char>
Chris@16 477 {
Chris@16 478 static std::string symbol() {return std::string("da");}
Chris@16 479 static std::string prefix() {return std::string("deca");}
Chris@16 480 };
Chris@16 481
Chris@16 482 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 483
Chris@16 484 template <>
Chris@16 485 struct ratio_string<deca, char16_t>
Chris@16 486 {
Chris@16 487 static std::u16string symbol() {return std::u16string(u"da");}
Chris@16 488 static std::u16string prefix() {return std::u16string(u"deca");}
Chris@16 489 };
Chris@16 490
Chris@16 491 template <>
Chris@16 492 struct ratio_string<deca, char32_t>
Chris@16 493 {
Chris@16 494 static std::u32string symbol() {return std::u32string(U"da");}
Chris@16 495 static std::u32string prefix() {return std::u32string(U"deca");}
Chris@16 496 };
Chris@16 497
Chris@16 498 #endif
Chris@16 499
Chris@16 500 #ifndef BOOST_NO_STD_WSTRING
Chris@16 501 template <>
Chris@16 502 struct ratio_string<deca, wchar_t>
Chris@16 503 {
Chris@16 504 static std::wstring symbol() {return std::wstring(L"da");}
Chris@16 505 static std::wstring prefix() {return std::wstring(L"deca");}
Chris@16 506 };
Chris@16 507 #endif
Chris@16 508 #endif
Chris@16 509
Chris@16 510 // hecto
Chris@16 511
Chris@16 512 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 513 template <typename CharT>
Chris@16 514 struct ratio_string<hecto, CharT> :
Chris@16 515 ratio_detail::ratio_string_static<hecto,CharT>
Chris@16 516 {};
Chris@16 517
Chris@16 518 #else
Chris@16 519 template <>
Chris@16 520 struct ratio_string<hecto, char>
Chris@16 521 {
Chris@16 522 static std::string symbol() {return std::string(1, 'h');}
Chris@16 523 static std::string prefix() {return std::string("hecto");}
Chris@16 524 };
Chris@16 525
Chris@16 526 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 527
Chris@16 528 template <>
Chris@16 529 struct ratio_string<hecto, char16_t>
Chris@16 530 {
Chris@16 531 static std::u16string symbol() {return std::u16string(1, u'h');}
Chris@16 532 static std::u16string prefix() {return std::u16string(u"hecto");}
Chris@16 533 };
Chris@16 534
Chris@16 535 template <>
Chris@16 536 struct ratio_string<hecto, char32_t>
Chris@16 537 {
Chris@16 538 static std::u32string symbol() {return std::u32string(1, U'h');}
Chris@16 539 static std::u32string prefix() {return std::u32string(U"hecto");}
Chris@16 540 };
Chris@16 541
Chris@16 542 #endif
Chris@16 543
Chris@16 544 #ifndef BOOST_NO_STD_WSTRING
Chris@16 545 template <>
Chris@16 546 struct ratio_string<hecto, wchar_t>
Chris@16 547 {
Chris@16 548 static std::wstring symbol() {return std::wstring(1, L'h');}
Chris@16 549 static std::wstring prefix() {return std::wstring(L"hecto");}
Chris@16 550 };
Chris@16 551 #endif
Chris@16 552 #endif
Chris@16 553
Chris@16 554 // kilo
Chris@16 555
Chris@16 556 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 557 template <typename CharT>
Chris@16 558 struct ratio_string<kilo, CharT> :
Chris@16 559 ratio_detail::ratio_string_static<kilo,CharT>
Chris@16 560 {};
Chris@16 561
Chris@16 562 #else
Chris@16 563 template <>
Chris@16 564 struct ratio_string<kilo, char>
Chris@16 565 {
Chris@16 566 static std::string symbol() {return std::string(1, 'k');}
Chris@16 567 static std::string prefix() {return std::string("kilo");}
Chris@16 568 };
Chris@16 569
Chris@16 570 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 571
Chris@16 572 template <>
Chris@16 573 struct ratio_string<kilo, char16_t>
Chris@16 574 {
Chris@16 575 static std::u16string symbol() {return std::u16string(1, u'k');}
Chris@16 576 static std::u16string prefix() {return std::u16string(u"kilo");}
Chris@16 577 };
Chris@16 578
Chris@16 579 template <>
Chris@16 580 struct ratio_string<kilo, char32_t>
Chris@16 581 {
Chris@16 582 static std::u32string symbol() {return std::u32string(1, U'k');}
Chris@16 583 static std::u32string prefix() {return std::u32string(U"kilo");}
Chris@16 584 };
Chris@16 585
Chris@16 586 #endif
Chris@16 587
Chris@16 588 #ifndef BOOST_NO_STD_WSTRING
Chris@16 589 template <>
Chris@16 590 struct ratio_string<kilo, wchar_t>
Chris@16 591 {
Chris@16 592 static std::wstring symbol() {return std::wstring(1, L'k');}
Chris@16 593 static std::wstring prefix() {return std::wstring(L"kilo");}
Chris@16 594 };
Chris@16 595 #endif
Chris@16 596 #endif
Chris@16 597
Chris@16 598 // mega
Chris@16 599
Chris@16 600 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 601 template <typename CharT>
Chris@16 602 struct ratio_string<mega, CharT> :
Chris@16 603 ratio_detail::ratio_string_static<mega,CharT>
Chris@16 604 {};
Chris@16 605
Chris@16 606 #else
Chris@16 607
Chris@16 608 template <>
Chris@16 609 struct ratio_string<mega, char>
Chris@16 610 {
Chris@16 611 static std::string symbol() {return std::string(1, 'M');}
Chris@16 612 static std::string prefix() {return std::string("mega");}
Chris@16 613 };
Chris@16 614
Chris@16 615 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 616
Chris@16 617 template <>
Chris@16 618 struct ratio_string<mega, char16_t>
Chris@16 619 {
Chris@16 620 static std::u16string symbol() {return std::u16string(1, u'M');}
Chris@16 621 static std::u16string prefix() {return std::u16string(u"mega");}
Chris@16 622 };
Chris@16 623
Chris@16 624 template <>
Chris@16 625 struct ratio_string<mega, char32_t>
Chris@16 626 {
Chris@16 627 static std::u32string symbol() {return std::u32string(1, U'M');}
Chris@16 628 static std::u32string prefix() {return std::u32string(U"mega");}
Chris@16 629 };
Chris@16 630
Chris@16 631 #endif
Chris@16 632
Chris@16 633 #ifndef BOOST_NO_STD_WSTRING
Chris@16 634 template <>
Chris@16 635 struct ratio_string<mega, wchar_t>
Chris@16 636 {
Chris@16 637 static std::wstring symbol() {return std::wstring(1, L'M');}
Chris@16 638 static std::wstring prefix() {return std::wstring(L"mega");}
Chris@16 639 };
Chris@16 640 #endif
Chris@16 641 #endif
Chris@16 642
Chris@16 643 // giga
Chris@16 644
Chris@16 645 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 646 template <typename CharT>
Chris@16 647 struct ratio_string<giga, CharT> :
Chris@16 648 ratio_detail::ratio_string_static<giga,CharT>
Chris@16 649 {};
Chris@16 650
Chris@16 651 #else
Chris@16 652
Chris@16 653 template <>
Chris@16 654 struct ratio_string<giga, char>
Chris@16 655 {
Chris@16 656 static std::string symbol() {return std::string(1, 'G');}
Chris@16 657 static std::string prefix() {return std::string("giga");}
Chris@16 658 };
Chris@16 659
Chris@16 660 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 661
Chris@16 662 template <>
Chris@16 663 struct ratio_string<giga, char16_t>
Chris@16 664 {
Chris@16 665 static std::u16string symbol() {return std::u16string(1, u'G');}
Chris@16 666 static std::u16string prefix() {return std::u16string(u"giga");}
Chris@16 667 };
Chris@16 668
Chris@16 669 template <>
Chris@16 670 struct ratio_string<giga, char32_t>
Chris@16 671 {
Chris@16 672 static std::u32string symbol() {return std::u32string(1, U'G');}
Chris@16 673 static std::u32string prefix() {return std::u32string(U"giga");}
Chris@16 674 };
Chris@16 675
Chris@16 676 #endif
Chris@16 677
Chris@16 678 #ifndef BOOST_NO_STD_WSTRING
Chris@16 679 template <>
Chris@16 680 struct ratio_string<giga, wchar_t>
Chris@16 681 {
Chris@16 682 static std::wstring symbol() {return std::wstring(1, L'G');}
Chris@16 683 static std::wstring prefix() {return std::wstring(L"giga");}
Chris@16 684 };
Chris@16 685 #endif
Chris@16 686 #endif
Chris@16 687
Chris@16 688 // tera
Chris@16 689
Chris@16 690 //template <>
Chris@16 691 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 692 template <typename CharT>
Chris@16 693 struct ratio_string<tera, CharT> :
Chris@16 694 ratio_detail::ratio_string_static<tera,CharT>
Chris@16 695 {};
Chris@16 696
Chris@16 697 #else
Chris@16 698 template <>
Chris@16 699 struct ratio_string<tera, char>
Chris@16 700 {
Chris@16 701 static std::string symbol() {return std::string(1, 'T');}
Chris@16 702 static std::string prefix() {return std::string("tera");}
Chris@16 703 };
Chris@16 704
Chris@16 705 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 706
Chris@16 707 template <>
Chris@16 708 struct ratio_string<tera, char16_t>
Chris@16 709 {
Chris@16 710 static std::u16string symbol() {return std::u16string(1, u'T');}
Chris@16 711 static std::u16string prefix() {return std::u16string(u"tera");}
Chris@16 712 };
Chris@16 713
Chris@16 714 template <>
Chris@16 715 struct ratio_string<tera, char32_t>
Chris@16 716 {
Chris@16 717 static std::u32string symbol() {return std::u32string(1, U'T');}
Chris@16 718 static std::u32string prefix() {return std::u32string(U"tera");}
Chris@16 719 };
Chris@16 720
Chris@16 721 #endif
Chris@16 722
Chris@16 723 #ifndef BOOST_NO_STD_WSTRING
Chris@16 724 template <>
Chris@16 725 struct ratio_string<tera, wchar_t>
Chris@16 726 {
Chris@16 727 static std::wstring symbol() {return std::wstring(1, L'T');}
Chris@16 728 static std::wstring prefix() {return std::wstring(L"tera");}
Chris@16 729 };
Chris@16 730 #endif
Chris@16 731 #endif
Chris@16 732
Chris@16 733 // peta
Chris@16 734
Chris@16 735 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 736 template <typename CharT>
Chris@16 737 struct ratio_string<peta, CharT> :
Chris@16 738 ratio_detail::ratio_string_static<peta,CharT>
Chris@16 739 {};
Chris@16 740
Chris@16 741 #else
Chris@16 742 template <>
Chris@16 743 struct ratio_string<peta, char>
Chris@16 744 {
Chris@16 745 static std::string symbol() {return std::string(1, 'P');}
Chris@16 746 static std::string prefix() {return std::string("peta");}
Chris@16 747 };
Chris@16 748
Chris@16 749 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 750
Chris@16 751 template <>
Chris@16 752 struct ratio_string<peta, char16_t>
Chris@16 753 {
Chris@16 754 static std::u16string symbol() {return std::u16string(1, u'P');}
Chris@16 755 static std::u16string prefix() {return std::u16string(u"peta");}
Chris@16 756 };
Chris@16 757
Chris@16 758 template <>
Chris@16 759 struct ratio_string<peta, char32_t>
Chris@16 760 {
Chris@16 761 static std::u32string symbol() {return std::u32string(1, U'P');}
Chris@16 762 static std::u32string prefix() {return std::u32string(U"peta");}
Chris@16 763 };
Chris@16 764
Chris@16 765 #endif
Chris@16 766
Chris@16 767 #ifndef BOOST_NO_STD_WSTRING
Chris@16 768 template <>
Chris@16 769 struct ratio_string<peta, wchar_t>
Chris@16 770 {
Chris@16 771 static std::wstring symbol() {return std::wstring(1, L'P');}
Chris@16 772 static std::wstring prefix() {return std::wstring(L"peta");}
Chris@16 773 };
Chris@16 774 #endif
Chris@16 775 #endif
Chris@16 776
Chris@16 777 // exa
Chris@16 778
Chris@16 779 #ifdef BOOST_RATIO_HAS_STATIC_STRING
Chris@16 780 template <typename CharT>
Chris@16 781 struct ratio_string<exa, CharT> :
Chris@16 782 ratio_detail::ratio_string_static<exa,CharT>
Chris@16 783 {};
Chris@16 784
Chris@16 785 #else
Chris@16 786 template <>
Chris@16 787 struct ratio_string<exa, char>
Chris@16 788 {
Chris@16 789 static std::string symbol() {return std::string(1, 'E');}
Chris@16 790 static std::string prefix() {return std::string("exa");}
Chris@16 791 };
Chris@16 792
Chris@16 793 #if defined BOOST_RATIO_HAS_UNICODE_SUPPORT
Chris@16 794
Chris@16 795 template <>
Chris@16 796 struct ratio_string<exa, char16_t>
Chris@16 797 {
Chris@16 798 static std::u16string symbol() {return std::u16string(1, u'E');}
Chris@16 799 static std::u16string prefix() {return std::u16string(u"exa");}
Chris@16 800 };
Chris@16 801
Chris@16 802 template <>
Chris@16 803 struct ratio_string<exa, char32_t>
Chris@16 804 {
Chris@16 805 static std::u32string symbol() {return std::u32string(1, U'E');}
Chris@16 806 static std::u32string prefix() {return std::u32string(U"exa");}
Chris@16 807 };
Chris@16 808
Chris@16 809 #endif
Chris@16 810
Chris@16 811 #ifndef BOOST_NO_STD_WSTRING
Chris@16 812 template <>
Chris@16 813 struct ratio_string<exa, wchar_t>
Chris@16 814 {
Chris@16 815 static std::wstring symbol() {return std::wstring(1, L'E');}
Chris@16 816 static std::wstring prefix() {return std::wstring(L"exa");}
Chris@16 817 };
Chris@16 818 #endif
Chris@16 819 #endif
Chris@16 820
Chris@16 821 }
Chris@16 822
Chris@16 823 #endif // BOOST_RATIO_PROVIDES_DEPRECATED_FEATURES_SINCE_V2_0_0
Chris@16 824 #endif // BOOST_RATIO_RATIO_IO_HPP