BVB Source Codes

mars Show time_clock.hpp Source code

Return Download mars: download time_clock.hpp Source code - Download mars Source code - Type:.hpp
  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 mars_boost {} namespace boost = mars_boost; namespace mars_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.     static time_type local_time()
  34.     {
  35.       ::std::time_t t;
  36.       ::std::time(&t);
  37.       ::std::tm curr, *curr_ptr;
  38.       //curr_ptr = ::std::localtime(&t);
  39.       curr_ptr = c_time::localtime(&t, &curr);
  40.       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(mars_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.     static time_type create_time(::std::tm* current)
  67.     {
  68.       date_type d(static_cast<unsigned short>(current->tm_year + 1900),
  69.                   static_cast<unsigned short>(current->tm_mon + 1),
  70.                   static_cast<unsigned short>(current->tm_mday));
  71.       time_duration_type td(current->tm_hour,
  72.                             current->tm_min,
  73.                             current->tm_sec);
  74.       return time_type(d,td);
  75.     }
  76.  
  77.   };
  78.  
  79.  
  80. } } //namespace date_time
  81.  
  82.  
  83. #endif
  84.  
downloadtime_clock.hpp Source code - Download mars Source code
Related Source Codes/Software:
Hero - Elegant transition library for iOS & tvOS 2017-06-09
deep-photo-styletransfer - Code and data for paper "Deep Photo Style Transfer... 2017-06-09
mastodon - A GNU Social-compatible microblogging server ... 2017-06-09
plyr - A simple HTML5, YouTube and Vimeo player ... 2017-06-08
prepack - Prepack is a partial evaluator for JavaScript. Pre... 2017-06-08
Public-APIs - 2017-06-09
lottie-ios - An iOS library to natively render After Effects ve... 2017-06-09
Awesome-Hacking - A collection of various awesome lists for hackers,... 2017-06-09
algorithms - Minimal examples of data structures and algorithms... 2017-06-10
lectures - Oxford Deep NLP 2017 course 2017-06-10
CRYENGINE - CRYENGINE is a powerful real-time game development... 2017-06-11
postal - 2017-06-11
reactide - Reactide is the first dedicated IDE for React web ... 2017-06-11
rkt - rkt is a pod-native container engine for Linux. It... 2017-06-11
uWebSockets - Tiny WebSockets https://for... 2017-06-11
realworld - TodoMVC for the RealWorld - Exemplary fullstack Me... 2017-06-11
goreplay - GoReplay is an open-source tool for capturing and ... 2017-06-10
pyenv - Simple Python version management 2017-06-10
redux-saga - An alternative side effect model for Redux apps ... 2017-06-10
angular-starter - 2017-06-10

 Back to top