/** -*- C++ -*-
 **
 **  KAI C++ Compiler
 **
 **  Copyright (C) 1996, Kuck & Associates, Inc. All rights reserved.
 **/
#ifndef __KAI_CLIMITS
#define __KAI_CLIMITS

#include <limits.h>

#if defined(_AIX) || defined(_ABIO32) || defined(_ABIN32) || defined(__WIN32) || defined(__SR8000)
/* Fix up vendor's header file */
#undef LONG_MAX
#undef LONG_MIN
#define LONG_MAX 0x7FFFFFFFL
#define LONG_MIN (-1L-0x7FFFFFFFL)
#if defined(_ABIO32) || defined(_ABIN32) || defined(__SR8000)
#undef ULONG_MAX
#define ULONG_MAX 0xFFFFFFFFUL
#endif
#ifdef _AIX
#if _AIX < 43
  #undef LDBL_MIN_EXP
  #undef LDBL_MAX_EXP
  #undef LDBL_MIN_10_EXP
  #undef LDBL_MAX_10_EXP
  #define LDBL_MIN_EXP       DBL_MIN_EXP
  #define LDBL_MAX_EXP       DBL_MAX_EXP
  #define LDBL_MIN_10_EXP    DBL_MIN_10_EXP
  #define LDBL_MAX_10_EXP    DBL_MAX_10_EXP
#endif
#undef UINT_MAX
#undef ULONG_MAX
#define UINT_MAX  (4294967295U)
#define ULONG_MAX (4294967295UL)
#endif
#elif defined(cray)
#undef USHRT_MAX
#undef UINT_MAX
#undef LONG_MAX
#undef LONG_MIN
#undef ULONG_MAX
#define USHRT_MAX 4294967295U
#define UINT_MAX 18446744073709551615U
#define LONG_MAX 9223372036854775807L
#define LONG_MIN (-_INT_MAX_64-1L)
#define ULONG_MAX 18446744073709551615UL
#endif

#if __KAI_LONG_LONG
#ifndef LLONG_MIN
#define LLONG_MIN       (-9223372036854775807LL-1LL)
#endif
#ifndef LLONG_MAX
#define LLONG_MAX       9223372036854775807LL
#endif
#ifndef ULLONG_MAX
#define ULLONG_MAX      18446744073709551615ULL
#endif
#endif /* __KAI_LONG_LONG */

#endif /* __KAI_CLIMITS */
