#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
// ----------------------------------------------------------------------------
ldiv_t div( long numer, long denom );
lldiv_t div( long long numer, long long denom );
-extern "C++" int atexit( void (*func) ( void ) );
-extern "C" int atexit( void (*func) ( void ) );
-
-extern "C++" void * bsearch( const void * key, const void * base,
- size_t nelem, size_t size,
- int (*cmp) ( const void * ck, const void * ce ) );
-extern "C" void * bsearch( const void * key, const void * base,
- size_t nelem, size_t size,
- int (*cmp) ( const void * ck, const void * ce ) );
-
-extern "C++" void qsort( void * base, size_t nelem, size_t size,
- int (*cmp) ( const void * e1, const void * e2 ) );
-extern "C" void qsort( void * base, size_t nelem, size_t size,
- int (*cmp) ( const void * e1, const void * e2 ) );
-
#endif // __cplusplus
// ----------------------------------------------------------------------------
char * getenv( const char * name );
int system( const char * s );
-#ifndef __cplusplus
+#ifdef __cplusplus
+#define __cppwrapper( x ) extern "C++" x \
+extern "C" x
+#else
+#define __cppwrapper( x ) x
+#endif // __cplusplus
-int atexit( void (*func) ( void ) );
-void * bsearch( const void * key, const void * base, size_t nelem, size_t size,
- int (*cmp) ( const void * ck, const void * ce) );
-void qsort( void * base, size_t nelem, size_t size,
- int (*cmp) ( const void * e1, const void * e2) );
+__cppwrapper( int atexit( void (*func) ( void ) ) { /* TODO */ }; )
+__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 */ }; )
-#endif // __cplusplus
+#undef __cppwrapper
#endif // __STDLIB_H