|
|
|
@ -31,13 +31,17 @@ |
|
|
|
|
#ifndef GOOGLE_PROTOBUF_UTIL_TIME_UTIL_H__ |
|
|
|
|
#define GOOGLE_PROTOBUF_UTIL_TIME_UTIL_H__ |
|
|
|
|
|
|
|
|
|
#include <sys/time.h> |
|
|
|
|
|
|
|
|
|
#include <ctime> |
|
|
|
|
#include <ostream> |
|
|
|
|
#include <string> |
|
|
|
|
#ifdef _MSC_VER |
|
|
|
|
#include <winsock2.h> |
|
|
|
|
#else |
|
|
|
|
#include <sys/time.h> |
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
#include <google/protobuf/duration.pb.h> |
|
|
|
|
#include <google/protobuf/stubs/port.h> |
|
|
|
|
#include <google/protobuf/timestamp.pb.h> |
|
|
|
|
|
|
|
|
|
namespace google { |
|
|
|
@ -85,6 +89,9 @@ class LIBPROTOBUF_EXPORT TimeUtil { |
|
|
|
|
static string ToString(const Duration& duration); |
|
|
|
|
static bool FromString(const string& value, Duration* timestamp); |
|
|
|
|
|
|
|
|
|
#ifdef GetCurrentTime |
|
|
|
|
#undef GetCurrentTime // Visual Studio has macro GetCurrentTime
|
|
|
|
|
#endif |
|
|
|
|
// Gets the current UTC time.
|
|
|
|
|
static Timestamp GetCurrentTime(); |
|
|
|
|
// Returns the Time representing "1970-01-01 00:00:00".
|
|
|
|
@ -153,12 +160,12 @@ namespace protobuf { |
|
|
|
|
// Overloaded operators for Duration.
|
|
|
|
|
//
|
|
|
|
|
// Assignment operators.
|
|
|
|
|
Duration& operator+=(Duration& d1, const Duration& d2); // NOLINT
|
|
|
|
|
Duration& operator-=(Duration& d1, const Duration& d2); // NOLINT
|
|
|
|
|
Duration& operator*=(Duration& d, int64 r); // NOLINT
|
|
|
|
|
Duration& operator*=(Duration& d, double r); // NOLINT
|
|
|
|
|
Duration& operator/=(Duration& d, int64 r); // NOLINT
|
|
|
|
|
Duration& operator/=(Duration& d, double r); // NOLINT
|
|
|
|
|
LIBPROTOBUF_EXPORT Duration& operator+=(Duration& d1, const Duration& d2); // NOLINT
|
|
|
|
|
LIBPROTOBUF_EXPORT Duration& operator-=(Duration& d1, const Duration& d2); // NOLINT
|
|
|
|
|
LIBPROTOBUF_EXPORT Duration& operator*=(Duration& d, int64 r); // NOLINT
|
|
|
|
|
LIBPROTOBUF_EXPORT Duration& operator*=(Duration& d, double r); // NOLINT
|
|
|
|
|
LIBPROTOBUF_EXPORT Duration& operator/=(Duration& d, int64 r); // NOLINT
|
|
|
|
|
LIBPROTOBUF_EXPORT Duration& operator/=(Duration& d, double r); // NOLINT
|
|
|
|
|
// Overload for other integer types.
|
|
|
|
|
template <typename T> |
|
|
|
|
Duration& operator*=(Duration& d, T r) { // NOLINT
|
|
|
|
@ -170,7 +177,7 @@ Duration& operator/=(Duration& d, T r) { // NOLINT |
|
|
|
|
int64 x = r; |
|
|
|
|
return d /= x; |
|
|
|
|
} |
|
|
|
|
Duration& operator%=(Duration& d1, const Duration& d2); // NOLINT
|
|
|
|
|
LIBPROTOBUF_EXPORT Duration& operator%=(Duration& d1, const Duration& d2); // NOLINT
|
|
|
|
|
// Relational operators.
|
|
|
|
|
inline bool operator<(const Duration& d1, const Duration& d2) { |
|
|
|
|
if (d1.seconds() == d2.seconds()) { |
|
|
|
@ -221,7 +228,7 @@ template<typename T> |
|
|
|
|
inline Duration operator/(Duration d, T r) { |
|
|
|
|
return d /= r; |
|
|
|
|
} |
|
|
|
|
int64 operator/(const Duration& d1, const Duration& d2); |
|
|
|
|
LIBPROTOBUF_EXPORT int64 operator/(const Duration& d1, const Duration& d2); |
|
|
|
|
|
|
|
|
|
inline Duration operator%(const Duration& d1, const Duration& d2) { |
|
|
|
|
Duration result = d1; |
|
|
|
@ -236,7 +243,9 @@ inline ostream& operator<<(ostream& out, const Duration& d) { |
|
|
|
|
// Overloaded operators for Timestamp
|
|
|
|
|
//
|
|
|
|
|
// Assignement operators.
|
|
|
|
|
LIBPROTOBUF_EXPORT |
|
|
|
|
Timestamp& operator+=(Timestamp& t, const Duration& d); // NOLINT
|
|
|
|
|
LIBPROTOBUF_EXPORT |
|
|
|
|
Timestamp& operator-=(Timestamp& t, const Duration& d); // NOLINT
|
|
|
|
|
// Relational operators.
|
|
|
|
|
inline bool operator<(const Timestamp& t1, const Timestamp& t2) { |
|
|
|
@ -273,7 +282,7 @@ inline Timestamp operator-(const Timestamp& t, const Duration& d) { |
|
|
|
|
Timestamp result = t; |
|
|
|
|
return result -= d; |
|
|
|
|
} |
|
|
|
|
Duration operator-(const Timestamp& t1, const Timestamp& t2); |
|
|
|
|
LIBPROTOBUF_EXPORT Duration operator-(const Timestamp& t1, const Timestamp& t2); |
|
|
|
|
|
|
|
|
|
inline ostream& operator<<(ostream& out, const Timestamp& t) { |
|
|
|
|
out << google::protobuf::util::TimeUtil::ToString(t); |
|
|
|
|