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