home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 April / PCWorld_2000-04_cd.bin / Software / Servis / Devc / _SETUP.4 / Group3 / limits.h < prev    next >
C/C++ Source or Header  |  1999-11-07  |  3KB  |  111 lines

  1. /* 
  2.  * limits.h
  3.  *
  4.  * Defines constants for the sizes of integral types.
  5.  *
  6.  * NOTE: GCC should supply a version of this header and it should be safe to
  7.  *       use that version instead of this one (maybe safer).
  8.  *
  9.  * This file is part of the Mingw32 package.
  10.  *
  11.  * Contributors:
  12.  *  Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
  13.  *
  14.  *  THIS SOFTWARE IS NOT COPYRIGHTED
  15.  *
  16.  *  This source code is offered for use in the public domain. You may
  17.  *  use, modify or distribute it freely.
  18.  *
  19.  *  This code is distributed in the hope that it will be useful but
  20.  *  WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
  21.  *  DISCLAMED. This includes but is not limited to warranties of
  22.  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  23.  *
  24.  * $Revision: 1.1.1.2 $
  25.  * $Author: khan $
  26.  * $Date: 1997/12/05 21:55:10 $
  27.  *
  28.  */
  29.  
  30. #ifndef _LIMITS_H_
  31. #define _LIMITS_H_
  32.  
  33. /* All the headers include this file. */
  34. #include <_mingw.h>
  35.  
  36. /*
  37.  * File system limits
  38.  *
  39.  * TODO: NAME_MAX and OPEN_MAX are file system limits or not? Are they the
  40.  *       same as FILENAME_MAX and FOPEN_MAX from stdio.h?
  41.  * NOTE: Apparently the actual size of PATH_MAX is 260, but a space is
  42.  *       required for the NUL. TODO: Test?
  43.  */
  44. #define PATH_MAX    (259)
  45.  
  46. /*
  47.  * Characteristics of the char data type.
  48.  *
  49.  * TODO: Is MB_LEN_MAX correct?
  50.  */
  51. #define CHAR_BIT    8
  52. #define MB_LEN_MAX    2
  53.  
  54. #define SCHAR_MIN    (-128)
  55. #define SCHAR_MAX    127
  56.  
  57. #define UCHAR_MAX    255
  58.  
  59. /* TODO: Is this safe? I think it might just be testing the preprocessor,
  60.  *       not the compiler itself... */
  61. #if    ('\x80' < 0)
  62. #define CHAR_MIN    SCHAR_MIN
  63. #define CHAR_MAX    SCHAR_MAX
  64. #else
  65. #define CHAR_MIN    0
  66. #define CHAR_MAX    UCHAR_MAX
  67. #endif
  68.  
  69. /*
  70.  * Maximum and minimum values for ints.
  71.  */
  72. #define INT_MAX        2147483647
  73. #define INT_MIN        (-INT_MAX-1)
  74.  
  75. #define UINT_MAX    (2U * INT_MAX + 1)
  76.  
  77. /*
  78.  * Maximum and minimum values for shorts.
  79.  */
  80. #define SHRT_MAX    32767
  81. #define SHRT_MIN    (-SHRT_MAX-1)
  82.  
  83. #define USHRT_MAX    ((unsigned short) (2U * SHRT_MAX + 1))
  84.  
  85. /*
  86.  * Maximum and minimum values for longs and unsigned longs.
  87.  *
  88.  * TODO: This is not correct for Alphas, which have 64 bit longs.
  89.  */
  90. #define LONG_MAX    2147483647L
  91.  
  92. #define LONG_MIN    (-LONG_MAX-1)
  93.  
  94. #define ULONG_MAX    (2UL * LONG_MAX + 1)
  95.  
  96.  
  97. /*
  98.  * The GNU C compiler also allows 'long long int'
  99.  */
  100. #if    !defined(__STRICT_ANSI__) && defined(__GNUC__)
  101.  
  102. #define LONG_LONG_MAX    9223372036854775807LL
  103. #define LONG_LONG_MIN    (-LONG_LONG_MAX-1)
  104.  
  105. #define ULONG_LONG_MAX    (2ULL * LONG_LONG_MAX + 1)
  106.  
  107. #endif /* Not Strict ANSI and GNU C compiler */
  108.  
  109.  
  110. #endif /* not _LIMITS_H_ */
  111.