1e78f53d1SNikolas Klauser// -*- C++ -*- 2e78f53d1SNikolas Klauser//===----------------------------------------------------------------------===// 3e78f53d1SNikolas Klauser// 4e78f53d1SNikolas Klauser// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 5e78f53d1SNikolas Klauser// See https://llvm.org/LICENSE.txt for license information. 6e78f53d1SNikolas Klauser// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 7e78f53d1SNikolas Klauser// 8e78f53d1SNikolas Klauser//===----------------------------------------------------------------------===// 9e78f53d1SNikolas Klauser 10*ce777190SNikolas Klauser#ifndef _LIBCPP___CXX03_CSTDLIB 11*ce777190SNikolas Klauser#define _LIBCPP___CXX03_CSTDLIB 12e78f53d1SNikolas Klauser 13e78f53d1SNikolas Klauser/* 14e78f53d1SNikolas Klauser cstdlib synopsis 15e78f53d1SNikolas Klauser 16e78f53d1SNikolas KlauserMacros: 17e78f53d1SNikolas Klauser 18e78f53d1SNikolas Klauser EXIT_FAILURE 19e78f53d1SNikolas Klauser EXIT_SUCCESS 20e78f53d1SNikolas Klauser MB_CUR_MAX 21e78f53d1SNikolas Klauser NULL 22e78f53d1SNikolas Klauser RAND_MAX 23e78f53d1SNikolas Klauser 24e78f53d1SNikolas Klausernamespace std 25e78f53d1SNikolas Klauser{ 26e78f53d1SNikolas Klauser 27e78f53d1SNikolas KlauserTypes: 28e78f53d1SNikolas Klauser 29e78f53d1SNikolas Klauser size_t 30e78f53d1SNikolas Klauser div_t 31e78f53d1SNikolas Klauser ldiv_t 32e78f53d1SNikolas Klauser lldiv_t // C99 33e78f53d1SNikolas Klauser 34e78f53d1SNikolas Klauserdouble atof (const char* nptr); 35e78f53d1SNikolas Klauserint atoi (const char* nptr); 36e78f53d1SNikolas Klauserlong atol (const char* nptr); 37e78f53d1SNikolas Klauserlong long atoll(const char* nptr); // C99 38e78f53d1SNikolas Klauserdouble strtod (const char* restrict nptr, char** restrict endptr); 39e78f53d1SNikolas Klauserfloat strtof (const char* restrict nptr, char** restrict endptr); // C99 40e78f53d1SNikolas Klauserlong double strtold (const char* restrict nptr, char** restrict endptr); // C99 41e78f53d1SNikolas Klauserlong strtol (const char* restrict nptr, char** restrict endptr, int base); 42e78f53d1SNikolas Klauserlong long strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99 43e78f53d1SNikolas Klauserunsigned long strtoul (const char* restrict nptr, char** restrict endptr, int base); 44e78f53d1SNikolas Klauserunsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99 45e78f53d1SNikolas Klauserint rand(void); 46e78f53d1SNikolas Klauservoid srand(unsigned int seed); 47e78f53d1SNikolas Klauservoid* calloc(size_t nmemb, size_t size); 48e78f53d1SNikolas Klauservoid free(void* ptr); 49e78f53d1SNikolas Klauservoid* malloc(size_t size); 50e78f53d1SNikolas Klauservoid* realloc(void* ptr, size_t size); 51e78f53d1SNikolas Klauservoid abort(void); 52e78f53d1SNikolas Klauserint atexit(void (*func)(void)); 53e78f53d1SNikolas Klauservoid exit(int status); 54e78f53d1SNikolas Klauservoid _Exit(int status); 55e78f53d1SNikolas Klauserchar* getenv(const char* name); 56e78f53d1SNikolas Klauserint system(const char* string); 57e78f53d1SNikolas Klauservoid* bsearch(const void* key, const void* base, size_t nmemb, size_t size, 58e78f53d1SNikolas Klauser int (*compar)(const void *, const void *)); 59e78f53d1SNikolas Klauservoid qsort(void* base, size_t nmemb, size_t size, 60e78f53d1SNikolas Klauser int (*compar)(const void *, const void *)); 61e78f53d1SNikolas Klauserint abs( int j); 62e78f53d1SNikolas Klauserlong abs( long j); 63e78f53d1SNikolas Klauserlong long abs(long long j); // C++0X 64e78f53d1SNikolas Klauserlong labs( long j); 65e78f53d1SNikolas Klauserlong long llabs(long long j); // C99 66e78f53d1SNikolas Klauserdiv_t div( int numer, int denom); 67e78f53d1SNikolas Klauserldiv_t div( long numer, long denom); 68e78f53d1SNikolas Klauserlldiv_t div(long long numer, long long denom); // C++0X 69e78f53d1SNikolas Klauserldiv_t ldiv( long numer, long denom); 70e78f53d1SNikolas Klauserlldiv_t lldiv(long long numer, long long denom); // C99 71e78f53d1SNikolas Klauserint mblen(const char* s, size_t n); 72e78f53d1SNikolas Klauserint mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n); 73e78f53d1SNikolas Klauserint wctomb(char* s, wchar_t wchar); 74e78f53d1SNikolas Klausersize_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n); 75e78f53d1SNikolas Klausersize_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n); 76e78f53d1SNikolas Klauserint at_quick_exit(void (*func)(void)) // C++11 77e78f53d1SNikolas Klauservoid quick_exit(int status); // C++11 78e78f53d1SNikolas Klauservoid *aligned_alloc(size_t alignment, size_t size); // C11 79e78f53d1SNikolas Klauser 80e78f53d1SNikolas Klauser} // std 81e78f53d1SNikolas Klauser 82e78f53d1SNikolas Klauser*/ 83e78f53d1SNikolas Klauser 8473fbae83SNikolas Klauser#include <__cxx03/__config> 85e78f53d1SNikolas Klauser 8673fbae83SNikolas Klauser#include <__cxx03/stdlib.h> 87e78f53d1SNikolas Klauser 88*ce777190SNikolas Klauser#ifndef _LIBCPP___CXX03_STDLIB_H 89e78f53d1SNikolas Klauser# error <cstdlib> tried including <stdlib.h> but didn't find libc++'s <stdlib.h> header. \ 90e78f53d1SNikolas Klauser This usually means that your header search paths are not configured properly. \ 91e78f53d1SNikolas Klauser The header search paths should contain the C++ Standard Library headers before \ 92e78f53d1SNikolas Klauser any C Standard Library, and you are probably using compiler flags that make that \ 93e78f53d1SNikolas Klauser not be the case. 94e78f53d1SNikolas Klauser#endif 95e78f53d1SNikolas Klauser 96e78f53d1SNikolas Klauser#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) 97e78f53d1SNikolas Klauser# pragma GCC system_header 98e78f53d1SNikolas Klauser#endif 99e78f53d1SNikolas Klauser 100e78f53d1SNikolas Klauser_LIBCPP_BEGIN_NAMESPACE_STD 101e78f53d1SNikolas Klauser 102e78f53d1SNikolas Klauserusing ::size_t _LIBCPP_USING_IF_EXISTS; 103e78f53d1SNikolas Klauserusing ::div_t _LIBCPP_USING_IF_EXISTS; 104e78f53d1SNikolas Klauserusing ::ldiv_t _LIBCPP_USING_IF_EXISTS; 105e78f53d1SNikolas Klauserusing ::lldiv_t _LIBCPP_USING_IF_EXISTS; 106e78f53d1SNikolas Klauserusing ::atof _LIBCPP_USING_IF_EXISTS; 107e78f53d1SNikolas Klauserusing ::atoi _LIBCPP_USING_IF_EXISTS; 108e78f53d1SNikolas Klauserusing ::atol _LIBCPP_USING_IF_EXISTS; 109e78f53d1SNikolas Klauserusing ::atoll _LIBCPP_USING_IF_EXISTS; 110e78f53d1SNikolas Klauserusing ::strtod _LIBCPP_USING_IF_EXISTS; 111e78f53d1SNikolas Klauserusing ::strtof _LIBCPP_USING_IF_EXISTS; 112e78f53d1SNikolas Klauserusing ::strtold _LIBCPP_USING_IF_EXISTS; 113e78f53d1SNikolas Klauserusing ::strtol _LIBCPP_USING_IF_EXISTS; 114e78f53d1SNikolas Klauserusing ::strtoll _LIBCPP_USING_IF_EXISTS; 115e78f53d1SNikolas Klauserusing ::strtoul _LIBCPP_USING_IF_EXISTS; 116e78f53d1SNikolas Klauserusing ::strtoull _LIBCPP_USING_IF_EXISTS; 117e78f53d1SNikolas Klauserusing ::rand _LIBCPP_USING_IF_EXISTS; 118e78f53d1SNikolas Klauserusing ::srand _LIBCPP_USING_IF_EXISTS; 119e78f53d1SNikolas Klauserusing ::calloc _LIBCPP_USING_IF_EXISTS; 120e78f53d1SNikolas Klauserusing ::free _LIBCPP_USING_IF_EXISTS; 121e78f53d1SNikolas Klauserusing ::malloc _LIBCPP_USING_IF_EXISTS; 122e78f53d1SNikolas Klauserusing ::realloc _LIBCPP_USING_IF_EXISTS; 123e78f53d1SNikolas Klauserusing ::abort _LIBCPP_USING_IF_EXISTS; 124e78f53d1SNikolas Klauserusing ::atexit _LIBCPP_USING_IF_EXISTS; 125e78f53d1SNikolas Klauserusing ::exit _LIBCPP_USING_IF_EXISTS; 126e78f53d1SNikolas Klauserusing ::_Exit _LIBCPP_USING_IF_EXISTS; 127e78f53d1SNikolas Klauserusing ::getenv _LIBCPP_USING_IF_EXISTS; 128e78f53d1SNikolas Klauserusing ::system _LIBCPP_USING_IF_EXISTS; 129e78f53d1SNikolas Klauserusing ::bsearch _LIBCPP_USING_IF_EXISTS; 130e78f53d1SNikolas Klauserusing ::qsort _LIBCPP_USING_IF_EXISTS; 131e78f53d1SNikolas Klauserusing ::abs _LIBCPP_USING_IF_EXISTS; 132e78f53d1SNikolas Klauserusing ::labs _LIBCPP_USING_IF_EXISTS; 133e78f53d1SNikolas Klauserusing ::llabs _LIBCPP_USING_IF_EXISTS; 134e78f53d1SNikolas Klauserusing ::div _LIBCPP_USING_IF_EXISTS; 135e78f53d1SNikolas Klauserusing ::ldiv _LIBCPP_USING_IF_EXISTS; 136e78f53d1SNikolas Klauserusing ::lldiv _LIBCPP_USING_IF_EXISTS; 137e78f53d1SNikolas Klauserusing ::mblen _LIBCPP_USING_IF_EXISTS; 138e78f53d1SNikolas Klauser#ifndef _LIBCPP_HAS_NO_WIDE_CHARACTERS 139e78f53d1SNikolas Klauserusing ::mbtowc _LIBCPP_USING_IF_EXISTS; 140e78f53d1SNikolas Klauserusing ::wctomb _LIBCPP_USING_IF_EXISTS; 141e78f53d1SNikolas Klauserusing ::mbstowcs _LIBCPP_USING_IF_EXISTS; 142e78f53d1SNikolas Klauserusing ::wcstombs _LIBCPP_USING_IF_EXISTS; 143e78f53d1SNikolas Klauser#endif 144e78f53d1SNikolas Klauser#if !defined(_LIBCPP_CXX03_LANG) 145e78f53d1SNikolas Klauserusing ::at_quick_exit _LIBCPP_USING_IF_EXISTS; 146e78f53d1SNikolas Klauserusing ::quick_exit _LIBCPP_USING_IF_EXISTS; 147e78f53d1SNikolas Klauser#endif 148e78f53d1SNikolas Klauser#if _LIBCPP_STD_VER >= 17 149e78f53d1SNikolas Klauserusing ::aligned_alloc _LIBCPP_USING_IF_EXISTS; 150e78f53d1SNikolas Klauser#endif 151e78f53d1SNikolas Klauser 152e78f53d1SNikolas Klauser_LIBCPP_END_NAMESPACE_STD 153e78f53d1SNikolas Klauser 154*ce777190SNikolas Klauser#endif // _LIBCPP___CXX03_CSTDLIB 155