limits.c revision 3e14f97f673e8a630f076077de35afdd43dc1587
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/***********************************************************************
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* This software is part of the ast package *
3e14f97f673e8a630f076077de35afdd43dc1587Roger A. Faulkner* Copyright (c) 1985-2010 AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* and is licensed under the *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Common Public License, Version 1.0 *
7c2fbfb345896881c631598ee3852ce9ce33fb07April Chin* by AT&T Intellectual Property *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* A copy of the License is available at *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* http://www.opensource.org/licenses/cpl1.0.txt *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Information and Software Systems Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* AT&T Research *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Florham Park NJ *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Glenn Fowler <gsf@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* David Korn <dgk@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* Phong Vo <kpv@research.att.com> *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin* *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin***********************************************************************/
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#pragma prototyped
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * Glenn Fowler
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * AT&T Research
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * generate limits features
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * FOPEN_MAX POSIX says ANSI defines it but it's not in ANSI
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin *
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * NOTE: two's complement binary integral representation assumed
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(__STDPP__directive) && defined(__STDPP__hide)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin__STDPP__directive pragma pp:hide getpagesize getdtablesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define getpagesize ______getpagesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define getdtablesize ______getdtablesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin/*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * we'd like as many symbols as possible defined
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * the standards push the vendors the other way
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * but don't provide guard that lets everything through
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * so each vendor adds their own guard
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * many now include something like <standards.h> to
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * get it straight in one place -- <sys/types.h> should
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * kick that in
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "FEATURE/standards"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "FEATURE/lib"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef __sun
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _timespec timespec
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <sys/types.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef _SGIAPI
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _SGIAPI 1
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _hdr_limits
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <limits.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef _SGIAPI
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#define _SGIAPI 0
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "FEATURE/lib"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "FEATURE/common"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _hdr_unistd
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include <unistd.h>
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "FEATURE/param"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if defined(__STDPP__directive) && defined(__STDPP__hide)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin__STDPP__directive pragma pp:nohide getpagesize getdtablesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef getpagesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#undef getdtablesize
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chinint main()
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin{
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin char c;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned char uc;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned short us;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned int ui;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long ul;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin unsigned long val;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _typ_uint64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uint64_t ull;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uint64_t vll;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin /*
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin * <limits.h> with *constant* valued macros
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin */
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef CHAR_BIT
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uc = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uc = ~uc;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin while (uc >>= 1) val++;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define CHAR_BIT %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef MB_LEN_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define MB_LEN_MAX %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin c = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin c = ~c;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uc = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin uc = ~uc;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin us = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin us = ~us;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ui = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ui = ~ui;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ul = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ul = ~ul;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _typ_uint64_t
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ull = 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin ull = ~ull;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef UCHAR_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = uc;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if defined(__STDC__)\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define UCHAR_MAX %luU\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#else\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define UCHAR_MAX %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef SCHAR_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = (unsigned char)(uc >> 1) + 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define SCHAR_MIN (-%lu)\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef SCHAR_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = (unsigned char)(uc >> 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define SCHAR_MAX %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (c < 0)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef CHAR_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define CHAR_MIN SCHAR_MIN\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef CHAR_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define CHAR_MAX SCHAR_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef CHAR_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define CHAR_MIN 0\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef CHAR_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define CHAR_MAX UCHAR_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef USHRT_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = us;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if defined(__STDC__)\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define USHRT_MAX %luU\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#else\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define USHRT_MAX %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef SHRT_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = (unsigned short)(us >> 1) + 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define SHRT_MIN (-%lu)\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef SHRT_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = (unsigned short)(us >> 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define SHRT_MAX %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (ui == us)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef UINT_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define UINT_MAX USHRT_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef INT_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define INT_MIN SHRT_MIN\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef INT_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define INT_MAX SHRT_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef UINT_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = ui;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if defined(__STDC__)\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define UINT_MAX %luU\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#else\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define UINT_MAX %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef INT_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = (unsigned int)(ui >> 1) + 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (ui == ul) printf("#define INT_MIN (-%lu-1)\n", val - 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin else printf("#define INT_MIN (-%lu)\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef INT_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = (unsigned int)(ui >> 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define INT_MAX %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (ul == ui)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef ULONG_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define ULONG_MAX UINT_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LONG_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LONG_MIN INT_MIN\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LONG_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LONG_MAX INT_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef ULONG_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = ul;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if defined(__STDC__)\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define ULONG_MAX %luLU\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#else\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define ULONG_MAX %lu\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LONG_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = (unsigned long)(ul >> 1) + 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LONG_MIN (-%luL-1L)\n", val - 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LONG_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin val = (unsigned long)(ul >> 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LONG_MAX %luL\n", val);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#if _typ_uint64_t && !_ast_intmax_long
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin if (ull == ul)
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef ULLONG_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define ULLONG_MAX ULONG_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LLONG_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LLONG_MIN LONG_MIN\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LLONG_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LLONG_MAX LONG_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin else
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin {
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef ULLONG_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin vll = ull;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifndef ULLONG_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if defined(__STDC__) && _ast_LL\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define ULLONG_MAX %lluULL\n", vll);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#else\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define ULLONG_MAX %llu\n", vll);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LLONG_MIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin vll = (uint64_t)(ull >> 1) + 1;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifndef LLONG_MIN\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if defined(__STDC__) && _ast_LL\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LLONG_MIN (-%lluLL-1LL)\n", vll - 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#else\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LLONG_MIN (-%llu-1)\n", vll - 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifndef LLONG_MAX
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin vll = (uint64_t)(ull >> 1);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifndef LLONG_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#if defined(__STDC__) && _ast_LL\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LLONG_MAX %lluLL\n", vll);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#else\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define LLONG_MAX %llu\n", vll);
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin }
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#ifdef _UWIN
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifdef _UWIN\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifndef DBL_DIG\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define DBL_DIG 15\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifndef DBL_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define DBL_MAX 1.7976931348623158e+308\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifndef FLT_DIG\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define FLT_DIG 6\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#ifndef FLT_MAX\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#define FLT_MAX 3.402823466e+38F\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("#endif\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#endif
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin#include "conflim.h"
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin printf("\n");
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin return 0;
da2e3ebdc1edfbc5028edf1354e7dd2fa69a7968chin}