123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190 |
- // -*- C++ -*-
- //===--------------------------- cstdlib ----------------------------------===//
- //
- // The LLVM Compiler Infrastructure
- //
- // This file is dual licensed under the MIT and the University of Illinois Open
- // Source Licenses. See LICENSE.TXT for details.
- //
- //===----------------------------------------------------------------------===//
- #ifndef _LIBCPP_CSTDLIB
- #define _LIBCPP_CSTDLIB
- /*
- cstdlib synopsis
- Macros:
- EXIT_FAILURE
- EXIT_SUCCESS
- MB_CUR_MAX
- NULL
- RAND_MAX
- namespace std
- {
- Types:
- size_t
- div_t
- ldiv_t
- lldiv_t // C99
- double atof (const char* nptr);
- int atoi (const char* nptr);
- long atol (const char* nptr);
- long long atoll(const char* nptr); // C99
- double strtod (const char* restrict nptr, char** restrict endptr);
- float strtof (const char* restrict nptr, char** restrict endptr); // C99
- long double strtold (const char* restrict nptr, char** restrict endptr); // C99
- long strtol (const char* restrict nptr, char** restrict endptr, int base);
- long long strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
- unsigned long strtoul (const char* restrict nptr, char** restrict endptr, int base);
- unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
- int rand(void);
- void srand(unsigned int seed);
- void* calloc(size_t nmemb, size_t size);
- void free(void* ptr);
- void* malloc(size_t size);
- void* realloc(void* ptr, size_t size);
- void abort(void);
- int atexit(void (*func)(void));
- void exit(int status);
- void _Exit(int status);
- char* getenv(const char* name);
- int system(const char* string);
- void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
- int (*compar)(const void *, const void *));
- void qsort(void* base, size_t nmemb, size_t size,
- int (*compar)(const void *, const void *));
- int abs( int j);
- long abs( long j);
- long long abs(long long j); // C++0X
- long labs( long j);
- long long llabs(long long j); // C99
- div_t div( int numer, int denom);
- ldiv_t div( long numer, long denom);
- lldiv_t div(long long numer, long long denom); // C++0X
- ldiv_t ldiv( long numer, long denom);
- lldiv_t lldiv(long long numer, long long denom); // C99
- int mblen(const char* s, size_t n);
- int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
- int wctomb(char* s, wchar_t wchar);
- size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
- size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
- int at_quick_exit(void (*func)(void)) // C++11
- void quick_exit(int status); // C++11
- void *aligned_alloc(size_t alignment, size_t size); // C11
- } // std
- */
- #include <__config>
- #include <stdlib.h>
- #ifdef _LIBCPP_MSVCRT
- #ifndef _LIBCPP_SGX_CONFIG
- #include "support/win32/locale_win32.h"
- #endif _LIBCPP_SGX_CONFIG
- #endif // _LIBCPP_MSVCRT
- #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
- #pragma GCC system_header
- #endif
- _LIBCPP_BEGIN_NAMESPACE_STD
- using ::size_t;
- using ::div_t;
- using ::ldiv_t;
- #ifndef _LIBCPP_HAS_NO_LONG_LONG
- using ::lldiv_t;
- #endif // _LIBCPP_HAS_NO_LONG_LONG
- using ::atof;
- using ::atoi;
- using ::atol;
- #ifndef _LIBCPP_HAS_NO_LONG_LONG
- using ::atoll;
- #endif // _LIBCPP_HAS_NO_LONG_LONG
- using ::strtod;
- using ::strtof;
- using ::strtold;
- using ::strtol;
- #ifndef _LIBCPP_HAS_NO_LONG_LONG
- using ::strtoll;
- #endif // _LIBCPP_HAS_NO_LONG_LONG
- using ::strtoul;
- #ifndef _LIBCPP_HAS_NO_LONG_LONG
- using ::strtoull;
- #endif // _LIBCPP_HAS_NO_LONG_LONG
- #ifndef _LIBCPP_SGX_CONFIG
- using ::rand;
- using ::srand;
- #endif //_LIBCPP_SGX_CONFIG
- using ::calloc;
- using ::free;
- using ::malloc;
- using ::realloc;
- using ::abort;
- #ifndef _LIBCPP_SGX_CONFIG
- using ::atexit;
- using ::exit;
- using ::_Exit;
- using ::getenv;
- using ::system;
- #endif //_LIBCPP_SGX_CONFIG
- using ::bsearch;
- using ::qsort;
- #undef abs
- using ::abs;
- #undef labs
- using ::labs;
- #ifndef _LIBCPP_HAS_NO_LONG_LONG
- #undef llabs
- using ::llabs;
- #endif // _LIBCPP_HAS_NO_LONG_LONG
- #undef div
- using ::div;
- #undef ldiv
- using ::ldiv;
- #ifndef _LIBCPP_HAS_NO_LONG_LONG
- #undef lldiv
- using ::lldiv;
- #endif // _LIBCPP_HAS_NO_LONG_LONG
- #ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
- using ::mblen;
- using ::mbtowc;
- using ::wctomb;
- #endif
- using ::mbstowcs;
- using ::wcstombs;
- #ifdef _LIBCPP_HAS_QUICK_EXIT
- using ::at_quick_exit;
- using ::quick_exit;
- #endif
- #ifdef _LIBCPP_HAS_C11_FEATURES
- using ::aligned_alloc;
- #endif
- // MSVCRT already has the correct prototype in <stdlib.h> #ifdef __cplusplus
- #if (!defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX)) || defined(_LIBCPP_SGX_CONFIG)
- inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);}
- #ifndef _LIBCPP_HAS_NO_LONG_LONG
- inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);}
- #endif // _LIBCPP_HAS_NO_LONG_LONG
- inline _LIBCPP_INLINE_VISIBILITY ldiv_t div( long __x, long __y) _NOEXCEPT {return ldiv(__x, __y);}
- #ifndef _LIBCPP_HAS_NO_LONG_LONG
- inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);}
- #endif // _LIBCPP_HAS_NO_LONG_LONG
- #endif // _LIBCPP_MSVCRT
- _LIBCPP_END_NAMESPACE_STD
- #endif // _LIBCPP_CSTDLIB
|