diff options
author | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-27 18:04:56 +0000 |
---|---|---|
committer | avi@chromium.org <avi@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-06-27 18:04:56 +0000 |
commit | 89bf27e34e49c271aa958c1795d5bccad0e63f88 (patch) | |
tree | f971f9282a07dbb991a079daade728830df3da2d /base/time.cc | |
parent | aa0ec7b63637a5917ce4be9a0e6cceb26b7a3298 (diff) | |
download | chromium_src-89bf27e34e49c271aa958c1795d5bccad0e63f88.zip chromium_src-89bf27e34e49c271aa958c1795d5bccad0e63f88.tar.gz chromium_src-89bf27e34e49c271aa958c1795d5bccad0e63f88.tar.bz2 |
Move timing files into base/time and base/timer, install forwarding headers.
BUG=254986
TEST=none
TBR=brettw@chromium.org
Review URL: https://codereview.chromium.org/18063004
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@208951 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/time.cc')
-rw-r--r-- | base/time.cc | 205 |
1 files changed, 0 insertions, 205 deletions
diff --git a/base/time.cc b/base/time.cc deleted file mode 100644 index 415f707..0000000 --- a/base/time.cc +++ /dev/null @@ -1,205 +0,0 @@ -// Copyright (c) 2012 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "base/time.h" - -#include <math.h> -#if defined(OS_WIN) -#include <float.h> -#endif - -#include <limits> - -#include "base/strings/sys_string_conversions.h" -#include "base/third_party/nspr/prtime.h" - -#include "base/logging.h" - -namespace base { - -namespace { -#if defined(OS_WIN) -inline bool isnan(double num) { return !!_isnan(num); } -#endif -} - -// TimeDelta ------------------------------------------------------------------ - -int TimeDelta::InDays() const { - return static_cast<int>(delta_ / Time::kMicrosecondsPerDay); -} - -int TimeDelta::InHours() const { - return static_cast<int>(delta_ / Time::kMicrosecondsPerHour); -} - -int TimeDelta::InMinutes() const { - return static_cast<int>(delta_ / Time::kMicrosecondsPerMinute); -} - -double TimeDelta::InSecondsF() const { - return static_cast<double>(delta_) / Time::kMicrosecondsPerSecond; -} - -int64 TimeDelta::InSeconds() const { - return delta_ / Time::kMicrosecondsPerSecond; -} - -double TimeDelta::InMillisecondsF() const { - return static_cast<double>(delta_) / Time::kMicrosecondsPerMillisecond; -} - -int64 TimeDelta::InMilliseconds() const { - return delta_ / Time::kMicrosecondsPerMillisecond; -} - -int64 TimeDelta::InMillisecondsRoundedUp() const { - return (delta_ + Time::kMicrosecondsPerMillisecond - 1) / - Time::kMicrosecondsPerMillisecond; -} - -int64 TimeDelta::InMicroseconds() const { - return delta_; -} - -// Time ----------------------------------------------------------------------- - -// static -Time Time::Max() { - return Time(std::numeric_limits<int64>::max()); -} - -// static -Time Time::FromTimeT(time_t tt) { - if (tt == 0) - return Time(); // Preserve 0 so we can tell it doesn't exist. - if (tt == std::numeric_limits<time_t>::max()) - return Max(); - return Time((tt * kMicrosecondsPerSecond) + kTimeTToMicrosecondsOffset); -} - -time_t Time::ToTimeT() const { - if (is_null()) - return 0; // Preserve 0 so we can tell it doesn't exist. - if (is_max()) { - // Preserve max without offset to prevent overflow. - return std::numeric_limits<time_t>::max(); - } - if (std::numeric_limits<int64>::max() - kTimeTToMicrosecondsOffset <= us_) { - DLOG(WARNING) << "Overflow when converting base::Time with internal " << - "value " << us_ << " to time_t."; - return std::numeric_limits<time_t>::max(); - } - return (us_ - kTimeTToMicrosecondsOffset) / kMicrosecondsPerSecond; -} - -// static -Time Time::FromDoubleT(double dt) { - if (dt == 0 || isnan(dt)) - return Time(); // Preserve 0 so we can tell it doesn't exist. - if (dt == std::numeric_limits<double>::max()) - return Max(); - return Time(static_cast<int64>((dt * - static_cast<double>(kMicrosecondsPerSecond)) + - kTimeTToMicrosecondsOffset)); -} - -double Time::ToDoubleT() const { - if (is_null()) - return 0; // Preserve 0 so we can tell it doesn't exist. - if (is_max()) { - // Preserve max without offset to prevent overflow. - return std::numeric_limits<double>::max(); - } - return (static_cast<double>(us_ - kTimeTToMicrosecondsOffset) / - static_cast<double>(kMicrosecondsPerSecond)); -} - -#if defined(OS_POSIX) -// static -Time Time::FromTimeSpec(const timespec& ts) { - return FromDoubleT(ts.tv_sec + - static_cast<double>(ts.tv_nsec) / - base::Time::kNanosecondsPerSecond); -} -#endif - -// static -Time Time::FromJsTime(double ms_since_epoch) { - // The epoch is a valid time, so this constructor doesn't interpret - // 0 as the null time. - if (ms_since_epoch == std::numeric_limits<double>::max()) - return Max(); - return Time(static_cast<int64>(ms_since_epoch * kMicrosecondsPerMillisecond) + - kTimeTToMicrosecondsOffset); -} - -double Time::ToJsTime() const { - if (is_null()) { - // Preserve 0 so the invalid result doesn't depend on the platform. - return 0; - } - if (is_max()) { - // Preserve max without offset to prevent overflow. - return std::numeric_limits<double>::max(); - } - return (static_cast<double>(us_ - kTimeTToMicrosecondsOffset) / - kMicrosecondsPerMillisecond); -} - -// static -Time Time::UnixEpoch() { - Time time; - time.us_ = kTimeTToMicrosecondsOffset; - return time; -} - -Time Time::LocalMidnight() const { - Exploded exploded; - LocalExplode(&exploded); - exploded.hour = 0; - exploded.minute = 0; - exploded.second = 0; - exploded.millisecond = 0; - return FromLocalExploded(exploded); -} - -// static -bool Time::FromStringInternal(const char* time_string, - bool is_local, - Time* parsed_time) { - DCHECK((time_string != NULL) && (parsed_time != NULL)); - - if (time_string[0] == '\0') - return false; - - PRTime result_time = 0; - PRStatus result = PR_ParseTimeString(time_string, - is_local ? PR_FALSE : PR_TRUE, - &result_time); - if (PR_SUCCESS != result) - return false; - - result_time += kTimeTToMicrosecondsOffset; - *parsed_time = Time(result_time); - return true; -} - -// Time::Exploded ------------------------------------------------------------- - -inline bool is_in_range(int value, int lo, int hi) { - return lo <= value && value <= hi; -} - -bool Time::Exploded::HasValidValues() const { - return is_in_range(month, 1, 12) && - is_in_range(day_of_week, 0, 6) && - is_in_range(day_of_month, 1, 31) && - is_in_range(hour, 0, 23) && - is_in_range(minute, 0, 59) && - is_in_range(second, 0, 60) && - is_in_range(millisecond, 0, 999); -} - -} // namespace base |