nabstime.h
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:4k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. /*-------------------------------------------------------------------------
  2.  *
  3.  * nabstime.h
  4.  *   Definitions for the "new" abstime code.
  5.  *
  6.  *
  7.  * Copyright (c) 1994, Regents of the University of California
  8.  *
  9.  * $Id: nabstime.h,v 1.20 1999/05/25 16:14:56 momjian Exp $
  10.  *
  11.  *-------------------------------------------------------------------------
  12.  */
  13. #ifndef NABSTIME_H
  14. #define NABSTIME_H
  15. #include <time.h>
  16. #include "utils/dt.h"
  17. /* ----------------------------------------------------------------
  18.  * time types + support macros
  19.  *
  20.  *
  21.  * ----------------------------------------------------------------
  22.  */
  23. /* The original typedefs are bogus - they assume that the system's 'time_t'
  24.  * type is of size 32-bits.  Under AlphaLinux, time_t is a long int, which
  25.  * is 64-bits. Therefore, typedef these both as simply 'time_t', and let
  26.  * the OS define what the size really is. -- RME 3/5/99
  27.  */
  28. typedef time_t AbsoluteTime;
  29. typedef time_t RelativeTime;
  30. typedef struct
  31. {
  32. int32 status;
  33. AbsoluteTime data[2];
  34. } TimeIntervalData;
  35. typedef TimeIntervalData *TimeInterval;
  36. /*
  37.  * Reserved values
  38.  * Epoch is Unix system time zero, but needs to be kept as a reserved
  39.  * value rather than converting to time since timezone calculations
  40.  * might move it away from 1970-01-01 00:00:00Z - tgl 97/02/20
  41.  *
  42.  * Pre-v6.1 code had large decimal numbers for reserved values.
  43.  * These were chosen as special 32-bit bit patterns,
  44.  * so redefine them explicitly using these bit patterns. - tgl 97/02/24
  45.  */
  46. #define EPOCH_ABSTIME ((AbsoluteTime) 0)
  47. #define INVALID_ABSTIME ((AbsoluteTime) 0x7FFFFFFE) /* 2147483647 == 2^31 -
  48.  * 1 */
  49. #define CURRENT_ABSTIME ((AbsoluteTime) 0x7FFFFFFD) /* 2147483646 == 2^31 -
  50.  * 2 */
  51. #define NOEND_ABSTIME ((AbsoluteTime) 0x7FFFFFFC) /* 2147483645 == 2^31 -
  52.  * 3 */
  53. #define BIG_ABSTIME ((AbsoluteTime) 0x7FFFFFFB) /* 2147483644 == 2^31 -
  54.  * 4 */
  55. #if defined(_AIX)
  56. /*
  57.  * AIX considers 2147483648 == -2147483648 (since they have the same bit
  58.  * representation) but uses a different sign sense in a comparison to
  59.  * these integer constants depending on whether the constant is signed
  60.  * or not!
  61.  */
  62. #define NOSTART_ABSTIME  ((AbsoluteTime) INT_MIN)
  63. #else
  64. #define NOSTART_ABSTIME ((AbsoluteTime) 0x80000001) /* -2147483647 == - 2^31 */
  65. #endif  /* _AIX */
  66. #define INVALID_RELTIME ((RelativeTime) 0x7FFFFFFE) /* 2147483647 == 2^31 -
  67.  * 1 */
  68. #define AbsoluteTimeIsValid(time) 
  69. ((bool) ((time) != INVALID_ABSTIME))
  70. #define AbsoluteTimeIsReal(time) 
  71. ((bool) (((AbsoluteTime) time) < NOEND_ABSTIME && 
  72.  ((AbsoluteTime) time) > NOSTART_ABSTIME))
  73. /* have to include this because EPOCH_ABSTIME used to be invalid - yuk */
  74. #define AbsoluteTimeIsBackwardCompatiblyValid(time) 
  75. ((bool) (((AbsoluteTime) time) != INVALID_ABSTIME && 
  76.  ((AbsoluteTime) time) > EPOCH_ABSTIME))
  77. #define AbsoluteTimeIsBackwardCompatiblyReal(time) 
  78. ((bool) (((AbsoluteTime) time) < NOEND_ABSTIME && 
  79.  ((AbsoluteTime) time) > NOSTART_ABSTIME && 
  80.  ((AbsoluteTime) time) > EPOCH_ABSTIME))
  81. #define RelativeTimeIsValid(time) 
  82. ((bool) (((RelativeTime) time) != INVALID_RELTIME))
  83. extern AbsoluteTime GetCurrentAbsoluteTime(void);
  84. /*
  85.  * getSystemTime
  86.  * Returns system time.
  87.  */
  88. #define getSystemTime() 
  89. ((time_t) (time(0l)))
  90. /*
  91.  * nabstime.c prototypes
  92.  */
  93. extern AbsoluteTime nabstimein(char *timestr);
  94. extern char *nabstimeout(AbsoluteTime time);
  95. extern bool abstimeeq(AbsoluteTime t1, AbsoluteTime t2);
  96. extern bool abstimene(AbsoluteTime t1, AbsoluteTime t2);
  97. extern bool abstimelt(AbsoluteTime t1, AbsoluteTime t2);
  98. extern bool abstimegt(AbsoluteTime t1, AbsoluteTime t2);
  99. extern bool abstimele(AbsoluteTime t1, AbsoluteTime t2);
  100. extern bool abstimege(AbsoluteTime t1, AbsoluteTime t2);
  101. extern bool abstime_finite(AbsoluteTime time);
  102. extern AbsoluteTime datetime_abstime(DateTime *datetime);
  103. extern DateTime *abstime_datetime(AbsoluteTime abstime);
  104. extern bool AbsoluteTimeIsBefore(AbsoluteTime time1, AbsoluteTime time2);
  105. extern void abstime2tm(AbsoluteTime time, int *tzp, struct tm * tm, char *tzn);
  106. #endif  /* NABSTIME_H */