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