1da2e3ebdSchin /***********************************************************************
2da2e3ebdSchin * *
3da2e3ebdSchin * This software is part of the ast package *
4*b30d1939SAndy Fiddaman * Copyright (c) 1985-2011 AT&T Intellectual Property *
5da2e3ebdSchin * and is licensed under the *
6*b30d1939SAndy Fiddaman * Eclipse Public License, Version 1.0 *
77c2fbfb3SApril Chin * by AT&T Intellectual Property *
8da2e3ebdSchin * *
9da2e3ebdSchin * A copy of the License is available at *
10*b30d1939SAndy Fiddaman * http://www.eclipse.org/org/documents/epl-v10.html *
11*b30d1939SAndy Fiddaman * (with md5 checksum b35adb5213ca9657e911e9befb180842) *
12da2e3ebdSchin * *
13da2e3ebdSchin * Information and Software Systems Research *
14da2e3ebdSchin * AT&T Research *
15da2e3ebdSchin * Florham Park NJ *
16da2e3ebdSchin * *
17da2e3ebdSchin * Glenn Fowler <gsf@research.att.com> *
18da2e3ebdSchin * David Korn <dgk@research.att.com> *
19da2e3ebdSchin * Phong Vo <kpv@research.att.com> *
20da2e3ebdSchin * *
21da2e3ebdSchin ***********************************************************************/
22da2e3ebdSchin #pragma prototyped
23da2e3ebdSchin /*
24da2e3ebdSchin * Glenn Fowler
25da2e3ebdSchin * AT&T Research
26da2e3ebdSchin *
27da2e3ebdSchin * generate limits features
28da2e3ebdSchin *
29da2e3ebdSchin * FOPEN_MAX POSIX says ANSI defines it but it's not in ANSI
30da2e3ebdSchin *
31da2e3ebdSchin * NOTE: two's complement binary integral representation assumed
32da2e3ebdSchin */
33da2e3ebdSchin
34da2e3ebdSchin #if defined(__STDPP__directive) && defined(__STDPP__hide)
35da2e3ebdSchin __STDPP__directive pragma pp:hide getpagesize getdtablesize
36da2e3ebdSchin #else
37da2e3ebdSchin #define getpagesize ______getpagesize
38da2e3ebdSchin #define getdtablesize ______getdtablesize
39da2e3ebdSchin #endif
40da2e3ebdSchin
41da2e3ebdSchin /*
42da2e3ebdSchin * we'd like as many symbols as possible defined
43da2e3ebdSchin * the standards push the vendors the other way
44da2e3ebdSchin * but don't provide guard that lets everything through
45da2e3ebdSchin * so each vendor adds their own guard
46da2e3ebdSchin * many now include something like <standards.h> to
47da2e3ebdSchin * get it straight in one place -- <sys/types.h> should
48da2e3ebdSchin * kick that in
49da2e3ebdSchin */
50da2e3ebdSchin
51da2e3ebdSchin #include "FEATURE/standards"
52da2e3ebdSchin #include "FEATURE/lib"
53da2e3ebdSchin
54da2e3ebdSchin #ifdef __sun
55da2e3ebdSchin #define _timespec timespec
56da2e3ebdSchin #endif
57da2e3ebdSchin
58da2e3ebdSchin #include <sys/types.h>
59da2e3ebdSchin
60da2e3ebdSchin #undef _SGIAPI
61da2e3ebdSchin #define _SGIAPI 1
62da2e3ebdSchin
63da2e3ebdSchin #if _hdr_limits
64da2e3ebdSchin #include <limits.h>
65da2e3ebdSchin #endif
66da2e3ebdSchin
67da2e3ebdSchin #undef _SGIAPI
68da2e3ebdSchin #define _SGIAPI 0
69da2e3ebdSchin
70da2e3ebdSchin #include "FEATURE/lib"
71da2e3ebdSchin #include "FEATURE/common"
72da2e3ebdSchin
73da2e3ebdSchin #if _hdr_unistd
74da2e3ebdSchin #include <unistd.h>
75da2e3ebdSchin #endif
76da2e3ebdSchin
77da2e3ebdSchin #include "FEATURE/param"
78da2e3ebdSchin
79da2e3ebdSchin #if defined(__STDPP__directive) && defined(__STDPP__hide)
80da2e3ebdSchin __STDPP__directive pragma pp:nohide getpagesize getdtablesize
81da2e3ebdSchin #else
82da2e3ebdSchin #undef getpagesize
83da2e3ebdSchin #undef getdtablesize
84da2e3ebdSchin #endif
85da2e3ebdSchin
main()86da2e3ebdSchin int main()
87da2e3ebdSchin {
88da2e3ebdSchin char c;
89da2e3ebdSchin unsigned char uc;
90da2e3ebdSchin unsigned short us;
91da2e3ebdSchin unsigned int ui;
92da2e3ebdSchin unsigned long ul;
93da2e3ebdSchin unsigned long val;
94da2e3ebdSchin #if _typ_uint64_t
95da2e3ebdSchin uint64_t ull;
96da2e3ebdSchin uint64_t vll;
97da2e3ebdSchin #endif
98da2e3ebdSchin
99da2e3ebdSchin /*
100da2e3ebdSchin * <limits.h> with *constant* valued macros
101da2e3ebdSchin */
102da2e3ebdSchin
103da2e3ebdSchin printf("\n");
104da2e3ebdSchin #ifndef CHAR_BIT
105da2e3ebdSchin uc = 0;
106da2e3ebdSchin uc = ~uc;
107da2e3ebdSchin val = 1;
108da2e3ebdSchin while (uc >>= 1) val++;
109da2e3ebdSchin printf("#define CHAR_BIT %lu\n", val);
110da2e3ebdSchin #endif
111da2e3ebdSchin #ifndef MB_LEN_MAX
112da2e3ebdSchin val = 1;
113da2e3ebdSchin printf("#define MB_LEN_MAX %lu\n", val);
114da2e3ebdSchin #endif
115da2e3ebdSchin
116da2e3ebdSchin c = 0;
117da2e3ebdSchin c = ~c;
118da2e3ebdSchin uc = 0;
119da2e3ebdSchin uc = ~uc;
120da2e3ebdSchin us = 0;
121da2e3ebdSchin us = ~us;
122da2e3ebdSchin ui = 0;
123da2e3ebdSchin ui = ~ui;
124da2e3ebdSchin ul = 0;
125da2e3ebdSchin ul = ~ul;
126da2e3ebdSchin #if _typ_uint64_t
127da2e3ebdSchin ull = 0;
128da2e3ebdSchin ull = ~ull;
129da2e3ebdSchin #endif
130da2e3ebdSchin
131da2e3ebdSchin #ifndef UCHAR_MAX
132da2e3ebdSchin val = uc;
133da2e3ebdSchin printf("#if defined(__STDC__)\n");
134da2e3ebdSchin printf("#define UCHAR_MAX %luU\n", val);
135da2e3ebdSchin printf("#else\n");
136da2e3ebdSchin printf("#define UCHAR_MAX %lu\n", val);
137da2e3ebdSchin printf("#endif\n");
138da2e3ebdSchin #endif
139da2e3ebdSchin
140da2e3ebdSchin #ifndef SCHAR_MIN
141da2e3ebdSchin val = (unsigned char)(uc >> 1) + 1;
142da2e3ebdSchin printf("#define SCHAR_MIN (-%lu)\n", val);
143da2e3ebdSchin #endif
144da2e3ebdSchin
145da2e3ebdSchin #ifndef SCHAR_MAX
146da2e3ebdSchin val = (unsigned char)(uc >> 1);
147da2e3ebdSchin printf("#define SCHAR_MAX %lu\n", val);
148da2e3ebdSchin #endif
149da2e3ebdSchin
150da2e3ebdSchin if (c < 0)
151da2e3ebdSchin {
152da2e3ebdSchin #ifndef CHAR_MIN
153da2e3ebdSchin printf("#define CHAR_MIN SCHAR_MIN\n");
154da2e3ebdSchin #endif
155da2e3ebdSchin
156da2e3ebdSchin #ifndef CHAR_MAX
157da2e3ebdSchin printf("#define CHAR_MAX SCHAR_MAX\n");
158da2e3ebdSchin #endif
159da2e3ebdSchin }
160da2e3ebdSchin else
161da2e3ebdSchin {
162da2e3ebdSchin #ifndef CHAR_MIN
163da2e3ebdSchin printf("#define CHAR_MIN 0\n");
164da2e3ebdSchin #endif
165da2e3ebdSchin
166da2e3ebdSchin #ifndef CHAR_MAX
167da2e3ebdSchin printf("#define CHAR_MAX UCHAR_MAX\n");
168da2e3ebdSchin #endif
169da2e3ebdSchin }
170da2e3ebdSchin
171da2e3ebdSchin #ifndef USHRT_MAX
172da2e3ebdSchin val = us;
173da2e3ebdSchin printf("#if defined(__STDC__)\n");
174da2e3ebdSchin printf("#define USHRT_MAX %luU\n", val);
175da2e3ebdSchin printf("#else\n");
176da2e3ebdSchin printf("#define USHRT_MAX %lu\n", val);
177da2e3ebdSchin printf("#endif\n");
178da2e3ebdSchin #endif
179da2e3ebdSchin
180da2e3ebdSchin #ifndef SHRT_MIN
181da2e3ebdSchin val = (unsigned short)(us >> 1) + 1;
182da2e3ebdSchin printf("#define SHRT_MIN (-%lu)\n", val);
183da2e3ebdSchin #endif
184da2e3ebdSchin
185da2e3ebdSchin #ifndef SHRT_MAX
186da2e3ebdSchin val = (unsigned short)(us >> 1);
187da2e3ebdSchin printf("#define SHRT_MAX %lu\n", val);
188da2e3ebdSchin #endif
189da2e3ebdSchin
190da2e3ebdSchin if (ui == us)
191da2e3ebdSchin {
192da2e3ebdSchin #ifndef UINT_MAX
193da2e3ebdSchin printf("#define UINT_MAX USHRT_MAX\n");
194da2e3ebdSchin #endif
195da2e3ebdSchin
196da2e3ebdSchin #ifndef INT_MIN
197da2e3ebdSchin printf("#define INT_MIN SHRT_MIN\n");
198da2e3ebdSchin #endif
199da2e3ebdSchin
200da2e3ebdSchin #ifndef INT_MAX
201da2e3ebdSchin printf("#define INT_MAX SHRT_MAX\n");
202da2e3ebdSchin #endif
203da2e3ebdSchin }
204da2e3ebdSchin else
205da2e3ebdSchin {
206da2e3ebdSchin #ifndef UINT_MAX
207da2e3ebdSchin val = ui;
208da2e3ebdSchin printf("#if defined(__STDC__)\n");
209da2e3ebdSchin printf("#define UINT_MAX %luU\n", val);
210da2e3ebdSchin printf("#else\n");
211da2e3ebdSchin printf("#define UINT_MAX %lu\n", val);
212da2e3ebdSchin printf("#endif\n");
213da2e3ebdSchin #endif
214da2e3ebdSchin
215da2e3ebdSchin #ifndef INT_MIN
216da2e3ebdSchin val = (unsigned int)(ui >> 1) + 1;
217da2e3ebdSchin if (ui == ul) printf("#define INT_MIN (-%lu-1)\n", val - 1);
218da2e3ebdSchin else printf("#define INT_MIN (-%lu)\n", val);
219da2e3ebdSchin #endif
220da2e3ebdSchin
221da2e3ebdSchin #ifndef INT_MAX
222da2e3ebdSchin val = (unsigned int)(ui >> 1);
223da2e3ebdSchin printf("#define INT_MAX %lu\n", val);
224da2e3ebdSchin #endif
225da2e3ebdSchin }
226da2e3ebdSchin
227da2e3ebdSchin if (ul == ui)
228da2e3ebdSchin {
229da2e3ebdSchin #ifndef ULONG_MAX
230da2e3ebdSchin printf("#define ULONG_MAX UINT_MAX\n");
231da2e3ebdSchin #endif
232da2e3ebdSchin
233da2e3ebdSchin #ifndef LONG_MIN
234da2e3ebdSchin printf("#define LONG_MIN INT_MIN\n");
235da2e3ebdSchin #endif
236da2e3ebdSchin
237da2e3ebdSchin #ifndef LONG_MAX
238da2e3ebdSchin printf("#define LONG_MAX INT_MAX\n");
239da2e3ebdSchin #endif
240da2e3ebdSchin }
241da2e3ebdSchin else
242da2e3ebdSchin {
243da2e3ebdSchin #ifndef ULONG_MAX
244da2e3ebdSchin val = ul;
245da2e3ebdSchin printf("#if defined(__STDC__)\n");
246da2e3ebdSchin printf("#define ULONG_MAX %luLU\n", val);
247da2e3ebdSchin printf("#else\n");
248da2e3ebdSchin printf("#define ULONG_MAX %lu\n", val);
249da2e3ebdSchin printf("#endif\n");
250da2e3ebdSchin #endif
251da2e3ebdSchin
252da2e3ebdSchin #ifndef LONG_MIN
253da2e3ebdSchin val = (unsigned long)(ul >> 1) + 1;
254da2e3ebdSchin printf("#define LONG_MIN (-%luL-1L)\n", val - 1);
255da2e3ebdSchin #endif
256da2e3ebdSchin
257da2e3ebdSchin #ifndef LONG_MAX
258da2e3ebdSchin val = (unsigned long)(ul >> 1);
259da2e3ebdSchin printf("#define LONG_MAX %luL\n", val);
260da2e3ebdSchin #endif
261da2e3ebdSchin }
262da2e3ebdSchin
263da2e3ebdSchin #if _typ_uint64_t && !_ast_intmax_long
264da2e3ebdSchin if (ull == ul)
265da2e3ebdSchin {
266da2e3ebdSchin #ifndef ULLONG_MAX
267da2e3ebdSchin printf("#define ULLONG_MAX ULONG_MAX\n");
268da2e3ebdSchin #endif
269da2e3ebdSchin
270da2e3ebdSchin #ifndef LLONG_MIN
271da2e3ebdSchin printf("#define LLONG_MIN LONG_MIN\n");
272da2e3ebdSchin #endif
273da2e3ebdSchin
274da2e3ebdSchin #ifndef LLONG_MAX
275da2e3ebdSchin printf("#define LLONG_MAX LONG_MAX\n");
276da2e3ebdSchin #endif
277da2e3ebdSchin }
278da2e3ebdSchin else
279da2e3ebdSchin {
280da2e3ebdSchin #ifndef ULLONG_MAX
281da2e3ebdSchin vll = ull;
282da2e3ebdSchin printf("#ifndef ULLONG_MAX\n");
283da2e3ebdSchin printf("#if defined(__STDC__) && _ast_LL\n");
284da2e3ebdSchin printf("#define ULLONG_MAX %lluULL\n", vll);
285da2e3ebdSchin printf("#else\n");
286da2e3ebdSchin printf("#define ULLONG_MAX %llu\n", vll);
287da2e3ebdSchin printf("#endif\n");
288da2e3ebdSchin printf("#endif\n");
289da2e3ebdSchin #endif
290da2e3ebdSchin
291da2e3ebdSchin #ifndef LLONG_MIN
292da2e3ebdSchin vll = (uint64_t)(ull >> 1) + 1;
293da2e3ebdSchin printf("#ifndef LLONG_MIN\n");
294da2e3ebdSchin printf("#if defined(__STDC__) && _ast_LL\n");
295da2e3ebdSchin printf("#define LLONG_MIN (-%lluLL-1LL)\n", vll - 1);
296da2e3ebdSchin printf("#else\n");
297da2e3ebdSchin printf("#define LLONG_MIN (-%llu-1)\n", vll - 1);
298da2e3ebdSchin printf("#endif\n");
299da2e3ebdSchin printf("#endif\n");
300da2e3ebdSchin #endif
301da2e3ebdSchin
302da2e3ebdSchin #ifndef LLONG_MAX
303da2e3ebdSchin vll = (uint64_t)(ull >> 1);
304da2e3ebdSchin printf("#ifndef LLONG_MAX\n");
305da2e3ebdSchin printf("#if defined(__STDC__) && _ast_LL\n");
306da2e3ebdSchin printf("#define LLONG_MAX %lluLL\n", vll);
307da2e3ebdSchin printf("#else\n");
308da2e3ebdSchin printf("#define LLONG_MAX %llu\n", vll);
309da2e3ebdSchin printf("#endif\n");
310da2e3ebdSchin printf("#endif\n");
311da2e3ebdSchin #endif
312da2e3ebdSchin }
313da2e3ebdSchin #endif
314da2e3ebdSchin
315da2e3ebdSchin printf("\n");
316da2e3ebdSchin #ifdef _UWIN
317da2e3ebdSchin printf("#ifdef _UWIN\n");
318da2e3ebdSchin printf("#ifndef DBL_DIG\n");
319da2e3ebdSchin printf("#define DBL_DIG 15\n");
320da2e3ebdSchin printf("#endif\n");
321da2e3ebdSchin printf("#ifndef DBL_MAX\n");
322da2e3ebdSchin printf("#define DBL_MAX 1.7976931348623158e+308\n");
323da2e3ebdSchin printf("#endif\n");
324da2e3ebdSchin printf("#ifndef FLT_DIG\n");
325da2e3ebdSchin printf("#define FLT_DIG 6\n");
326da2e3ebdSchin printf("#endif\n");
327da2e3ebdSchin printf("#ifndef FLT_MAX\n");
328da2e3ebdSchin printf("#define FLT_MAX 3.402823466e+38F\n");
329da2e3ebdSchin printf("#endif\n");
330da2e3ebdSchin printf("#endif\n");
331da2e3ebdSchin printf("\n");
332da2e3ebdSchin #endif
333da2e3ebdSchin
334da2e3ebdSchin #include "conflim.h"
335da2e3ebdSchin
336da2e3ebdSchin printf("\n");
337da2e3ebdSchin
338da2e3ebdSchin return 0;
339da2e3ebdSchin }
340