Mercurial > hg > vamp-build-and-test
comparison DEPENDENCIES/generic/include/boost/date_time/time_clock.hpp @ 16:2665513ce2d3
Add boost headers
author | Chris Cannam |
---|---|
date | Tue, 05 Aug 2014 11:11:38 +0100 |
parents | |
children | c530137014c0 |
comparison
equal
deleted
inserted
replaced
15:663ca0da4350 | 16:2665513ce2d3 |
---|---|
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: 2008-02-27 12:00:24 -0800 (Wed, 27 Feb 2008) $ | |
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 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(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 |