This is Unofficial EPICS BASE Doxygen Site
epicsTime.cpp File Reference
#include <stdexcept>
#include <ctype.h>
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <limits.h>
#include <float.h>
#include <string>
#include "locationException.h"
#include "epicsAssert.h"
#include "epicsVersion.h"
#include "envDefs.h"
#include "epicsTime.h"
#include "osiSock.h"
#include "epicsStdio.h"
+ Include dependency graph for epicsTime.cpp:

Go to the source code of this file.

Classes

class  epicsTimeLoadTimeInit
 
struct  l_fp
 Network Time Protocol timestamp. More...
 

Functions

LIBCOM_API int epicsStdCall epicsTimeToTime_t (time_t *pDest, const epicsTimeStamp *pSrc)
 Convert epicsTimeStamp to ANSI C time_t. More...
 
LIBCOM_API int epicsStdCall epicsTimeFromTime_t (epicsTimeStamp *pDest, time_t src)
 Convert ANSI C time_t to epicsTimeStamp. More...
 
LIBCOM_API int epicsStdCall epicsTimeToTM (struct tm *pDest, unsigned long *pNSecDest, const epicsTimeStamp *pSrc)
 Convert epicsTimeStamp to struct tm in local time zone. More...
 
LIBCOM_API int epicsStdCall epicsTimeToGMTM (struct tm *pDest, unsigned long *pNSecDest, const epicsTimeStamp *pSrc)
 Convert epicsTimeStamp to struct tm in UTC/GMT. More...
 
LIBCOM_API int epicsStdCall epicsTimeFromTM (epicsTimeStamp *pDest, const struct tm *pSrc, unsigned long nSecSrc)
 Set epicsTimeStamp from struct tm in local time zone. More...
 
LIBCOM_API int epicsStdCall epicsTimeFromGMTM (epicsTimeStamp *pDest, const struct tm *pSrc, unsigned long nSecSrc)
 Set epicsTimeStamp from struct tm in UTC/GMT. More...
 
LIBCOM_API int epicsStdCall epicsTimeToTimespec (struct timespec *pDest, const epicsTimeStamp *pSrc)
 Convert epicsTimeStamp to struct timespec More...
 
LIBCOM_API int epicsStdCall epicsTimeFromTimespec (epicsTimeStamp *pDest, const struct timespec *pSrc)
 Set epicsTimeStamp from struct timespec More...
 
LIBCOM_API int epicsStdCall epicsTimeToTimeval (struct timeval *pDest, const epicsTimeStamp *pSrc)
 Convert epicsTimeStamp to struct timeval More...
 
LIBCOM_API int epicsStdCall epicsTimeFromTimeval (epicsTimeStamp *pDest, const struct timeval *pSrc)
 Set epicsTimeStamp from struct timeval More...
 
LIBCOM_API double epicsStdCall epicsTimeDiffInSeconds (const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
 Time difference between left and right in seconds. More...
 
LIBCOM_API void epicsStdCall epicsTimeAddSeconds (epicsTimeStamp *pDest, double seconds)
 Add some number of seconds to dest. More...
 
LIBCOM_API int epicsStdCall epicsTimeEqual (const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
 left equals right More...
 
LIBCOM_API int epicsStdCall epicsTimeNotEqual (const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
 left not equal to right More...
 
LIBCOM_API int epicsStdCall epicsTimeLessThan (const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
 left was before right More...
 
LIBCOM_API int epicsStdCall epicsTimeLessThanEqual (const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
 right was no later than left More...
 
LIBCOM_API int epicsStdCall epicsTimeGreaterThan (const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
 left was after right More...
 
LIBCOM_API int epicsStdCall epicsTimeGreaterThanEqual (const epicsTimeStamp *pLeft, const epicsTimeStamp *pRight)
 right was not before left More...
 
LIBCOM_API size_t epicsStdCall epicsTimeToStrftime (char *pBuff, size_t bufLength, const char *pFormat, const epicsTimeStamp *pTS)
 Convert epicsTimeStamp to string. See epicsTime::strftime() More...
 
LIBCOM_API void epicsStdCall epicsTimeShow (const epicsTimeStamp *pTS, unsigned interestLevel)
 Dump current state to stdout. More...
 

Function Documentation

LIBCOM_API void epicsStdCall epicsTimeAddSeconds ( epicsTimeStamp pDest,
double  seconds 
)

Add some number of seconds to dest.

Definition at line 1057 of file epicsTime.cpp.

1058  {
1059  try {
1060  *pDest = epicsTime (*pDest) + seconds;
1061  }
1062  catch ( ... ) {
1063  *pDest = epicsTime ();
1064  }
1065  }
LIBCOM_API double epicsStdCall epicsTimeDiffInSeconds ( const epicsTimeStamp pLeft,
const epicsTimeStamp pRight 
)

Time difference between left and right in seconds.

Definition at line 1048 of file epicsTime.cpp.

1049  {
1050  try {
1051  return epicsTime (*pLeft) - epicsTime (*pRight);
1052  }
1053  catch (...) {
1054  return - DBL_MAX;
1055  }
1056  }
LIBCOM_API int epicsStdCall epicsTimeEqual ( const epicsTimeStamp pLeft,
const epicsTimeStamp pRight 
)

left equals right

Definition at line 1066 of file epicsTime.cpp.

1067  {
1068  try {
1069  return epicsTime (*pLeft) == epicsTime (*pRight);
1070  }
1071  catch ( ... ) {
1072  return 0;
1073  }
1074  }
LIBCOM_API int epicsStdCall epicsTimeFromGMTM ( epicsTimeStamp pDest,
const struct tm *  pSrc,
unsigned long  nSecSrc 
)

Set epicsTimeStamp from struct tm in UTC/GMT.

Definition at line 995 of file epicsTime.cpp.

996  {
997  try {
998  gm_tm_nano_sec tmns;
999  tmns.ansi_tm = *pSrc;
1000  tmns.nSec = nSecSrc;
1001  *pDest = epicsTime (tmns);
1002  }
1003  catch (...) {
1004  return S_time_conversion;
1005  }
1006  return epicsTimeOK;
1007  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API int epicsStdCall epicsTimeFromTime_t ( epicsTimeStamp pDest,
time_t  src 
)

Convert ANSI C time_t to epicsTimeStamp.

Definition at line 944 of file epicsTime.cpp.

945  {
946  try {
947  time_t_wrapper dst;
948  dst.ts = src;
949  *pDest = epicsTime ( dst );
950  }
951  catch (...) {
952  return S_time_conversion;
953  }
954  return epicsTimeOK;
955  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API int epicsStdCall epicsTimeFromTimespec ( epicsTimeStamp pDest,
const struct timespec pSrc 
)

Set epicsTimeStamp from struct timespec

Definition at line 1018 of file epicsTime.cpp.

1019  {
1020  try {
1021  *pDest = epicsTime (*pSrc);
1022  }
1023  catch (...) {
1024  return S_time_conversion;
1025  }
1026  return epicsTimeOK;
1027  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API int epicsStdCall epicsTimeFromTimeval ( epicsTimeStamp pDest,
const struct timeval pSrc 
)

Set epicsTimeStamp from struct timeval

Definition at line 1038 of file epicsTime.cpp.

1039  {
1040  try {
1041  *pDest = epicsTime (*pSrc);
1042  }
1043  catch (...) {
1044  return S_time_conversion;
1045  }
1046  return epicsTimeOK;
1047  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API int epicsStdCall epicsTimeFromTM ( epicsTimeStamp pDest,
const struct tm *  pSrc,
unsigned long  nSecSrc 
)

Set epicsTimeStamp from struct tm in local time zone.

Definition at line 982 of file epicsTime.cpp.

983  {
984  try {
985  local_tm_nano_sec tmns;
986  tmns.ansi_tm = *pSrc;
987  tmns.nSec = nSecSrc;
988  *pDest = epicsTime (tmns);
989  }
990  catch (...) {
991  return S_time_conversion;
992  }
993  return epicsTimeOK;
994  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API int epicsStdCall epicsTimeGreaterThan ( const epicsTimeStamp pLeft,
const epicsTimeStamp pRight 
)

left was after right

Definition at line 1102 of file epicsTime.cpp.

1103  {
1104  try {
1105  return epicsTime (*pLeft) > epicsTime (*pRight);
1106  }
1107  catch ( ... ) {
1108  return 0;
1109  }
1110  }
LIBCOM_API int epicsStdCall epicsTimeGreaterThanEqual ( const epicsTimeStamp pLeft,
const epicsTimeStamp pRight 
)

right was not before left

Definition at line 1111 of file epicsTime.cpp.

1112  {
1113  try {
1114  return epicsTime (*pLeft) >= epicsTime (*pRight);
1115  }
1116  catch ( ... ) {
1117  return 0;
1118  }
1119  }
LIBCOM_API int epicsStdCall epicsTimeLessThan ( const epicsTimeStamp pLeft,
const epicsTimeStamp pRight 
)

left was before right

Definition at line 1084 of file epicsTime.cpp.

1085  {
1086  try {
1087  return epicsTime (*pLeft) < epicsTime (*pRight);
1088  }
1089  catch ( ... ) {
1090  return 0;
1091  }
1092  }
LIBCOM_API int epicsStdCall epicsTimeLessThanEqual ( const epicsTimeStamp pLeft,
const epicsTimeStamp pRight 
)

right was no later than left

Definition at line 1093 of file epicsTime.cpp.

1094  {
1095  try {
1096  return epicsTime (*pLeft) <= epicsTime (*pRight);
1097  }
1098  catch ( ... ) {
1099  return 0;
1100  }
1101  }
LIBCOM_API int epicsStdCall epicsTimeNotEqual ( const epicsTimeStamp pLeft,
const epicsTimeStamp pRight 
)

left not equal to right

Definition at line 1075 of file epicsTime.cpp.

1076  {
1077  try {
1078  return epicsTime (*pLeft) != epicsTime (*pRight);
1079  }
1080  catch ( ... ) {
1081  return 1;
1082  }
1083  }
LIBCOM_API void epicsStdCall epicsTimeShow ( const epicsTimeStamp pTS,
unsigned  interestLevel 
)

Dump current state to stdout.

Definition at line 1129 of file epicsTime.cpp.

1130  {
1131  try {
1132  epicsTime(*pTS).show (interestLevel);
1133  }
1134  catch ( ... ) {
1135  printf ( "Invalid epicsTimeStamp\n" );
1136  }
1137  }
#define printf
Definition: epicsStdio.h:41
LIBCOM_API int epicsStdCall epicsTimeToGMTM ( struct tm *  pDest,
unsigned long *  pNSecDest,
const epicsTimeStamp pSrc 
)

Convert epicsTimeStamp to struct tm in UTC/GMT.

Definition at line 969 of file epicsTime.cpp.

970  {
971  try {
972  gm_tm_nano_sec gmtmns = epicsTime (*pSrc);
973  *pDest = gmtmns.ansi_tm;
974  if (pNSecDest)
975  *pNSecDest = gmtmns.nSec;
976  }
977  catch (...) {
978  return S_time_conversion;
979  }
980  return epicsTimeOK;
981  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API size_t epicsStdCall epicsTimeToStrftime ( char *  pBuff,
size_t  bufLength,
const char *  pFormat,
const epicsTimeStamp pTS 
)

Convert epicsTimeStamp to string. See epicsTime::strftime()

Definition at line 1120 of file epicsTime.cpp.

1121  {
1122  try {
1123  return epicsTime(*pTS).strftime (pBuff, bufLength, pFormat);
1124  }
1125  catch ( ... ) {
1126  return 0;
1127  }
1128  }
LIBCOM_API int epicsStdCall epicsTimeToTime_t ( time_t *  pDest,
const epicsTimeStamp pSrc 
)

Convert epicsTimeStamp to ANSI C time_t.

Definition at line 933 of file epicsTime.cpp.

934  {
935  try {
936  time_t_wrapper dst = epicsTime (*pSrc);
937  *pDest = dst.ts;
938  }
939  catch (...) {
940  return S_time_conversion;
941  }
942  return epicsTimeOK;
943  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API int epicsStdCall epicsTimeToTimespec ( struct timespec pDest,
const epicsTimeStamp pSrc 
)

Convert epicsTimeStamp to struct timespec

Definition at line 1008 of file epicsTime.cpp.

1009  {
1010  try {
1011  *pDest = epicsTime (*pSrc);
1012  }
1013  catch (...) {
1014  return S_time_conversion;
1015  }
1016  return epicsTimeOK;
1017  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API int epicsStdCall epicsTimeToTimeval ( struct timeval pDest,
const epicsTimeStamp pSrc 
)

Convert epicsTimeStamp to struct timeval

Definition at line 1028 of file epicsTime.cpp.

1029  {
1030  try {
1031  *pDest = epicsTime (*pSrc);
1032  }
1033  catch (...) {
1034  return S_time_conversion;
1035  }
1036  return epicsTimeOK;
1037  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353
LIBCOM_API int epicsStdCall epicsTimeToTM ( struct tm *  pDest,
unsigned long *  pNSecDest,
const epicsTimeStamp pSrc 
)

Convert epicsTimeStamp to struct tm in local time zone.

Definition at line 956 of file epicsTime.cpp.

957  {
958  try {
959  local_tm_nano_sec tmns = epicsTime (*pSrc);
960  *pDest = tmns.ansi_tm;
961  if (pNSecDest)
962  *pNSecDest = tmns.nSec;
963  }
964  catch (...) {
965  return S_time_conversion;
966  }
967  return epicsTimeOK;
968  }
#define epicsTimeOK
Success.
Definition: epicsTime.h:339
#define S_time_conversion
Time conversion error.
Definition: epicsTime.h:353