]> pd.if.org Git - pdclib/blobdiff - includes/stdlib.h
Started introducting "personality".
[pdclib] / includes / stdlib.h
index 4518f2273111f603df9b25fb88d1c8283133288d..610f71c4ca40b6aabc7d7a1e44d824872ac3e236 100644 (file)
@@ -10,6 +10,8 @@
 #ifndef __STDLIB_H
 #define __STDLIB_H __STDLIB_H
 
+// TODO: Documentation, C++ handling
+
 // ----------------------------------------------------------------------------
 // MACROS
 
@@ -39,10 +41,10 @@ typedef struct
     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
 
 // ----------------------------------------------------------------------------
@@ -56,21 +58,6 @@ long long abs( long long i );
 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
 
 // ----------------------------------------------------------------------------
@@ -119,14 +106,17 @@ void abort( void );
 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