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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libstdc++-v3/] [include/] [bits/] [c++config] - Blame information for rev 742

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 742 jeremybenn
// Predefined symbols and macros -*- C++ -*-
2
 
3
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
4
// 2006, 2007, 2008, 2009, 2010, 2011 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 3, 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
// Under Section 7 of GPL version 3, you are granted additional
18
// permissions described in the GCC Runtime Library Exception, version
19
// 3.1, as published by the Free Software Foundation.
20
 
21
// You should have received a copy of the GNU General Public License and
22
// a copy of the GCC Runtime Library Exception along with this program;
23
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
24
// .
25
 
26
/** @file bits/c++config.h
27
 *  This is an internal header file, included by other library headers.
28
 *  Do not attempt to use it directly. @headername{iosfwd}
29
 */
30
 
31
#ifndef _GLIBCXX_CXX_CONFIG_H
32
#define _GLIBCXX_CXX_CONFIG_H 1
33
 
34
// The current version of the C++ library in compressed ISO date format.
35
#define __GLIBCXX__
36
 
37
// Macros for various attributes.
38
//   _GLIBCXX_PURE
39
//   _GLIBCXX_CONST
40
//   _GLIBCXX_NORETURN
41
//   _GLIBCXX_NOTHROW
42
//   _GLIBCXX_VISIBILITY
43
#ifndef _GLIBCXX_PURE
44
# define _GLIBCXX_PURE __attribute__ ((__pure__))
45
#endif
46
 
47
#ifndef _GLIBCXX_CONST
48
# define _GLIBCXX_CONST __attribute__ ((__const__))
49
#endif
50
 
51
#ifndef _GLIBCXX_NORETURN
52
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
53
#endif
54
 
55
// See below for C++
56
#ifndef _GLIBCXX_NOTHROW
57
# ifndef __cplusplus
58
#  define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
59
# endif
60
#endif
61
 
62
// Macros for visibility attributes.
63
//   _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
64
//   _GLIBCXX_VISIBILITY
65
#define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
66
 
67
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
68
# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V)))
69
#else
70
// If this is not supplied by the OS-specific or CPU-specific
71
// headers included below, it will be defined to an empty default.
72
# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V)
73
#endif
74
 
75
// Macros for deprecated attributes.
76
//   _GLIBCXX_USE_DEPRECATED
77
//   _GLIBCXX_DEPRECATED
78
#ifndef _GLIBCXX_USE_DEPRECATED
79
# define _GLIBCXX_USE_DEPRECATED 1
80
#endif
81
 
82
#if defined(__DEPRECATED) && defined(__GXX_EXPERIMENTAL_CXX0X__)
83
# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__))
84
#else
85
# define _GLIBCXX_DEPRECATED
86
#endif
87
 
88
#if __cplusplus
89
 
90
// Macro for constexpr, to support in mixed 03/0x mode.
91
#ifndef _GLIBCXX_CONSTEXPR
92
# ifdef __GXX_EXPERIMENTAL_CXX0X__
93
#  define _GLIBCXX_CONSTEXPR constexpr
94
#  define _GLIBCXX_USE_CONSTEXPR constexpr
95
# else
96
#  define _GLIBCXX_CONSTEXPR
97
#  define _GLIBCXX_USE_CONSTEXPR const
98
# endif
99
#endif
100
 
101
// Macro for noexcept, to support in mixed 03/0x mode.
102
#ifndef _GLIBCXX_NOEXCEPT
103
# ifdef __GXX_EXPERIMENTAL_CXX0X__
104
#  define _GLIBCXX_NOEXCEPT noexcept
105
#  define _GLIBCXX_USE_NOEXCEPT noexcept
106
#  define _GLIBCXX_THROW(_EXC)
107
# else
108
#  define _GLIBCXX_NOEXCEPT
109
#  define _GLIBCXX_USE_NOEXCEPT throw()
110
#  define _GLIBCXX_THROW(_EXC) throw(_EXC)
111
# endif
112
#endif
113
 
114
#ifndef _GLIBCXX_NOTHROW
115
# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT
116
#endif
117
 
118
// Macro for extern template, ie controling template linkage via use
119
// of extern keyword on template declaration. As documented in the g++
120
// manual, it inhibits all implicit instantiations and is used
121
// throughout the library to avoid multiple weak definitions for
122
// required types that are already explicitly instantiated in the
123
// library binary. This substantially reduces the binary size of
124
// resulting executables.
125
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
126
// templates only in basic_string, thus activating its debug-mode
127
// checks even at -O0.
128
#define _GLIBCXX_EXTERN_TEMPLATE
129
 
130
/*
131
  Outline of libstdc++ namespaces.
132
 
133
  namespace std
134
  {
135
    namespace __debug { }
136
    namespace __parallel { }
137
    namespace __profile { }
138
    namespace __cxx1998 { }
139
 
140
    namespace __detail { }
141
 
142
    namespace rel_ops { }
143
 
144
    namespace tr1
145
    {
146
      namespace placeholders { }
147
      namespace regex_constants { }
148
      namespace __detail { }
149
    }
150
 
151
    namespace tr2 { }
152
 
153
    namespace decimal { }
154
 
155
    namespace chrono { }
156
    namespace placeholders { }
157
    namespace regex_constants { }
158
    namespace this_thread { }
159
  }
160
 
161
  namespace abi { }
162
 
163
  namespace __gnu_cxx
164
  {
165
    namespace __detail { }
166
  }
167
 
168
  For full details see:
169
  http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html
170
*/
171
namespace std
172
{
173
  typedef __SIZE_TYPE__         size_t;
174
  typedef __PTRDIFF_TYPE__      ptrdiff_t;
175
 
176
#ifdef __GXX_EXPERIMENTAL_CXX0X__
177
  typedef decltype(nullptr)     nullptr_t;
178
#endif
179
}
180
 
181
 
182
// Defined if inline namespaces are used for versioning.
183
#define _GLIBCXX_INLINE_VERSION
184
 
185
// Inline namespace for symbol versioning.
186
#if _GLIBCXX_INLINE_VERSION
187
 
188
namespace std
189
{
190
  inline namespace __7 { }
191
 
192
  namespace rel_ops { inline namespace __7 { } }
193
 
194
  namespace tr1
195
  {
196
    inline namespace __7 { }
197
    namespace placeholders { inline namespace __7 { } }
198
    namespace regex_constants { inline namespace __7 { } }
199
    namespace __detail { inline namespace __7 { } }
200
  }
201
 
202
  namespace tr2
203
  { inline namespace __7 { } }
204
 
205
  namespace decimal { inline namespace __7 { } }
206
 
207
  namespace chrono { inline namespace __7 { } }
208
  namespace placeholders { inline namespace __7 { } }
209
  namespace regex_constants { inline namespace __7 { } }
210
  namespace this_thread { inline namespace __7 { } }
211
 
212
  namespace __detail { inline namespace __7 { } }
213
  namespace __regex { inline namespace __7 { } }
214
}
215
 
216
namespace __gnu_cxx
217
{
218
  inline namespace __7 { }
219
  namespace __detail { inline namespace __7 { } }
220
}
221
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 {
222
# define _GLIBCXX_END_NAMESPACE_VERSION }
223
#else
224
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION
225
# define _GLIBCXX_END_NAMESPACE_VERSION
226
#endif
227
 
228
 
229
// Inline namespaces for special modes: debug, parallel, profile.
230
#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \
231
    || defined(_GLIBCXX_PROFILE)
232
namespace std
233
{
234
  // Non-inline namespace for components replaced by alternates in active mode.
235
  namespace __cxx1998
236
  {
237
#if _GLIBCXX_INLINE_VERSION
238
 inline namespace __7 { }
239
#endif
240
  }
241
 
242
  // Inline namespace for debug mode.
243
# ifdef _GLIBCXX_DEBUG
244
  inline namespace __debug { }
245
# endif
246
 
247
  // Inline namespaces for parallel mode.
248
# ifdef _GLIBCXX_PARALLEL
249
  inline namespace __parallel { }
250
# endif
251
 
252
  // Inline namespaces for profile mode
253
# ifdef _GLIBCXX_PROFILE
254
  inline namespace __profile { }
255
# endif
256
}
257
 
258
// Check for invalid usage and unsupported mixed-mode use.
259
# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL)
260
#  error illegal use of multiple inlined namespaces
261
# endif
262
# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG)
263
#  error illegal use of multiple inlined namespaces
264
# endif
265
# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL)
266
#  error illegal use of multiple inlined namespaces
267
# endif
268
 
269
// Check for invalid use due to lack for weak symbols.
270
# if __NO_INLINE__ && !__GXX_WEAK__
271
#  warning currently using inlined namespace mode which may fail \
272
   without inlining due to lack of weak symbols
273
# endif
274
#endif
275
 
276
// Macros for namespace scope. Either namespace std:: or the name
277
// of some nested namespace within it corresponding to the active mode.
278
// _GLIBCXX_STD_A
279
// _GLIBCXX_STD_C
280
//
281
// Macros for opening/closing conditional namespaces.
282
// _GLIBCXX_BEGIN_NAMESPACE_ALGO
283
// _GLIBCXX_END_NAMESPACE_ALGO
284
// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
285
// _GLIBCXX_END_NAMESPACE_CONTAINER
286
#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE)
287
# define _GLIBCXX_STD_C __cxx1998
288
# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \
289
         namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION
290
# define _GLIBCXX_END_NAMESPACE_CONTAINER \
291
         } _GLIBCXX_END_NAMESPACE_VERSION
292
# undef _GLIBCXX_EXTERN_TEMPLATE
293
# define _GLIBCXX_EXTERN_TEMPLATE -1
294
#endif
295
 
296
#ifdef _GLIBCXX_PARALLEL
297
# define _GLIBCXX_STD_A __cxx1998
298
# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \
299
         namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION
300
# define _GLIBCXX_END_NAMESPACE_ALGO \
301
         } _GLIBCXX_END_NAMESPACE_VERSION
302
#endif
303
 
304
#ifndef _GLIBCXX_STD_A
305
# define _GLIBCXX_STD_A std
306
#endif
307
 
308
#ifndef _GLIBCXX_STD_C
309
# define _GLIBCXX_STD_C std
310
#endif
311
 
312
#ifndef _GLIBCXX_BEGIN_NAMESPACE_ALGO
313
# define _GLIBCXX_BEGIN_NAMESPACE_ALGO
314
#endif
315
 
316
#ifndef _GLIBCXX_END_NAMESPACE_ALGO
317
# define _GLIBCXX_END_NAMESPACE_ALGO
318
#endif
319
 
320
#ifndef _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
321
# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
322
#endif
323
 
324
#ifndef _GLIBCXX_END_NAMESPACE_CONTAINER
325
# define _GLIBCXX_END_NAMESPACE_CONTAINER
326
#endif
327
 
328
// GLIBCXX_ABI Deprecated
329
// Define if compatibility should be provided for -mlong-double-64.
330
#undef _GLIBCXX_LONG_DOUBLE_COMPAT
331
 
332
// Inline namespace for long double 128 mode.
333
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
334
namespace std
335
{
336
  inline namespace __gnu_cxx_ldbl128 { }
337
}
338
# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128::
339
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 {
340
# define _GLIBCXX_END_NAMESPACE_LDBL }
341
#else
342
# define _GLIBCXX_NAMESPACE_LDBL
343
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL
344
# define _GLIBCXX_END_NAMESPACE_LDBL
345
#endif
346
 
347
// Assert.
348
#if !defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_PARALLEL)
349
# define __glibcxx_assert(_Condition)
350
#else
351
namespace std
352
{
353
  // Avoid the use of assert, because we're trying to keep the 
354
  // include out of the mix.
355
  inline void
356
  __replacement_assert(const char* __file, int __line,
357
                       const char* __function, const char* __condition)
358
  {
359
    __builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line,
360
                     __function, __condition);
361
    __builtin_abort();
362
  }
363
}
364
#define __glibcxx_assert(_Condition)                                     \
365
  do                                                                     \
366
  {                                                                      \
367
    if (! (_Condition))                                                  \
368
      std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \
369
                                #_Condition);                            \
370
  } while (false)
371
#endif
372
 
373
// Macros for race detectors.
374
// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and
375
// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain
376
// atomic (lock-free) synchronization to race detectors:
377
// the race detector will infer a happens-before arc from the former to the
378
// latter when they share the same argument pointer.
379
//
380
// The most frequent use case for these macros (and the only case in the
381
// current implementation of the library) is atomic reference counting:
382
//   void _M_remove_reference()
383
//   {
384
//     _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount);
385
//     if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0)
386
//       {
387
//         _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount);
388
//         _M_destroy(__a);
389
//       }
390
//   }
391
// The annotations in this example tell the race detector that all memory
392
// accesses occurred when the refcount was positive do not race with
393
// memory accesses which occurred after the refcount became zero.
394
#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE
395
# define  _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A)
396
#endif
397
#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER
398
# define  _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A)
399
#endif
400
 
401
// Macros for C linkage: define extern "C" linkage only when using C++.
402
# define _GLIBCXX_BEGIN_EXTERN_C extern "C" {
403
# define _GLIBCXX_END_EXTERN_C }
404
 
405
#else // !__cplusplus
406
# define _GLIBCXX_BEGIN_EXTERN_C
407
# define _GLIBCXX_END_EXTERN_C
408
#endif
409
 
410
 
411
// First includes.
412
 
413
// Pick up any OS-specific definitions.
414
#include 
415
 
416
// Pick up any CPU-specific definitions.
417
#include 
418
 
419
// If platform uses neither visibility nor psuedo-visibility,
420
// specify empty default for namespace annotation macros.
421
#ifndef _GLIBCXX_PSEUDO_VISIBILITY
422
# define _GLIBCXX_PSEUDO_VISIBILITY(V)
423
#endif
424
 
425
// Certain function definitions that are meant to be overridable from
426
// user code are decorated with this macro.  For some targets, this
427
// macro causes these definitions to be weak.
428
#ifndef _GLIBCXX_WEAK_DEFINITION
429
# define _GLIBCXX_WEAK_DEFINITION
430
#endif
431
 
432
 
433
// The remainder of the prewritten config is automatic; all the
434
// user hooks are listed above.
435
 
436
// Create a boolean flag to be used to determine if --fast-math is set.
437
#ifdef __FAST_MATH__
438
# define _GLIBCXX_FAST_MATH 1
439
#else
440
# define _GLIBCXX_FAST_MATH 0
441
#endif
442
 
443
// This marks string literals in header files to be extracted for eventual
444
// translation.  It is primarily used for messages in thrown exceptions; see
445
// src/functexcept.cc.  We use __N because the more traditional _N is used
446
// for something else under certain OSes (see BADNAMES).
447
#define __N(msgid)     (msgid)
448
 
449
// For example,  is known to #define min and max as macros...
450
#undef min
451
#undef max
452
 
453
// End of prewritten config; the settings discovered at configure time follow.

powered by: WebSVN 2.1.0

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