#ifndef __LIMITS_H
#define __LIMITS_H __LIMITS_H
+// ISO/IEC 9899:1999, ยง5.2.4.2.1
+// The values given below shall be replaced by constant expressions suitable
+// for use in #if preprocessing directives. Moreover, except for CHAR_BIT and
+// MB_LEN_MAX, the following shall be replaced by expressions that have the
+// same type as would an expression that is an object of the corresponding type
+// converted according to the integer promotions. Their implementation-defined
+// values shall be equal or greater in magnitude (absolute value) to those
+// shown, with the same sign.
+
+// This file is part of the platform personality (see personality.txt).
+
// Limits of type 'char'
-#define CHAR_BIT // TODO
-#define CHAR_MAX // TODO
-#define CHAR_MIN // TODO
-#define SCHAR_MAX // TODO
-#define SCHAR_MIN // TODO
-#define UCHAR_MAX // TODO
+#define CHAR_BIT // 8
+#define CHAR_MAX // SCHAR_MAX / UCHAR_MAX
+#define CHAR_MIN // SCHAR_MIN / 0
+#define SCHAR_MAX // +127
+#define SCHAR_MIN // -127
+#define UCHAR_MAX // 255 (2^CHAR_BIT - 1)
// Multibyte characters
-#define MB_LEN_MAX // TODO
+#define MB_LEN_MAX // 1
// Limits of type 'short int'
-#define SHRT_MAX // TODO
-#define SHRT_MIN // TODO
-#define USHRT_MAX // TODO
+#define SHRT_MAX // +32767
+#define SHRT_MIN // -32767
+#define USHRT_MAX // 65535
// Limits of type 'int'
-#define INT_MAX // TODO
-#define INT_MIN // TODO
-#define UINT_MAX // TODO
+#define INT_MAX // +32767
+#define INT_MIN // -32767
+#define UINT_MAX // 65535
// Limits of type 'long int'
-#define LONG_MAX // TODO
-#define LONG_MIN // TODO
-#define ULONG_MAX // TODO
+#define LONG_MAX // +2147483647
+#define LONG_MIN // -2147483647
+#define ULONG_MAX // 4294967295
// Limits of type 'long long int'
-#define LLONG_MAX // TODO
-#define LLONG_MIN // TODO
-#define ULLONG_MAX // TODO
+#define LLONG_MAX // +9223372036854775807
+#define LLONG_MIN // -9223372036854775807
+#define ULLONG_MAX // 18446744073709551615
#endif // __LIMITS_H