FARGOS/VISTA Object Management Environment Core  ..
FARGOS/VISTA Object Management Environment Core Table of Contents
time_point.hpp File Reference

FARGOS Time Functions. More...

#include <utils/base/compiler_hints.h>
#include <utils/base/text2int.h>
#include <utils/base/timed_mutex.hpp>
#include <utils/time/tick_time.h>
#include <utils/time/get_time.h>
#include <iostream>
#include <stdio.h>
#include <time.h>
#include <stdint.h>
#include <string.h>
#include <map>

Go to the source code of this file.

Classes

class  TimePointCache
 Cache locale-specific time data around a particular point in time. More...
 
class  TimePointCacheTable
 Convenience class to maintain a table of TimePointCache objects. More...
 
class  POSIXtimeInUnits< UNITS >
 Representation of UNITS-since-POSIX-epoch. This is an unambiguous time reference; there is no locale-specific attribute. More...
 
class  TimePointOfGranularity< UNITS >
 Representation of localized expanded UNITS-since-epoch. More...
 

Macros

#define CALL_TZSET()   do { } while (0) /* null statement */
 

Typedefs

typedef POSIXtimeInUnits< 1000000000U > POSIXtimeInNanoseconds
 Convenience typedef for nanosecond-resolution time. More...
 
typedef POSIXtimeInUnits< 1U > POSIXtimeInSeconds
 Convenience typedef for conventional 1-second resolution time. More...
 
typedef TimePointOfGranularity< 1000000000 > NanosecondTimePoint
 Desired standard granularity with nanosecond resolution. More...
 
typedef TimePointOfGranularity< 1 > POSIXEpochTimePoint
 Convenience typedef using conventional 1-second resolution. More...
 

Functions

template<unsigned int UNITS>
CONSTEXPR unsigned int int_digitsNeeded ()
 Via compile-time evaluation, compute log10(). Used to determine number digits required to display precision. More...
 
template<>
CONSTEXPR unsigned int int_digitsNeeded< 1 > ()
 \brief Special case for unit precision of 1–no decimal point needed More...
 
template<>
CONSTEXPR unsigned int int_digitsNeeded< 0 > ()
 Termination condition for safety. More...
 
template<typename STREAMTYPE , unsigned int UNITS>
STREAMTYPE & operator<< (STREAMTYPE &o, const TimePointOfGranularity< UNITS > &t)
 Output TimePointOfGranularity as text onto a stream-like object. More...
 
template<typename STREAMTYPE , unsigned int UNITS>
STREAMTYPE & operator<< (STREAMTYPE &o, const POSIXtimeInUnits< UNITS > pt)
 Output POSIXtimeInUnits as text onto a stream-like object. More...
 

Variables

TimePointCache TimePointCacheForToday
 Cached TimePoint information representing today. More...
 

Detailed Description

FARGOS Time Functions.

The routines implemented by time_point.hpp are able to deal with arbitrary granularity of clocks and convert between locales.

When done correctly, and it rarely is, the time representation used by an application should be an unambiguous value. Ambiguity should only be introduced when converting to a locale. For example, 9pm Eastern in the United States represents the same moment in time as 6pm Pacific, but are named differently.

Note
Never choose a coarser granularity than needed. It is expensive to convert from finer-granularity precision to a coarser precision, but very cheap to scale a coarse granularity clock to an apparently finer precision. For that reason, nanoseconds is the suggested normal precision that should be used.
Author
Geoff Carpenter
Generated: Fri Jul 31 2020 18:19:16
Support Information