1// -*- C++ -*-
2//===--------------------------- stdlib.h ---------------------------------===//
3//
4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
5// See https://llvm.org/LICENSE.txt for license information.
6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7//
8//===----------------------------------------------------------------------===//
9
10#if defined(__need_malloc_and_calloc) || defined(_LIBCPP_STDLIB_INCLUDE_NEXT)
11
12#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
13#pragma GCC system_header
14#endif
15
16#if defined(_LIBCPP_STDLIB_INCLUDE_NEXT)
17#undef _LIBCPP_STDLIB_INCLUDE_NEXT
18#endif
19
20#include_next <stdlib.h>
21
22#elif !defined(_LIBCPP_STDLIB_H)
23#define _LIBCPP_STDLIB_H
24
25/*
26    stdlib.h synopsis
27
28Macros:
29
30    EXIT_FAILURE
31    EXIT_SUCCESS
32    MB_CUR_MAX
33    NULL
34    RAND_MAX
35
36Types:
37
38    size_t
39    div_t
40    ldiv_t
41    lldiv_t                                                               // C99
42
43double    atof (const char* nptr);
44int       atoi (const char* nptr);
45long      atol (const char* nptr);
46long long atoll(const char* nptr);                                        // C99
47double             strtod  (const char* restrict nptr, char** restrict endptr);
48float              strtof  (const char* restrict nptr, char** restrict endptr); // C99
49long double        strtold (const char* restrict nptr, char** restrict endptr); // C99
50long               strtol  (const char* restrict nptr, char** restrict endptr, int base);
51long long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
52unsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
53unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
54int rand(void);
55void srand(unsigned int seed);
56void* calloc(size_t nmemb, size_t size);
57void free(void* ptr);
58void* malloc(size_t size);
59void* realloc(void* ptr, size_t size);
60void abort(void);
61int atexit(void (*func)(void));
62void exit(int status);
63void _Exit(int status);
64char* getenv(const char* name);
65int system(const char* string);
66void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
67              int (*compar)(const void *, const void *));
68void qsort(void* base, size_t nmemb, size_t size,
69           int (*compar)(const void *, const void *));
70int         abs(      int j);
71long        abs(     long j);
72long long   abs(long long j);                                             // C++0X
73long       labs(     long j);
74long long llabs(long long j);                                             // C99
75div_t     div(      int numer,       int denom);
76ldiv_t    div(     long numer,      long denom);
77lldiv_t   div(long long numer, long long denom);                          // C++0X
78ldiv_t   ldiv(     long numer,      long denom);
79lldiv_t lldiv(long long numer, long long denom);                          // C99
80int mblen(const char* s, size_t n);
81int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
82int wctomb(char* s, wchar_t wchar);
83size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
84size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
85int at_quick_exit(void (*func)(void))                                     // C++11
86void quick_exit(int status);                                              // C++11
87void *aligned_alloc(size_t alignment, size_t size);                       // C11
88
89*/
90
91#include <__config>
92
93#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
94#pragma GCC system_header
95#endif
96
97#include_next <stdlib.h>
98
99#ifdef __cplusplus
100#include <math.h>
101#endif  // __cplusplus
102
103#endif  // _LIBCPP_STDLIB_H
104