]> pd.if.org Git - pdclib/blobdiff - includes/stdlib.h
Added qsort.
[pdclib] / includes / stdlib.h
index 2724dcfdb685c4d755e31e66a1a74cfc508f643c..252ab9213d585213d732f0c9cc39efdf53777e1d 100644 (file)
-/* ----------------------------------------------------------------------------
- * $Id$
- * ----------------------------------------------------------------------------
- * Public Domain C Library - http://pdclib.sourceforge.net
- * This code is Public Domain. Use, modify, and redistribute at will.
- * ----------------------------------------------------------------------------
- * General utilities
- * --------------------------------------------------------------------------*/
-
-#ifndef _STDLIB_H
-#define _STDLIB_H _STDLIB_H
-
-#ifndef _NULL
-#include "__intern.h"
-#endif /* _NULL */
-
-/* TODO: Documentation */
-
-/* ----------------------------------------------------------------------------
- * MACROS
- * --------------------------------------------------------------------------*/
-
-#define NULL _NULL
-
-#define EXIT_FAILURE /* TODO */
-#define EXIT_SUCCESS /* TODO */
-#define MB_CUR_MAX   /* TODO */
-#define RAND_MAX     /* TODO */
-
-/* ----------------------------------------------------------------------------
- * TYPEDEFS
- * --------------------------------------------------------------------------*/
-
-typedef struct
-{
-    int quotient;
-    int remainder;
-} div_t;
-
-typedef struct
-{
-    long quotient;
-    long remainder;
-} ldiv_t;
-
-typedef struct
-{   long long quotient;
-    long long remainder;
-} lldiv_t;
-
-#ifndef _SIZE_T
-#define _SIZE_T _SIZE_T
-typedef __size_t size_t
-#endif /* _SIZE_T */
-
-#ifndef _WCHAR_T
-#define _WCHAR_T _WCHAR_T
-typedef __wchar_t wchar_t
-#endif /* _WCHAR_T */
-
-/* ----------------------------------------------------------------------------
- * FUNCTIONS
- * --------------------------------------------------------------------------*/
-
-int abs( int i );
-long long llabs( long long i );
-long labs( long i );
+/* $Id$ */
 
-div_t div( int numer, int denom );
-lldiv_t lldiv( long long numer, long long denom );
-ldiv_t ldiv( long numer, long denom );
+/* Release $Name$ */
+
+/* General utilities <stdlib.h>
+
+   This file is part of the Public Domain C Library (PDCLib).
+   Permission is granted to use, modify, and / or redistribute at will.
+*/
+
+#ifndef _PDCLIB_STDLIB_H
+#define _PDCLIB_STDLIB_H _PDCLIB_STDLIB_H
+
+#ifndef _PDCLIB_INT_H
+#define _PDCLIB_INT_H _PDCLIB_INT_H
+#include <_PDCLIB_int.h>
+#endif
+
+typedef struct _PDCLIB_div_t     div_t;
+typedef struct _PDCLIB_ldiv_t   ldiv_t;
+typedef struct _PDCLIB_lldiv_t lldiv_t;
+
+#ifndef _PDCLIB_SIZE_T_DEFINED
+#define _PDCLIB_SIZE_T_DEFINED _PDCLIB_SIZE_T_DEFINED
+typedef _PDCLIB_size_t size_t;
+#endif
+
+#define NULL         _PDCLIB_NULL
+#define EXIT_SUCCESS _PDCLIB_SUCCESS;
+#define EXIT_FAILURE _PDCLIB_FAILURE;
+
+/* Numeric conversion functions */
+
+int atoi( const char * nptr );
+long int atol( const char * nptr );
+long long int atoll( const char * nptr );
 
-int rand( void );
+long int strtol( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base );
+long long int strtoll( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base );
+unsigned long int strtoul( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base );
+unsigned long long int strtoull( const char * _PDCLIB_restrict nptr, char * * _PDCLIB_restrict endptr, int base );
+
+/* Pseudo-random sequence generation functions */
+
+extern unsigned long int _PDCLIB_seed;
+
+#define RAND_MAX 32767
+
+int rand();
 void srand( unsigned int seed );
 
-double atof( const char * s );
-int atoi( const char * s );
-long atol( const char * s );
-long long atoll( const char * s);
+/* Memory management functions */
+
 
-double strtod( const char * restrict s, char * * restrict endptr );
-float strtof( const char * restrict s, char * * restrict endptr );
-long double strtold( const char * restrict s, char * * restrict endptr );
+/* Communication with the environment */
 
-long long strtoll( const char * restrict s, char * * restrict endptr, int base );
-unsigned long long strtoull( const char * restrict s, char * * restrict endptr, int base);
+void abort();
+void exit();
 
-long strtol( const char * restrict s, char * * restrict endptr, int base );
-unsigned long strtoul( const char * restrict s, char * * restrict endptr, int base);
+/* Searching and sorting */
+
+void * bsearch( const void * key, const void * base, size_t nmemb, size_t size, int (*compar)( const void *, const void * ) );
+void qsort( void * base, size_t nmemb, size_t size, int (*compar)( const void *, const void * ) );
+
+/* Integer arithmetic functions */
+
+int abs( int j );
+long int labs( long int j );
+long long int llabs( long long int j );
+
+div_t div( int numer, int denom );
+ldiv_t ldiv( long int numer, long int denom );
+lldiv_t lldiv( long long int numer, long long int denom );
 
-void * calloc( size_t nelem, size_t size );
-void free( void * ptr );
-void * malloc( size_t size );
-void * realloc( void * ptr, size_t size );
+/* Multibyte / wide character conversion functions */
 
-int mblen( const char * s, size_t n );
-size_t mbstowcs( wchar_t * restrict wcs, const char * restrict s, size_t n );
-int mbtowc( wchar_t * restrict pwc, const char * restrict s, size_t n );
-size_t wcstombs( char * restrict s, const wchar_t * restrict wcs, size_t n );
-int wctomb( char * s, wchar_t wchar );
+/* TODO: Macro MB_CUR_MAX */
 
-void _Exit( int status );
-void exit( int status );
-void abort( void );
-char * getenv( const char * name );
-int system( const char * s );
+/* Multibyte / wide string conversion functions */
 
-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) );
 
-#endif /* _STDLIB_H */
+#endif