#ifndef __COMPLEX_H
#define __COMPLEX_H __COMPLEX_H
+#include "personality.h"
+
// ----------------------------------------------------------------------------
// DEFINES
#define _Complex_I ( const float _Complex ) { 0, 1 }
-// TODO: imaginary is only defined if implementation supports _Imaginary.
+#ifdef __PERSONALITY_SUPPORTS_IMAGINARY
#define imaginary _Imaginary
+#endif // __PERSONALITY_SUPPORTS_IMAGINARY
#ifdef imaginary
#define _Imaginary_I ( ( const float _Imaginary ) 1 )
#ifndef __ERRNO_H
#define __ERRNO_H __ERRNO_H
+// TODO: Documentation
+
// ----------------------------------------------------------------------------
// DECLARATIONS
#ifndef __FENV_H
#define __FENV_H __FENV_H
+// TODO: Documentation, checking for personality
+
// ----------------------------------------------------------------------------
// MACROS
#ifndef __FLOAT_H
#define __FLOAT_H __FLOAT_H
+// This file is part of the platform personality (see personality.txt).
+
#define FLT_RADIX // TODO
#define FLT_ROUNDS // TODO
#define FLT_EVAL_METHOD // TODO
#ifndef __INTTYPES_H
#define __INTTYPES_H __INTTYPES_H
+// TODO: Documentation
+
// ----------------------------------------------------------------------------
// TYPEDEFS
#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
#ifndef __MATH_H
#define __MATH_H __MATH_H
+// TODO: Documentation
+
// ----------------------------------------------------------------------------
// DEFINES
-#define HUGE_VAL // TODO
-#define HUGE_VALF // TODO
-#define HUGE_VALL // TODO
+#define HUGE_VAL // TODO - personality?
+#define HUGE_VALF // TODO - personality?
+#define HUGE_VALL // TODO - personality?
-#define INFINITY // TODO
-#define NAN // TODO
+#define INFINITY // TODO - personality?
+#define NAN // TODO - personality?
-#define FP_FAST_FMA // TODO
-#define FP_FAST_FMAF // TODO
-#define FP_FAST_FMAL // TODO
+#define FP_FAST_FMA // TODO - personality?
+#define FP_FAST_FMAF // TODO - personality?
+#define FP_FAST_FMAL // TODO - personality?
-#define FP_INFINITE // TODO
-#define FP_NAN // TODO
-#define FP_NORMAL // TODO
-#define FP_SUBNORMAL // TODO
-#define FP_ZERO // TODO
+#define FP_INFINITE // TODO - personality?
+#define FP_NAN // TODO - personality?
+#define FP_NORMAL // TODO - personality?
+#define FP_SUBNORMAL // TODO - personality?
+#define FP_ZERO // TODO - personality?
-#define FP_ILOGB0 // TODO
-#define FP_ILOGBNAN // TODO
+#define FP_ILOGB0 // TODO - personality?
+#define FP_ILOGBNAN // TODO - personality?
-#define MATH_ERRNO 1
-#define MATH_ERREXCEPT 2
-#define math_errhandling // TODO
+#define MATH_ERRNO 1 // personality?
+#define MATH_ERREXCEPT 2 // personality?
+#define math_errhandling // TODO - personality?
// --------------------------------------------------------------------------
// TYPEDEFS
-typedef double_t; // TODO
-typedef float_t; // TODO
+typedef double_t; // TODO - personality?
+typedef float_t; // TODO - personality?
// --------------------------------------------------------------------------
// MACROS
#ifndef __SETJMP_H
#define __SETJMP_H __SETJMP_H
+// TODO: Documentation
+
// ----------------------------------------------------------------------------
// TYPEDEFS
-struct jmp_buf[1];
+struct jmp_buf[1]; // TODO
// ----------------------------------------------------------------------------
// FUNCTIONS
-// TODO
-int setjmp(jmp_buf env);
-
-// TODO
-void longjmp(jmp_buf env, int val);
+int setjmp( jmp_buf env );
+void longjmp( jmp_buf env, int val );
#endif // __SETJMP_H
#ifndef __SIGNAL_H
#define __SIGNAL_H __SIGNAL_H
+// TODO: Documentation
+
// ----------------------------------------------------------------------------
// MACROS
-#define SIGABRT // TODO
-#define SIGFPE // TODO
-#define SIGILL // TODO
-#define SIGINT // TODO
-#define SIGSEGV // TODO
-#define SIGTERM // TODO
-#define SIG_DFL // TODO
-#define SIG_ERR // TODO
-#define SIG_IGN // TODO
+#define SIGABRT // TODO - personality?
+#define SIGFPE // TODO - personality?
+#define SIGILL // TODO - personality?
+#define SIGINT // TODO - personality?
+#define SIGSEGV // TODO - personality?
+#define SIGTERM // TODO - personality?
+#define SIG_DFL // TODO - personality?
+#define SIG_ERR // TODO - personality?
+#define SIG_IGN // TODO - personality?
// ----------------------------------------------------------------------------
// TYPEDEFS
-typedef sig_atomic_t; // TODO
+typedef sig_atomic_t; // TODO - personality?
// ----------------------------------------------------------------------------
// FUNCTIONS
// ----------------------------------------------------------------------------
// TYPEDEFS
-typedef do-type va_list;
+typedef do-type va_list; // TODO
// ----------------------------------------------------------------------------
// MACROS
#ifndef __STDDEF_H
#define __STDDEF_H __STDDEF_H
+// TODO: Documentation
+
// ----------------------------------------------------------------------------
// MACROS
#define NULL 0
-#define offsetof( s-type, mbr ) // TODO
+#define offsetof( s-type, mbr ) // TODO - personality?
// ----------------------------------------------------------------------------
// TYPEDEFS
-typedef ptrdiff_t; // TODO
-typedef size_t; // TODO
+typedef ptrdiff_t; // TODO - personality?
+typedef size_t; // TODO - personality?
#ifndef __cplusplus
-typedef wchar_t;
+typedef wchar_t; // TODO - personality?
#endif // __cplusplus
#endif // __STDDEF_H
#ifndef __STDINT_H
#define __STDINT_H __STDINT_H
+// This file is part of the platform personality (see personality.txt).
+
+// TODO: Documentation
+
// ----------------------------------------------------------------------------
// TYPEDEFS
#ifndef __STDIO_H
#define __STDIO_H __STDIO_H
+// TODO: Documentation, checking macros for personality
+
// ----------------------------------------------------------------------------
// MACROS
// ----------------------------------------------------------------------------
// TYPEDEFS
-typedef FILE; // TODO
-typedef fpos_t; // TODO
-typedef size_t; // TODO
+typedef FILE; // TODO - personality?
+typedef fpos_t; // TODO - personality?
+typedef size_t; // TODO - personality?
// ----------------------------------------------------------------------------
// FUNCTIONS
#ifndef __STDLIB_H
#define __STDLIB_H __STDLIB_H
+// TODO: Documentation, C++ handling
+
// ----------------------------------------------------------------------------
// MACROS
long long remainder;
} lldiv_t;
-typedef size_t; // TODO
+typedef size_t; // TODO - personality?
#ifndef __cplusplus
-typedef wchar_t; // TODO
+typedef wchar_t; // TODO - personality?
#endif // __cplusplus
// ----------------------------------------------------------------------------
__cppwrapper( void * bsearch( const void * key, const void * base, size_t nelem, size_t size, int (*cmp) ( const void * ck, const void * ce) ) { /* TODO */ }; )
__cppwrapper( void qsort( void * base, size_t nelem, size_t size, int (*cmp) ( const void * e1, const void * e2) ) { /* TODO */ }; )
+#undef __cppwrapper
+
#endif // __STDLIB_H
#ifndef __STRING_H
#define __STRING_H __STRING_H
+// TODO: Documentation, C++ handling
+
// ----------------------------------------------------------------------------
// MACROS
// ----------------------------------------------------------------------------
// TYPEDEFS
-typedef size_t;
+typedef size_t; // TODO - personality?
// ----------------------------------------------------------------------------
// FUNCTIONS
#ifndef __TGMATH_H
#define __TGMATH_H __TGMATH_H
+// TODO: Generics support, C++ handling
+
#include <complex.h>
#include <math.h>
#ifndef __TIME_H
#define __TIME_H __TIME_H
+// TODO: Documentation.
+
// ----------------------------------------------------------------------------
// MACROS
-#define CLOCKS_PER_SEC // TODO
+#define CLOCKS_PER_SEC // TODO - personality?
#define NULL 0
// ----------------------------------------------------------------------------
// TYPES
-typedef clock_t;
-typedef size_t;
-typedef time_t;
-struct tm;
+typedef clock_t; // TODO - personality?
+typedef size_t; // TODO - personality?
+typedef time_t; // TODO - personality?
+struct tm; // TODO - personality?
// ----------------------------------------------------------------------------
// FUNCTIONS
#ifndef __WCHAR_H
#define __WCHAR_H __WCHAR_H
+// TODO: Documentation, C++ handling
+
// ----------------------------------------------------------------------------
// MACROS
#define NULL 0
-#define WCHAR_MAX // TODO
-#define WCHAR_MIN // TODO
-#define WEOF // TODO
+#define WCHAR_MAX // TODO - personality?
+#define WCHAR_MIN // TODO - personality?
+#define WEOF // TODO - personality?
// ----------------------------------------------------------------------------
// TYPEDEFS
-typedef mbstate_t;
-typedef size_t;
-typedef wint_t;
-struct tm;
+typedef mbstate_t; // TODO - personality?
+typedef size_t; // TODO - personality?
+typedef wint_t; // TODO - personality?
+struct tm; // TODO - personality?
#ifndef __cplusplus
-typedef wchar_t;
+typedef wchar_t; // TODO - personality?
#endif // __cplusplus
// ----------------------------------------------------------------------------
#ifndef __WCTYPE_H
#define __WCTYPE_H __WCTYPE_H
+// TODO: Documentation
+
// ----------------------------------------------------------------------------
// TYPEDEFS
-typedef wctrans_t;
-typedef wctype_t;
-typedef wint_t;
+typedef wctrans_t; // TODO - personality?
+typedef wctype_t; // TODO - personality?
+typedef wint_t; // TODO - personality?
// ----------------------------------------------------------------------------
// FUNCTIONS