13e519524SHoward Hinnant// -*- C++ -*-
23e519524SHoward Hinnant//===--------------------------- cstdlib ----------------------------------===//
33e519524SHoward Hinnant//
45b08a8a4SHoward Hinnant//                     The LLVM Compiler Infrastructure
53e519524SHoward Hinnant//
6412dbebeSHoward Hinnant// This file is dual licensed under the MIT and the University of Illinois Open
7412dbebeSHoward Hinnant// Source Licenses. See LICENSE.TXT for details.
83e519524SHoward Hinnant//
93e519524SHoward Hinnant//===----------------------------------------------------------------------===//
103e519524SHoward Hinnant
113e519524SHoward Hinnant#ifndef _LIBCPP_CSTDLIB
123e519524SHoward Hinnant#define _LIBCPP_CSTDLIB
133e519524SHoward Hinnant
143e519524SHoward Hinnant/*
153e519524SHoward Hinnant    cstdlib synopsis
163e519524SHoward Hinnant
173e519524SHoward HinnantMacros:
183e519524SHoward Hinnant
193e519524SHoward Hinnant    EXIT_FAILURE
203e519524SHoward Hinnant    EXIT_SUCCESS
213e519524SHoward Hinnant    MB_CUR_MAX
223e519524SHoward Hinnant    NULL
233e519524SHoward Hinnant    RAND_MAX
243e519524SHoward Hinnant
253e519524SHoward Hinnantnamespace std
263e519524SHoward Hinnant{
273e519524SHoward Hinnant
283e519524SHoward HinnantTypes:
293e519524SHoward Hinnant
303e519524SHoward Hinnant    size_t
313e519524SHoward Hinnant    div_t
323e519524SHoward Hinnant    ldiv_t
333e519524SHoward Hinnant    lldiv_t                                                               // C99
343e519524SHoward Hinnant
353e519524SHoward Hinnantdouble    atof (const char* nptr);
363e519524SHoward Hinnantint       atoi (const char* nptr);
373e519524SHoward Hinnantlong      atol (const char* nptr);
383e519524SHoward Hinnantlong long atoll(const char* nptr);                                        // C99
393e519524SHoward Hinnantdouble             strtod  (const char* restrict nptr, char** restrict endptr);
403e519524SHoward Hinnantfloat              strtof  (const char* restrict nptr, char** restrict endptr); // C99
413e519524SHoward Hinnantlong double        strtold (const char* restrict nptr, char** restrict endptr); // C99
423e519524SHoward Hinnantlong               strtol  (const char* restrict nptr, char** restrict endptr, int base);
433e519524SHoward Hinnantlong long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
443e519524SHoward Hinnantunsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
453e519524SHoward Hinnantunsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
463e519524SHoward Hinnantint rand(void);
473e519524SHoward Hinnantvoid srand(unsigned int seed);
483e519524SHoward Hinnantvoid* calloc(size_t nmemb, size_t size);
493e519524SHoward Hinnantvoid free(void* ptr);
503e519524SHoward Hinnantvoid* malloc(size_t size);
513e519524SHoward Hinnantvoid* realloc(void* ptr, size_t size);
523e519524SHoward Hinnantvoid abort(void);
533e519524SHoward Hinnantint atexit(void (*func)(void));
543e519524SHoward Hinnantvoid exit(int status);
553e519524SHoward Hinnantvoid _Exit(int status);
563e519524SHoward Hinnantchar* getenv(const char* name);
573e519524SHoward Hinnantint system(const char* string);
583e519524SHoward Hinnantvoid* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
593e519524SHoward Hinnant              int (*compar)(const void *, const void *));
603e519524SHoward Hinnantvoid qsort(void* base, size_t nmemb, size_t size,
613e519524SHoward Hinnant           int (*compar)(const void *, const void *));
623e519524SHoward Hinnantint         abs(      int j);
633e519524SHoward Hinnantlong        abs(     long j);
643e519524SHoward Hinnantlong long   abs(long long j);                                             // C++0X
653e519524SHoward Hinnantlong       labs(     long j);
663e519524SHoward Hinnantlong long llabs(long long j);                                             // C99
673e519524SHoward Hinnantdiv_t     div(      int numer,       int denom);
683e519524SHoward Hinnantldiv_t    div(     long numer,      long denom);
693e519524SHoward Hinnantlldiv_t   div(long long numer, long long denom);                          // C++0X
703e519524SHoward Hinnantldiv_t   ldiv(     long numer,      long denom);
713e519524SHoward Hinnantlldiv_t lldiv(long long numer, long long denom);                          // C99
723e519524SHoward Hinnantint mblen(const char* s, size_t n);
733e519524SHoward Hinnantint mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
743e519524SHoward Hinnantint wctomb(char* s, wchar_t wchar);
753e519524SHoward Hinnantsize_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
763e519524SHoward Hinnantsize_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
777ba81603SHoward Hinnantint at_quick_exit(void (*func)(void))                                     // C++11
787ba81603SHoward Hinnantvoid quick_exit(int status);                                              // C++11
797ba81603SHoward Hinnantvoid *aligned_alloc(size_t alignment, size_t size);                       // C11
803e519524SHoward Hinnant
813e519524SHoward Hinnant}  // std
823e519524SHoward Hinnant
833e519524SHoward Hinnant*/
843e519524SHoward Hinnant
853e519524SHoward Hinnant#include <__config>
863e519524SHoward Hinnant#include <stdlib.h>
873e519524SHoward Hinnant
88073458b1SHoward Hinnant#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
893e519524SHoward Hinnant#pragma GCC system_header
90073458b1SHoward Hinnant#endif
913e519524SHoward Hinnant
92f6ac5650SEric Fiselier#ifdef __GNUC__
93f6ac5650SEric Fiselier#define _LIBCPP_UNREACHABLE() __builtin_unreachable()
94f6ac5650SEric Fiselier#else
95f6ac5650SEric Fiselier#define _LIBCPP_UNREACHABLE() _VSTD::abort()
96f6ac5650SEric Fiselier#endif
97f6ac5650SEric Fiselier
983e519524SHoward Hinnant_LIBCPP_BEGIN_NAMESPACE_STD
993e519524SHoward Hinnant
1003e519524SHoward Hinnantusing ::size_t;
1013e519524SHoward Hinnantusing ::div_t;
1023e519524SHoward Hinnantusing ::ldiv_t;
103f8b24cf5SHoward Hinnant#ifndef _LIBCPP_HAS_NO_LONG_LONG
1043e519524SHoward Hinnantusing ::lldiv_t;
105f8b24cf5SHoward Hinnant#endif // _LIBCPP_HAS_NO_LONG_LONG
1063e519524SHoward Hinnantusing ::atof;
1073e519524SHoward Hinnantusing ::atoi;
1083e519524SHoward Hinnantusing ::atol;
109f8b24cf5SHoward Hinnant#ifndef _LIBCPP_HAS_NO_LONG_LONG
1103e519524SHoward Hinnantusing ::atoll;
111f8b24cf5SHoward Hinnant#endif // _LIBCPP_HAS_NO_LONG_LONG
1123e519524SHoward Hinnantusing ::strtod;
1133e519524SHoward Hinnantusing ::strtof;
1143e519524SHoward Hinnantusing ::strtold;
1153e519524SHoward Hinnantusing ::strtol;
116f8b24cf5SHoward Hinnant#ifndef _LIBCPP_HAS_NO_LONG_LONG
1173e519524SHoward Hinnantusing ::strtoll;
118f8b24cf5SHoward Hinnant#endif // _LIBCPP_HAS_NO_LONG_LONG
1193e519524SHoward Hinnantusing ::strtoul;
120f8b24cf5SHoward Hinnant#ifndef _LIBCPP_HAS_NO_LONG_LONG
1213e519524SHoward Hinnantusing ::strtoull;
122f8b24cf5SHoward Hinnant#endif // _LIBCPP_HAS_NO_LONG_LONG
1233e519524SHoward Hinnantusing ::rand;
1243e519524SHoward Hinnantusing ::srand;
1253e519524SHoward Hinnantusing ::calloc;
1263e519524SHoward Hinnantusing ::free;
1273e519524SHoward Hinnantusing ::malloc;
1283e519524SHoward Hinnantusing ::realloc;
1293e519524SHoward Hinnantusing ::abort;
1303e519524SHoward Hinnantusing ::atexit;
1313e519524SHoward Hinnantusing ::exit;
1323e519524SHoward Hinnantusing ::_Exit;
133*5dc5a8e5SShoaib Meenai#ifndef _LIBCPP_WINDOWS_STORE_APP
1343e519524SHoward Hinnantusing ::getenv;
1353e519524SHoward Hinnantusing ::system;
136*5dc5a8e5SShoaib Meenai#endif
1373e519524SHoward Hinnantusing ::bsearch;
1383e519524SHoward Hinnantusing ::qsort;
1393e519524SHoward Hinnantusing ::abs;
1403e519524SHoward Hinnantusing ::labs;
141f8b24cf5SHoward Hinnant#ifndef _LIBCPP_HAS_NO_LONG_LONG
1423e519524SHoward Hinnantusing ::llabs;
143f8b24cf5SHoward Hinnant#endif // _LIBCPP_HAS_NO_LONG_LONG
1443e519524SHoward Hinnantusing ::div;
1453e519524SHoward Hinnantusing ::ldiv;
146f8b24cf5SHoward Hinnant#ifndef _LIBCPP_HAS_NO_LONG_LONG
1473e519524SHoward Hinnantusing ::lldiv;
148f8b24cf5SHoward Hinnant#endif // _LIBCPP_HAS_NO_LONG_LONG
1493e519524SHoward Hinnantusing ::mblen;
1503e519524SHoward Hinnantusing ::mbtowc;
1513e519524SHoward Hinnantusing ::wctomb;
1523e519524SHoward Hinnantusing ::mbstowcs;
1533e519524SHoward Hinnantusing ::wcstombs;
1545f13d66fSDavid Chisnall#ifdef _LIBCPP_HAS_QUICK_EXIT
1555f13d66fSDavid Chisnallusing ::at_quick_exit;
1565f13d66fSDavid Chisnallusing ::quick_exit;
1575f13d66fSDavid Chisnall#endif
1587ba81603SHoward Hinnant#ifdef _LIBCPP_HAS_C11_FEATURES
1597ba81603SHoward Hinnantusing ::aligned_alloc;
1607ba81603SHoward Hinnant#endif
1613e519524SHoward Hinnant
1623e519524SHoward Hinnant_LIBCPP_END_NAMESPACE_STD
1633e519524SHoward Hinnant
1643e519524SHoward Hinnant#endif  // _LIBCPP_CSTDLIB
165