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);
773e519524SHoward Hinnant
783e519524SHoward Hinnant}  // std
793e519524SHoward Hinnant
803e519524SHoward Hinnant*/
813e519524SHoward Hinnant
823e519524SHoward Hinnant#include <__config>
833e519524SHoward Hinnant#include <stdlib.h>
84e4383379SHoward Hinnant#ifdef _MSC_VER
859563a09cSHoward Hinnant#include "support/win32/locale_win32.h"
86e4383379SHoward Hinnant#endif // _MSC_VER
873e519524SHoward Hinnant
88073458b1SHoward Hinnant#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
893e519524SHoward Hinnant#pragma GCC system_header
90073458b1SHoward Hinnant#endif
913e519524SHoward Hinnant
923e519524SHoward Hinnant_LIBCPP_BEGIN_NAMESPACE_STD
933e519524SHoward Hinnant
943e519524SHoward Hinnantusing ::size_t;
953e519524SHoward Hinnantusing ::div_t;
963e519524SHoward Hinnantusing ::ldiv_t;
973e519524SHoward Hinnantusing ::lldiv_t;
983e519524SHoward Hinnantusing ::atof;
993e519524SHoward Hinnantusing ::atoi;
1003e519524SHoward Hinnantusing ::atol;
1013e519524SHoward Hinnantusing ::atoll;
1023e519524SHoward Hinnantusing ::strtod;
1033e519524SHoward Hinnantusing ::strtof;
1043e519524SHoward Hinnantusing ::strtold;
1053e519524SHoward Hinnantusing ::strtol;
1063e519524SHoward Hinnantusing ::strtoll;
1073e519524SHoward Hinnantusing ::strtoul;
1083e519524SHoward Hinnantusing ::strtoull;
1093e519524SHoward Hinnantusing ::rand;
1103e519524SHoward Hinnantusing ::srand;
1113e519524SHoward Hinnantusing ::calloc;
1123e519524SHoward Hinnantusing ::free;
1133e519524SHoward Hinnantusing ::malloc;
1143e519524SHoward Hinnantusing ::realloc;
1153e519524SHoward Hinnantusing ::abort;
1163e519524SHoward Hinnantusing ::atexit;
1173e519524SHoward Hinnantusing ::exit;
1183e519524SHoward Hinnantusing ::_Exit;
1193e519524SHoward Hinnantusing ::getenv;
1203e519524SHoward Hinnantusing ::system;
1213e519524SHoward Hinnantusing ::bsearch;
1223e519524SHoward Hinnantusing ::qsort;
1233e519524SHoward Hinnantusing ::abs;
1243e519524SHoward Hinnantusing ::labs;
1253e519524SHoward Hinnantusing ::llabs;
1263e519524SHoward Hinnantusing ::div;
1273e519524SHoward Hinnantusing ::ldiv;
1283e519524SHoward Hinnantusing ::lldiv;
1293e519524SHoward Hinnantusing ::mblen;
1303e519524SHoward Hinnantusing ::mbtowc;
1313e519524SHoward Hinnantusing ::wctomb;
1323e519524SHoward Hinnantusing ::mbstowcs;
1333e519524SHoward Hinnantusing ::wcstombs;
134*5f13d66fSDavid Chisnall#ifdef _LIBCPP_HAS_QUICK_EXIT
135*5f13d66fSDavid Chisnallusing ::at_quick_exit;
136*5f13d66fSDavid Chisnallusing ::quick_exit;
137*5f13d66fSDavid Chisnall#endif
1383e519524SHoward Hinnant
13914c25b80SDavid Chisnall// MSVC already has the correct prototype in <stdlib.h.h> #ifdef __cplusplus
14014c25b80SDavid Chisnall#if !defined(_MSC_VER) && !defined(__sun__)
1413e519524SHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY long      abs(     long __x) {return  labs(__x);}
1423e519524SHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) {return llabs(__x);}
1433e519524SHoward Hinnant
1443e519524SHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY  ldiv_t div(     long __x,      long __y) {return  ldiv(__x, __y);}
1453e519524SHoward Hinnantinline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) {return lldiv(__x, __y);}
146e4383379SHoward Hinnant#endif // _MSC_VER
1473e519524SHoward Hinnant
1483e519524SHoward Hinnant_LIBCPP_END_NAMESPACE_STD
1493e519524SHoward Hinnant
1503e519524SHoward Hinnant#endif  // _LIBCPP_CSTDLIB
151