OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [libstdc++-v3/] [include/] [c_std/] [std_cstdlib.h] - Blame information for rev 17

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 17 jlechner
// -*- C++ -*- forwarding header.
2
 
3
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
4
// Free Software Foundation, Inc.
5
//
6
// This file is part of the GNU ISO C++ Library.  This library is free
7
// software; you can redistribute it and/or modify it under the
8
// terms of the GNU General Public License as published by the
9
// Free Software Foundation; either version 2, or (at your option)
10
// any later version.
11
 
12
// This library is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
// GNU General Public License for more details.
16
 
17
// You should have received a copy of the GNU General Public License along
18
// with this library; see the file COPYING.  If not, write to the Free
19
// Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
20
// USA.
21
 
22
// As a special exception, you may use this file as part of a free software
23
// library without restriction.  Specifically, if other files instantiate
24
// templates or use macros or inline functions from this file, or you compile
25
// this file and link it with other files to produce an executable, this
26
// file does not by itself cause the resulting executable to be covered by
27
// the GNU General Public License.  This exception does not however
28
// invalidate any other reasons why the executable file might be covered by
29
// the GNU General Public License.
30
 
31
//
32
// ISO C++ 14882: 20.4.6  C library
33
//
34
 
35
/** @file cstdlib
36
 *  This is a Standard C++ Library file.  You should @c #include this file
37
 *  in your programs, rather than any of the "*.h" implementation files.
38
 *
39
 *  This is the C++ version of the Standard C Library header @c stdlib.h,
40
 *  and its contents are (mostly) the same as that header, but are all
41
 *  contained in the namespace @c std (except for names which are defined
42
 *  as macros in C).
43
 */
44
 
45
#ifndef _GLIBCXX_CSTDLIB
46
#define _GLIBCXX_CSTDLIB 1
47
 
48
#pragma GCC system_header
49
 
50
#include <bits/c++config.h>
51
#include <cstddef>
52
 
53
#if !_GLIBCXX_HOSTED
54
// The C standard does not require a freestanding implementation to
55
// provide <stdlib.h>.  However, the C++ standard does still require
56
// <cstdlib> -- but only the functionality mentioned in
57
// [lib.support.start.term].
58
 
59
#define EXIT_SUCCESS 0
60
#define EXIT_FAILURE 1
61
 
62
namespace std
63
{
64
  extern "C" void abort(void);
65
  extern "C" int atexit(void (*)());
66
  extern "C" void exit(int);
67
} // namespace std
68
 
69
#else
70
 
71
#include <stdlib.h>
72
 
73
// Get rid of those macros defined in <stdlib.h> in lieu of real functions.
74
#undef abort
75
#undef abs
76
#undef atexit
77
#undef atof
78
#undef atoi
79
#undef atol
80
#undef bsearch
81
#undef calloc
82
#undef div
83
#undef exit
84
#undef free
85
#undef getenv
86
#undef labs
87
#undef ldiv
88
#undef malloc
89
#undef mblen
90
#undef mbstowcs
91
#undef mbtowc
92
#undef qsort
93
#undef rand
94
#undef realloc
95
#undef srand
96
#undef strtod
97
#undef strtol
98
#undef strtoul
99
#undef system
100
#undef wcstombs
101
#undef wctomb
102
 
103
namespace std
104
{
105
  using ::div_t;
106
  using ::ldiv_t;
107
 
108
  using ::abort;
109
  using ::abs;
110
  using ::atexit;
111
  using ::atof;
112
  using ::atoi;
113
  using ::atol;
114
  using ::bsearch;
115
  using ::calloc;
116
  using ::div;
117
  using ::exit;
118
  using ::free;
119
  using ::getenv;
120
  using ::labs;
121
  using ::ldiv;
122
  using ::malloc;
123
#ifdef _GLIBCXX_HAVE_MBSTATE_T
124
  using ::mblen;
125
  using ::mbstowcs;
126
  using ::mbtowc;
127
#endif // _GLIBCXX_HAVE_MBSTATE_T
128
  using ::qsort;
129
  using ::rand;
130
  using ::realloc;
131
  using ::srand;
132
  using ::strtod;
133
  using ::strtol;
134
  using ::strtoul;
135
  using ::system;
136
#ifdef _GLIBCXX_USE_WCHAR_T
137
  using ::wcstombs;
138
  using ::wctomb;
139
#endif // _GLIBCXX_USE_WCHAR_T
140
 
141
  inline long
142
  abs(long __i) { return labs(__i); }
143
 
144
  inline ldiv_t
145
  div(long __i, long __j) { return ldiv(__i, __j); }
146
} // namespace std
147
 
148
#if _GLIBCXX_USE_C99
149
 
150
#undef _Exit
151
#undef llabs
152
#undef lldiv
153
#undef atoll
154
#undef strtoll
155
#undef strtoull
156
#undef strtof
157
#undef strtold
158
 
159
namespace __gnu_cxx
160
{
161
#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
162
  using ::lldiv_t;
163
#endif
164
#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
165
  extern "C" void (_Exit)(int);
166
#endif
167
#if !_GLIBCXX_USE_C99_DYNAMIC
168
  using ::_Exit;
169
#endif
170
 
171
  inline long long
172
  abs(long long __x) { return __x >= 0 ? __x : -__x; }
173
 
174
#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
175
  using ::llabs;
176
 
177
  inline lldiv_t
178
  div(long long __n, long long __d)
179
  { lldiv_t __q; __q.quot = __n / __d; __q.rem = __n % __d; return __q; }
180
 
181
  using ::lldiv;
182
#endif
183
 
184
#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
185
  extern "C" long long int (atoll)(const char *);
186
  extern "C" long long int
187
    (strtoll)(const char * restrict, char ** restrict, int);
188
  extern "C" unsigned long long int
189
    (strtoull)(const char * restrict, char ** restrict, int);
190
#endif
191
#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
192
  using ::atoll;
193
  using ::strtoll;
194
  using ::strtoull;
195
#endif
196
  using ::strtof;
197
  using ::strtold;
198
}
199
 
200
namespace std
201
{
202
#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
203
  using ::__gnu_cxx::lldiv_t;
204
#endif
205
  using ::__gnu_cxx::_Exit;
206
  using ::__gnu_cxx::abs;
207
#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC
208
  using ::__gnu_cxx::llabs;
209
  using ::__gnu_cxx::div;
210
  using ::__gnu_cxx::lldiv;
211
#endif
212
  using ::__gnu_cxx::atoll;
213
  using ::__gnu_cxx::strtof;
214
  using ::__gnu_cxx::strtoll;
215
  using ::__gnu_cxx::strtoull;
216
  using ::__gnu_cxx::strtold;
217
}
218
 
219
#endif // _GLIBCXX_USE_C99
220
 
221
#endif // !_GLIBCXX_HOSTED
222
 
223
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.