PostgreSQL Source Code: src/timezone/private.h Source File (original) (raw)

1

2

3#ifndef PRIVATE_H

4

5#define PRIVATE_H

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23#include <limits.h>

24#include <sys/wait.h>

25#include <unistd.h>

26

28

29

30#define GRANDPARENTED "Local time zone must be set--see zic manual page"

31

32

33

34

35

36

37#ifndef ENOTSUP

38#define ENOTSUP EINVAL

39#endif

40#ifndef EOVERFLOW

41#define EOVERFLOW EINVAL

42#endif

43

44

45#define is_digit(c) ((unsigned)(c) - '0' <= 9)

46

47

48#undef strtoimax

49#define strtoimax strtoll

50

51

52

53

54

55

56#define TYPE_BIT(type) (sizeof (type) * CHAR_BIT)

57#define TYPE_SIGNED(type) (((type) -1) < 0)

58#define TWOS_COMPLEMENT(t) ((t) ~ (t) 0 < 0)

59

60

61

62

63

64

65#define MAXVAL(t, b) \

66 ((t) (((t) 1 << ((b) - 1 - TYPE_SIGNED(t))) \

67 - 1 + ((t) 1 << ((b) - 1 - TYPE_SIGNED(t)))))

68#define MINVAL(t, b) \

69 ((t) (TYPE_SIGNED(t) ? - TWOS_COMPLEMENT(t) - MAXVAL(t, b) : 0))

70

71

72#define TIME_T_MIN MINVAL(pg_time_t, TYPE_BIT(pg_time_t))

73#define TIME_T_MAX MAXVAL(pg_time_t, TYPE_BIT(pg_time_t))

74

75

76

77

78

79

80

81#define INT_STRLEN_MAXIMUM(type) \

82 ((TYPE_BIT(type) - TYPE_SIGNED(type)) * 302 / 1000 + \

83 1 + TYPE_SIGNED(type))

84

85

86

87

88#define INITIALIZE(x) ((x) = 0)

89

90#undef _

91#define _(msgid) (msgid)

92

93

94

95#define YEARSPERREPEAT 400

96

97#define SECSPERMIN 60

98#define MINSPERHOUR 60

99#define HOURSPERDAY 24

100#define DAYSPERWEEK 7

101#define DAYSPERNYEAR 365

102#define DAYSPERLYEAR 366

103#define SECSPERHOUR (SECSPERMIN * MINSPERHOUR)

104#define SECSPERDAY ((int32) SECSPERHOUR * HOURSPERDAY)

105#define MONSPERYEAR 12

106

107#define TM_SUNDAY 0

108#define TM_MONDAY 1

109#define TM_TUESDAY 2

110#define TM_WEDNESDAY 3

111#define TM_THURSDAY 4

112#define TM_FRIDAY 5

113#define TM_SATURDAY 6

114

115#define TM_JANUARY 0

116#define TM_FEBRUARY 1

117#define TM_MARCH 2

118#define TM_APRIL 3

119#define TM_MAY 4

120#define TM_JUNE 5

121#define TM_JULY 6

122#define TM_AUGUST 7

123#define TM_SEPTEMBER 8

124#define TM_OCTOBER 9

125#define TM_NOVEMBER 10

126#define TM_DECEMBER 11

127

128#define TM_YEAR_BASE 1900

129

130#define EPOCH_YEAR 1970

131#define EPOCH_WDAY TM_THURSDAY

132

133#define isleap(y) (((y) % 4) == 0 && (((y) % 100) != 0 || ((y) % 400) == 0))

134

135

136

137

138

139

140

141

142

143

144

145

146

147#define isleap_sum(a, b) isleap((a) % 400 + (b) % 400)

148

149

150

151

152

153

154#define AVGSECSPERYEAR 31556952L

155#define SECSPERREPEAT \

156 ((int64) YEARSPERREPEAT * (int64) AVGSECSPERYEAR)

157#define SECSPERREPEAT_BITS 34

158

159#endif