williamr@2: /* williamr@2: * Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: * All rights reserved. williamr@2: * This component and the accompanying materials are made available williamr@4: * under the terms of "Eclipse Public License v1.0" williamr@2: * which accompanies this distribution, and is available williamr@4: * at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@2: * williamr@2: * Initial Contributors: williamr@2: * Nokia Corporation - initial contribution. williamr@2: * williamr@2: * Contributors: williamr@2: * williamr@2: * Description: williamr@2: * Definitions for common types, variables, and functions. williamr@2: * williamr@2: * williamr@2: */ williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@2: @file williamr@2: @publishedAll williamr@2: @released williamr@2: */ williamr@2: williamr@2: williamr@2: #ifndef _STDLIB_H_ williamr@2: #ifdef __cplusplus williamr@2: extern "C" { williamr@2: #endif williamr@2: #define _STDLIB_H_ williamr@2: williamr@2: #include "libc/_ansi.h" williamr@2: williamr@2: #define __need_size_t williamr@2: #define __need_wchar_t williamr@2: #include williamr@2: williamr@2: #include williamr@2: williamr@2: typedef struct williamr@2: { williamr@2: int quot; /* quotient */ williamr@2: int rem; /* remainder */ williamr@2: } div_t; williamr@2: williamr@2: #define labs abs williamr@2: #define ldiv div williamr@2: #define ldiv_t div_t williamr@2: williamr@2: #ifndef NULL williamr@2: #define NULL 0L williamr@2: #endif williamr@2: williamr@2: #define EXIT_FAILURE 1 williamr@2: #define EXIT_SUCCESS 0 williamr@2: #define RAND_MAX 0x7fffffff williamr@2: #define MB_CUR_MAX 3 williamr@2: williamr@2: /** williamr@2: Workaround a built-in prototype in MSVC 5.0 williamr@2: */ williamr@2: #define atexit _epoc32_atexit williamr@2: IMPORT_C int _epoc32_atexit (void (*_func)(void)); williamr@2: williamr@2: #ifdef EKA2 williamr@2: void abort (void); williamr@2: #else williamr@2: IMPORT_C void abort (void); williamr@2: #endif williamr@2: williamr@2: IMPORT_C int abs (int); williamr@2: IMPORT_C double atof (const char *_nptr) __SOFTFP; williamr@2: IMPORT_C int atoi (const char *_nptr); williamr@2: williamr@2: #define atol atoi williamr@2: IMPORT_C void* bsearch (const void * _key, williamr@2: const void * _base, williamr@2: size_t _nmemb, williamr@2: size_t _size, williamr@2: int (*_compar)(const void *, const void *)); williamr@2: IMPORT_C void* calloc (size_t _nmemb, size_t _size); williamr@2: IMPORT_C div_t div (int _numer, int _denom); williamr@2: IMPORT_C void exit (int _status) _ATTRIBUTE((noreturn)); williamr@2: IMPORT_C void free (void *); williamr@2: IMPORT_C char* getenv (const char *_string); williamr@2: IMPORT_C wchar_t* wgetenv (const wchar_t *_string); williamr@2: IMPORT_C void* malloc (size_t _size); williamr@2: williamr@2: IMPORT_C int mbtowc (wchar_t *pwc, const char *s, size_t n); williamr@2: IMPORT_C int wctomb (char *s, wchar_t wc); williamr@2: IMPORT_C int mbstowcs (wchar_t *pwc, const char *s, size_t n); williamr@2: IMPORT_C int wcstombs (char *s, const wchar_t *pwc, size_t n); williamr@2: IMPORT_C int mblen (const char * string, size_t size); williamr@2: williamr@2: IMPORT_C void qsort (void * _base, size_t _nmemb, size_t _size, int(*_compar)(const void *, const void *)); williamr@2: IMPORT_C int rand (void); williamr@2: IMPORT_C void* realloc (void * _r, size_t _size); williamr@2: IMPORT_C void srand (unsigned _seed); williamr@2: IMPORT_C double strtod (const char *_n, char **_end_PTR) __SOFTFP; williamr@2: IMPORT_C long strtol (const char *_n, char **_end_PTR, int _base); williamr@2: IMPORT_C unsigned long strtoul (const char *_n_PTR, char **_end_PTR, int _base); williamr@2: IMPORT_C int system (const char *_string); williamr@2: IMPORT_C int wsystem (const wchar_t *_string); williamr@2: williamr@2: /** williamr@2: not STRICT ANSI, but available anyway... williamr@2: */ williamr@2: IMPORT_C int setenv (const char *_string, const char *_value, int _overwrite); williamr@2: IMPORT_C void unsetenv (const char *_name); williamr@2: IMPORT_C int wsetenv (const wchar_t *_string, const wchar_t *_value, int _overwrite); williamr@2: IMPORT_C void wunsetenv (const wchar_t *_name); williamr@2: williamr@2: #ifndef _STRICT_ANSI williamr@2: float strtodf (const char *_n, char **_end_PTR); williamr@2: float atoff (const char *_nptr); williamr@2: williamr@2: void cfree (void *, void *); williamr@2: int putenv (const char *_string); williamr@2: williamr@2: char * gcvt (double,int,char *); williamr@2: char * gcvtf (float,int,char *); williamr@2: char * fcvt (double,int,int *,int *); williamr@2: char * fcvtf (float, int,int *,int *); williamr@2: char * ecvt (double, int,int *,int *); williamr@2: char * ecvtbuf (double, int, int*, int*, char *); williamr@2: char * fcvtbuf (double, int, int*, int*, char *); williamr@2: char * ecvtf (float, int,int *,int *); williamr@2: char * dtoa (double, int, int, int *, int*, char**); williamr@2: #endif /* ! _STRICT_ANSI */ williamr@2: williamr@2: /* FIX THIS: 4.10.7: Multibyte character functions are missing. */ williamr@2: williamr@2: #ifdef __cplusplus williamr@2: } williamr@2: #endif williamr@2: #endif /* _STDLIB_H_ */