All Classes Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
chrono/literals.hpp
1 // The MIT License (MIT)
2 
3 // Copyright (c) 2012-2014 Danny Y., Rapptz
4 
5 // Permission is hereby granted, free of charge, to any person obtaining a copy of
6 // this software and associated documentation files (the "Software"), to deal in
7 // the Software without restriction, including without limitation the rights to
8 // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
9 // the Software, and to permit persons to whom the Software is furnished to do so,
10 // subject to the following conditions:
11 
12 // The above copyright notice and this permission notice shall be included in all
13 // copies or substantial portions of the Software.
14 
15 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
17 // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
18 // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
19 // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
20 // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21 
22 #ifndef GEARS_CHRONO_LITERALS_HPP
23 #define GEARS_CHRONO_LITERALS_HPP
24 
25 #include <chrono>
26 
27 namespace gears {
28 namespace chrono {
29 namespace literals {
30 constexpr std::chrono::duration<long double, std::ratio<3600>> operator"" _h(long double hours) {
31  return std::chrono::duration<long double, std::ratio<3600>>{ hours };
32 }
33 
34 constexpr std::chrono::duration<long double, std::ratio<60>> operator"" _min(long double minutes) {
35  return std::chrono::duration<long double, std::ratio<60>>{ minutes };
36 }
37 
38 constexpr std::chrono::duration<long double> operator"" _s(long double seconds) {
39  return std::chrono::duration<long double>{ seconds };
40 }
41 
42 constexpr std::chrono::duration<long double, std::milli> operator"" _ms(long double milliseconds) {
43  return std::chrono::duration<long double, std::milli>{ milliseconds };
44 }
45 
46 constexpr std::chrono::duration<long double, std::micro> operator"" _us(long double microseconds) {
47  return std::chrono::duration<long double, std::micro>{ microseconds };
48 }
49 
50 constexpr std::chrono::duration<long double, std::nano> operator"" _ns(long double nanoseconds) {
51  return std::chrono::duration<long double, std::nano>{ nanoseconds };
52 }
53 
54 constexpr std::chrono::duration<unsigned long long, std::ratio<3600>> operator"" _h(unsigned long long hours) {
55  return std::chrono::duration<unsigned long long, std::ratio<3600>>{ hours };
56 }
57 
58 constexpr std::chrono::duration<unsigned long long, std::ratio<60>> operator"" _min(unsigned long long minutes) {
59  return std::chrono::duration<unsigned long long, std::ratio<60>>{ minutes };
60 }
61 
62 constexpr std::chrono::duration<unsigned long long> operator"" _s(unsigned long long seconds) {
63  return std::chrono::duration<unsigned long long>{ seconds };
64 }
65 
66 constexpr std::chrono::duration<unsigned long long, std::milli> operator"" _ms(unsigned long long milliseconds) {
67  return std::chrono::duration<unsigned long long, std::milli>{ milliseconds };
68 }
69 
70 constexpr std::chrono::duration<unsigned long long, std::micro> operator"" _us(unsigned long long microseconds) {
71  return std::chrono::duration<unsigned long long, std::micro>{ microseconds };
72 }
73 
74 constexpr std::chrono::duration<unsigned long long, std::nano> operator"" _ns(unsigned long long nanoseconds) {
75  return std::chrono::duration<unsigned long long, std::nano>{ nanoseconds };
76 }
77 } // literals
78 } // chrono
79 } // gears
80 
81 
82 #endif // GEARS_CHRONO_LITERALS_HPP