+#ifndef _PDCLIB_WCHAR_T_DEFINED
+#define _PDCLIB_WCHAR_T_DEFINED _PDCLIB_WCHAR_T_DEFINED
+typedef _PDCLIB_wchar_t wchar_t;
+#endif
+
+#endif
+
+#ifndef _PDCLIB_MB_CUR_MAX_DEFINED
+#define _PDCLIB_MB_CUR_MAX_DEFINED
+#define MB_CUR_MAX (_PDCLIB_mb_cur_max())
+#endif
+
+/* Numeric conversion functions */
+
+/* TODO: atof(), strtof(), strtod(), strtold() */
+
+double atof( const char * nptr ) _PDCLIB_nothrow;
+double strtod( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr ) _PDCLIB_nothrow;
+float strtof( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr ) _PDCLIB_nothrow;
+long double strtold( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr ) _PDCLIB_nothrow;
+
+/* Seperate the character array nptr into three parts: A (possibly empty)
+ sequence of whitespace characters, a character representation of an integer
+ to the given base, and trailing invalid characters (including the terminating
+ null character). If base is 0, assume it to be 10, unless the integer
+ representation starts with 0x / 0X (setting base to 16) or 0 (setting base to
+ 8). If given, base can be anything from 0 to 36, using the 26 letters of the
+ base alphabet (both lowercase and uppercase) as digits 10 through 35.
+ The integer representation is then converted into the return type of the
+ function. It can start with a '+' or '-' sign. If the sign is '-', the result
+ of the conversion is negated.
+ If the conversion is successful, the converted value is returned. If endptr
+ is not a NULL pointer, a pointer to the first trailing invalid character is
+ returned in *endptr.
+ If no conversion could be performed, zero is returned (and nptr in *endptr,
+ if endptr is not a NULL pointer). If the converted value does not fit into
+ the return type, the functions return LONG_MIN, LONG_MAX, ULONG_MAX,
+ LLONG_MIN, LLONG_MAX, or ULLONG_MAX respectively, depending on the sign of
+ the integer representation and the return type, and errno is set to ERANGE.
+*/
+/* There is strtoimax() and strtoumax() in <inttypes.h> operating on intmax_t /
+ uintmax_t, if the long long versions do not suit your needs.
+*/
+long int strtol( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base ) _PDCLIB_nothrow;
+long long int strtoll( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base ) _PDCLIB_nothrow;
+unsigned long int strtoul( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base ) _PDCLIB_nothrow;
+unsigned long long int strtoull( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base ) _PDCLIB_nothrow;
+
+/* These functions are the equivalent of (int)strtol( nptr, NULL, 10 ),
+ strtol( nptr, NULL, 10 ) and strtoll(nptr, NULL, 10 ) respectively, with the
+ exception that they do not have to handle overflow situations in any defined
+ way.
+ (PDCLib does not simply forward these to their strtox() equivalents, but
+ provides a simpler atox() function that saves a couple of tests and simply
+ continues with the conversion in case of overflow.)
+*/
+int atoi( const char * nptr ) _PDCLIB_nothrow;
+long int atol( const char * nptr ) _PDCLIB_nothrow;
+long long int atoll( const char * nptr ) _PDCLIB_nothrow;
+
+/* Pseudo-random sequence generation functions */
+
+extern unsigned long int _PDCLIB_seed;
+
+#define RAND_MAX 32767
+
+/* Returns the next number in a pseudo-random sequence, which is between 0 and
+ RAND_MAX.
+ (PDCLib uses the implementation suggested by the standard document, which is
+ next = next * 1103515245 + 12345; return (unsigned int)(next/65536) % 32768;)
+*/
+int rand( void ) _PDCLIB_nothrow;
+
+/* Initialize a new pseudo-random sequence with the starting seed. Same seeds
+ result in the same pseudo-random sequence. The default seed is 1.
+*/
+void srand( unsigned int seed ) _PDCLIB_nothrow;
+
+/* Memory management functions */
+
+/* Allocate a chunk of memory of given size. If request could not be
+ satisfied, return NULL. Otherwise, return a pointer to the allocated
+ memory. Memory contents are undefined.
+*/
+void * malloc( size_t size ) _PDCLIB_nothrow;
+
+/* Allocate a chunk of memory that is large enough to hold nmemb elements of
+ the given size, and zero-initialize that memory. If request could not be
+ satisfied, return NULL. Otherwise, return a pointer to the allocated
+ memory.
+*/
+void * calloc( size_t nmemb, size_t size ) _PDCLIB_nothrow;
+
+/* Allocate a chunk of memory of given size, with specified alignment (which
+ must be a power of two; if it is not, the next greater power of two is
+ used). If request could not be satisfied, return NULL. Otherwise, return
+ a pointer to the allocated memory.
+*/
+void * aligned_alloc( size_t alignment, size_t size ) _PDCLIB_nothrow;