13e519524SHoward Hinnant// -*- C++ -*-
2eb8650a7SLouis Dionne//===----------------------------------------------------------------------===//
33e519524SHoward Hinnant//
457b08b09SChandler Carruth// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
557b08b09SChandler Carruth// See https://llvm.org/LICENSE.txt for license information.
657b08b09SChandler Carruth// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
73e519524SHoward Hinnant//
83e519524SHoward Hinnant//===----------------------------------------------------------------------===//
93e519524SHoward Hinnant
103e519524SHoward Hinnant#ifndef _LIBCPP_CSTDLIB
113e519524SHoward Hinnant#define _LIBCPP_CSTDLIB
123e519524SHoward Hinnant
133e519524SHoward Hinnant/*
143e519524SHoward Hinnant    cstdlib synopsis
153e519524SHoward Hinnant
163e519524SHoward HinnantMacros:
173e519524SHoward Hinnant
183e519524SHoward Hinnant    EXIT_FAILURE
193e519524SHoward Hinnant    EXIT_SUCCESS
203e519524SHoward Hinnant    MB_CUR_MAX
213e519524SHoward Hinnant    NULL
223e519524SHoward Hinnant    RAND_MAX
233e519524SHoward Hinnant
243e519524SHoward Hinnantnamespace std
253e519524SHoward Hinnant{
263e519524SHoward Hinnant
273e519524SHoward HinnantTypes:
283e519524SHoward Hinnant
293e519524SHoward Hinnant    size_t
303e519524SHoward Hinnant    div_t
313e519524SHoward Hinnant    ldiv_t
323e519524SHoward Hinnant    lldiv_t                                                               // C99
333e519524SHoward Hinnant
343e519524SHoward Hinnantdouble    atof (const char* nptr);
353e519524SHoward Hinnantint       atoi (const char* nptr);
363e519524SHoward Hinnantlong      atol (const char* nptr);
373e519524SHoward Hinnantlong long atoll(const char* nptr);                                        // C99
383e519524SHoward Hinnantdouble             strtod  (const char* restrict nptr, char** restrict endptr);
393e519524SHoward Hinnantfloat              strtof  (const char* restrict nptr, char** restrict endptr); // C99
403e519524SHoward Hinnantlong double        strtold (const char* restrict nptr, char** restrict endptr); // C99
413e519524SHoward Hinnantlong               strtol  (const char* restrict nptr, char** restrict endptr, int base);
423e519524SHoward Hinnantlong long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
433e519524SHoward Hinnantunsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
443e519524SHoward Hinnantunsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
453e519524SHoward Hinnantint rand(void);
463e519524SHoward Hinnantvoid srand(unsigned int seed);
473e519524SHoward Hinnantvoid* calloc(size_t nmemb, size_t size);
483e519524SHoward Hinnantvoid free(void* ptr);
493e519524SHoward Hinnantvoid* malloc(size_t size);
503e519524SHoward Hinnantvoid* realloc(void* ptr, size_t size);
513e519524SHoward Hinnantvoid abort(void);
523e519524SHoward Hinnantint atexit(void (*func)(void));
533e519524SHoward Hinnantvoid exit(int status);
543e519524SHoward Hinnantvoid _Exit(int status);
553e519524SHoward Hinnantchar* getenv(const char* name);
563e519524SHoward Hinnantint system(const char* string);
573e519524SHoward Hinnantvoid* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
583e519524SHoward Hinnant              int (*compar)(const void *, const void *));
593e519524SHoward Hinnantvoid qsort(void* base, size_t nmemb, size_t size,
603e519524SHoward Hinnant           int (*compar)(const void *, const void *));
613e519524SHoward Hinnantint         abs(      int j);
623e519524SHoward Hinnantlong        abs(     long j);
633e519524SHoward Hinnantlong long   abs(long long j);                                             // C++0X
643e519524SHoward Hinnantlong       labs(     long j);
653e519524SHoward Hinnantlong long llabs(long long j);                                             // C99
663e519524SHoward Hinnantdiv_t     div(      int numer,       int denom);
673e519524SHoward Hinnantldiv_t    div(     long numer,      long denom);
683e519524SHoward Hinnantlldiv_t   div(long long numer, long long denom);                          // C++0X
693e519524SHoward Hinnantldiv_t   ldiv(     long numer,      long denom);
703e519524SHoward Hinnantlldiv_t lldiv(long long numer, long long denom);                          // C99
713e519524SHoward Hinnantint mblen(const char* s, size_t n);
723e519524SHoward Hinnantint mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
733e519524SHoward Hinnantint wctomb(char* s, wchar_t wchar);
743e519524SHoward Hinnantsize_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
753e519524SHoward Hinnantsize_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
767ba81603SHoward Hinnantint at_quick_exit(void (*func)(void))                                     // C++11
777ba81603SHoward Hinnantvoid quick_exit(int status);                                              // C++11
787ba81603SHoward Hinnantvoid *aligned_alloc(size_t alignment, size_t size);                       // C11
793e519524SHoward Hinnant
803e519524SHoward Hinnant}  // std
813e519524SHoward Hinnant
823e519524SHoward Hinnant*/
833e519524SHoward Hinnant
84*385cc25aSLouis Dionne#include <__assert> // all public C++ headers provide the assertion handler
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
923e519524SHoward Hinnant_LIBCPP_BEGIN_NAMESPACE_STD
933e519524SHoward Hinnant
94a9c9183cSLouis Dionneusing ::size_t _LIBCPP_USING_IF_EXISTS;
95a9c9183cSLouis Dionneusing ::div_t _LIBCPP_USING_IF_EXISTS;
96a9c9183cSLouis Dionneusing ::ldiv_t _LIBCPP_USING_IF_EXISTS;
97a9c9183cSLouis Dionneusing ::lldiv_t _LIBCPP_USING_IF_EXISTS;
98a9c9183cSLouis Dionneusing ::atof _LIBCPP_USING_IF_EXISTS;
99a9c9183cSLouis Dionneusing ::atoi _LIBCPP_USING_IF_EXISTS;
100a9c9183cSLouis Dionneusing ::atol _LIBCPP_USING_IF_EXISTS;
101a9c9183cSLouis Dionneusing ::atoll _LIBCPP_USING_IF_EXISTS;
102a9c9183cSLouis Dionneusing ::strtod _LIBCPP_USING_IF_EXISTS;
103a9c9183cSLouis Dionneusing ::strtof _LIBCPP_USING_IF_EXISTS;
104a9c9183cSLouis Dionneusing ::strtold _LIBCPP_USING_IF_EXISTS;
105a9c9183cSLouis Dionneusing ::strtol _LIBCPP_USING_IF_EXISTS;
106a9c9183cSLouis Dionneusing ::strtoll _LIBCPP_USING_IF_EXISTS;
107a9c9183cSLouis Dionneusing ::strtoul _LIBCPP_USING_IF_EXISTS;
108a9c9183cSLouis Dionneusing ::strtoull _LIBCPP_USING_IF_EXISTS;
109a9c9183cSLouis Dionneusing ::rand _LIBCPP_USING_IF_EXISTS;
110a9c9183cSLouis Dionneusing ::srand _LIBCPP_USING_IF_EXISTS;
111a9c9183cSLouis Dionneusing ::calloc _LIBCPP_USING_IF_EXISTS;
112a9c9183cSLouis Dionneusing ::free _LIBCPP_USING_IF_EXISTS;
113a9c9183cSLouis Dionneusing ::malloc _LIBCPP_USING_IF_EXISTS;
114a9c9183cSLouis Dionneusing ::realloc _LIBCPP_USING_IF_EXISTS;
115a9c9183cSLouis Dionneusing ::abort _LIBCPP_USING_IF_EXISTS;
116a9c9183cSLouis Dionneusing ::atexit _LIBCPP_USING_IF_EXISTS;
117a9c9183cSLouis Dionneusing ::exit _LIBCPP_USING_IF_EXISTS;
118a9c9183cSLouis Dionneusing ::_Exit _LIBCPP_USING_IF_EXISTS;
119a9c9183cSLouis Dionneusing ::getenv _LIBCPP_USING_IF_EXISTS;
120a9c9183cSLouis Dionneusing ::system _LIBCPP_USING_IF_EXISTS;
121a9c9183cSLouis Dionneusing ::bsearch _LIBCPP_USING_IF_EXISTS;
122a9c9183cSLouis Dionneusing ::qsort _LIBCPP_USING_IF_EXISTS;
123a9c9183cSLouis Dionneusing ::abs _LIBCPP_USING_IF_EXISTS;
124a9c9183cSLouis Dionneusing ::labs _LIBCPP_USING_IF_EXISTS;
125a9c9183cSLouis Dionneusing ::llabs _LIBCPP_USING_IF_EXISTS;
126a9c9183cSLouis Dionneusing ::div _LIBCPP_USING_IF_EXISTS;
127a9c9183cSLouis Dionneusing ::ldiv _LIBCPP_USING_IF_EXISTS;
128a9c9183cSLouis Dionneusing ::lldiv _LIBCPP_USING_IF_EXISTS;
129a9c9183cSLouis Dionneusing ::mblen _LIBCPP_USING_IF_EXISTS;
130a9c9183cSLouis Dionneusing ::mbtowc _LIBCPP_USING_IF_EXISTS;
131a9c9183cSLouis Dionneusing ::wctomb _LIBCPP_USING_IF_EXISTS;
132a9c9183cSLouis Dionneusing ::mbstowcs _LIBCPP_USING_IF_EXISTS;
133a9c9183cSLouis Dionneusing ::wcstombs _LIBCPP_USING_IF_EXISTS;
13421f73d58SLouis Dionne#if !defined(_LIBCPP_CXX03_LANG)
135a9c9183cSLouis Dionneusing ::at_quick_exit _LIBCPP_USING_IF_EXISTS;
136a9c9183cSLouis Dionneusing ::quick_exit _LIBCPP_USING_IF_EXISTS;
1375f13d66fSDavid Chisnall#endif
13821f73d58SLouis Dionne#if _LIBCPP_STD_VER > 14
139a9c9183cSLouis Dionneusing ::aligned_alloc _LIBCPP_USING_IF_EXISTS;
1407ba81603SHoward Hinnant#endif
1413e519524SHoward Hinnant
1423e519524SHoward Hinnant_LIBCPP_END_NAMESPACE_STD
1433e519524SHoward Hinnant
1443e519524SHoward Hinnant#endif // _LIBCPP_CSTDLIB
145