• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- TimeValue.h ---------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 
10 #ifndef liblldb_TimeValue_h_
11 #define liblldb_TimeValue_h_
12 
13 // C Includes
14 #include <stdint.h>
15 #include <sys/time.h>
16 
17 // BEGIN: MinGW work around
18 #if !defined(_STRUCT_TIMESPEC) && !defined(HAVE_STRUCT_TIMESPEC)
19 #include <pthread.h>
20 #endif
21 // END: MinGW work around
22 
23 // C++ Includes
24 // Other libraries and framework includes
25 // Project includes
26 #include "lldb/lldb-private.h"
27 
28 namespace lldb_private {
29 
30 class TimeValue
31 {
32 public:
33     static const uint64_t MicroSecPerSec = 1000000UL;
34     static const uint64_t NanoSecPerSec = 1000000000UL;
35     static const uint64_t NanoSecPerMicroSec = 1000U;
36 
37     //------------------------------------------------------------------
38     // Constructors and Destructors
39     //------------------------------------------------------------------
40     TimeValue();
41     TimeValue(const TimeValue& rhs);
42     TimeValue(const struct timespec& ts);
43     TimeValue(const struct timeval& tv);
44     ~TimeValue();
45 
46     //------------------------------------------------------------------
47     // Operators
48     //------------------------------------------------------------------
49     const TimeValue&
50     operator=(const TimeValue& rhs);
51 
52     void
53     Clear ();
54 
55     uint64_t
56     GetAsNanoSecondsSinceJan1_1970() const;
57 
58     uint64_t
59     GetAsMicroSecondsSinceJan1_1970() const;
60 
61     uint64_t
62     GetAsSecondsSinceJan1_1970() const;
63 
64     struct timespec
65     GetAsTimeSpec () const;
66 
67     struct timeval
68     GetAsTimeVal () const;
69 
70     bool
71     IsValid () const;
72 
73     void
74     OffsetWithSeconds (uint64_t sec);
75 
76     void
77     OffsetWithMicroSeconds (uint64_t usec);
78 
79     void
80     OffsetWithNanoSeconds (uint64_t nsec);
81 
82     static TimeValue
83     Now();
84 
85     void
86     Dump (Stream *s, uint32_t width = 0) const;
87 
88 protected:
89     //------------------------------------------------------------------
90     // Classes that inherit from TimeValue can see and modify these
91     //------------------------------------------------------------------
92     uint64_t m_nano_seconds;
93 };
94 
95 bool operator == (const TimeValue &lhs, const TimeValue &rhs);
96 bool operator != (const TimeValue &lhs, const TimeValue &rhs);
97 bool operator <  (const TimeValue &lhs, const TimeValue &rhs);
98 bool operator <= (const TimeValue &lhs, const TimeValue &rhs);
99 bool operator >  (const TimeValue &lhs, const TimeValue &rhs);
100 bool operator >= (const TimeValue &lhs, const TimeValue &rhs);
101 
102 uint64_t operator -(const TimeValue &lhs, const TimeValue &rhs);
103 
104 } // namespace lldb_private
105 
106 
107 #endif  // liblldb_TimeValue_h_
108