Commit | Line | Data |
---|---|---|
adfe19db MHM |
1 | ################################################################################ |
2 | ## | |
b2049988 | 3 | ## Version 3.x, Copyright (C) 2004-2013, Marcus Holland-Moritz. |
adfe19db MHM |
4 | ## Version 2.x, Copyright (C) 2001, Paul Marquess. |
5 | ## Version 1.x, Copyright (C) 1999, Kenneth Albanowski. | |
6 | ## | |
7 | ## This program is free software; you can redistribute it and/or | |
8 | ## modify it under the same terms as Perl itself. | |
9 | ## | |
10 | ################################################################################ | |
11 | ||
12 | =provides | |
13 | ||
14 | PERL_UCHAR_MIN | |
15 | PERL_UCHAR_MAX | |
16 | PERL_USHORT_MIN | |
17 | PERL_USHORT_MAX | |
18 | PERL_SHORT_MAX | |
19 | PERL_SHORT_MIN | |
20 | PERL_UINT_MAX | |
21 | PERL_UINT_MIN | |
22 | PERL_INT_MAX | |
23 | PERL_INT_MIN | |
24 | PERL_ULONG_MAX | |
25 | PERL_ULONG_MIN | |
26 | PERL_LONG_MAX | |
27 | PERL_LONG_MIN | |
28 | PERL_UQUAD_MAX | |
29 | PERL_UQUAD_MIN | |
30 | PERL_QUAD_MAX | |
31 | PERL_QUAD_MIN | |
32 | IVSIZE | |
33 | UVSIZE | |
34 | IVTYPE | |
35 | UVTYPE | |
36 | ||
37 | =implementation | |
38 | ||
39 | #ifdef I_LIMITS | |
40 | # include <limits.h> | |
41 | #endif | |
42 | ||
43 | #ifndef PERL_UCHAR_MIN | |
44 | # define PERL_UCHAR_MIN ((unsigned char)0) | |
45 | #endif | |
46 | ||
47 | #ifndef PERL_UCHAR_MAX | |
48 | # ifdef UCHAR_MAX | |
49 | # define PERL_UCHAR_MAX ((unsigned char)UCHAR_MAX) | |
50 | # else | |
51 | # ifdef MAXUCHAR | |
52 | # define PERL_UCHAR_MAX ((unsigned char)MAXUCHAR) | |
53 | # else | |
54 | # define PERL_UCHAR_MAX ((unsigned char)~(unsigned)0) | |
55 | # endif | |
56 | # endif | |
57 | #endif | |
58 | ||
59 | #ifndef PERL_USHORT_MIN | |
60 | # define PERL_USHORT_MIN ((unsigned short)0) | |
61 | #endif | |
62 | ||
63 | #ifndef PERL_USHORT_MAX | |
64 | # ifdef USHORT_MAX | |
65 | # define PERL_USHORT_MAX ((unsigned short)USHORT_MAX) | |
66 | # else | |
67 | # ifdef MAXUSHORT | |
68 | # define PERL_USHORT_MAX ((unsigned short)MAXUSHORT) | |
69 | # else | |
70 | # ifdef USHRT_MAX | |
71 | # define PERL_USHORT_MAX ((unsigned short)USHRT_MAX) | |
72 | # else | |
73 | # define PERL_USHORT_MAX ((unsigned short)~(unsigned)0) | |
74 | # endif | |
75 | # endif | |
76 | # endif | |
77 | #endif | |
78 | ||
79 | #ifndef PERL_SHORT_MAX | |
80 | # ifdef SHORT_MAX | |
81 | # define PERL_SHORT_MAX ((short)SHORT_MAX) | |
82 | # else | |
83 | # ifdef MAXSHORT /* Often used in <values.h> */ | |
84 | # define PERL_SHORT_MAX ((short)MAXSHORT) | |
85 | # else | |
86 | # ifdef SHRT_MAX | |
87 | # define PERL_SHORT_MAX ((short)SHRT_MAX) | |
88 | # else | |
89 | # define PERL_SHORT_MAX ((short) (PERL_USHORT_MAX >> 1)) | |
90 | # endif | |
91 | # endif | |
92 | # endif | |
93 | #endif | |
94 | ||
95 | #ifndef PERL_SHORT_MIN | |
96 | # ifdef SHORT_MIN | |
97 | # define PERL_SHORT_MIN ((short)SHORT_MIN) | |
98 | # else | |
99 | # ifdef MINSHORT | |
100 | # define PERL_SHORT_MIN ((short)MINSHORT) | |
101 | # else | |
102 | # ifdef SHRT_MIN | |
103 | # define PERL_SHORT_MIN ((short)SHRT_MIN) | |
104 | # else | |
105 | # define PERL_SHORT_MIN (-PERL_SHORT_MAX - ((3 & -1) == 3)) | |
106 | # endif | |
107 | # endif | |
108 | # endif | |
109 | #endif | |
110 | ||
111 | #ifndef PERL_UINT_MAX | |
112 | # ifdef UINT_MAX | |
113 | # define PERL_UINT_MAX ((unsigned int)UINT_MAX) | |
114 | # else | |
115 | # ifdef MAXUINT | |
116 | # define PERL_UINT_MAX ((unsigned int)MAXUINT) | |
117 | # else | |
118 | # define PERL_UINT_MAX (~(unsigned int)0) | |
119 | # endif | |
120 | # endif | |
121 | #endif | |
122 | ||
123 | #ifndef PERL_UINT_MIN | |
124 | # define PERL_UINT_MIN ((unsigned int)0) | |
125 | #endif | |
126 | ||
127 | #ifndef PERL_INT_MAX | |
128 | # ifdef INT_MAX | |
129 | # define PERL_INT_MAX ((int)INT_MAX) | |
130 | # else | |
131 | # ifdef MAXINT /* Often used in <values.h> */ | |
132 | # define PERL_INT_MAX ((int)MAXINT) | |
133 | # else | |
134 | # define PERL_INT_MAX ((int)(PERL_UINT_MAX >> 1)) | |
135 | # endif | |
136 | # endif | |
137 | #endif | |
138 | ||
139 | #ifndef PERL_INT_MIN | |
140 | # ifdef INT_MIN | |
141 | # define PERL_INT_MIN ((int)INT_MIN) | |
142 | # else | |
143 | # ifdef MININT | |
144 | # define PERL_INT_MIN ((int)MININT) | |
145 | # else | |
146 | # define PERL_INT_MIN (-PERL_INT_MAX - ((3 & -1) == 3)) | |
147 | # endif | |
148 | # endif | |
149 | #endif | |
150 | ||
151 | #ifndef PERL_ULONG_MAX | |
152 | # ifdef ULONG_MAX | |
153 | # define PERL_ULONG_MAX ((unsigned long)ULONG_MAX) | |
154 | # else | |
155 | # ifdef MAXULONG | |
156 | # define PERL_ULONG_MAX ((unsigned long)MAXULONG) | |
157 | # else | |
158 | # define PERL_ULONG_MAX (~(unsigned long)0) | |
159 | # endif | |
160 | # endif | |
161 | #endif | |
162 | ||
163 | #ifndef PERL_ULONG_MIN | |
164 | # define PERL_ULONG_MIN ((unsigned long)0L) | |
165 | #endif | |
166 | ||
167 | #ifndef PERL_LONG_MAX | |
168 | # ifdef LONG_MAX | |
169 | # define PERL_LONG_MAX ((long)LONG_MAX) | |
170 | # else | |
171 | # ifdef MAXLONG | |
172 | # define PERL_LONG_MAX ((long)MAXLONG) | |
173 | # else | |
174 | # define PERL_LONG_MAX ((long) (PERL_ULONG_MAX >> 1)) | |
175 | # endif | |
176 | # endif | |
177 | #endif | |
178 | ||
179 | #ifndef PERL_LONG_MIN | |
180 | # ifdef LONG_MIN | |
181 | # define PERL_LONG_MIN ((long)LONG_MIN) | |
182 | # else | |
183 | # ifdef MINLONG | |
184 | # define PERL_LONG_MIN ((long)MINLONG) | |
185 | # else | |
186 | # define PERL_LONG_MIN (-PERL_LONG_MAX - ((3 & -1) == 3)) | |
187 | # endif | |
188 | # endif | |
189 | #endif | |
190 | ||
191 | #if defined(HAS_QUAD) && (defined(convex) || defined(uts)) | |
192 | # ifndef PERL_UQUAD_MAX | |
193 | # ifdef ULONGLONG_MAX | |
194 | # define PERL_UQUAD_MAX ((unsigned long long)ULONGLONG_MAX) | |
195 | # else | |
196 | # ifdef MAXULONGLONG | |
197 | # define PERL_UQUAD_MAX ((unsigned long long)MAXULONGLONG) | |
198 | # else | |
199 | # define PERL_UQUAD_MAX (~(unsigned long long)0) | |
200 | # endif | |
201 | # endif | |
202 | # endif | |
203 | ||
204 | # ifndef PERL_UQUAD_MIN | |
205 | # define PERL_UQUAD_MIN ((unsigned long long)0L) | |
206 | # endif | |
207 | ||
208 | # ifndef PERL_QUAD_MAX | |
209 | # ifdef LONGLONG_MAX | |
210 | # define PERL_QUAD_MAX ((long long)LONGLONG_MAX) | |
211 | # else | |
212 | # ifdef MAXLONGLONG | |
213 | # define PERL_QUAD_MAX ((long long)MAXLONGLONG) | |
214 | # else | |
215 | # define PERL_QUAD_MAX ((long long) (PERL_UQUAD_MAX >> 1)) | |
216 | # endif | |
217 | # endif | |
218 | # endif | |
219 | ||
220 | # ifndef PERL_QUAD_MIN | |
221 | # ifdef LONGLONG_MIN | |
222 | # define PERL_QUAD_MIN ((long long)LONGLONG_MIN) | |
223 | # else | |
224 | # ifdef MINLONGLONG | |
225 | # define PERL_QUAD_MIN ((long long)MINLONGLONG) | |
226 | # else | |
227 | # define PERL_QUAD_MIN (-PERL_QUAD_MAX - ((3 & -1) == 3)) | |
228 | # endif | |
229 | # endif | |
230 | # endif | |
231 | #endif | |
232 | ||
233 | /* This is based on code from 5.003 perl.h */ | |
234 | #ifdef HAS_QUAD | |
235 | # ifdef cray | |
236 | __UNDEFINED__ IVTYPE int | |
237 | __UNDEFINED__ IV_MIN PERL_INT_MIN | |
238 | __UNDEFINED__ IV_MAX PERL_INT_MAX | |
239 | __UNDEFINED__ UV_MIN PERL_UINT_MIN | |
240 | __UNDEFINED__ UV_MAX PERL_UINT_MAX | |
241 | # ifdef INTSIZE | |
242 | __UNDEFINED__ IVSIZE INTSIZE | |
243 | # endif | |
244 | # else | |
245 | # if defined(convex) || defined(uts) | |
246 | __UNDEFINED__ IVTYPE long long | |
247 | __UNDEFINED__ IV_MIN PERL_QUAD_MIN | |
248 | __UNDEFINED__ IV_MAX PERL_QUAD_MAX | |
249 | __UNDEFINED__ UV_MIN PERL_UQUAD_MIN | |
250 | __UNDEFINED__ UV_MAX PERL_UQUAD_MAX | |
251 | # ifdef LONGLONGSIZE | |
252 | __UNDEFINED__ IVSIZE LONGLONGSIZE | |
253 | # endif | |
254 | # else | |
255 | __UNDEFINED__ IVTYPE long | |
256 | __UNDEFINED__ IV_MIN PERL_LONG_MIN | |
257 | __UNDEFINED__ IV_MAX PERL_LONG_MAX | |
258 | __UNDEFINED__ UV_MIN PERL_ULONG_MIN | |
259 | __UNDEFINED__ UV_MAX PERL_ULONG_MAX | |
260 | # ifdef LONGSIZE | |
261 | __UNDEFINED__ IVSIZE LONGSIZE | |
262 | # endif | |
263 | # endif | |
264 | # endif | |
b2049988 MHM |
265 | __UNDEFINED__ IVSIZE 8 |
266 | __UNDEFINED__ LONGSIZE 8 | |
267 | __UNDEFINED__ PERL_QUAD_MIN IV_MIN | |
268 | __UNDEFINED__ PERL_QUAD_MAX IV_MAX | |
269 | __UNDEFINED__ PERL_UQUAD_MIN UV_MIN | |
270 | __UNDEFINED__ PERL_UQUAD_MAX UV_MAX | |
adfe19db MHM |
271 | #else |
272 | __UNDEFINED__ IVTYPE long | |
b2049988 | 273 | __UNDEFINED__ LONGSIZE 4 |
adfe19db MHM |
274 | __UNDEFINED__ IV_MIN PERL_LONG_MIN |
275 | __UNDEFINED__ IV_MAX PERL_LONG_MAX | |
276 | __UNDEFINED__ UV_MIN PERL_ULONG_MIN | |
277 | __UNDEFINED__ UV_MAX PERL_ULONG_MAX | |
278 | #endif | |
279 | ||
280 | #ifndef IVSIZE | |
281 | # ifdef LONGSIZE | |
282 | # define IVSIZE LONGSIZE | |
283 | # else | |
284 | # define IVSIZE 4 /* A bold guess, but the best we can make. */ | |
285 | # endif | |
286 | #endif | |
287 | ||
288 | __UNDEFINED__ UVTYPE unsigned IVTYPE | |
289 | __UNDEFINED__ UVSIZE IVSIZE | |
290 | ||
291 | =xsubs | |
292 | ||
293 | IV | |
294 | iv_size() | |
b2049988 MHM |
295 | CODE: |
296 | RETVAL = IVSIZE == sizeof(IV); | |
297 | OUTPUT: | |
298 | RETVAL | |
adfe19db MHM |
299 | |
300 | IV | |
301 | uv_size() | |
b2049988 MHM |
302 | CODE: |
303 | RETVAL = UVSIZE == sizeof(UV); | |
304 | OUTPUT: | |
305 | RETVAL | |
adfe19db MHM |
306 | |
307 | IV | |
308 | iv_type() | |
b2049988 MHM |
309 | CODE: |
310 | RETVAL = sizeof(IVTYPE) == sizeof(IV); | |
311 | OUTPUT: | |
312 | RETVAL | |
adfe19db MHM |
313 | |
314 | IV | |
315 | uv_type() | |
b2049988 MHM |
316 | CODE: |
317 | RETVAL = sizeof(UVTYPE) == sizeof(UV); | |
318 | OUTPUT: | |
319 | RETVAL | |
adfe19db MHM |
320 | |
321 | =tests plan => 4 | |
322 | ||
323 | ok(&Devel::PPPort::iv_size()); | |
324 | ok(&Devel::PPPort::uv_size()); | |
325 | ok(&Devel::PPPort::iv_type()); | |
326 | ok(&Devel::PPPort::uv_type()); |