Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / c++ / __config

History | View | Annotate | Download (20.9 KB)

1
// -*- C++ -*-
2
//===--------------------------- __config ---------------------------------===//
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_CONFIG
12
#define _LIBCPP_CONFIG
13

    
14
#if !defined(_MSC_VER) || defined(__clang__)
15
#pragma GCC system_header
16
#endif
17

    
18
#ifdef __GNUC__
19
#define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__)
20
#else
21
#define _GNUC_VER 0
22
#endif
23

    
24
#define _LIBCPP_VERSION 3800
25

    
26
#define _LIBCPP_ABI_VERSION 1
27

    
28
#define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y
29
#define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y)
30

    
31
#define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION)
32

    
33

    
34
#ifndef __has_attribute
35
#define __has_attribute(__x) 0
36
#endif
37
#ifndef __has_builtin
38
#define __has_builtin(__x) 0
39
#endif
40
#ifndef __has_extension
41
#define __has_extension(__x) 0
42
#endif
43
#ifndef __has_feature
44
#define __has_feature(__x) 0
45
#endif
46
// '__is_identifier' returns '0' if '__x' is a reserved identifier provided by
47
// the compiler and '1' otherwise.
48
#ifndef __is_identifier
49
#define __is_identifier(__x) 1
50
#endif
51

    
52

    
53
#ifdef __LITTLE_ENDIAN__
54
#if __LITTLE_ENDIAN__
55
#define _LIBCPP_LITTLE_ENDIAN 1
56
#define _LIBCPP_BIG_ENDIAN    0
57
#endif  // __LITTLE_ENDIAN__
58
#endif  // __LITTLE_ENDIAN__
59

    
60
#ifdef __BIG_ENDIAN__
61
#if __BIG_ENDIAN__
62
#define _LIBCPP_LITTLE_ENDIAN 0
63
#define _LIBCPP_BIG_ENDIAN    1
64
#endif  // __BIG_ENDIAN__
65
#endif  // __BIG_ENDIAN__
66

    
67
#ifdef __FreeBSD__
68
# include <sys/endian.h>
69
#  if _BYTE_ORDER == _LITTLE_ENDIAN
70
#   define _LIBCPP_LITTLE_ENDIAN 1
71
#   define _LIBCPP_BIG_ENDIAN    0
72
# else  // _BYTE_ORDER == _LITTLE_ENDIAN
73
#   define _LIBCPP_LITTLE_ENDIAN 0
74
#   define _LIBCPP_BIG_ENDIAN    1
75
# endif  // _BYTE_ORDER == _LITTLE_ENDIAN
76
# ifndef __LONG_LONG_SUPPORTED
77
#  define _LIBCPP_HAS_NO_LONG_LONG
78
# endif  // __LONG_LONG_SUPPORTED
79
#endif  // __FreeBSD__
80

    
81
#if defined(__NetBSD__) || defined(__minix)
82
# include <sys/endian.h>
83
#  if _BYTE_ORDER == _LITTLE_ENDIAN
84
#   define _LIBCPP_LITTLE_ENDIAN 1
85
#   define _LIBCPP_BIG_ENDIAN    0
86
# else  // _BYTE_ORDER == _LITTLE_ENDIAN
87
#   define _LIBCPP_LITTLE_ENDIAN 0
88
#   define _LIBCPP_BIG_ENDIAN    1
89
# endif  // _BYTE_ORDER == _LITTLE_ENDIAN
90
# define _LIBCPP_HAS_QUICK_EXIT
91
#endif  // __NetBSD__
92

    
93
#if defined(__minix)
94
# define _LIBCPP_HAS_NO_THREADS 1
95
#endif  // defined(__minix)
96

    
97
#ifdef _WIN32
98
#  define _LIBCPP_LITTLE_ENDIAN 1
99
#  define _LIBCPP_BIG_ENDIAN    0
100
// Compiler intrinsics (MSVC)
101
#if defined(_MSC_VER) && _MSC_VER >= 1400
102
#    define _LIBCPP_HAS_IS_BASE_OF
103
#  endif
104
#  if defined(_MSC_VER) && !defined(__clang__)
105
#    define _LIBCPP_MSVC // Using Microsoft Visual C++ compiler
106
#    define _LIBCPP_TOSTRING2(x) #x
107
#    define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x)
108
#    define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x))
109
#  endif
110
#  // If mingw not explicitly detected, assume using MS C runtime only.
111
#  ifndef __MINGW32__
112
#    define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library
113
#  endif
114
#endif  // _WIN32
115

    
116
#ifdef __sun__
117
# include <sys/isa_defs.h>
118
# ifdef _LITTLE_ENDIAN
119
#   define _LIBCPP_LITTLE_ENDIAN 1
120
#   define _LIBCPP_BIG_ENDIAN    0
121
# else
122
#   define _LIBCPP_LITTLE_ENDIAN 0
123
#   define _LIBCPP_BIG_ENDIAN    1
124
# endif
125
#endif // __sun__
126

    
127
#if defined(__CloudABI__)
128
  // Certain architectures provide arc4random(). Prefer using
129
  // arc4random() over /dev/{u,}random to make it possible to obtain
130
  // random data even when using sandboxing mechanisms such as chroots,
131
  // Capsicum, etc.
132
# define _LIBCPP_USING_ARC4_RANDOM
133
#elif defined(__native_client__)
134
  // NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access,
135
  // including accesses to the special files under /dev. C++11's
136
  // std::random_device is instead exposed through a NaCl syscall.
137
# define _LIBCPP_USING_NACL_RANDOM
138
#elif defined(_WIN32)
139
# define _LIBCPP_USING_WIN32_RANDOM
140
#else
141
# define _LIBCPP_USING_DEV_RANDOM
142
#endif
143

    
144
#if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN)
145
# include <endian.h>
146
# if __BYTE_ORDER == __LITTLE_ENDIAN
147
#  define _LIBCPP_LITTLE_ENDIAN 1
148
#  define _LIBCPP_BIG_ENDIAN    0
149
# elif __BYTE_ORDER == __BIG_ENDIAN
150
#  define _LIBCPP_LITTLE_ENDIAN 0
151
#  define _LIBCPP_BIG_ENDIAN    1
152
# else  // __BYTE_ORDER == __BIG_ENDIAN
153
#  error unable to determine endian
154
# endif
155
#endif  // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN)
156

    
157
#ifdef _WIN32
158

    
159
// only really useful for a DLL
160
#ifdef _LIBCPP_DLL // this should be a compiler builtin define ideally...
161
# ifdef cxx_EXPORTS
162
#  define _LIBCPP_HIDDEN
163
#  define _LIBCPP_FUNC_VIS __declspec(dllexport)
164
#  define _LIBCPP_TYPE_VIS __declspec(dllexport)
165
# else
166
#  define _LIBCPP_HIDDEN
167
#  define _LIBCPP_FUNC_VIS __declspec(dllimport)
168
#  define _LIBCPP_TYPE_VIS __declspec(dllimport)
169
# endif
170
#else
171
# define _LIBCPP_HIDDEN
172
# define _LIBCPP_FUNC_VIS
173
# define _LIBCPP_TYPE_VIS
174
#endif
175

    
176
#define _LIBCPP_TYPE_VIS_ONLY
177
#define _LIBCPP_FUNC_VIS_ONLY
178

    
179
#ifndef _LIBCPP_INLINE_VISIBILITY
180
# ifdef _LIBCPP_MSVC
181
#  define _LIBCPP_INLINE_VISIBILITY __forceinline
182
# else // MinGW GCC and Clang
183
#  define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__))
184
# endif
185
#endif
186

    
187
#ifndef _LIBCPP_EXCEPTION_ABI
188
#define _LIBCPP_EXCEPTION_ABI _LIBCPP_TYPE_VIS
189
#endif
190

    
191
#ifndef _LIBCPP_ALWAYS_INLINE
192
# ifdef _LIBCPP_MSVC
193
#  define _LIBCPP_ALWAYS_INLINE __forceinline
194
# endif
195
#endif
196

    
197
#endif // _WIN32
198

    
199
#ifndef _LIBCPP_HIDDEN
200
#define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden")))
201
#endif
202

    
203
#ifndef _LIBCPP_FUNC_VIS
204
#define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default")))
205
#endif
206

    
207
#ifndef _LIBCPP_TYPE_VIS
208
#  if __has_attribute(__type_visibility__)
209
#    define _LIBCPP_TYPE_VIS __attribute__ ((__type_visibility__("default")))
210
#  else
211
#    define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default")))
212
#  endif
213
#endif
214

    
215
#ifndef _LIBCPP_TYPE_VIS_ONLY
216
# define _LIBCPP_TYPE_VIS_ONLY _LIBCPP_TYPE_VIS
217
#endif
218

    
219
#ifndef _LIBCPP_FUNC_VIS_ONLY
220
# define _LIBCPP_FUNC_VIS_ONLY _LIBCPP_FUNC_VIS
221
#endif
222

    
223
#ifndef _LIBCPP_INLINE_VISIBILITY
224
#define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__))
225
#endif
226

    
227
#ifndef _LIBCPP_EXCEPTION_ABI
228
#define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default")))
229
#endif
230

    
231
#ifndef _LIBCPP_ALWAYS_INLINE
232
#define _LIBCPP_ALWAYS_INLINE  __attribute__ ((__visibility__("hidden"), __always_inline__))
233
#endif
234

    
235
#if defined(__clang__)
236

    
237
#if defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) &&        \
238
    !defined(__arm__)
239
#define _LIBCPP_ALTERNATE_STRING_LAYOUT
240
#endif
241

    
242
#if __has_feature(cxx_alignas)
243
#  define _ALIGNAS_TYPE(x) alignas(x)
244
#  define _ALIGNAS(x) alignas(x)
245
#else
246
#  define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x))))
247
#  define _ALIGNAS(x) __attribute__((__aligned__(x)))
248
#endif
249

    
250
#if !__has_feature(cxx_alias_templates)
251
#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
252
#endif
253

    
254
#if __cplusplus < 201103L
255
typedef __char16_t char16_t;
256
typedef __char32_t char32_t;
257
#endif
258

    
259
#if !(__has_feature(cxx_exceptions))
260
#define _LIBCPP_NO_EXCEPTIONS
261
#endif
262

    
263
#if !(__has_feature(cxx_rtti))
264
#define _LIBCPP_NO_RTTI
265
#endif
266

    
267
#if !(__has_feature(cxx_strong_enums))
268
#define _LIBCPP_HAS_NO_STRONG_ENUMS
269
#endif
270

    
271
#if !(__has_feature(cxx_decltype))
272
#define _LIBCPP_HAS_NO_DECLTYPE
273
#endif
274

    
275
#if __has_feature(cxx_attributes)
276
#  define _LIBCPP_NORETURN [[noreturn]]
277
#else
278
#  define _LIBCPP_NORETURN __attribute__ ((noreturn))
279
#endif
280

    
281
#define _LIBCPP_UNUSED __attribute__((__unused__))
282

    
283
#if !(__has_feature(cxx_defaulted_functions))
284
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
285
#endif  // !(__has_feature(cxx_defaulted_functions))
286

    
287
#if !(__has_feature(cxx_deleted_functions))
288
#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
289
#endif  // !(__has_feature(cxx_deleted_functions))
290

    
291
#if !(__has_feature(cxx_lambdas))
292
#define _LIBCPP_HAS_NO_LAMBDAS
293
#endif
294

    
295
#if !(__has_feature(cxx_nullptr))
296
#define _LIBCPP_HAS_NO_NULLPTR
297
#endif
298

    
299
#if !(__has_feature(cxx_rvalue_references))
300
#define _LIBCPP_HAS_NO_RVALUE_REFERENCES
301
#endif
302

    
303
#if !(__has_feature(cxx_static_assert))
304
#define _LIBCPP_HAS_NO_STATIC_ASSERT
305
#endif
306

    
307
#if !(__has_feature(cxx_auto_type))
308
#define _LIBCPP_HAS_NO_AUTO_TYPE
309
#endif
310

    
311
#if !(__has_feature(cxx_access_control_sfinae)) || !__has_feature(cxx_trailing_return)
312
#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
313
#endif
314

    
315
#if !(__has_feature(cxx_variadic_templates))
316
#define _LIBCPP_HAS_NO_VARIADICS
317
#endif
318

    
319
#if !(__has_feature(cxx_trailing_return))
320
#define _LIBCPP_HAS_NO_TRAILING_RETURN
321
#endif
322

    
323
#if !(__has_feature(cxx_generalized_initializers))
324
#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
325
#endif
326

    
327
#if __has_feature(is_base_of)
328
#  define _LIBCPP_HAS_IS_BASE_OF
329
#endif
330

    
331
#if __has_feature(is_final)
332
#  define _LIBCPP_HAS_IS_FINAL
333
#endif
334

    
335
// Objective-C++ features (opt-in)
336
#if __has_feature(objc_arc)
337
#define _LIBCPP_HAS_OBJC_ARC
338
#endif
339

    
340
#if __has_feature(objc_arc_weak)
341
#define _LIBCPP_HAS_OBJC_ARC_WEAK
342
#define _LIBCPP_HAS_NO_STRONG_ENUMS
343
#endif
344

    
345
#if !(__has_feature(cxx_constexpr))
346
#define _LIBCPP_HAS_NO_CONSTEXPR
347
#endif
348

    
349
#if !(__has_feature(cxx_relaxed_constexpr))
350
#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
351
#endif
352

    
353
#if !(__has_feature(cxx_variable_templates))
354
#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
355
#endif
356

    
357
#if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L
358
#if defined(__FreeBSD__)
359
#define _LIBCPP_HAS_QUICK_EXIT
360
#define _LIBCPP_HAS_C11_FEATURES
361
#elif defined(__ANDROID__)
362
#define _LIBCPP_HAS_QUICK_EXIT
363
#elif defined(__linux__)
364
#include <features.h>
365
#if __GLIBC_PREREQ(2, 15)
366
#define _LIBCPP_HAS_QUICK_EXIT
367
#endif
368
#if __GLIBC_PREREQ(2, 17)
369
#define _LIBCPP_HAS_C11_FEATURES
370
#endif
371
#endif
372
#endif
373

    
374
#if (__has_feature(cxx_noexcept))
375
#  define _NOEXCEPT noexcept
376
#  define _NOEXCEPT_(x) noexcept(x)
377
#  define _NOEXCEPT_OR_FALSE(x) noexcept(x)
378
#else
379
#  define _NOEXCEPT throw()
380
#  define _NOEXCEPT_(x)
381
#  define _NOEXCEPT_OR_FALSE(x) false
382
#endif
383

    
384
#if __has_feature(underlying_type)
385
#  define _LIBCPP_UNDERLYING_TYPE(T) __underlying_type(T)
386
#endif
387

    
388
#if __has_feature(is_literal)
389
#  define _LIBCPP_IS_LITERAL(T) __is_literal(T)
390
#endif
391

    
392
// Inline namespaces are available in Clang regardless of C++ dialect.
393
#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE {
394
#define _LIBCPP_END_NAMESPACE_STD  } }
395
#define _VSTD std::_LIBCPP_NAMESPACE
396

    
397
namespace std {
398
  inline namespace _LIBCPP_NAMESPACE {
399
  }
400
}
401

    
402
#if !defined(_LIBCPP_HAS_NO_ASAN) && !__has_feature(address_sanitizer)
403
#define _LIBCPP_HAS_NO_ASAN
404
#endif
405

    
406
#elif defined(__GNUC__)
407

    
408
#define _ALIGNAS(x) __attribute__((__aligned__(x)))
409
#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x))))
410

    
411
#define _LIBCPP_NORETURN __attribute__((noreturn))
412

    
413
#define _LIBCPP_UNUSED __attribute__((__unused__))
414

    
415
#if _GNUC_VER >= 407
416
#define _LIBCPP_UNDERLYING_TYPE(T) __underlying_type(T)
417
#define _LIBCPP_IS_LITERAL(T) __is_literal_type(T)
418
#define _LIBCPP_HAS_IS_FINAL
419
#endif
420

    
421
#if defined(__GNUC__) && _GNUC_VER >= 403
422
#  define _LIBCPP_HAS_IS_BASE_OF
423
#endif
424

    
425
#if !__EXCEPTIONS
426
#define _LIBCPP_NO_EXCEPTIONS
427
#endif
428

    
429
#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
430

    
431
// constexpr was added to GCC in 4.6.
432
#if _GNUC_VER < 406
433
#define _LIBCPP_HAS_NO_CONSTEXPR
434
// Can only use constexpr in c++11 mode.
435
#elif !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L
436
#define _LIBCPP_HAS_NO_CONSTEXPR
437
#endif
438

    
439
// No version of GCC supports relaxed constexpr rules
440
#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
441
// GCC 5 will support variable templates
442
#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
443

    
444
#define _NOEXCEPT throw()
445
#define _NOEXCEPT_(x)
446
#define _NOEXCEPT_OR_FALSE(x) false
447

    
448
#ifndef __GXX_EXPERIMENTAL_CXX0X__
449

    
450
#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
451
#define _LIBCPP_HAS_NO_DECLTYPE
452
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
453
#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
454
#define _LIBCPP_HAS_NO_NULLPTR
455
#define _LIBCPP_HAS_NO_STATIC_ASSERT
456
#define _LIBCPP_HAS_NO_UNICODE_CHARS
457
#define _LIBCPP_HAS_NO_VARIADICS
458
#define _LIBCPP_HAS_NO_RVALUE_REFERENCES
459
#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS
460
#define _LIBCPP_HAS_NO_STRONG_ENUMS
461

    
462
#else  // __GXX_EXPERIMENTAL_CXX0X__
463

    
464
#define _LIBCPP_HAS_NO_TRAILING_RETURN
465
#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS
466

    
467
#if _GNUC_VER < 403
468
#define _LIBCPP_HAS_NO_RVALUE_REFERENCES
469
#endif
470

    
471
#if _GNUC_VER < 403
472
#define _LIBCPP_HAS_NO_STATIC_ASSERT
473
#endif
474

    
475
#if _GNUC_VER < 404
476
#define _LIBCPP_HAS_NO_DECLTYPE
477
#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
478
#define _LIBCPP_HAS_NO_UNICODE_CHARS
479
#define _LIBCPP_HAS_NO_VARIADICS
480
#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
481
#endif  // _GNUC_VER < 404
482

    
483
#if _GNUC_VER < 406
484
#define _LIBCPP_HAS_NO_NULLPTR
485
#endif
486

    
487
#if _GNUC_VER < 407
488
#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
489
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
490
#endif
491

    
492
#endif  // __GXX_EXPERIMENTAL_CXX0X__
493

    
494
#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { namespace _LIBCPP_NAMESPACE {
495
#define _LIBCPP_END_NAMESPACE_STD  } }
496
#define _VSTD std::_LIBCPP_NAMESPACE
497

    
498
namespace std {
499
namespace _LIBCPP_NAMESPACE {
500
}
501
using namespace _LIBCPP_NAMESPACE __attribute__((__strong__));
502
}
503

    
504
#if !defined(_LIBCPP_HAS_NO_ASAN) && !defined(__SANITIZE_ADDRESS__)
505
#define _LIBCPP_HAS_NO_ASAN
506
#endif
507

    
508
#elif defined(_LIBCPP_MSVC)
509

    
510
#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
511
#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
512
#define _LIBCPP_HAS_NO_CONSTEXPR
513
#define _LIBCPP_HAS_NO_CXX14_CONSTEXPR
514
#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
515
#define _LIBCPP_HAS_NO_UNICODE_CHARS
516
#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
517
#define _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
518
#define __alignof__ __alignof
519
#define _LIBCPP_NORETURN __declspec(noreturn)
520
#define _LIBCPP_UNUSED
521
#define _ALIGNAS(x) __declspec(align(x))
522
#define _LIBCPP_HAS_NO_VARIADICS
523

    
524
#define _NOEXCEPT throw ()
525
#define _NOEXCEPT_(x)
526
#define _NOEXCEPT_OR_FALSE(x) false
527

    
528
#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {
529
#define _LIBCPP_END_NAMESPACE_STD  }
530
#define _VSTD std
531

    
532
#  define _LIBCPP_WEAK
533
namespace std {
534
}
535

    
536
#define _LIBCPP_HAS_NO_ASAN
537

    
538
#elif defined(__IBMCPP__)
539

    
540
#define _ALIGNAS(x) __attribute__((__aligned__(x)))
541
#define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x))))
542
#define _ATTRIBUTE(x) __attribute__((x))
543
#define _LIBCPP_NORETURN __attribute__((noreturn))
544
#define _LIBCPP_UNUSED
545

    
546
#define _NOEXCEPT throw()
547
#define _NOEXCEPT_(x)
548
#define _NOEXCEPT_OR_FALSE(x) false
549

    
550
#define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
551
#define _LIBCPP_HAS_NO_ADVANCED_SFINAE
552
#define _LIBCPP_HAS_NO_ALWAYS_INLINE_VARIADICS
553
#define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS
554
#define _LIBCPP_HAS_NO_NULLPTR
555
#define _LIBCPP_HAS_NO_UNICODE_CHARS
556
#define _LIBCPP_HAS_IS_BASE_OF
557
#define _LIBCPP_HAS_IS_FINAL
558
#define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES
559

    
560
#if defined(_AIX)
561
#define __MULTILOCALE_API
562
#endif
563

    
564
#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE {
565
#define _LIBCPP_END_NAMESPACE_STD  } }
566
#define _VSTD std::_LIBCPP_NAMESPACE
567

    
568
namespace std {
569
  inline namespace _LIBCPP_NAMESPACE {
570
  }
571
}
572

    
573
#define _LIBCPP_HAS_NO_ASAN
574

    
575
#endif // __clang__ || __GNUC__ || _MSC_VER || __IBMCPP__
576

    
577
#ifdef _LIBCPP_HAS_NO_UNICODE_CHARS
578
typedef unsigned short char16_t;
579
typedef unsigned int   char32_t;
580
#endif  // _LIBCPP_HAS_NO_UNICODE_CHARS
581

    
582
#ifndef __SIZEOF_INT128__
583
#define _LIBCPP_HAS_NO_INT128
584
#endif
585

    
586
#ifdef _LIBCPP_HAS_NO_STATIC_ASSERT
587

    
588
template <bool> struct __static_assert_test;
589
template <> struct __static_assert_test<true> {};
590
template <unsigned> struct __static_assert_check {};
591
#define static_assert(__b, __m) \
592
    typedef __static_assert_check<sizeof(__static_assert_test<(__b)>)> \
593
    _LIBCPP_CONCAT(__t, __LINE__)
594

    
595
#endif  // _LIBCPP_HAS_NO_STATIC_ASSERT
596

    
597
#ifdef _LIBCPP_HAS_NO_DECLTYPE
598
// GCC 4.6 provides __decltype in all standard modes.
599
#if !__is_identifier(__decltype) || _GNUC_VER >= 406
600
#  define decltype(__x) __decltype(__x)
601
#else
602
#  define decltype(__x) __typeof__(__x)
603
#endif
604
#endif
605

    
606
#ifdef _LIBCPP_HAS_NO_CONSTEXPR
607
#define _LIBCPP_CONSTEXPR
608
#else
609
#define _LIBCPP_CONSTEXPR constexpr
610
#endif
611

    
612
#ifdef _LIBCPP_HAS_NO_DEFAULTED_FUNCTIONS
613
#define _LIBCPP_DEFAULT {}
614
#else
615
#define _LIBCPP_DEFAULT = default;
616
#endif
617

    
618
#ifdef __GNUC__
619
#define _NOALIAS __attribute__((__malloc__))
620
#else
621
#define _NOALIAS
622
#endif
623

    
624
#if __has_feature(cxx_explicit_conversions) || defined(__IBMCPP__)
625
#   define _LIBCPP_EXPLICIT explicit
626
#else
627
#   define _LIBCPP_EXPLICIT
628
#endif
629

    
630
#if !__has_builtin(__builtin_operator_new) || !__has_builtin(__builtin_operator_delete)
631
#   define _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE
632
#endif
633

    
634
#ifdef _LIBCPP_HAS_NO_STRONG_ENUMS
635
#define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_TYPE_VIS x { enum __lx
636
#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \
637
    __lx __v_; \
638
    _LIBCPP_ALWAYS_INLINE x(__lx __v) : __v_(__v) {} \
639
    _LIBCPP_ALWAYS_INLINE explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \
640
    _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \
641
    };
642
#else  // _LIBCPP_HAS_NO_STRONG_ENUMS
643
#define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_TYPE_VIS x
644
#define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x)
645
#endif  // _LIBCPP_HAS_NO_STRONG_ENUMS
646

    
647
#ifdef _LIBCPP_DEBUG
648
#   if _LIBCPP_DEBUG == 0
649
#       define _LIBCPP_DEBUG_LEVEL 1
650
#   elif _LIBCPP_DEBUG == 1
651
#       define _LIBCPP_DEBUG_LEVEL 2
652
#   else
653
#       error Supported values for _LIBCPP_DEBUG are 0 and 1
654
#   endif
655
#   define _LIBCPP_EXTERN_TEMPLATE(...)
656
#endif
657

    
658
#ifndef _LIBCPP_EXTERN_TEMPLATE
659
#define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__;
660
#endif
661

    
662
#ifndef _LIBCPP_EXTERN_TEMPLATE2
663
#define _LIBCPP_EXTERN_TEMPLATE2(...) extern template __VA_ARGS__;
664
#endif
665

    
666
#if defined(__APPLE__) && defined(__LP64__) && !defined(__x86_64__)
667
#define _LIBCPP_NONUNIQUE_RTTI_BIT (1ULL << 63)
668
#endif
669

    
670
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(_WIN32) || \
671
    defined(__sun__) || defined(__NetBSD__) || defined(__CloudABI__) || defined(__minix)
672
#define _LIBCPP_LOCALE__L_EXTENSIONS 1
673
#endif
674

    
675
#if !defined(_WIN32) && !defined(__ANDROID__) && !defined(_NEWLIB_VERSION) && \
676
    !defined(__CloudABI__)
677
#define _LIBCPP_HAS_CATOPEN 1
678
#endif
679

    
680
#ifdef __FreeBSD__
681
#define _DECLARE_C99_LDBL_MATH 1
682
#endif
683

    
684
#if defined(__APPLE__) || defined(__FreeBSD__)
685
#define _LIBCPP_HAS_DEFAULTRUNELOCALE
686
#endif
687

    
688
#if defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__)
689
#define _LIBCPP_WCTYPE_IS_MASK
690
#endif
691

    
692
#ifndef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR
693
#  define _LIBCPP_TRIVIAL_PAIR_COPY_CTOR 1
694
#endif
695

    
696
#ifndef _LIBCPP_STD_VER
697
#  if  __cplusplus <= 201103L
698
#    define _LIBCPP_STD_VER 11
699
#  elif __cplusplus <= 201402L
700
#    define _LIBCPP_STD_VER 14
701
#  else
702
#    define _LIBCPP_STD_VER 15  // current year, or date of c++17 ratification
703
#  endif
704
#endif  // _LIBCPP_STD_VER
705

    
706
#if _LIBCPP_STD_VER > 11
707
#define _LIBCPP_DEPRECATED [[deprecated]]
708
#else
709
#define _LIBCPP_DEPRECATED
710
#endif
711

    
712
#if _LIBCPP_STD_VER <= 11
713
#define _LIBCPP_EXPLICIT_AFTER_CXX11
714
#define _LIBCPP_DEPRECATED_AFTER_CXX11
715
#else
716
#define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit
717
#define _LIBCPP_DEPRECATED_AFTER_CXX11 [[deprecated]]
718
#endif
719

    
720
#if _LIBCPP_STD_VER > 11 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR)
721
#define _LIBCPP_CONSTEXPR_AFTER_CXX11 constexpr
722
#else
723
#define _LIBCPP_CONSTEXPR_AFTER_CXX11
724
#endif
725

    
726
#ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES
727
#  define _LIBCPP_EXPLICIT_MOVE(x) _VSTD::move(x)
728
#else
729
#  define _LIBCPP_EXPLICIT_MOVE(x) (x)
730
#endif
731

    
732
#ifndef _LIBCPP_HAS_NO_ASAN
733
extern "C" void __sanitizer_annotate_contiguous_container(
734
  const void *, const void *, const void *, const void *);
735
#endif
736

    
737
// Try to find out if RTTI is disabled.
738
// g++ and cl.exe have RTTI on by default and define a macro when it is.
739
// g++ only defines the macro in 4.3.2 and onwards.
740
#if !defined(_LIBCPP_NO_RTTI)
741
#  if defined(__GNUG__) && ((__GNUC__ >= 5) || (__GNUC__ == 4 && \
742
   (__GNUC_MINOR__ >= 3 || __GNUC_PATCHLEVEL__ >= 2))) && !defined(__GXX_RTTI)
743
#    define _LIBCPP_NO_RTTI
744
#  elif (defined(_MSC_VER) && !defined(__clang__)) && !defined(_CPPRTTI)
745
#    define _LIBCPP_NO_RTTI
746
#  endif
747
#endif
748

    
749
#ifndef _LIBCPP_WEAK
750
#  define _LIBCPP_WEAK __attribute__((__weak__))
751
#endif
752

    
753
#if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) && !defined(_LIBCPP_HAS_NO_THREADS)
754
#  error _LIBCPP_HAS_NO_MONOTONIC_CLOCK may only be defined when \
755
         _LIBCPP_HAS_NO_THREADS is defined.
756
#endif
757

    
758
// Systems that use capability-based security (FreeBSD with Capsicum,
759
// Nuxi CloudABI) may only provide local filesystem access (using *at()).
760
// Functions like open(), rename(), unlink() and stat() should not be
761
// used, as they attempt to access the global filesystem namespace.
762
#ifdef __CloudABI__
763
#define _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE
764
#endif
765

    
766
// CloudABI is intended for running networked services. Processes do not
767
// have standard input and output channels.
768
#ifdef __CloudABI__
769
#define _LIBCPP_HAS_NO_STDIN
770
#define _LIBCPP_HAS_NO_STDOUT
771
#endif
772

    
773
#if defined(__ANDROID__) || defined(__CloudABI__)
774
#define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE
775
#endif
776

    
777
// Thread-unsafe functions such as strtok(), mbtowc() and localtime()
778
// are not available.
779
#ifdef __CloudABI__
780
#define _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS
781
#endif
782

    
783
#if __has_extension(c_atomic)
784
#define _LIBCPP_HAS_C_ATOMIC_IMP
785
#elif _GNUC_VER > 407
786
#define _LIBCPP_HAS_GCC_ATOMIC_IMP
787
#endif
788

    
789
#if (!defined(_LIBCPP_HAS_C_ATOMIC_IMP) && !defined(_LIBCPP_HAS_GCC_ATOMIC_IMP)) \
790
     || defined(_LIBCPP_HAS_NO_THREADS)
791
#define _LIBCPP_HAS_NO_ATOMIC_HEADER
792
#endif
793

    
794
#endif // _LIBCPP_CONFIG