nabstime.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:4k
- /*-------------------------------------------------------------------------
- *
- * nabstime.h
- * Definitions for the "new" abstime code.
- *
- *
- * Copyright (c) 1994, Regents of the University of California
- *
- * $Id: nabstime.h,v 1.20 1999/05/25 16:14:56 momjian Exp $
- *
- *-------------------------------------------------------------------------
- */
- #ifndef NABSTIME_H
- #define NABSTIME_H
- #include <time.h>
- #include "utils/dt.h"
- /* ----------------------------------------------------------------
- * time types + support macros
- *
- *
- * ----------------------------------------------------------------
- */
- /* The original typedefs are bogus - they assume that the system's 'time_t'
- * type is of size 32-bits. Under AlphaLinux, time_t is a long int, which
- * is 64-bits. Therefore, typedef these both as simply 'time_t', and let
- * the OS define what the size really is. -- RME 3/5/99
- */
- typedef time_t AbsoluteTime;
- typedef time_t RelativeTime;
- typedef struct
- {
- int32 status;
- AbsoluteTime data[2];
- } TimeIntervalData;
- typedef TimeIntervalData *TimeInterval;
- /*
- * Reserved values
- * Epoch is Unix system time zero, but needs to be kept as a reserved
- * value rather than converting to time since timezone calculations
- * might move it away from 1970-01-01 00:00:00Z - tgl 97/02/20
- *
- * Pre-v6.1 code had large decimal numbers for reserved values.
- * These were chosen as special 32-bit bit patterns,
- * so redefine them explicitly using these bit patterns. - tgl 97/02/24
- */
- #define EPOCH_ABSTIME ((AbsoluteTime) 0)
- #define INVALID_ABSTIME ((AbsoluteTime) 0x7FFFFFFE) /* 2147483647 == 2^31 -
- * 1 */
- #define CURRENT_ABSTIME ((AbsoluteTime) 0x7FFFFFFD) /* 2147483646 == 2^31 -
- * 2 */
- #define NOEND_ABSTIME ((AbsoluteTime) 0x7FFFFFFC) /* 2147483645 == 2^31 -
- * 3 */
- #define BIG_ABSTIME ((AbsoluteTime) 0x7FFFFFFB) /* 2147483644 == 2^31 -
- * 4 */
- #if defined(_AIX)
- /*
- * AIX considers 2147483648 == -2147483648 (since they have the same bit
- * representation) but uses a different sign sense in a comparison to
- * these integer constants depending on whether the constant is signed
- * or not!
- */
- #define NOSTART_ABSTIME ((AbsoluteTime) INT_MIN)
- #else
- #define NOSTART_ABSTIME ((AbsoluteTime) 0x80000001) /* -2147483647 == - 2^31 */
- #endif /* _AIX */
- #define INVALID_RELTIME ((RelativeTime) 0x7FFFFFFE) /* 2147483647 == 2^31 -
- * 1 */
- #define AbsoluteTimeIsValid(time)
- ((bool) ((time) != INVALID_ABSTIME))
- #define AbsoluteTimeIsReal(time)
- ((bool) (((AbsoluteTime) time) < NOEND_ABSTIME &&
- ((AbsoluteTime) time) > NOSTART_ABSTIME))
- /* have to include this because EPOCH_ABSTIME used to be invalid - yuk */
- #define AbsoluteTimeIsBackwardCompatiblyValid(time)
- ((bool) (((AbsoluteTime) time) != INVALID_ABSTIME &&
- ((AbsoluteTime) time) > EPOCH_ABSTIME))
- #define AbsoluteTimeIsBackwardCompatiblyReal(time)
- ((bool) (((AbsoluteTime) time) < NOEND_ABSTIME &&
- ((AbsoluteTime) time) > NOSTART_ABSTIME &&
- ((AbsoluteTime) time) > EPOCH_ABSTIME))
- #define RelativeTimeIsValid(time)
- ((bool) (((RelativeTime) time) != INVALID_RELTIME))
- extern AbsoluteTime GetCurrentAbsoluteTime(void);
- /*
- * getSystemTime
- * Returns system time.
- */
- #define getSystemTime()
- ((time_t) (time(0l)))
- /*
- * nabstime.c prototypes
- */
- extern AbsoluteTime nabstimein(char *timestr);
- extern char *nabstimeout(AbsoluteTime time);
- extern bool abstimeeq(AbsoluteTime t1, AbsoluteTime t2);
- extern bool abstimene(AbsoluteTime t1, AbsoluteTime t2);
- extern bool abstimelt(AbsoluteTime t1, AbsoluteTime t2);
- extern bool abstimegt(AbsoluteTime t1, AbsoluteTime t2);
- extern bool abstimele(AbsoluteTime t1, AbsoluteTime t2);
- extern bool abstimege(AbsoluteTime t1, AbsoluteTime t2);
- extern bool abstime_finite(AbsoluteTime time);
- extern AbsoluteTime datetime_abstime(DateTime *datetime);
- extern DateTime *abstime_datetime(AbsoluteTime abstime);
- extern bool AbsoluteTimeIsBefore(AbsoluteTime time1, AbsoluteTime time2);
- extern void abstime2tm(AbsoluteTime time, int *tzp, struct tm * tm, char *tzn);
- #endif /* NABSTIME_H */