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