Subversion Repositories Kolibri OS

Rev

Rev 6325 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
5134 serge 1
// Predefined symbols and macros -*- C++ -*-
2
 
3
// Copyright (C) 1997-2013 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 bits/c++config.h
26
 *  This is an internal header file, included by other library headers.
27
 *  Do not attempt to use it directly. @headername{iosfwd}
28
 */
29
 
30
#ifndef _GLIBCXX_CXX_CONFIG_H
31
#define _GLIBCXX_CXX_CONFIG_H 1
32
 
33
// The current version of the C++ library in compressed ISO date format.
6325 serge 34
#define __GLIBCXX__ 20150623
5134 serge 35
 
36
// Macros for various attributes.
37
//   _GLIBCXX_PURE
38
//   _GLIBCXX_CONST
39
//   _GLIBCXX_NORETURN
40
//   _GLIBCXX_NOTHROW
41
//   _GLIBCXX_VISIBILITY
42
#ifndef _GLIBCXX_PURE
43
# define _GLIBCXX_PURE __attribute__ ((__pure__))
44
#endif
45
 
46
#ifndef _GLIBCXX_CONST
47
# define _GLIBCXX_CONST __attribute__ ((__const__))
48
#endif
49
 
50
#ifndef _GLIBCXX_NORETURN
51
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
52
#endif
53
 
54
// See below for C++
55
#ifndef _GLIBCXX_NOTHROW
56
# ifndef __cplusplus
57
#  define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
58
# endif
59
#endif
60
 
61
// Macros for visibility attributes.
62
//   _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
63
//   _GLIBCXX_VISIBILITY
64
# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 0
65
 
66
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
67
# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V)))
68
#else
69
// If this is not supplied by the OS-specific or CPU-specific
70
// headers included below, it will be defined to an empty default.
71
# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V)
72
#endif
73
 
74
// Macros for deprecated attributes.
75
//   _GLIBCXX_USE_DEPRECATED
76
//   _GLIBCXX_DEPRECATED
77
#ifndef _GLIBCXX_USE_DEPRECATED
78
# define _GLIBCXX_USE_DEPRECATED 1
79
#endif
80
 
81
#if defined(__DEPRECATED) && (__cplusplus >= 201103L)
82
# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__))
83
#else
84
# define _GLIBCXX_DEPRECATED
85
#endif
86
 
87
// Macros for ABI tag attributes.
88
#ifndef _GLIBCXX_ABI_TAG_CXX11
89
# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11")))
90
#endif
91
 
92
 
93
#if __cplusplus
94
 
95
// Macro for constexpr, to support in mixed 03/0x mode.
96
#ifndef _GLIBCXX_CONSTEXPR
97
# if __cplusplus >= 201103L
98
#  define _GLIBCXX_CONSTEXPR constexpr
99
#  define _GLIBCXX_USE_CONSTEXPR constexpr
100
# else
101
#  define _GLIBCXX_CONSTEXPR
102
#  define _GLIBCXX_USE_CONSTEXPR const
103
# endif
104
#endif
105
 
106
// Macro for noexcept, to support in mixed 03/0x mode.
107
#ifndef _GLIBCXX_NOEXCEPT
108
# if __cplusplus >= 201103L
109
#  define _GLIBCXX_NOEXCEPT noexcept
110
#  define _GLIBCXX_USE_NOEXCEPT noexcept
111
#  define _GLIBCXX_THROW(_EXC)
112
# else
113
#  define _GLIBCXX_NOEXCEPT
114
#  define _GLIBCXX_USE_NOEXCEPT throw()
115
#  define _GLIBCXX_THROW(_EXC) throw(_EXC)
116
# endif
117
#endif
118
 
119
#ifndef _GLIBCXX_NOTHROW
120
# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT
121
#endif
122
 
123
#ifndef _GLIBCXX_THROW_OR_ABORT
124
# if __EXCEPTIONS
125
#  define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC))
126
# else
127
#  define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort())
128
# endif
129
#endif
130
 
131
// Macro for extern template, ie controling template linkage via use
132
// of extern keyword on template declaration. As documented in the g++
133
// manual, it inhibits all implicit instantiations and is used
134
// throughout the library to avoid multiple weak definitions for
135
// required types that are already explicitly instantiated in the
136
// library binary. This substantially reduces the binary size of
137
// resulting executables.
138
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
139
// templates only in basic_string, thus activating its debug-mode
140
// checks even at -O0.
141
# define _GLIBCXX_EXTERN_TEMPLATE 1
142
 
143
/*
144
  Outline of libstdc++ namespaces.
145
 
146
  namespace std
147
  {
148
    namespace __debug { }
149
    namespace __parallel { }
150
    namespace __profile { }
151
    namespace __cxx1998 { }
152
 
153
    namespace __detail { }
154
 
155
    namespace rel_ops { }
156
 
157
    namespace tr1
158
    {
159
      namespace placeholders { }
160
      namespace regex_constants { }
161
      namespace __detail { }
162
    }
163
 
164
    namespace tr2 { }
6528 serge 165
 
5134 serge 166
    namespace decimal { }
167
 
168
    namespace chrono { }
169
    namespace placeholders { }
170
    namespace regex_constants { }
171
    namespace this_thread { }
172
  }
173
 
174
  namespace abi { }
175
 
176
  namespace __gnu_cxx
177
  {
178
    namespace __detail { }
179
  }
180
 
181
  For full details see:
182
  http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html
183
*/
184
namespace std
185
{
186
  typedef __SIZE_TYPE__ 	size_t;
187
  typedef __PTRDIFF_TYPE__	ptrdiff_t;
188
 
189
#if __cplusplus >= 201103L
190
  typedef decltype(nullptr)	nullptr_t;
191
#endif
192
}
193
 
194
 
195
// Defined if inline namespaces are used for versioning.
6528 serge 196
# define _GLIBCXX_INLINE_VERSION 0
5134 serge 197
 
198
// Inline namespace for symbol versioning.
199
#if _GLIBCXX_INLINE_VERSION
200
 
201
namespace std
202
{
203
  inline namespace __7 { }
204
 
205
  namespace rel_ops { inline namespace __7 { } }
206
 
207
  namespace tr1
208
  {
209
    inline namespace __7 { }
210
    namespace placeholders { inline namespace __7 { } }
211
    namespace regex_constants { inline namespace __7 { } }
212
    namespace __detail { inline namespace __7 { } }
213
  }
214
 
215
  namespace tr2
216
  { inline namespace __7 { } }
217
 
218
  namespace decimal { inline namespace __7 { } }
219
 
220
  namespace chrono { inline namespace __7 { } }
221
  namespace placeholders { inline namespace __7 { } }
222
  namespace regex_constants { inline namespace __7 { } }
223
  namespace this_thread { inline namespace __7 { } }
224
 
225
  namespace __detail { inline namespace __7 { } }
226
}
227
 
228
namespace __gnu_cxx
229
{
230
  inline namespace __7 { }
231
  namespace __detail { inline namespace __7 { } }
232
}
233
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 {
234
# define _GLIBCXX_END_NAMESPACE_VERSION }
235
#else
236
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION
237
# define _GLIBCXX_END_NAMESPACE_VERSION
238
#endif
239
 
240
 
241
// Inline namespaces for special modes: debug, parallel, profile.
242
#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \
243
    || defined(_GLIBCXX_PROFILE)
244
namespace std
245
{
246
  // Non-inline namespace for components replaced by alternates in active mode.
247
  namespace __cxx1998
248
  {
249
#if _GLIBCXX_INLINE_VERSION
250
 inline namespace __7 { }
251
#endif
252
  }
253
 
254
  // Inline namespace for debug mode.
255
# ifdef _GLIBCXX_DEBUG
256
  inline namespace __debug { }
257
# endif
258
 
259
  // Inline namespaces for parallel mode.
260
# ifdef _GLIBCXX_PARALLEL
261
  inline namespace __parallel { }
262
# endif
263