Subversion Repositories Kolibri OS

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
6554 serge 1
// Compatibility symbols for previous versions, C++0x bits -*- C++ -*-
2
 
3
// Copyright (C) 2013-2015 Free Software Foundation, Inc.
4
//
5
// This file is part of the GNU ISO C++ Library.  This library is free
6
// software; you can redistribute it and/or modify it under the
7
// terms of the GNU General Public License as published by the
8
// Free Software Foundation; either version 3, or (at your option)
9
// any later version.
10
 
11
// This library is distributed in the hope that it will be useful,
12
// but WITHOUT ANY WARRANTY; without even the implied warranty of
13
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
// GNU General Public License for more details.
15
 
16
// Under Section 7 of GPL version 3, you are granted additional
17
// permissions described in the GCC Runtime Library Exception, version
18
// 3.1, as published by the Free Software Foundation.
19
 
20
// You should have received a copy of the GNU General Public License and
21
// a copy of the GCC Runtime Library Exception along with this program;
22
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
23
// .
24
 
25
#include 
26
 
27
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
28
 
29
#ifdef _GLIBCXX_USE_GETTIMEOFDAY
30
#include 
31
#endif
32
 
33
#define system_clock system_clockXX
34
#define steady_clock steady_clockXX
35
#include 
36
#undef system_clock
37
#undef steady_clock
38
 
39
namespace std _GLIBCXX_VISIBILITY(default)
40
{
41
  namespace chrono
42
  {
43
  _GLIBCXX_BEGIN_NAMESPACE_VERSION
44
 
45
    // NB: Default configuration was no realtime.
46
    struct system_clock
47
    {
48
#ifdef _GLIBCXX_USE_GETTIMEOFDAY
49
      typedef chrono::microseconds    				duration;
50
#else
51
      typedef chrono::seconds	      				duration;
52
#endif
53
 
54
      typedef duration::rep    					rep;
55
      typedef duration::period 					period;
56
      typedef chrono::time_point 	time_point;
57
 
58
      static_assert(system_clock::duration::min()
59
		    < system_clock::duration::zero(),
60
		    "a clock's minimum duration cannot be less than its epoch");
61
 
62
      static constexpr bool is_steady = false;
63
 
64
      static time_point
65
      now() noexcept;
66
    };
67
 
68
    constexpr bool system_clock::is_steady;
69
 
70
    system_clock::time_point
71
    system_clock::now() noexcept
72
    {
73
#ifdef _GLIBCXX_USE_GETTIMEOFDAY
74
      timeval tv;
75
      // EINVAL, EFAULT
76
      gettimeofday(&tv, 0);
77
      return time_point(duration(chrono::seconds(tv.tv_sec)
78
				 + chrono::microseconds(tv.tv_usec)));
79
#else
80
      std::time_t __sec = std::time(0);
81
      // This is the conversion done by system_clock::from_time_t(__sec)
82
      typedef chrono::time_point	__from;
83
      return time_point_cast
84
	     (__from(chrono::seconds(__sec)));
85
#endif
86
    }
87
 
88
  _GLIBCXX_END_NAMESPACE_VERSION
89
  } // namespace chrono
90
} // namespace std
91
 
92
#endif // _GLIBCXX_USE_C99_STDINT_TR1