1#ifndef POSIX_TIME_DURATION_HPP___
2#define POSIX_TIME_DURATION_HPP___
3
4/* Copyright (c) 2002,2003, 2020 CrystalClear Software, Inc.
5 * Use, modification and distribution is subject to the
6 * Boost Software License, Version 1.0. (See accompanying
7 * file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
8 * Author: Jeff Garland
9 * $Date$
10 */
11
12#include <boost/core/enable_if.hpp>
13#include <boost/date_time/compiler_config.hpp>
14#include <boost/date_time/posix_time/posix_time_config.hpp>
15#include <boost/numeric/conversion/cast.hpp>
16#include <boost/type_traits/is_integral.hpp>
17
18namespace boost {
19namespace posix_time {
20
21 //! Allows expression of durations as an hour count
22 //! The argument must be an integral type
23 /*! \ingroup time_basics
24 */
25 class BOOST_SYMBOL_VISIBLE hours : public time_duration
26 {
27 public:
28 template <typename T>
29 BOOST_CXX14_CONSTEXPR explicit hours(T const& h,
30 typename boost::enable_if<boost::is_integral<T>, void>::type* = BOOST_DATE_TIME_NULLPTR) :
31 time_duration(numeric_cast<hour_type>(h), 0, 0)
32 {}
33 };
34
35 //! Allows expression of durations as a minute count
36 //! The argument must be an integral type
37 /*! \ingroup time_basics
38 */
39 class BOOST_SYMBOL_VISIBLE minutes : public time_duration
40 {
41 public:
42 template <typename T>
43 BOOST_CXX14_CONSTEXPR explicit minutes(T const& m,
44 typename boost::enable_if<boost::is_integral<T>, void>::type* = BOOST_DATE_TIME_NULLPTR) :
45 time_duration(0, numeric_cast<min_type>(m),0)
46 {}
47 };
48
49 //! Allows expression of durations as a seconds count
50 //! The argument must be an integral type
51 /*! \ingroup time_basics
52 */
53 class BOOST_SYMBOL_VISIBLE seconds : public time_duration
54 {
55 public:
56 template <typename T>
57 BOOST_CXX14_CONSTEXPR explicit seconds(T const& s,
58 typename boost::enable_if<boost::is_integral<T>, void>::type* = BOOST_DATE_TIME_NULLPTR) :
59 time_duration(0,0, numeric_cast<sec_type>(s))
60 {}
61 };
62
63
64 //! Allows expression of durations as milli seconds
65 /*! \ingroup time_basics
66 */
67 typedef date_time::subsecond_duration<time_duration,1000> millisec;
68 typedef date_time::subsecond_duration<time_duration,1000> milliseconds;
69
70 //! Allows expression of durations as micro seconds
71 /*! \ingroup time_basics
72 */
73 typedef date_time::subsecond_duration<time_duration,1000000> microsec;
74 typedef date_time::subsecond_duration<time_duration,1000000> microseconds;
75
76 //This is probably not needed anymore...
77#if defined(BOOST_DATE_TIME_HAS_NANOSECONDS)
78
79 //! Allows expression of durations as nano seconds
80 /*! \ingroup time_basics
81 */
82 typedef date_time::subsecond_duration<time_duration,1000000000> nanosec;
83 typedef date_time::subsecond_duration<time_duration,1000000000> nanoseconds;
84
85#endif
86
87} }//namespace posix_time
88
89
90#endif
91
92

source code of include/boost/date_time/posix_time/posix_time_duration.hpp