cstdlib revision 243671
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); 77241900Sdimint at_quick_exit(void (*func)(void)) // C++11 78241900Sdimvoid quick_exit(int status); // C++11 79241900Sdimvoid *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; 100243671Stheraven#ifndef _LIBCPP_HAS_NO_LONG_LONG 101227825Stheravenusing ::lldiv_t; 102243671Stheraven#endif // _LIBCPP_HAS_NO_LONG_LONG 103227825Stheravenusing ::atof; 104227825Stheravenusing ::atoi; 105227825Stheravenusing ::atol; 106243671Stheraven#ifndef _LIBCPP_HAS_NO_LONG_LONG 107227825Stheravenusing ::atoll; 108243671Stheraven#endif // _LIBCPP_HAS_NO_LONG_LONG 109227825Stheravenusing ::strtod; 110227825Stheravenusing ::strtof; 111227825Stheravenusing ::strtold; 112227825Stheravenusing ::strtol; 113243671Stheraven#ifndef _LIBCPP_HAS_NO_LONG_LONG 114227825Stheravenusing ::strtoll; 115243671Stheraven#endif // _LIBCPP_HAS_NO_LONG_LONG 116227825Stheravenusing ::strtoul; 117243671Stheraven#ifndef _LIBCPP_HAS_NO_LONG_LONG 118227825Stheravenusing ::strtoull; 119243671Stheraven#endif // _LIBCPP_HAS_NO_LONG_LONG 120227825Stheravenusing ::rand; 121227825Stheravenusing ::srand; 122227825Stheravenusing ::calloc; 123227825Stheravenusing ::free; 124227825Stheravenusing ::malloc; 125227825Stheravenusing ::realloc; 126227825Stheravenusing ::abort; 127227825Stheravenusing ::atexit; 128227825Stheravenusing ::exit; 129227825Stheravenusing ::_Exit; 130227825Stheravenusing ::getenv; 131227825Stheravenusing ::system; 132227825Stheravenusing ::bsearch; 133227825Stheravenusing ::qsort; 134227825Stheravenusing ::abs; 135227825Stheravenusing ::labs; 136243671Stheraven#ifndef _LIBCPP_HAS_NO_LONG_LONG 137227825Stheravenusing ::llabs; 138243671Stheraven#endif // _LIBCPP_HAS_NO_LONG_LONG 139227825Stheravenusing ::div; 140227825Stheravenusing ::ldiv; 141243671Stheraven#ifndef _LIBCPP_HAS_NO_LONG_LONG 142227825Stheravenusing ::lldiv; 143243671Stheraven#endif // _LIBCPP_HAS_NO_LONG_LONG 144227825Stheravenusing ::mblen; 145227825Stheravenusing ::mbtowc; 146227825Stheravenusing ::wctomb; 147227825Stheravenusing ::mbstowcs; 148227825Stheravenusing ::wcstombs; 149232969Stheraven#ifdef _LIBCPP_HAS_QUICK_EXIT 150232969Stheravenusing ::at_quick_exit; 151232969Stheravenusing ::quick_exit; 152232969Stheraven#endif 153241900Sdim#ifdef _LIBCPP_HAS_C11_FEATURES 154241900Sdimusing ::aligned_alloc; 155241900Sdim#endif 156227825Stheraven 157232924Stheraven// MSVC already has the correct prototype in <stdlib.h.h> #ifdef __cplusplus 158232924Stheraven#if !defined(_MSC_VER) && !defined(__sun__) 159241900Sdiminline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);} 160243671Stheraven#ifndef _LIBCPP_HAS_NO_LONG_LONG 161241900Sdiminline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);} 162243671Stheraven#endif // _LIBCPP_HAS_NO_LONG_LONG 163227825Stheraven 164241900Sdiminline _LIBCPP_INLINE_VISIBILITY ldiv_t div( long __x, long __y) _NOEXCEPT {return ldiv(__x, __y);} 165243671Stheraven#ifndef _LIBCPP_HAS_NO_LONG_LONG 166241900Sdiminline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);} 167243671Stheraven#endif // _LIBCPP_HAS_NO_LONG_LONG 168227825Stheraven#endif // _MSC_VER 169227825Stheraven 170227825Stheraven_LIBCPP_END_NAMESPACE_STD 171227825Stheraven 172227825Stheraven#endif // _LIBCPP_CSTDLIB 173