cstdlib revision 241900
1227825Stheraven// -*- C++ -*- 2227825Stheraven//===--------------------------- cstdlib ----------------------------------===// 3227825Stheraven// 4227825Stheraven// The LLVM Compiler Infrastructure 5227825Stheraven// 6227825Stheraven// This file is dual licensed under the MIT and the University of Illinois Open 7227825Stheraven// Source Licenses. See LICENSE.TXT for details. 8227825Stheraven// 9227825Stheraven//===----------------------------------------------------------------------===// 10227825Stheraven 11227825Stheraven#ifndef _LIBCPP_CSTDLIB 12227825Stheraven#define _LIBCPP_CSTDLIB 13227825Stheraven 14227825Stheraven/* 15227825Stheraven cstdlib synopsis 16227825Stheraven 17227825StheravenMacros: 18227825Stheraven 19227825Stheraven EXIT_FAILURE 20227825Stheraven EXIT_SUCCESS 21227825Stheraven MB_CUR_MAX 22227825Stheraven NULL 23227825Stheraven RAND_MAX 24227825Stheraven 25227825Stheravennamespace std 26227825Stheraven{ 27227825Stheraven 28227825StheravenTypes: 29227825Stheraven 30227825Stheraven size_t 31227825Stheraven div_t 32227825Stheraven ldiv_t 33227825Stheraven lldiv_t // C99 34227825Stheraven 35227825Stheravendouble atof (const char* nptr); 36227825Stheravenint atoi (const char* nptr); 37227825Stheravenlong atol (const char* nptr); 38227825Stheravenlong long atoll(const char* nptr); // C99 39227825Stheravendouble strtod (const char* restrict nptr, char** restrict endptr); 40227825Stheravenfloat strtof (const char* restrict nptr, char** restrict endptr); // C99 41227825Stheravenlong double strtold (const char* restrict nptr, char** restrict endptr); // C99 42227825Stheravenlong strtol (const char* restrict nptr, char** restrict endptr, int base); 43227825Stheravenlong long strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99 44227825Stheravenunsigned long strtoul (const char* restrict nptr, char** restrict endptr, int base); 45227825Stheravenunsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99 46227825Stheravenint rand(void); 47227825Stheravenvoid srand(unsigned int seed); 48227825Stheravenvoid* calloc(size_t nmemb, size_t size); 49227825Stheravenvoid free(void* ptr); 50227825Stheravenvoid* malloc(size_t size); 51227825Stheravenvoid* realloc(void* ptr, size_t size); 52227825Stheravenvoid abort(void); 53227825Stheravenint atexit(void (*func)(void)); 54227825Stheravenvoid exit(int status); 55227825Stheravenvoid _Exit(int status); 56227825Stheravenchar* getenv(const char* name); 57227825Stheravenint system(const char* string); 58227825Stheravenvoid* bsearch(const void* key, const void* base, size_t nmemb, size_t size, 59227825Stheraven int (*compar)(const void *, const void *)); 60227825Stheravenvoid qsort(void* base, size_t nmemb, size_t size, 61227825Stheraven int (*compar)(const void *, const void *)); 62227825Stheravenint abs( int j); 63227825Stheravenlong abs( long j); 64227825Stheravenlong long abs(long long j); // C++0X 65227825Stheravenlong labs( long j); 66227825Stheravenlong long llabs(long long j); // C99 67227825Stheravendiv_t div( int numer, int denom); 68227825Stheravenldiv_t div( long numer, long denom); 69227825Stheravenlldiv_t div(long long numer, long long denom); // C++0X 70227825Stheravenldiv_t ldiv( long numer, long denom); 71227825Stheravenlldiv_t lldiv(long long numer, long long denom); // C99 72227825Stheravenint mblen(const char* s, size_t n); 73227825Stheravenint mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n); 74227825Stheravenint wctomb(char* s, wchar_t wchar); 75227825Stheravensize_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n); 76227825Stheravensize_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n); 77227825Stheravenint at_quick_exit(void (*func)(void)) // C++11 78227825Stheravenvoid quick_exit(int status); // C++11 79227825Stheravenvoid *aligned_alloc(size_t alignment, size_t size); // C11 80227825Stheraven 81227825Stheraven} // std 82227825Stheraven 83227825Stheraven*/ 84227825Stheraven 85227825Stheraven#include <__config> 86227825Stheraven#include <stdlib.h> 87227825Stheraven#ifdef _MSC_VER 88227825Stheraven#include "support/win32/locale_win32.h" 89227825Stheraven#endif // _MSC_VER 90227825Stheraven 91227825Stheraven#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 92227825Stheraven#pragma GCC system_header 93227825Stheraven#endif 94227825Stheraven 95227825Stheraven_LIBCPP_BEGIN_NAMESPACE_STD 96227825Stheraven 97227825Stheravenusing ::size_t; 98227825Stheravenusing ::div_t; 99227825Stheravenusing ::ldiv_t; 100227825Stheravenusing ::lldiv_t; 101227825Stheravenusing ::atof; 102227825Stheravenusing ::atoi; 103227825Stheravenusing ::atol; 104227825Stheravenusing ::atoll; 105227825Stheravenusing ::strtod; 106227825Stheravenusing ::strtof; 107227825Stheravenusing ::strtold; 108227825Stheravenusing ::strtol; 109227825Stheravenusing ::strtoll; 110227825Stheravenusing ::strtoul; 111227825Stheravenusing ::strtoull; 112227825Stheravenusing ::rand; 113227825Stheravenusing ::srand; 114227825Stheravenusing ::calloc; 115227825Stheravenusing ::free; 116227825Stheravenusing ::malloc; 117227825Stheravenusing ::realloc; 118227825Stheravenusing ::abort; 119227825Stheravenusing ::atexit; 120232924Stheravenusing ::exit; 121232924Stheravenusing ::_Exit; 122227825Stheravenusing ::getenv; 123227825Stheravenusing ::system; 124227825Stheravenusing ::bsearch; 125227825Stheravenusing ::qsort; 126227825Stheravenusing ::abs; 127227825Stheravenusing ::labs; 128227825Stheravenusing ::llabs; 129232924Stheravenusing ::div; 130232924Stheravenusing ::ldiv; 131232924Stheravenusing ::lldiv; 132232924Stheravenusing ::mblen; 133241900Sdimusing ::mbtowc; 134232924Stheravenusing ::wctomb; 135241900Sdimusing ::mbstowcs; 136241900Sdimusing ::wcstombs; 137241900Sdim#ifdef _LIBCPP_HAS_QUICK_EXIT 138232924Stheravenusing ::at_quick_exit; 139232924Stheravenusing ::quick_exit; 140232924Stheraven#endif 141232924Stheraven#ifdef _LIBCPP_HAS_C11_FEATURES 142232924Stheravenusing ::aligned_alloc; 143232924Stheraven#endif 144232924Stheraven 145232924Stheraven// MSVC already has the correct prototype in <stdlib.h.h> #ifdef __cplusplus 146232924Stheraven#if !defined(_MSC_VER) && !defined(__sun__) 147232924Stheraveninline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);} 148232924Stheraveninline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);} 149232924Stheraven 150232924Stheraveninline _LIBCPP_INLINE_VISIBILITY ldiv_t div( long __x, long __y) _NOEXCEPT {return ldiv(__x, __y);} 151232924Stheraveninline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);} 152232924Stheraven#endif // _MSC_VER 153232924Stheraven 154232924Stheraven_LIBCPP_END_NAMESPACE_STD 155232924Stheraven 156232924Stheraven#endif // _LIBCPP_CSTDLIB 157232924Stheraven