LCOV - code coverage report
Current view: top level - usr/include/boost/date_time - time_clock.hpp (source / functions) Hit Total Coverage
Test: ROSE Lines: 0 12 0.0 %
Date: 2022-12-08 13:48:47 Functions: 0 2 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : #ifndef DATE_TIME_TIME_CLOCK_HPP___
       2             : #define DATE_TIME_TIME_CLOCK_HPP___
       3             : 
       4             : /* Copyright (c) 2002,2003,2005 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, Bart Garst
       9             :  * $Date$
      10             :  */
      11             : 
      12             : /*! @file time_clock.hpp
      13             :   This file contains the interface for clock devices.
      14             : */
      15             : 
      16             : #include "boost/date_time/c_time.hpp"
      17             : #include "boost/shared_ptr.hpp"
      18             : 
      19             : namespace boost {
      20             : namespace date_time {
      21             : 
      22             : 
      23             :   //! A clock providing time level services based on C time_t capabilities
      24             :   /*! This clock provides resolution to the 1 second level
      25             :    */
      26             :   template<class time_type>
      27             :   class second_clock
      28             :   {
      29             :   public:
      30             :     typedef typename time_type::date_type date_type;
      31             :     typedef typename time_type::time_duration_type time_duration_type;
      32             : 
      33           0 :     static time_type local_time()
      34             :     {
      35             :       ::std::time_t t;
      36           0 :       ::std::time(&t);
      37             :       ::std::tm curr, *curr_ptr;
      38             :       //curr_ptr = ::std::localtime(&t);
      39           0 :       curr_ptr = c_time::localtime(&t, &curr);
      40           0 :       return create_time(curr_ptr);
      41             :     }
      42             : 
      43             : 
      44             :     //! Get the current day in universal date as a ymd_type
      45             :     static time_type universal_time()
      46             :     {
      47             : 
      48             :       ::std::time_t t;
      49             :       ::std::time(&t);
      50             :       ::std::tm curr, *curr_ptr;
      51             :       //curr_ptr = ::std::gmtime(&t);
      52             :       curr_ptr = c_time::gmtime(&t, &curr);
      53             :       return create_time(curr_ptr);
      54             :     }
      55             : 
      56             :     template<class time_zone_type>
      57             :     static time_type local_time(boost::shared_ptr<time_zone_type> tz_ptr)
      58             :     {
      59             :       typedef typename time_type::utc_time_type utc_time_type;
      60             :       utc_time_type utc_time = second_clock<utc_time_type>::universal_time();
      61             :       return time_type(utc_time, tz_ptr);
      62             :     }
      63             : 
      64             : 
      65             :   private:
      66           0 :     static time_type create_time(::std::tm* current)
      67             :     {
      68           0 :       date_type d(static_cast<unsigned short>(current->tm_year + 1900),
      69           0 :                   static_cast<unsigned short>(current->tm_mon + 1),
      70           0 :                   static_cast<unsigned short>(current->tm_mday));
      71           0 :       time_duration_type td(current->tm_hour,
      72           0 :                             current->tm_min,
      73           0 :                             current->tm_sec);
      74           0 :       return time_type(d,td);
      75             :     }
      76             : 
      77             :   };
      78             : 
      79             : 
      80             : } } //namespace date_time
      81             : 
      82             : 
      83             : #endif

Generated by: LCOV version 1.14