Line data Source code
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 : 18 : namespace boost { 19 : namespace 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 4 : BOOST_CXX14_CONSTEXPR explicit seconds(T const& s, 58 : typename boost::enable_if<boost::is_integral<T>, void>::type* = BOOST_DATE_TIME_NULLPTR) : 59 2 : time_duration(0,0, numeric_cast<sec_type>(s)) 60 4 : {} 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 :