File Coverage

/usr/include/c++/5/cstdlib
Criterion Covered Total %
statement 0 1 0.0
branch n/a
condition n/a
subroutine n/a
pod n/a
total 0 1 0.0


line stmt bran cond sub pod time code
1             // -*- C++ -*- forwarding header.
2              
3             // Copyright (C) 1997-2015 Free Software Foundation, Inc.
4             //
5             // This file is part of the GNU ISO C++ Library. This library is free
6             // software; you can redistribute it and/or modify it under the
7             // terms of the GNU General Public License as published by the
8             // Free Software Foundation; either version 3, or (at your option)
9             // any later version.
10              
11             // This library is distributed in the hope that it will be useful,
12             // but WITHOUT ANY WARRANTY; without even the implied warranty of
13             // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14             // GNU General Public License for more details.
15              
16             // Under Section 7 of GPL version 3, you are granted additional
17             // permissions described in the GCC Runtime Library Exception, version
18             // 3.1, as published by the Free Software Foundation.
19              
20             // You should have received a copy of the GNU General Public License and
21             // a copy of the GCC Runtime Library Exception along with this program;
22             // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
23             // .
24              
25             /** @file include/cstdlib
26             * This is a Standard C++ Library file. You should @c \#include this file
27             * in your programs, rather than any of the @a *.h implementation files.
28             *
29             * This is the C++ version of the Standard C Library header @c stdlib.h,
30             * and its contents are (mostly) the same as that header, but are all
31             * contained in the namespace @c std (except for names which are defined
32             * as macros in C).
33             */
34              
35             //
36             // ISO C++ 14882: 20.4.6 C library
37             //
38              
39             #pragma GCC system_header
40              
41             #include
42              
43             #ifndef _GLIBCXX_CSTDLIB
44             #define _GLIBCXX_CSTDLIB 1
45              
46             #if !_GLIBCXX_HOSTED
47             // The C standard does not require a freestanding implementation to
48             // provide . However, the C++ standard does still require
49             // -- but only the functionality mentioned in
50             // [lib.support.start.term].
51              
52             #define EXIT_SUCCESS 0
53             #define EXIT_FAILURE 1
54              
55             namespace std
56             {
57             extern "C" void abort(void) throw () _GLIBCXX_NORETURN;
58             extern "C" int atexit(void (*)(void)) throw ();
59             extern "C" void exit(int) throw () _GLIBCXX_NORETURN;
60             #if __cplusplus >= 201103L
61             # ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
62             extern "C" int at_quick_exit(void (*)(void)) throw ();
63             # endif
64             # ifdef _GLIBCXX_HAVE_QUICK_EXIT
65             extern "C" void quick_exit(int) throw() _GLIBCXX_NORETURN;
66             # endif
67             #endif
68             } // namespace std
69              
70             #else
71              
72             #include
73              
74             // Get rid of those macros defined in in lieu of real functions.
75             #undef abort
76             #undef abs
77             #undef atexit
78             #if __cplusplus >= 201103L
79             # ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
80             # undef at_quick_exit
81             # endif
82             #endif
83             #undef atof
84             #undef atoi
85             #undef atol
86             #undef bsearch
87             #undef calloc
88             #undef div
89             #undef exit
90             #undef free
91             #undef getenv
92             #undef labs
93             #undef ldiv
94             #undef malloc
95             #undef mblen
96             #undef mbstowcs
97             #undef mbtowc
98             #undef qsort
99             #if __cplusplus >= 201103L
100             # ifdef _GLIBCXX_HAVE_QUICK_EXIT
101             # undef quick_exit
102             # endif
103             #endif
104             #undef rand
105             #undef realloc
106             #undef srand
107             #undef strtod
108             #undef strtol
109             #undef strtoul
110             #undef system
111             #undef wcstombs
112             #undef wctomb
113              
114             namespace std _GLIBCXX_VISIBILITY(default)
115             {
116             _GLIBCXX_BEGIN_NAMESPACE_VERSION
117              
118             using ::div_t;
119             using ::ldiv_t;
120              
121             using ::abort;
122             using ::abs;
123             using ::atexit;
124             #if __cplusplus >= 201103L
125             # ifdef _GLIBCXX_HAVE_AT_QUICK_EXIT
126             using ::at_quick_exit;
127             # endif
128             #endif
129             using ::atof;
130             using ::atoi;
131             using ::atol;
132             using ::bsearch;
133             using ::calloc;
134             using ::div;
135             using ::exit;
136             using ::free;
137             using ::getenv;
138             using ::labs;
139             using ::ldiv;
140             using ::malloc;
141             #ifdef _GLIBCXX_HAVE_MBSTATE_T
142             using ::mblen;
143             using ::mbstowcs;
144             using ::mbtowc;
145             #endif // _GLIBCXX_HAVE_MBSTATE_T
146             using ::qsort;
147             #if __cplusplus >= 201103L
148             # ifdef _GLIBCXX_HAVE_QUICK_EXIT
149             using ::quick_exit;
150             # endif
151             #endif
152             using ::rand;
153             using ::realloc;
154             using ::srand;
155             using ::strtod;
156             using ::strtol;
157             using ::strtoul;
158             using ::system;
159             #ifdef _GLIBCXX_USE_WCHAR_T
160             using ::wcstombs;
161             using ::wctomb;
162             #endif // _GLIBCXX_USE_WCHAR_T
163              
164             #ifndef __CORRECT_ISO_CPP_STDLIB_H_PROTO
165             inline long
166 0           abs(long __i) { return __builtin_labs(__i); }
167              
168             inline ldiv_t
169             div(long __i, long __j) { return ldiv(__i, __j); }
170             #endif
171              
172             #ifdef _GLIBCXX_USE_LONG_LONG
173             inline long long
174             abs(long long __x) { return __builtin_llabs (__x); }
175             #endif
176              
177             #if defined(__GLIBCXX_TYPE_INT_N_0)
178             inline __GLIBCXX_TYPE_INT_N_0
179             abs(__GLIBCXX_TYPE_INT_N_0 __x) { return __x >= 0 ? __x : -__x; }
180             #endif
181             #if defined(__GLIBCXX_TYPE_INT_N_1)
182             inline __GLIBCXX_TYPE_INT_N_1
183             abs(__GLIBCXX_TYPE_INT_N_1 __x) { return __x >= 0 ? __x : -__x; }
184             #endif
185             #if defined(__GLIBCXX_TYPE_INT_N_2)
186             inline __GLIBCXX_TYPE_INT_N_2
187             abs(__GLIBCXX_TYPE_INT_N_2 __x) { return __x >= 0 ? __x : -__x; }
188             #endif
189             #if defined(__GLIBCXX_TYPE_INT_N_3)
190             inline __GLIBCXX_TYPE_INT_N_3
191             abs(__GLIBCXX_TYPE_INT_N_3 __x) { return __x >= 0 ? __x : -__x; }
192             #endif
193              
194              
195             _GLIBCXX_END_NAMESPACE_VERSION
196             } // namespace
197              
198             #if _GLIBCXX_USE_C99
199              
200             #undef _Exit
201             #undef llabs
202             #undef lldiv
203             #undef atoll
204             #undef strtoll
205             #undef strtoull
206             #undef strtof
207             #undef strtold
208              
209             namespace __gnu_cxx _GLIBCXX_VISIBILITY(default)
210             {
211             _GLIBCXX_BEGIN_NAMESPACE_VERSION
212              
213             #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
214             using ::lldiv_t;
215             #endif
216             #if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
217             extern "C" void (_Exit)(int) throw () _GLIBCXX_NORETURN;
218             #endif
219             #if !_GLIBCXX_USE_C99_DYNAMIC
220             using ::_Exit;
221             #endif
222              
223             #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
224             using ::llabs;
225              
226             inline lldiv_t
227             div(long long __n, long long __d)
228             { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
229              
230             using ::lldiv;
231             #endif
232              
233             #if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
234             extern "C" long long int (atoll)(const char *) throw ();
235             extern "C" long long int
236             (strtoll)(const char * __restrict, char ** __restrict, int) throw ();
237             extern "C" unsigned long long int
238             (strtoull)(const char * __restrict, char ** __restrict, int) throw ();
239             #endif
240             #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
241             using ::atoll;
242             using ::strtoll;
243             using ::strtoull;
244             #endif
245             using ::strtof;
246             using ::strtold;
247              
248             _GLIBCXX_END_NAMESPACE_VERSION
249             } // namespace __gnu_cxx
250              
251             namespace std
252             {
253             #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
254             using ::__gnu_cxx::lldiv_t;
255             #endif
256             using ::__gnu_cxx::_Exit;
257             #if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
258             using ::__gnu_cxx::llabs;
259             using ::__gnu_cxx::div;
260             using ::__gnu_cxx::lldiv;
261             #endif
262             using ::__gnu_cxx::atoll;
263             using ::__gnu_cxx::strtof;
264             using ::__gnu_cxx::strtoll;
265             using ::__gnu_cxx::strtoull;
266             using ::__gnu_cxx::strtold;
267             } // namespace std
268              
269             #endif // _GLIBCXX_USE_C99
270              
271             #endif // !_GLIBCXX_HOSTED
272              
273             #endif