Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(427)

Side by Side Diff: base/time/time.cc

Issue 935333002: Update from https://crrev.com/316786 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « base/time/time.h ('k') | base/time/time_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/time/time.h" 5 #include "base/time/time.h"
6 6
7 #include <ios> 7 #include <ios>
8 #include <limits> 8 #include <limits>
9 #include <ostream> 9 #include <ostream>
10 #include <sstream> 10 #include <sstream>
(...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after
267 }; 267 };
268 268
269 static LazyInstance<UnixEpochSingleton>::Leaky 269 static LazyInstance<UnixEpochSingleton>::Leaky
270 leaky_unix_epoch_singleton_instance = LAZY_INSTANCE_INITIALIZER; 270 leaky_unix_epoch_singleton_instance = LAZY_INSTANCE_INITIALIZER;
271 271
272 // Static 272 // Static
273 TimeTicks TimeTicks::UnixEpoch() { 273 TimeTicks TimeTicks::UnixEpoch() {
274 return leaky_unix_epoch_singleton_instance.Get().unix_epoch(); 274 return leaky_unix_epoch_singleton_instance.Get().unix_epoch();
275 } 275 }
276 276
277 TimeTicks TimeTicks::SnappedToNextTick(TimeTicks tick_phase,
278 TimeDelta tick_interval) const {
279 // |interval_offset| is the offset from |this| to the next multiple of
280 // |tick_interval| after |tick_phase|, possibly negative if in the past.
281 TimeDelta interval_offset = TimeDelta::FromInternalValue(
282 (tick_phase - *this).ToInternalValue() % tick_interval.ToInternalValue());
283 // If |this| is exactly on the interval (i.e. offset==0), don't adjust.
284 // Otherwise, if |tick_phase| was in the past, adjust forward to the next
285 // tick after |this|.
286 if (interval_offset.ToInternalValue() != 0 && tick_phase < *this) {
287 interval_offset += tick_interval;
288 }
289
290 return *this + interval_offset;
291 }
292
277 std::ostream& operator<<(std::ostream& os, TimeTicks time_ticks) { 293 std::ostream& operator<<(std::ostream& os, TimeTicks time_ticks) {
278 // This function formats a TimeTicks object as "bogo-microseconds". 294 // This function formats a TimeTicks object as "bogo-microseconds".
279 // The origin and granularity of the count are platform-specific, and may very 295 // The origin and granularity of the count are platform-specific, and may very
280 // from run to run. Although bogo-microseconds usually roughly correspond to 296 // from run to run. Although bogo-microseconds usually roughly correspond to
281 // real microseconds, the only real guarantee is that the number never goes 297 // real microseconds, the only real guarantee is that the number never goes
282 // down during a single run. 298 // down during a single run.
283 const TimeDelta as_time_delta = time_ticks - TimeTicks(); 299 const TimeDelta as_time_delta = time_ticks - TimeTicks();
284 return os << as_time_delta.InMicroseconds() << " bogo-microseconds"; 300 return os << as_time_delta.InMicroseconds() << " bogo-microseconds";
285 } 301 }
286 302
287 // Time::Exploded ------------------------------------------------------------- 303 // Time::Exploded -------------------------------------------------------------
288 304
289 inline bool is_in_range(int value, int lo, int hi) { 305 inline bool is_in_range(int value, int lo, int hi) {
290 return lo <= value && value <= hi; 306 return lo <= value && value <= hi;
291 } 307 }
292 308
293 bool Time::Exploded::HasValidValues() const { 309 bool Time::Exploded::HasValidValues() const {
294 return is_in_range(month, 1, 12) && 310 return is_in_range(month, 1, 12) &&
295 is_in_range(day_of_week, 0, 6) && 311 is_in_range(day_of_week, 0, 6) &&
296 is_in_range(day_of_month, 1, 31) && 312 is_in_range(day_of_month, 1, 31) &&
297 is_in_range(hour, 0, 23) && 313 is_in_range(hour, 0, 23) &&
298 is_in_range(minute, 0, 59) && 314 is_in_range(minute, 0, 59) &&
299 is_in_range(second, 0, 60) && 315 is_in_range(second, 0, 60) &&
300 is_in_range(millisecond, 0, 999); 316 is_in_range(millisecond, 0, 999);
301 } 317 }
302 318
303 } // namespace base 319 } // namespace base
OLDNEW
« no previous file with comments | « base/time/time.h ('k') | base/time/time_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698