• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  #ifndef POSIX_PTIME_HPP___
2  #define POSIX_PTIME_HPP___
3  
4  /* Copyright (c) 2002,2003 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/date_time/posix_time/posix_time_system.hpp>
13  #include <boost/date_time/time.hpp>
14  #include <boost/date_time/compiler_config.hpp>
15  
16  namespace boost {
17  
18  namespace posix_time {
19  
20    //bring special enum values into the namespace
21    using date_time::special_values;
22    using date_time::not_special;
23    using date_time::neg_infin;
24    using date_time::pos_infin;
25    using date_time::not_a_date_time;
26    using date_time::max_date_time;
27    using date_time::min_date_time;
28  
29    //! Time type with no timezone or other adjustments
30    /*! \ingroup time_basics
31     */
32    class BOOST_SYMBOL_VISIBLE ptime : public date_time::base_time<ptime, posix_time_system>
33    {
34    public:
35      typedef posix_time_system time_system_type;
36      typedef time_system_type::time_rep_type time_rep_type;
37      typedef time_system_type::time_duration_type time_duration_type;
38      typedef ptime time_type;
39      //! Construct with date and offset in day
40      BOOST_CXX14_CONSTEXPR
ptime(gregorian::date d,time_duration_type td)41      ptime(gregorian::date d,time_duration_type td) :
42        date_time::base_time<time_type,time_system_type>(d,td)
43      {}
44      //! Construct a time at start of the given day (midnight)
45      BOOST_CXX14_CONSTEXPR
ptime(gregorian::date d)46      explicit ptime(gregorian::date d) :
47        date_time::base_time<time_type,time_system_type>(d,time_duration_type(0,0,0))
48      {}
49      //! Copy from time_rep
50      BOOST_CXX14_CONSTEXPR
ptime(const time_rep_type & rhs)51      ptime(const time_rep_type& rhs):
52        date_time::base_time<time_type,time_system_type>(rhs)
53      {}
54      //! Construct from special value
55      BOOST_CXX14_CONSTEXPR
ptime(const special_values sv)56      ptime(const special_values sv) :
57        date_time::base_time<time_type,time_system_type>(sv)
58      {}
59  #if !defined(DATE_TIME_NO_DEFAULT_CONSTRUCTOR)
60      // Default constructor constructs to not_a_date_time
61      BOOST_CXX14_CONSTEXPR
ptime()62      ptime() :
63        date_time::base_time<time_type,time_system_type>(gregorian::date(not_a_date_time),
64                                                         time_duration_type(not_a_date_time))
65      {}
66  #endif // DATE_TIME_NO_DEFAULT_CONSTRUCTOR
67  
68      friend BOOST_CXX14_CONSTEXPR
69      bool operator==(const ptime& lhs, const ptime& rhs);
70  
71    };
72  
73    inline BOOST_CXX14_CONSTEXPR
operator ==(const ptime & lhs,const ptime & rhs)74    bool operator==(const ptime& lhs, const ptime& rhs)
75    {
76      return ptime::time_system_type::is_equal(lhs.time_,rhs.time_);
77    }
78  
79  
80  } }//namespace posix_time
81  
82  
83  #endif
84  
85