Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / c++ / cstdlib @ 13

History | View | Annotate | Download (5.36 KB)

1 13 up20180614
// -*- C++ -*-
2
//===--------------------------- cstdlib ----------------------------------===//
3
//
4
//                     The LLVM Compiler Infrastructure
5
//
6
// This file is dual licensed under the MIT and the University of Illinois Open
7
// Source Licenses. See LICENSE.TXT for details.
8
//
9
//===----------------------------------------------------------------------===//
10
11
#ifndef _LIBCPP_CSTDLIB
12
#define _LIBCPP_CSTDLIB
13
14
/*
15
    cstdlib synopsis
16
17
Macros:
18
19
    EXIT_FAILURE
20
    EXIT_SUCCESS
21
    MB_CUR_MAX
22
    NULL
23
    RAND_MAX
24
25
namespace std
26
{
27
28
Types:
29
30
    size_t
31
    div_t
32
    ldiv_t
33
    lldiv_t                                                               // C99
34
35
double    atof (const char* nptr);
36
int       atoi (const char* nptr);
37
long      atol (const char* nptr);
38
long long atoll(const char* nptr);                                        // C99
39
double             strtod  (const char* restrict nptr, char** restrict endptr);
40
float              strtof  (const char* restrict nptr, char** restrict endptr); // C99
41
long double        strtold (const char* restrict nptr, char** restrict endptr); // C99
42
long               strtol  (const char* restrict nptr, char** restrict endptr, int base);
43
long long          strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99
44
unsigned long      strtoul (const char* restrict nptr, char** restrict endptr, int base);
45
unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99
46
int rand(void);
47
void srand(unsigned int seed);
48
void* calloc(size_t nmemb, size_t size);
49
void free(void* ptr);
50
void* malloc(size_t size);
51
void* realloc(void* ptr, size_t size);
52
void abort(void);
53
int atexit(void (*func)(void));
54
void exit(int status);
55
void _Exit(int status);
56
char* getenv(const char* name);
57
int system(const char* string);
58
void* bsearch(const void* key, const void* base, size_t nmemb, size_t size,
59
              int (*compar)(const void *, const void *));
60
void qsort(void* base, size_t nmemb, size_t size,
61
           int (*compar)(const void *, const void *));
62
int         abs(      int j);
63
long        abs(     long j);
64
long long   abs(long long j);                                             // C++0X
65
long       labs(     long j);
66
long long llabs(long long j);                                             // C99
67
div_t     div(      int numer,       int denom);
68
ldiv_t    div(     long numer,      long denom);
69
lldiv_t   div(long long numer, long long denom);                          // C++0X
70
ldiv_t   ldiv(     long numer,      long denom);
71
lldiv_t lldiv(long long numer, long long denom);                          // C99
72
int mblen(const char* s, size_t n);
73
int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n);
74
int wctomb(char* s, wchar_t wchar);
75
size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n);
76
size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n);
77
int at_quick_exit(void (*func)(void))                                     // C++11
78
void quick_exit(int status);                                              // C++11
79
void *aligned_alloc(size_t alignment, size_t size);                       // C11
80
81
}  // std
82
83
*/
84
85
#include <__config>
86
#include <stdlib.h>
87
#ifdef _LIBCPP_MSVCRT
88
#include "support/win32/locale_win32.h"
89
#endif // _LIBCPP_MSVCRT
90
91
#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
92
#pragma GCC system_header
93
#endif
94
95
_LIBCPP_BEGIN_NAMESPACE_STD
96
97
using ::size_t;
98
using ::div_t;
99
using ::ldiv_t;
100
#ifndef _LIBCPP_HAS_NO_LONG_LONG
101
using ::lldiv_t;
102
#endif // _LIBCPP_HAS_NO_LONG_LONG
103
using ::atof;
104
using ::atoi;
105
using ::atol;
106
#ifndef _LIBCPP_HAS_NO_LONG_LONG
107
using ::atoll;
108
#endif // _LIBCPP_HAS_NO_LONG_LONG
109
using ::strtod;
110
using ::strtof;
111
using ::strtold;
112
using ::strtol;
113
#ifndef _LIBCPP_HAS_NO_LONG_LONG
114
using ::strtoll;
115
#endif // _LIBCPP_HAS_NO_LONG_LONG
116
using ::strtoul;
117
#ifndef _LIBCPP_HAS_NO_LONG_LONG
118
using ::strtoull;
119
#endif // _LIBCPP_HAS_NO_LONG_LONG
120
using ::rand;
121
using ::srand;
122
using ::calloc;
123
using ::free;
124
using ::malloc;
125
using ::realloc;
126
using ::abort;
127
using ::atexit;
128
using ::exit;
129
using ::_Exit;
130
using ::getenv;
131
using ::system;
132
using ::bsearch;
133
using ::qsort;
134
#undef abs
135
using ::abs;
136
#undef labs
137
using ::labs;
138
#ifndef _LIBCPP_HAS_NO_LONG_LONG
139
#undef llabs
140
using ::llabs;
141
#endif // _LIBCPP_HAS_NO_LONG_LONG
142
#undef div
143
using ::div;
144
#undef ldiv
145
using ::ldiv;
146
#ifndef _LIBCPP_HAS_NO_LONG_LONG
147
#undef lldiv
148
using ::lldiv;
149
#endif // _LIBCPP_HAS_NO_LONG_LONG
150
#ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
151
using ::mblen;
152
using ::mbtowc;
153
using ::wctomb;
154
#endif
155
using ::mbstowcs;
156
using ::wcstombs;
157
#ifdef _LIBCPP_HAS_QUICK_EXIT
158
using ::at_quick_exit;
159
using ::quick_exit;
160
#endif
161
#ifdef _LIBCPP_HAS_C11_FEATURES
162
using ::aligned_alloc;
163
#endif
164
165
// MSVCRT already has the correct prototype in <stdlib.h> #ifdef __cplusplus
166
#if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX)
167
inline _LIBCPP_INLINE_VISIBILITY long      abs(     long __x) _NOEXCEPT {return  labs(__x);}
168
#ifndef _LIBCPP_HAS_NO_LONG_LONG
169
inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);}
170
#endif // _LIBCPP_HAS_NO_LONG_LONG
171
172
inline _LIBCPP_INLINE_VISIBILITY  ldiv_t div(     long __x,      long __y) _NOEXCEPT {return  ldiv(__x, __y);}
173
#ifndef _LIBCPP_HAS_NO_LONG_LONG
174
inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);}
175
#endif // _LIBCPP_HAS_NO_LONG_LONG
176
#endif // _LIBCPP_MSVCRT
177
178
_LIBCPP_END_NAMESPACE_STD
179
180
#endif  // _LIBCPP_CSTDLIB