/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/ #ifndef INCLUDED_TOOLS_TIME_HXX #define INCLUDED_TOOLS_TIME_HXX
/** @WARNING: This class can serve both as wall clock time and time duration, and the mixing of these concepts leads to problems such as there being 25 hours or 10 minus 20 seconds being (non-negative) 10 seconds.
*/
namespace tools {
class SAL_WARN_UNUSED TOOLS_DLLPUBLIC Time
{ private:
sal_Int64 nTime; explicit Time(sal_Int64 _nTime) { nTime = _nTime; } static sal_Int64 assemble(sal_uInt32 h, sal_uInt32 m, sal_uInt32 s, sal_uInt64 ns); short GetSign() const { return (nTime >= 0) ? +1 : -1; }
public: enum TimeInitSystem
{
SYSTEM
};
// temporary until all uses are inspected and resolved enum TimeInitEmpty
{
EMPTY
}; staticconst sal_Int64 hourPerDay = 24; staticconst sal_Int64 minutePerHour = 60; staticconst sal_Int64 secondPerMinute = 60;
/// 12 hours == 0.5 days double GetTimeInDays() const;
/** Get the wall clock time particles for a (date+)time value.
Does the necessary rounding and truncating to obtain hour, minute, second and fraction of second from a double time value (time in days, 0.5 == 12h) such that individual values are not rounded up, i.e. x:59:59.999 does not yield x+1:0:0.00
A potential date component (fTimeInDays >= 1.0) is discarded.
@param nFractionDecimals If > 0 fFractionOfSecond is truncated to that amount of decimals. Else fFractionOfSecond returns the full remainder of the fractional second.
*/ staticvoid GetClock( double fTimeInDays,
sal_uInt16& nHour, sal_uInt16& nMinute, sal_uInt16& nSecond, double& fFractionOfSecond, int nFractionDecimals );
/** * Elapsed time in milliseconds (1e-3) since some unspecified starting point * * Convenience function, which just calls GetMonotonicTicks() / 1000.
*/ static sal_uInt64 GetSystemTicks();
/** * Elapsed time in microseconds (1e-6) since some unspecified starting point * * Uses the high-precision, monotonic time sources provided by the OS, if * available. Don't try to relate it to the system time, and also it's long * time accuracy is not the best. * * Currently used to measure the runtime of OpenCL shaders and to set a * message creation timestamp to allow filtering of invalid timer messages. * * @return current system ticks in microseconds (1e-6s)
*/ static sal_uInt64 GetMonotonicTicks();
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.