Created
June 7, 2017 17:36
-
-
Save EricWF/ca017912f403db1959b3f3882ecd71b2 to your computer and use it in GitHub Desktop.
This file has been truncated, but you can view the full file.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # 1 "<built-in>" | |
| # 1 "dialect_support.sh.cpp" | |
| // -*- C++ -*- | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| // REQUIRES: fcoroutines-ts | |
| // RUN: %build -fcoroutines-ts | |
| // RUN: %run | |
| // A simple "breathing" test that checks that <experimental/coroutine> | |
| // can be parsed and used in all dialects, including C++03 in order to match | |
| // Clang's behavior. | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <experimental/coroutine> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 20 "dialect_support.sh.cpp" | |
| # 1 "/usr/local/bin/../include/c++/v1/experimental/coroutine" 1 3 | |
| // -*- C++ -*- | |
| //===----------------------------- coroutine -----------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_EXPERIMENTAL_COROUTINE | |
| #define _LIBCPP_EXPERIMENTAL_COROUTINE | |
| /** | |
| experimental/coroutine synopsis | |
| // C++next | |
| namespace std { | |
| namespace experimental { | |
| inline namespace coroutines_v1 { | |
| // 18.11.1 coroutine traits | |
| template <typename R, typename... ArgTypes> | |
| class coroutine_traits; | |
| // 18.11.2 coroutine handle | |
| template <typename Promise = void> | |
| class coroutine_handle; | |
| // 18.11.2.7 comparison operators: | |
| bool operator==(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; | |
| bool operator!=(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; | |
| bool operator<(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; | |
| bool operator<=(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; | |
| bool operator>=(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; | |
| bool operator>(coroutine_handle<> x, coroutine_handle<> y) _NOEXCEPT; | |
| // 18.11.3 trivial awaitables | |
| struct suspend_never; | |
| struct suspend_always; | |
| // 18.11.2.8 hash support: | |
| template <class T> struct hash; | |
| template <class P> struct hash<coroutine_handle<P>>; | |
| } // namespace coroutines_v1 | |
| } // namespace experimental | |
| } // namespace std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <experimental/__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 49 "/usr/local/bin/../include/c++/v1/experimental/coroutine" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/experimental/__config" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- __config ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_EXPERIMENTAL_CONFIG | |
| #define _LIBCPP_EXPERIMENTAL_CONFIG | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 14 "/usr/local/bin/../include/c++/v1/experimental/__config" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/__config" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- __config ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_CONFIG | |
| #define _LIBCPP_CONFIG | |
| #if defined(_MSC_VER) && !defined(__clang__) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER | |
| #endif | |
| # 18 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 19 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 22 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 23 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __cplusplus | |
| #ifdef __GNUC__ | |
| #define _GNUC_VER (__GNUC__ * 100 + __GNUC_MINOR__) | |
| // The _GNUC_VER_NEW macro better represents the new GCC versioning scheme | |
| // introduced in GCC 5.0. | |
| #define _GNUC_VER_NEW (_GNUC_VER * 10 + __GNUC_PATCHLEVEL__) | |
| #else | |
| # 32 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _GNUC_VER 0 | |
| #define _GNUC_VER_NEW 0 | |
| #endif | |
| # 35 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_VERSION 5000 | |
| #ifndef _LIBCPP_ABI_VERSION | |
| #define _LIBCPP_ABI_VERSION 1 | |
| #endif | |
| # 41 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__ELF__) | |
| #define _LIBCPP_OBJECT_FORMAT_ELF 1 | |
| #elif defined(__MACH__) | |
| # 45 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_OBJECT_FORMAT_MACHO 1 | |
| #elif defined(_WIN32) | |
| # 47 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_OBJECT_FORMAT_COFF 1 | |
| #else | |
| # 49 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #error Unknown object file format | |
| #endif | |
| # 51 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_ABI_UNSTABLE) || _LIBCPP_ABI_VERSION >= 2 | |
| // Change short string representation so that string data starts at offset 0, | |
| // improving its alignment in some cases. | |
| #define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT | |
| // Fix deque iterator type in order to support incomplete types. | |
| #define _LIBCPP_ABI_INCOMPLETE_TYPES_IN_DEQUE | |
| // Fix undefined behavior in how std::list stores it's linked nodes. | |
| #define _LIBCPP_ABI_LIST_REMOVE_NODE_POINTER_UB | |
| // Fix undefined behavior in how __tree stores its end and parent nodes. | |
| #define _LIBCPP_ABI_TREE_REMOVE_NODE_POINTER_UB | |
| // Fix undefined behavior in how __hash_table stores it's pointer types | |
| #define _LIBCPP_ABI_FIX_UNORDERED_NODE_POINTER_UB | |
| #define _LIBCPP_ABI_FORWARD_LIST_REMOVE_NODE_POINTER_UB | |
| #define _LIBCPP_ABI_FIX_UNORDERED_CONTAINER_SIZE_TYPE | |
| // Don't use a nullptr_t simulation type in C++03 instead using C++11 nullptr | |
| // provided under the alternate keyword __nullptr, which changes the mangling | |
| // of nullptr_t. This option is ABI incompatible with GCC in C++03 mode. | |
| #define _LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR | |
| // Define the `pointer_safety` enum as a C++11 strongly typed enumeration | |
| // instead of as a class simulating an enum. If this option is enabled | |
| // `pointer_safety` and `get_pointer_safety()` will no longer be available | |
| // in C++03. | |
| #define _LIBCPP_ABI_POINTER_SAFETY_ENUM_TYPE | |
| // Define a key function for `bad_function_call` in the library, to centralize | |
| // its vtable and typeinfo to libc++ rather than having all other libraries | |
| // using that class define their own copies. | |
| #define _LIBCPP_ABI_BAD_FUNCTION_CALL_KEY_FUNCTION | |
| #elif _LIBCPP_ABI_VERSION == 1 | |
| # 80 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !defined(_LIBCPP_OBJECT_FORMAT_COFF) | |
| // Enable compiling copies of now inline methods into the dylib to support | |
| // applications compiled against older libraries. This is unnecessary with | |
| // COFF dllexport semantics, since dllexport forces a non-inline definition | |
| // of inline functions to be emitted anyway. Our own non-inline copy would | |
| // conflict with the dllexport-emitted copy, so we disable it. | |
| #define _LIBCPP_DEPRECATED_ABI_LEGACY_LIBRARY_DEFINITIONS_FOR_INLINE_FUNCTIONS | |
| #endif | |
| # 88 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Feature macros for disabling pre ABI v1 features. All of these options | |
| // are deprecated. | |
| #if defined(__FreeBSD__) | |
| #define _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR | |
| #endif | |
| # 93 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 94 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_TRIVIAL_PAIR_COPY_CTOR | |
| #error "_LIBCPP_TRIVIAL_PAIR_COPY_CTOR" is no longer supported. \ | |
| use _LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR instead | |
| #endif | |
| # 99 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_X##_LIBCPP_Y | |
| #define _LIBCPP_CONCAT(_LIBCPP_X,_LIBCPP_Y) _LIBCPP_CONCAT1(_LIBCPP_X,_LIBCPP_Y) | |
| #define _LIBCPP_NAMESPACE _LIBCPP_CONCAT(__,_LIBCPP_ABI_VERSION) | |
| #if __cplusplus < 201103L | |
| #define _LIBCPP_CXX03_LANG | |
| #endif | |
| # 108 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef __has_attribute | |
| #define __has_attribute(__x) 0 | |
| #endif | |
| # 112 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef __has_builtin | |
| #define __has_builtin(__x) 0 | |
| #endif | |
| # 115 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef __has_extension | |
| #define __has_extension(__x) 0 | |
| #endif | |
| # 118 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef __has_feature | |
| #define __has_feature(__x) 0 | |
| #endif | |
| # 121 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // '__is_identifier' returns '0' if '__x' is a reserved identifier provided by | |
| // the compiler and '1' otherwise. | |
| #ifndef __is_identifier | |
| #define __is_identifier(__x) 1 | |
| #endif | |
| # 126 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef __has_declspec_attribute | |
| #define __has_declspec_attribute(__x) 0 | |
| #endif | |
| # 129 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define __has_keyword(__x) !(__is_identifier(__x)) | |
| #ifdef __has_include | |
| #define __libcpp_has_include(__x) __has_include(__x) | |
| #else | |
| # 135 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define __libcpp_has_include(__x) 0 | |
| #endif | |
| # 137 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__clang__) | |
| #define _LIBCPP_COMPILER_CLANG | |
| # ifndef __apple_build_version__ | |
| # define _LIBCPP_CLANG_VER (__clang_major__ * 100 + __clang_minor__) | |
| # endif | |
| # 143 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #elif defined(__GNUC__) | |
| # 144 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_COMPILER_GCC | |
| #elif defined(_MSC_VER) | |
| # 146 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_COMPILER_MSVC | |
| #elif defined(__IBMCPP__) | |
| # 148 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_COMPILER_IBM | |
| #endif | |
| # 150 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_CLANG_VER | |
| #define _LIBCPP_CLANG_VER 0 | |
| #endif | |
| # 154 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // FIXME: ABI detection should be done via compiler builtin macros. This | |
| // is just a placeholder until Clang implements such macros. For now assume | |
| // that Windows compilers pretending to be MSVC++ target the microsoft ABI. | |
| #if defined(_WIN32) && defined(_MSC_VER) | |
| # define _LIBCPP_ABI_MICROSOFT | |
| #else | |
| # 161 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_ABI_ITANIUM | |
| #endif | |
| # 163 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Need to detect which libc we're using if we're on Linux. | |
| #if defined(__linux__) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 166 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # 1 "/usr/include/features.h" 1 3 4 | |
| /* Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _FEATURES_H | |
| #define _FEATURES_H 1 | |
| /* These are defined by the user (or the compiler) | |
| to specify the desired environment: | |
| __STRICT_ANSI__ ISO Standard C. | |
| _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. | |
| _ISOC11_SOURCE Extensions to ISO C99 from ISO C11. | |
| _POSIX_SOURCE IEEE Std 1003.1. | |
| _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; | |
| if >=199309L, add IEEE Std 1003.1b-1993; | |
| if >=199506L, add IEEE Std 1003.1c-1995; | |
| if >=200112L, all of IEEE 1003.1-2004 | |
| if >=200809L, all of IEEE 1003.1-2008 | |
| _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if | |
| Single Unix conformance is wanted, to 600 for the | |
| sixth revision, to 700 for the seventh revision. | |
| _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. | |
| _LARGEFILE_SOURCE Some more functions for correct standard I/O. | |
| _LARGEFILE64_SOURCE Additional functionality from LFS for large files. | |
| _FILE_OFFSET_BITS=N Select default filesystem interface. | |
| _ATFILE_SOURCE Additional *at interfaces. | |
| _GNU_SOURCE All of the above, plus GNU extensions. | |
| _DEFAULT_SOURCE The default set of features (taking precedence over | |
| __STRICT_ANSI__). | |
| _REENTRANT Select additionally reentrant object. | |
| _THREAD_SAFE Same as _REENTRANT, often used by other systems. | |
| _FORTIFY_SOURCE If set to numeric value > 0 additional security | |
| measures are defined, according to level. | |
| The `-ansi' switch to the GNU C compiler, and standards conformance | |
| options such as `-std=c99', define __STRICT_ANSI__. If none of | |
| these are defined, or if _DEFAULT_SOURCE is defined, the default is | |
| to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to | |
| 200809L, as well as enabling miscellaneous functions from BSD and | |
| SVID. If more than one of these are defined, they accumulate. For | |
| example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together | |
| give you ISO C, 1003.1, and 1003.2, but nothing else. | |
| These are defined by this file and are used by the | |
| header files to decide what to declare or define: | |
| __USE_ISOC11 Define ISO C11 things. | |
| __USE_ISOC99 Define ISO C99 things. | |
| __USE_ISOC95 Define ISO C90 AMD1 (C95) things. | |
| __USE_POSIX Define IEEE Std 1003.1 things. | |
| __USE_POSIX2 Define IEEE Std 1003.2 things. | |
| __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. | |
| __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. | |
| __USE_XOPEN Define XPG things. | |
| __USE_XOPEN_EXTENDED Define X/Open Unix things. | |
| __USE_UNIX98 Define Single Unix V2 things. | |
| __USE_XOPEN2K Define XPG6 things. | |
| __USE_XOPEN2KXSI Define XPG6 XSI things. | |
| __USE_XOPEN2K8 Define XPG7 things. | |
| __USE_XOPEN2K8XSI Define XPG7 XSI things. | |
| __USE_LARGEFILE Define correct standard I/O things. | |
| __USE_LARGEFILE64 Define LFS things with separate names. | |
| __USE_FILE_OFFSET64 Define 64bit interface as default. | |
| __USE_MISC Define things from 4.3BSD or System V Unix. | |
| __USE_ATFILE Define *at interfaces and AT_* constants for them. | |
| __USE_GNU Define GNU extensions. | |
| __USE_REENTRANT Define reentrant/thread-safe *_r functions. | |
| __USE_FORTIFY_LEVEL Additional security measures used, according to level. | |
| The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are | |
| defined by this file unconditionally. `__GNU_LIBRARY__' is provided | |
| only for compatibility. All new code should use the other symbols | |
| to test for features. | |
| All macros listed above as possibly being defined by this file are | |
| explicitly undefined if they are not explicitly defined. | |
| Feature-test macros that are not defined by the user or compiler | |
| but are implied by the other feature-test macros defined (or by the | |
| lack of any definitions) are defined by the file. */ | |
| /* Undefine everything, so we get a clean slate. */ | |
| #undef __USE_ISOC11 | |
| #undef __USE_ISOC99 | |
| #undef __USE_ISOC95 | |
| #undef __USE_ISOCXX11 | |
| #undef __USE_POSIX | |
| #undef __USE_POSIX2 | |
| #undef __USE_POSIX199309 | |
| #undef __USE_POSIX199506 | |
| #undef __USE_XOPEN | |
| #undef __USE_XOPEN_EXTENDED | |
| #undef __USE_UNIX98 | |
| #undef __USE_XOPEN2K | |
| #undef __USE_XOPEN2KXSI | |
| #undef __USE_XOPEN2K8 | |
| #undef __USE_XOPEN2K8XSI | |
| #undef __USE_LARGEFILE | |
| #undef __USE_LARGEFILE64 | |
| #undef __USE_FILE_OFFSET64 | |
| #undef __USE_MISC | |
| #undef __USE_ATFILE | |
| #undef __USE_GNU | |
| #undef __USE_REENTRANT | |
| #undef __USE_FORTIFY_LEVEL | |
| #undef __KERNEL_STRICT_NAMES | |
| /* Suppress kernel-name space pollution unless user expressedly asks | |
| for it. */ | |
| #ifndef _LOOSE_KERNEL_NAMES | |
| # define __KERNEL_STRICT_NAMES | |
| #endif | |
| # 127 "/usr/include/features.h" 3 4 | |
| /* Convenience macros to test the versions of glibc and gcc. | |
| Use them like this: | |
| #if __GNUC_PREREQ (2,8) | |
| ... code requiring gcc 2.8 or later ... | |
| #endif | |
| Note - they won't work for gcc1 or glibc1, since the _MINOR macros | |
| were not defined then. */ | |
| #if defined __GNUC__ && defined __GNUC_MINOR__ | |
| # define __GNUC_PREREQ(maj, min) \ | |
| ((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min)) | |
| #else | |
| # 139 "/usr/include/features.h" 3 4 | |
| # define __GNUC_PREREQ(maj, min) 0 | |
| #endif | |
| # 141 "/usr/include/features.h" 3 4 | |
| /* _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for | |
| _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not | |
| issue a warning; the expectation is that the source is being | |
| transitioned to use the new macro. */ | |
| #if (defined _BSD_SOURCE || defined _SVID_SOURCE) \ | |
| && !defined _DEFAULT_SOURCE | |
| /* Don't #warn about _BSD_SOURCE || _SVID_SOURCE, as it breaks -Werror | |
| and we don't have time to check/fix everything before vivid release | |
| # warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE" | |
| */ | |
| # undef _DEFAULT_SOURCE | |
| # define _DEFAULT_SOURCE 1 | |
| #endif | |
| # 155 "/usr/include/features.h" 3 4 | |
| /* If _GNU_SOURCE was defined by the user, turn on all the other features. */ | |
| #ifdef _GNU_SOURCE | |
| # undef _ISOC95_SOURCE | |
| # define _ISOC95_SOURCE 1 | |
| # undef _ISOC99_SOURCE | |
| # define _ISOC99_SOURCE 1 | |
| # undef _ISOC11_SOURCE | |
| # define _ISOC11_SOURCE 1 | |
| # undef _POSIX_SOURCE | |
| # define _POSIX_SOURCE 1 | |
| # undef _POSIX_C_SOURCE | |
| # define _POSIX_C_SOURCE 200809L | |
| # undef _XOPEN_SOURCE | |
| # define _XOPEN_SOURCE 700 | |
| # undef _XOPEN_SOURCE_EXTENDED | |
| # define _XOPEN_SOURCE_EXTENDED 1 | |
| # undef _LARGEFILE64_SOURCE | |
| # define _LARGEFILE64_SOURCE 1 | |
| # undef _DEFAULT_SOURCE | |
| # define _DEFAULT_SOURCE 1 | |
| # undef _ATFILE_SOURCE | |
| # define _ATFILE_SOURCE 1 | |
| #endif | |
| # 179 "/usr/include/features.h" 3 4 | |
| /* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined, | |
| define _DEFAULT_SOURCE. */ | |
| #if (defined _DEFAULT_SOURCE \ | |
| || (!defined __STRICT_ANSI__ \ | |
| && !defined _ISOC99_SOURCE \ | |
| && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE \ | |
| && !defined _XOPEN_SOURCE)) | |
| # undef _DEFAULT_SOURCE | |
| # define _DEFAULT_SOURCE 1 | |
| #endif | |
| # 190 "/usr/include/features.h" 3 4 | |
| /* This is to enable the ISO C11 extension. */ | |
| #if (defined _ISOC11_SOURCE \ | |
| || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L)) | |
| # define __USE_ISOC11 1 | |
| #endif | |
| # 196 "/usr/include/features.h" 3 4 | |
| /* This is to enable the ISO C99 extension. */ | |
| #if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \ | |
| || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)) | |
| # define __USE_ISOC99 1 | |
| #endif | |
| # 202 "/usr/include/features.h" 3 4 | |
| /* This is to enable the ISO C90 Amendment 1:1995 extension. */ | |
| #if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \ | |
| || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L)) | |
| # define __USE_ISOC95 1 | |
| #endif | |
| # 208 "/usr/include/features.h" 3 4 | |
| /* This is to enable compatibility for ISO C++11. | |
| So far g++ does not provide a macro. Check the temporary macro for | |
| now, too. */ | |
| #if ((defined __cplusplus && __cplusplus >= 201103L) \ | |
| || defined __GXX_EXPERIMENTAL_CXX0X__) | |
| # define __USE_ISOCXX11 1 | |
| #endif | |
| # 217 "/usr/include/features.h" 3 4 | |
| /* If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE | |
| is defined, use POSIX.1-2008 (or another version depending on | |
| _XOPEN_SOURCE). */ | |
| #ifdef _DEFAULT_SOURCE | |
| # if !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE | |
| # define __USE_POSIX_IMPLICITLY 1 | |
| # endif | |
| # 225 "/usr/include/features.h" 3 4 | |
| # undef _POSIX_SOURCE | |
| # define _POSIX_SOURCE 1 | |
| # undef _POSIX_C_SOURCE | |
| # define _POSIX_C_SOURCE 200809L | |
| #endif | |
| # 230 "/usr/include/features.h" 3 4 | |
| #if ((!defined __STRICT_ANSI__ \ | |
| || (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500)) \ | |
| && !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE) | |
| # define _POSIX_SOURCE 1 | |
| # if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500 | |
| # define _POSIX_C_SOURCE 2 | |
| # elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600 | |
| # 237 "/usr/include/features.h" 3 4 | |
| # define _POSIX_C_SOURCE 199506L | |
| # elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700 | |
| # 239 "/usr/include/features.h" 3 4 | |
| # define _POSIX_C_SOURCE 200112L | |
| # else | |
| # 241 "/usr/include/features.h" 3 4 | |
| # define _POSIX_C_SOURCE 200809L | |
| # endif | |
| # 243 "/usr/include/features.h" 3 4 | |
| # define __USE_POSIX_IMPLICITLY 1 | |
| #endif | |
| # 245 "/usr/include/features.h" 3 4 | |
| #if (defined _POSIX_SOURCE \ | |
| || (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1) \ | |
| || defined _XOPEN_SOURCE) | |
| # define __USE_POSIX 1 | |
| #endif | |
| # 251 "/usr/include/features.h" 3 4 | |
| #if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE | |
| # define __USE_POSIX2 1 | |
| #endif | |
| # 255 "/usr/include/features.h" 3 4 | |
| #if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L | |
| # define __USE_POSIX199309 1 | |
| #endif | |
| # 259 "/usr/include/features.h" 3 4 | |
| #if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L | |
| # define __USE_POSIX199506 1 | |
| #endif | |
| # 263 "/usr/include/features.h" 3 4 | |
| #if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L | |
| # define __USE_XOPEN2K 1 | |
| # undef __USE_ISOC95 | |
| # define __USE_ISOC95 1 | |
| # undef __USE_ISOC99 | |
| # define __USE_ISOC99 1 | |
| #endif | |
| # 271 "/usr/include/features.h" 3 4 | |
| #if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L | |
| # define __USE_XOPEN2K8 1 | |
| # undef _ATFILE_SOURCE | |
| # define _ATFILE_SOURCE 1 | |
| #endif | |
| # 277 "/usr/include/features.h" 3 4 | |
| #ifdef _XOPEN_SOURCE | |
| # define __USE_XOPEN 1 | |
| # if (_XOPEN_SOURCE - 0) >= 500 | |
| # define __USE_XOPEN_EXTENDED 1 | |
| # define __USE_UNIX98 1 | |
| # undef _LARGEFILE_SOURCE | |
| # define _LARGEFILE_SOURCE 1 | |
| # if (_XOPEN_SOURCE - 0) >= 600 | |
| # if (_XOPEN_SOURCE - 0) >= 700 | |
| # define __USE_XOPEN2K8 1 | |
| # define __USE_XOPEN2K8XSI 1 | |
| # endif | |
| # 290 "/usr/include/features.h" 3 4 | |
| # define __USE_XOPEN2K 1 | |
| # define __USE_XOPEN2KXSI 1 | |
| # undef __USE_ISOC95 | |
| # define __USE_ISOC95 1 | |
| # undef __USE_ISOC99 | |
| # define __USE_ISOC99 1 | |
| # endif | |
| # 297 "/usr/include/features.h" 3 4 | |
| # else | |
| # 298 "/usr/include/features.h" 3 4 | |
| # ifdef _XOPEN_SOURCE_EXTENDED | |
| # define __USE_XOPEN_EXTENDED 1 | |
| # endif | |
| # 301 "/usr/include/features.h" 3 4 | |
| # endif | |
| # 302 "/usr/include/features.h" 3 4 | |
| #endif | |
| # 303 "/usr/include/features.h" 3 4 | |
| #ifdef _LARGEFILE_SOURCE | |
| # define __USE_LARGEFILE 1 | |
| #endif | |
| # 307 "/usr/include/features.h" 3 4 | |
| #ifdef _LARGEFILE64_SOURCE | |
| # define __USE_LARGEFILE64 1 | |
| #endif | |
| # 311 "/usr/include/features.h" 3 4 | |
| #if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64 | |
| # define __USE_FILE_OFFSET64 1 | |
| #endif | |
| # 315 "/usr/include/features.h" 3 4 | |
| #if defined _DEFAULT_SOURCE | |
| # define __USE_MISC 1 | |
| #endif | |
| # 319 "/usr/include/features.h" 3 4 | |
| #ifdef _ATFILE_SOURCE | |
| # define __USE_ATFILE 1 | |
| #endif | |
| # 323 "/usr/include/features.h" 3 4 | |
| #ifdef _GNU_SOURCE | |
| # define __USE_GNU 1 | |
| #endif | |
| # 327 "/usr/include/features.h" 3 4 | |
| #if defined _REENTRANT || defined _THREAD_SAFE | |
| # define __USE_REENTRANT 1 | |
| #endif | |
| # 331 "/usr/include/features.h" 3 4 | |
| #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \ | |
| && __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 | |
| # if _FORTIFY_SOURCE > 1 | |
| # define __USE_FORTIFY_LEVEL 2 | |
| # else | |
| # 337 "/usr/include/features.h" 3 4 | |
| # define __USE_FORTIFY_LEVEL 1 | |
| # endif | |
| # 339 "/usr/include/features.h" 3 4 | |
| #else | |
| # 340 "/usr/include/features.h" 3 4 | |
| # define __USE_FORTIFY_LEVEL 0 | |
| #endif | |
| # 342 "/usr/include/features.h" 3 4 | |
| /* Get definitions of __STDC_* predefined macros, if the compiler has | |
| not preincluded this header automatically. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <stdc-predef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 345 "/usr/include/features.h" 3 4 | |
| # 1 "/usr/include/stdc-predef.h" 1 3 4 | |
| /* Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _STDC_PREDEF_H | |
| #define _STDC_PREDEF_H 1 | |
| /* This header is separate from features.h so that the compiler can | |
| include it implicitly at the start of every compilation. It must | |
| not itself include <features.h> or any other header that includes | |
| <features.h> because the implicit include comes before any feature | |
| test macros that may be defined in a source file before it first | |
| explicitly includes a system header. GCC knows the name of this | |
| header in order to preinclude it. */ | |
| /* glibc's intent is to support the IEC 559 math functionality, real | |
| and complex. If the GCC (4.9 and later) predefined macros | |
| specifying compiler intent are available, use them to determine | |
| whether the overall intent is to support these features; otherwise, | |
| presume an older compiler has intent to support these features and | |
| define these macros by default. */ | |
| #ifdef __GCC_IEC_559 | |
| # if __GCC_IEC_559 > 0 | |
| # define __STDC_IEC_559__ 1 | |
| # endif | |
| # 40 "/usr/include/stdc-predef.h" 3 4 | |
| #else | |
| # 41 "/usr/include/stdc-predef.h" 3 4 | |
| # define __STDC_IEC_559__ 1 | |
| #endif | |
| # 43 "/usr/include/stdc-predef.h" 3 4 | |
| #ifdef __GCC_IEC_559_COMPLEX | |
| # if __GCC_IEC_559_COMPLEX > 0 | |
| # define __STDC_IEC_559_COMPLEX__ 1 | |
| # endif | |
| # 48 "/usr/include/stdc-predef.h" 3 4 | |
| #else | |
| # 49 "/usr/include/stdc-predef.h" 3 4 | |
| # define __STDC_IEC_559_COMPLEX__ 1 | |
| #endif | |
| # 51 "/usr/include/stdc-predef.h" 3 4 | |
| /* wchar_t uses Unicode 8.0.0. Version 8.0 of the Unicode Standard is | |
| synchronized with ISO/IEC 10646:2014, plus Amendment 1 (published | |
| 2015-05-15). */ | |
| #define __STDC_ISO_10646__ 201505L | |
| /* We do not support C11 <threads.h>. */ | |
| #define __STDC_NO_THREADS__ 1 | |
| #endif | |
| # 61 "/usr/include/stdc-predef.h" 3 4 | |
| # 346 "/usr/include/features.h" 2 3 4 | |
| /* This macro indicates that the installed library is the GNU C Library. | |
| For historic reasons the value now is 6 and this will stay from now | |
| on. The use of this variable is deprecated. Use __GLIBC__ and | |
| __GLIBC_MINOR__ now (see below) when you want to test for a specific | |
| GNU C library version and use the values in <gnu/lib-names.h> to get | |
| the sonames of the shared libraries. */ | |
| #undef __GNU_LIBRARY__ | |
| #define __GNU_LIBRARY__ 6 | |
| /* Major and minor version number of the GNU C library package. Use | |
| these macros to test for features in specific releases. */ | |
| #define __GLIBC__ 2 | |
| #define __GLIBC_MINOR__ 23 | |
| #define __GLIBC_PREREQ(maj, min) \ | |
| ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) | |
| /* This is here only because every header file already includes this one. */ | |
| #ifndef __ASSEMBLER__ | |
| # ifndef _SYS_CDEFS_H | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <sys/cdefs.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 367 "/usr/include/features.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4 | |
| /* Copyright (C) 1992-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _SYS_CDEFS_H | |
| #define _SYS_CDEFS_H 1 | |
| /* We are almost always included from features.h. */ | |
| #ifndef _FEATURES_H | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 23 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # 24 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #endif | |
| # 25 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* The GNU libc does not support any K&R compilers or the traditional mode | |
| of ISO C compilers anymore. Check for some of the combinations not | |
| anymore supported. */ | |
| #if defined __GNUC__ && !defined __STDC__ | |
| # error "You need a ISO C conforming compiler to use the glibc headers" | |
| #endif | |
| # 32 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* Some user header file might have defined this before. */ | |
| #undef __P | |
| #undef __PMT | |
| #ifdef __GNUC__ | |
| /* All functions, except those with callbacks or those that | |
| synchronize memory, are leaf functions. */ | |
| # if __GNUC_PREREQ (4, 6) && !defined _LIBC | |
| # define __LEAF , __leaf__ | |
| # define __LEAF_ATTR __attribute__ ((__leaf__)) | |
| # else | |
| # 45 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __LEAF | |
| # define __LEAF_ATTR | |
| # endif | |
| # 48 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* GCC can always grok prototypes. For C++ programs we add throw() | |
| to help it optimize the function calls. But this works only with | |
| gcc 2.8.x and egcs. For gcc 3.2 and up we even mark C functions | |
| as non-throwing using a function attribute since programs can use | |
| the -fexceptions options for C code as well. */ | |
| # if !defined __cplusplus && __GNUC_PREREQ (3, 3) | |
| # define __THROW __attribute__ ((__nothrow__ __LEAF)) | |
| # define __THROWNL __attribute__ ((__nothrow__)) | |
| # define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct | |
| # else | |
| # 59 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # if defined __cplusplus && __GNUC_PREREQ (2,8) | |
| # define __THROW throw () | |
| # define __THROWNL throw () | |
| # define __NTH(fct) __LEAF_ATTR fct throw () | |
| # else | |
| # 64 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __THROW | |
| # define __THROWNL | |
| # define __NTH(fct) fct | |
| # endif | |
| # 68 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # endif | |
| # 69 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #else /* Not GCC. */ | |
| # 71 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __inline /* No inline functions. */ | |
| # define __THROW | |
| # define __THROWNL | |
| # define __NTH(fct) fct | |
| #endif /* GCC. */ | |
| # 79 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* These two macros are not used in glibc anymore. They are kept here | |
| only because some other projects expect the macros to be defined. */ | |
| #define __P(args) args | |
| #define __PMT(args) args | |
| /* For these things, GCC behaves the ANSI way normally, | |
| and the non-ANSI way under -traditional. */ | |
| #define __CONCAT(x,y) x ## y | |
| #define __STRING(x) #x | |
| /* This is not a typedef so `const __ptr_t' does the right thing. */ | |
| #define __ptr_t void * | |
| #define __long_double_t long double | |
| /* C++ needs to know that types and declarations are C, not C++. */ | |
| #ifdef __cplusplus | |
| # define __BEGIN_DECLS extern "C" { | |
| # define __END_DECLS } | |
| #else | |
| # 101 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __BEGIN_DECLS | |
| # define __END_DECLS | |
| #endif | |
| # 104 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* The standard library needs the functions from the ISO C90 standard | |
| in the std namespace. At the same time we want to be safe for | |
| future changes and we include the ISO C99 code in the non-standard | |
| namespace __c99. The C++ wrapper header take case of adding the | |
| definitions to the global namespace. */ | |
| #if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES | |
| # define __BEGIN_NAMESPACE_STD namespace std { | |
| # define __END_NAMESPACE_STD } | |
| # define __USING_NAMESPACE_STD(name) using std::name; | |
| # define __BEGIN_NAMESPACE_C99 namespace __c99 { | |
| # define __END_NAMESPACE_C99 } | |
| # define __USING_NAMESPACE_C99(name) using __c99::name; | |
| #else | |
| # 119 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* For compatibility we do not add the declarations into any | |
| namespace. They will end up in the global namespace which is what | |
| old code expects. */ | |
| # define __BEGIN_NAMESPACE_STD | |
| # define __END_NAMESPACE_STD | |
| # define __USING_NAMESPACE_STD(name) | |
| # define __BEGIN_NAMESPACE_C99 | |
| # define __END_NAMESPACE_C99 | |
| # define __USING_NAMESPACE_C99(name) | |
| #endif | |
| # 129 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* Fortify support. */ | |
| #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) | |
| #define __bos0(ptr) __builtin_object_size (ptr, 0) | |
| #if __GNUC_PREREQ (4,3) | |
| # define __warndecl(name, msg) \ | |
| extern void name (void) __attribute__((__warning__ (msg))) | |
| # define __warnattr(msg) __attribute__((__warning__ (msg))) | |
| # define __errordecl(name, msg) \ | |
| extern void name (void) __attribute__((__error__ (msg))) | |
| #else | |
| # 142 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __warndecl(name, msg) extern void name (void) | |
| # define __warnattr(msg) | |
| # define __errordecl(name, msg) extern void name (void) | |
| #endif | |
| # 146 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* Support for flexible arrays. */ | |
| #if __GNUC_PREREQ (2,97) | |
| /* GCC 2.97 supports C99 flexible array members. */ | |
| # define __flexarr [] | |
| #else | |
| # 152 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # ifdef __GNUC__ | |
| # define __flexarr [0] | |
| # else | |
| # 155 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L | |
| # define __flexarr [] | |
| # else | |
| # 158 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* Some other non-C99 compiler. Approximate with [1]. */ | |
| # define __flexarr [1] | |
| # endif | |
| # 161 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # endif | |
| # 162 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #endif | |
| # 163 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* __asm__ ("xyz") is used throughout the headers to rename functions | |
| at the assembly language level. This is wrapped by the __REDIRECT | |
| macro, in order to support compilers that can do this some other | |
| way. When compilers don't support asm-names at all, we have to do | |
| preprocessor tricks instead (which don't have exactly the right | |
| semantics, but it's the best we can do). | |
| Example: | |
| int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); */ | |
| #if defined __GNUC__ && __GNUC__ >= 2 | |
| # define __REDIRECT(name, proto, alias) name proto __asm__ (__ASMNAME (#alias)) | |
| # ifdef __cplusplus | |
| # define __REDIRECT_NTH(name, proto, alias) \ | |
| name proto __THROW __asm__ (__ASMNAME (#alias)) | |
| # define __REDIRECT_NTHNL(name, proto, alias) \ | |
| name proto __THROWNL __asm__ (__ASMNAME (#alias)) | |
| # else | |
| # 184 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __REDIRECT_NTH(name, proto, alias) \ | |
| name proto __asm__ (__ASMNAME (#alias)) __THROW | |
| # define __REDIRECT_NTHNL(name, proto, alias) \ | |
| name proto __asm__ (__ASMNAME (#alias)) __THROWNL | |
| # endif | |
| # 189 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __ASMNAME(cname) __ASMNAME2 (__USER_LABEL_PREFIX__, cname) | |
| # define __ASMNAME2(prefix, cname) __STRING (prefix) cname | |
| /* | |
| #elif __SOME_OTHER_COMPILER__ | |
| # define __REDIRECT(name, proto, alias) name proto; \ | |
| _Pragma("let " #name " = " #alias) | |
| */ | |
| #endif | |
| # 199 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* GCC has various useful declarations that can be made with the | |
| `__attribute__' syntax. All of the ways we use this do fine if | |
| they are omitted for compilers that don't understand it. */ | |
| #if !defined __GNUC__ || __GNUC__ < 2 | |
| # define __attribute__(xyz) /* Ignore */ | |
| #endif | |
| # 206 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* At some point during the gcc 2.96 development the `malloc' attribute | |
| for functions was introduced. We don't want to use it unconditionally | |
| (although this would be possible) since it generates warnings. */ | |
| #if __GNUC_PREREQ (2,96) | |
| # define __attribute_malloc__ __attribute__ ((__malloc__)) | |
| #else | |
| # 213 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_malloc__ /* Ignore */ | |
| #endif | |
| # 215 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* Tell the compiler which arguments to an allocation function | |
| indicate the size of the allocation. */ | |
| #if __GNUC_PREREQ (4, 3) | |
| # define __attribute_alloc_size__(params) \ | |
| __attribute__ ((__alloc_size__ params)) | |
| #else | |
| # 222 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_alloc_size__(params) /* Ignore. */ | |
| #endif | |
| # 224 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* At some point during the gcc 2.96 development the `pure' attribute | |
| for functions was introduced. We don't want to use it unconditionally | |
| (although this would be possible) since it generates warnings. */ | |
| #if __GNUC_PREREQ (2,96) | |
| # define __attribute_pure__ __attribute__ ((__pure__)) | |
| #else | |
| # 231 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_pure__ /* Ignore */ | |
| #endif | |
| # 233 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* This declaration tells the compiler that the value is constant. */ | |
| #if __GNUC_PREREQ (2,5) | |
| # define __attribute_const__ __attribute__ ((__const__)) | |
| #else | |
| # 238 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_const__ /* Ignore */ | |
| #endif | |
| # 240 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* At some point during the gcc 3.1 development the `used' attribute | |
| for functions was introduced. We don't want to use it unconditionally | |
| (although this would be possible) since it generates warnings. */ | |
| #if __GNUC_PREREQ (3,1) | |
| # define __attribute_used__ __attribute__ ((__used__)) | |
| # define __attribute_noinline__ __attribute__ ((__noinline__)) | |
| #else | |
| # 248 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_used__ __attribute__ ((__unused__)) | |
| # define __attribute_noinline__ /* Ignore */ | |
| #endif | |
| # 251 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* gcc allows marking deprecated functions. */ | |
| #if __GNUC_PREREQ (3,2) | |
| # define __attribute_deprecated__ __attribute__ ((__deprecated__)) | |
| #else | |
| # 256 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_deprecated__ /* Ignore */ | |
| #endif | |
| # 258 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* At some point during the gcc 2.8 development the `format_arg' attribute | |
| for functions was introduced. We don't want to use it unconditionally | |
| (although this would be possible) since it generates warnings. | |
| If several `format_arg' attributes are given for the same function, in | |
| gcc-3.0 and older, all but the last one are ignored. In newer gccs, | |
| all designated arguments are considered. */ | |
| #if __GNUC_PREREQ (2,8) | |
| # define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x))) | |
| #else | |
| # 268 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_format_arg__(x) /* Ignore */ | |
| #endif | |
| # 270 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* At some point during the gcc 2.97 development the `strfmon' format | |
| attribute for functions was introduced. We don't want to use it | |
| unconditionally (although this would be possible) since it | |
| generates warnings. */ | |
| #if __GNUC_PREREQ (2,97) | |
| # define __attribute_format_strfmon__(a,b) \ | |
| __attribute__ ((__format__ (__strfmon__, a, b))) | |
| #else | |
| # 279 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_format_strfmon__(a,b) /* Ignore */ | |
| #endif | |
| # 281 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* The nonull function attribute allows to mark pointer parameters which | |
| must not be NULL. */ | |
| #if __GNUC_PREREQ (3,3) | |
| # define __nonnull(params) __attribute__ ((__nonnull__ params)) | |
| #else | |
| # 287 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __nonnull(params) | |
| #endif | |
| # 289 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* If fortification mode, we warn about unused results of certain | |
| function calls which can lead to problems. */ | |
| #if __GNUC_PREREQ (3,4) | |
| # define __attribute_warn_unused_result__ \ | |
| __attribute__ ((__warn_unused_result__)) | |
| # if __USE_FORTIFY_LEVEL > 0 | |
| # define __wur __attribute_warn_unused_result__ | |
| # endif | |
| # 298 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #else | |
| # 299 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_warn_unused_result__ /* empty */ | |
| #endif | |
| # 301 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #ifndef __wur | |
| # define __wur /* Ignore */ | |
| #endif | |
| # 304 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* Forces a function to be always inlined. */ | |
| #if __GNUC_PREREQ (3,2) | |
| # define __always_inline __inline __attribute__ ((__always_inline__)) | |
| #else | |
| # 309 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __always_inline __inline | |
| #endif | |
| # 311 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* Associate error messages with the source location of the call site rather | |
| than with the source location inside the function. */ | |
| #if __GNUC_PREREQ (4,3) | |
| # define __attribute_artificial__ __attribute__ ((__artificial__)) | |
| #else | |
| # 317 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __attribute_artificial__ /* Ignore */ | |
| #endif | |
| # 319 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 | |
| inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__ | |
| or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions | |
| older than 4.3 may define these macros and still not guarantee GNU inlining | |
| semantics. | |
| clang++ identifies itself as gcc-4.2, but has support for GNU inlining | |
| semantics, that can be checked fot by using the __GNUC_STDC_INLINE_ and | |
| __GNUC_GNU_INLINE__ macro definitions. */ | |
| #if (!defined __cplusplus || __GNUC_PREREQ (4,3) \ | |
| || (defined __clang__ && (defined __GNUC_STDC_INLINE__ \ | |
| || defined __GNUC_GNU_INLINE__))) | |
| # if defined __GNUC_STDC_INLINE__ || defined __cplusplus | |
| # define __extern_inline extern __inline __attribute__ ((__gnu_inline__)) | |
| # define __extern_always_inline \ | |
| extern __always_inline __attribute__ ((__gnu_inline__)) | |
| # else | |
| # 337 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __extern_inline extern __inline | |
| # define __extern_always_inline extern __always_inline | |
| # endif | |
| # 340 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #endif | |
| # 341 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #ifdef __extern_always_inline | |
| # define __fortify_function __extern_always_inline __attribute_artificial__ | |
| #endif | |
| # 345 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* GCC 4.3 and above allow passing all anonymous arguments of an | |
| __extern_always_inline function to some other vararg function. */ | |
| #if __GNUC_PREREQ (4,3) | |
| # define __va_arg_pack() __builtin_va_arg_pack () | |
| # define __va_arg_pack_len() __builtin_va_arg_pack_len () | |
| #endif | |
| # 352 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* It is possible to compile containing GCC extensions even if GCC is | |
| run in pedantic mode if the uses are carefully marked using the | |
| `__extension__' keyword. But this is not generally available before | |
| version 2.8. */ | |
| #if !__GNUC_PREREQ (2,8) | |
| # define __extension__ /* Ignore */ | |
| #endif | |
| # 360 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* __restrict is known in EGCS 1.2 and above. */ | |
| #if !__GNUC_PREREQ (2,92) | |
| # define __restrict /* Ignore */ | |
| #endif | |
| # 365 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* ISO C99 also allows to declare arrays as non-overlapping. The syntax is | |
| array_name[restrict] | |
| GCC 3.1 supports this. */ | |
| #if __GNUC_PREREQ (3,1) && !defined __GNUG__ | |
| # define __restrict_arr __restrict | |
| #else | |
| # 372 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # ifdef __GNUC__ | |
| # define __restrict_arr /* Not supported in old GCC. */ | |
| # else | |
| # 375 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L | |
| # define __restrict_arr restrict | |
| # else | |
| # 378 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| /* Some other non-C99 compiler. */ | |
| # define __restrict_arr /* Not supported. */ | |
| # endif | |
| # 381 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # endif | |
| # 382 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #endif | |
| # 383 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #if __GNUC__ >= 3 | |
| # define __glibc_unlikely(cond) __builtin_expect ((cond), 0) | |
| # define __glibc_likely(cond) __builtin_expect ((cond), 1) | |
| #else | |
| # 388 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define __glibc_unlikely(cond) (cond) | |
| # define __glibc_likely(cond) (cond) | |
| #endif | |
| # 391 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #if (!defined _Noreturn \ | |
| && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ | |
| && !__GNUC_PREREQ (4,7)) | |
| # if __GNUC_PREREQ (2,8) | |
| # define _Noreturn __attribute__ ((__noreturn__)) | |
| # else | |
| # 398 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # define _Noreturn | |
| # endif | |
| # 400 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #endif | |
| # 401 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #if (!defined _Static_assert && !defined __cplusplus \ | |
| && (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \ | |
| && (!__GNUC_PREREQ (4, 6) || defined __STRICT_ANSI__)) | |
| # define _Static_assert(expr, diagnostic) \ | |
| extern int (*__Static_assert_function (void)) \ | |
| [!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })] | |
| #endif | |
| # 409 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/wordsize.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 410 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 | |
| /* Determine the wordsize from the preprocessor defines. */ | |
| #if defined __x86_64__ && !defined __ILP32__ | |
| # define __WORDSIZE 64 | |
| #else | |
| # 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # define __WORDSIZE 32 | |
| #endif | |
| # 8 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| #ifdef __x86_64__ | |
| # define __WORDSIZE_TIME64_COMPAT32 1 | |
| /* Both x86-64 and x32 use the 64-bit system call interface. */ | |
| # define __SYSCALL_WORDSIZE 64 | |
| #endif | |
| # 14 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # 411 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4 | |
| #if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH | |
| # define __LDBL_COMPAT 1 | |
| # ifdef __REDIRECT | |
| # define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias) | |
| # define __LDBL_REDIR(name, proto) \ | |
| __LDBL_REDIR1 (name, proto, __nldbl_##name) | |
| # define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias) | |
| # define __LDBL_REDIR_NTH(name, proto) \ | |
| __LDBL_REDIR1_NTH (name, proto, __nldbl_##name) | |
| # define __LDBL_REDIR1_DECL(name, alias) \ | |
| extern __typeof (name) name __asm (__ASMNAME (#alias)); | |
| # define __LDBL_REDIR_DECL(name) \ | |
| extern __typeof (name) name __asm (__ASMNAME ("__nldbl_" #name)); | |
| # define __REDIRECT_LDBL(name, proto, alias) \ | |
| __LDBL_REDIR1 (name, proto, __nldbl_##alias) | |
| # define __REDIRECT_NTH_LDBL(name, proto, alias) \ | |
| __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias) | |
| # endif | |
| # 430 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #endif | |
| # 431 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #if !defined __LDBL_COMPAT || !defined __REDIRECT | |
| # define __LDBL_REDIR1(name, proto, alias) name proto | |
| # define __LDBL_REDIR(name, proto) name proto | |
| # define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW | |
| # define __LDBL_REDIR_NTH(name, proto) name proto __THROW | |
| # define __LDBL_REDIR_DECL(name) | |
| # ifdef __REDIRECT | |
| # define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias) | |
| # define __REDIRECT_NTH_LDBL(name, proto, alias) \ | |
| __REDIRECT_NTH (name, proto, alias) | |
| # endif | |
| # 442 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #endif | |
| # 443 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| #endif /* sys/cdefs.h */ | |
| # 445 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4 | |
| # 368 "/usr/include/features.h" 2 3 4 | |
| # endif | |
| # 369 "/usr/include/features.h" 3 4 | |
| /* If we don't have __REDIRECT, prototypes will be missing if | |
| __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. */ | |
| # if defined __USE_FILE_OFFSET64 && !defined __REDIRECT | |
| # define __USE_LARGEFILE 1 | |
| # define __USE_LARGEFILE64 1 | |
| # endif | |
| # 376 "/usr/include/features.h" 3 4 | |
| #endif /* !ASSEMBLER */ | |
| # 378 "/usr/include/features.h" 3 4 | |
| /* Decide whether we can define 'extern inline' functions in headers. */ | |
| #if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \ | |
| && !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \ | |
| && defined __extern_inline | |
| # define __USE_EXTERN_INLINES 1 | |
| #endif | |
| # 385 "/usr/include/features.h" 3 4 | |
| /* This is here only because every header file already includes this one. | |
| Get the definitions of all the appropriate `__stub_FUNCTION' symbols. | |
| <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub | |
| that will always return failure (and set errno to ENOSYS). */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <gnu/stubs.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 391 "/usr/include/features.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 1 3 4 | |
| /* This file is automatically generated. | |
| This file selects the right generated file of `__stub_FUNCTION' macros | |
| based on the architecture being compiled for. */ | |
| #if !defined __x86_64__ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <gnu/stubs-32.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 7 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 | |
| # 8 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 | |
| #endif | |
| # 9 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 | |
| #if defined __x86_64__ && defined __LP64__ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <gnu/stubs-64.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 10 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 1 3 4 | |
| /* This file is automatically generated. | |
| It defines a symbol `__stub_FUNCTION' for each function | |
| in the C library which is a stub, meaning it will fail | |
| every time called, usually setting errno to ENOSYS. */ | |
| #ifdef _LIBC | |
| # error Applications may not define the macro _LIBC | |
| #endif | |
| # 9 "/usr/include/x86_64-linux-gnu/gnu/stubs-64.h" 3 4 | |
| #define __stub___compat_bdflush | |
| #define __stub_chflags | |
| #define __stub_fattach | |
| #define __stub_fchflags | |
| #define __stub_fdetach | |
| #define __stub_getmsg | |
| #define __stub_gtty | |
| #define __stub_lchmod | |
| #define __stub_putmsg | |
| #define __stub_revoke | |
| #define __stub_setlogin | |
| #define __stub_sigreturn | |
| #define __stub_sstk | |
| #define __stub_stty | |
| # 11 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 2 3 4 | |
| #endif | |
| # 12 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 | |
| #if defined __x86_64__ && defined __ILP32__ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <gnu/stubs-x32.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 13 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 | |
| # 14 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 | |
| #endif | |
| # 15 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4 | |
| # 392 "/usr/include/features.h" 2 3 4 | |
| #endif /* features.h */ | |
| # 395 "/usr/include/features.h" 3 4 | |
| # 167 "/usr/local/bin/../include/c++/v1/__config" 2 3 | |
| #if !defined(__GLIBC_PREREQ) | |
| #define __GLIBC_PREREQ(a, b) 0 | |
| #endif // !defined(__GLIBC_PREREQ) | |
| # 170 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // defined(__linux__) | |
| # 171 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __LITTLE_ENDIAN__ | |
| #if __LITTLE_ENDIAN__ | |
| #define _LIBCPP_LITTLE_ENDIAN 1 | |
| #define _LIBCPP_BIG_ENDIAN 0 | |
| #endif // __LITTLE_ENDIAN__ | |
| # 177 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // __LITTLE_ENDIAN__ | |
| # 178 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __BIG_ENDIAN__ | |
| #if __BIG_ENDIAN__ | |
| #define _LIBCPP_LITTLE_ENDIAN 0 | |
| #define _LIBCPP_BIG_ENDIAN 1 | |
| #endif // __BIG_ENDIAN__ | |
| # 184 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // __BIG_ENDIAN__ | |
| # 185 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __BYTE_ORDER__ | |
| #if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ | |
| #define _LIBCPP_LITTLE_ENDIAN 1 | |
| #define _LIBCPP_BIG_ENDIAN 0 | |
| #elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ | |
| # 191 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_LITTLE_ENDIAN 0 | |
| #define _LIBCPP_BIG_ENDIAN 1 | |
| #endif // __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__ | |
| # 194 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // __BYTE_ORDER__ | |
| # 195 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __FreeBSD__ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <sys/endian.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 197 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # 198 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # if _BYTE_ORDER == _LITTLE_ENDIAN | |
| # define _LIBCPP_LITTLE_ENDIAN 1 | |
| # define _LIBCPP_BIG_ENDIAN 0 | |
| # else // _BYTE_ORDER == _LITTLE_ENDIAN | |
| # 202 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_LITTLE_ENDIAN 0 | |
| # define _LIBCPP_BIG_ENDIAN 1 | |
| # endif // _BYTE_ORDER == _LITTLE_ENDIAN | |
| # 205 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # ifndef __LONG_LONG_SUPPORTED | |
| # define _LIBCPP_HAS_NO_LONG_LONG | |
| # endif // __LONG_LONG_SUPPORTED | |
| # 208 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // __FreeBSD__ | |
| # 209 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __NetBSD__ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <sys/endian.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 211 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # 212 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # if _BYTE_ORDER == _LITTLE_ENDIAN | |
| # define _LIBCPP_LITTLE_ENDIAN 1 | |
| # define _LIBCPP_BIG_ENDIAN 0 | |
| # else // _BYTE_ORDER == _LITTLE_ENDIAN | |
| # 216 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_LITTLE_ENDIAN 0 | |
| # define _LIBCPP_BIG_ENDIAN 1 | |
| # endif // _BYTE_ORDER == _LITTLE_ENDIAN | |
| # 219 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_HAS_QUICK_EXIT | |
| #endif // __NetBSD__ | |
| # 221 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_WIN32) | |
| # define _LIBCPP_WIN32API | |
| # define _LIBCPP_LITTLE_ENDIAN 1 | |
| # define _LIBCPP_BIG_ENDIAN 0 | |
| # define _LIBCPP_SHORT_WCHAR 1 | |
| // Both MinGW and native MSVC provide a "MSVC"-like enviroment | |
| # define _LIBCPP_MSVCRT_LIKE | |
| // If mingw not explicitly detected, assume using MS C runtime only. | |
| # ifndef __MINGW32__ | |
| # define _LIBCPP_MSVCRT // Using Microsoft's C Runtime library | |
| # endif | |
| # 233 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # if (defined(_M_AMD64) || defined(__x86_64__)) || (defined(_M_ARM) || defined(__arm__)) | |
| # define _LIBCPP_HAS_BITSCAN64 | |
| # endif | |
| # 236 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # if defined(_LIBCPP_MSVCRT) | |
| # define _LIBCPP_HAS_QUICK_EXIT | |
| # endif | |
| # 239 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Some CRT APIs are unavailable to store apps | |
| #if defined(WINAPI_FAMILY) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <winapifamily.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 242 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # 243 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && \ | |
| (!defined(WINAPI_PARTITION_SYSTEM) || \ | |
| !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_SYSTEM)) | |
| #define _LIBCPP_WINDOWS_STORE_APP | |
| #endif | |
| # 248 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 249 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // defined(_WIN32) | |
| # 250 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __sun__ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <sys/isa_defs.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 252 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # 253 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # ifdef _LITTLE_ENDIAN | |
| # define _LIBCPP_LITTLE_ENDIAN 1 | |
| # define _LIBCPP_BIG_ENDIAN 0 | |
| # else | |
| # 257 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_LITTLE_ENDIAN 0 | |
| # define _LIBCPP_BIG_ENDIAN 1 | |
| # endif | |
| # 260 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // __sun__ | |
| # 261 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__CloudABI__) | |
| // Certain architectures provide arc4random(). Prefer using | |
| // arc4random() over /dev/{u,}random to make it possible to obtain | |
| // random data even when using sandboxing mechanisms such as chroots, | |
| // Capsicum, etc. | |
| # define _LIBCPP_USING_ARC4_RANDOM | |
| #elif defined(__native_client__) | |
| # 269 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // NaCl's sandbox (which PNaCl also runs in) doesn't allow filesystem access, | |
| // including accesses to the special files under /dev. C++11's | |
| // std::random_device is instead exposed through a NaCl syscall. | |
| # define _LIBCPP_USING_NACL_RANDOM | |
| #elif defined(_LIBCPP_WIN32API) | |
| # 274 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_USING_WIN32_RANDOM | |
| #else | |
| # 276 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_USING_DEV_RANDOM | |
| #endif | |
| # 278 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <endian.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 280 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # 281 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # if __BYTE_ORDER == __LITTLE_ENDIAN | |
| # define _LIBCPP_LITTLE_ENDIAN 1 | |
| # define _LIBCPP_BIG_ENDIAN 0 | |
| # elif __BYTE_ORDER == __BIG_ENDIAN | |
| # 285 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_LITTLE_ENDIAN 0 | |
| # define _LIBCPP_BIG_ENDIAN 1 | |
| # else // __BYTE_ORDER == __BIG_ENDIAN | |
| # 288 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # error unable to determine endian | |
| # endif | |
| # 290 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN) | |
| # 291 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_attribute(__no_sanitize__) | |
| #define _LIBCPP_NO_CFI __attribute__((__no_sanitize__("cfi"))) | |
| #else | |
| # 295 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_NO_CFI | |
| #endif | |
| # 297 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_COMPILER_CLANG) | |
| // _LIBCPP_ALTERNATE_STRING_LAYOUT is an old name for | |
| // _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT left here for backward compatibility. | |
| #if (defined(__APPLE__) && !defined(__i386__) && !defined(__x86_64__) && \ | |
| (!defined(__arm__) || __ARM_ARCH_7K__ >= 2)) || \ | |
| defined(_LIBCPP_ALTERNATE_STRING_LAYOUT) | |
| #define _LIBCPP_ABI_ALTERNATE_STRING_LAYOUT | |
| #endif | |
| # 307 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(cxx_alignas) | |
| # define _ALIGNAS_TYPE(x) alignas(x) | |
| # define _ALIGNAS(x) alignas(x) | |
| #else | |
| # 312 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) | |
| # define _ALIGNAS(x) __attribute__((__aligned__(x))) | |
| #endif | |
| # 315 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __cplusplus < 201103L | |
| typedef __char16_t char16_t; | |
| typedef __char32_t char32_t; | |
| #endif | |
| # 320 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_exceptions)) && !defined(_LIBCPP_NO_EXCEPTIONS) | |
| #define _LIBCPP_NO_EXCEPTIONS | |
| #endif | |
| # 324 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_rtti)) && !defined(_LIBCPP_NO_RTTI) | |
| #define _LIBCPP_NO_RTTI | |
| #endif | |
| # 328 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_strong_enums)) | |
| #define _LIBCPP_HAS_NO_STRONG_ENUMS | |
| #endif | |
| # 332 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_decltype)) | |
| #define _LIBCPP_HAS_NO_DECLTYPE | |
| #endif | |
| # 336 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(cxx_attributes) | |
| # define _LIBCPP_NORETURN [[noreturn]] | |
| #else | |
| # 340 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_NORETURN __attribute__ ((noreturn)) | |
| #endif | |
| # 342 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_lambdas)) | |
| #define _LIBCPP_HAS_NO_LAMBDAS | |
| #endif | |
| # 346 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_nullptr)) | |
| # if (__has_extension(cxx_nullptr) || __has_keyword(__nullptr)) && defined(_LIBCPP_ABI_ALWAYS_USE_CXX11_NULLPTR) | |
| # define nullptr __nullptr | |
| # else | |
| # 351 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_HAS_NO_NULLPTR | |
| # endif | |
| # 353 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 354 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_rvalue_references)) | |
| #define _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| #endif | |
| # 358 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_auto_type)) | |
| #define _LIBCPP_HAS_NO_AUTO_TYPE | |
| #endif | |
| # 362 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_variadic_templates)) | |
| #define _LIBCPP_HAS_NO_VARIADICS | |
| #endif | |
| # 366 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_generalized_initializers)) | |
| #define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS | |
| #endif | |
| # 370 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(is_base_of) | |
| # define _LIBCPP_HAS_IS_BASE_OF | |
| #endif | |
| # 374 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(is_final) | |
| # define _LIBCPP_HAS_IS_FINAL | |
| #endif | |
| # 378 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Objective-C++ features (opt-in) | |
| #if __has_feature(objc_arc) | |
| #define _LIBCPP_HAS_OBJC_ARC | |
| #endif | |
| # 383 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(objc_arc_weak) | |
| #define _LIBCPP_HAS_OBJC_ARC_WEAK | |
| #endif | |
| # 387 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_constexpr)) | |
| #define _LIBCPP_HAS_NO_CONSTEXPR | |
| #endif | |
| # 391 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_relaxed_constexpr)) | |
| #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR | |
| #endif | |
| # 395 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_variable_templates)) | |
| #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES | |
| #endif | |
| # 399 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __ISO_C_VISIBLE >= 2011 || __cplusplus >= 201103L | |
| #if defined(__FreeBSD__) | |
| #define _LIBCPP_HAS_QUICK_EXIT | |
| #define _LIBCPP_HAS_C11_FEATURES | |
| #elif defined(__Fuchsia__) | |
| # 405 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_HAS_QUICK_EXIT | |
| #define _LIBCPP_HAS_C11_FEATURES | |
| #elif defined(__linux__) | |
| # 408 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !defined(_LIBCPP_HAS_MUSL_LIBC) | |
| #if __GLIBC_PREREQ(2, 15) || defined(__BIONIC__) | |
| #define _LIBCPP_HAS_QUICK_EXIT | |
| #endif | |
| # 412 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __GLIBC_PREREQ(2, 17) | |
| #define _LIBCPP_HAS_C11_FEATURES | |
| #endif | |
| # 415 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #else // defined(_LIBCPP_HAS_MUSL_LIBC) | |
| # 416 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_HAS_QUICK_EXIT | |
| #define _LIBCPP_HAS_C11_FEATURES | |
| #endif | |
| # 419 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // __linux__ | |
| # 420 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 421 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !(__has_feature(cxx_noexcept)) | |
| #define _LIBCPP_HAS_NO_NOEXCEPT | |
| #endif | |
| # 425 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(underlying_type) | |
| # define _LIBCPP_UNDERLYING_TYPE(T) __underlying_type(T) | |
| #endif | |
| # 429 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(is_literal) | |
| # define _LIBCPP_IS_LITERAL(T) __is_literal(T) | |
| #endif | |
| # 433 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Inline namespaces are available in Clang regardless of C++ dialect. | |
| #define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE { | |
| #define _LIBCPP_END_NAMESPACE_STD } } | |
| #define _VSTD std::_LIBCPP_NAMESPACE | |
| namespace std { | |
| inline namespace _LIBCPP_NAMESPACE { | |
| } | |
| } | |
| #if !defined(_LIBCPP_HAS_NO_ASAN) && !__has_feature(address_sanitizer) | |
| #define _LIBCPP_HAS_NO_ASAN | |
| #endif | |
| # 447 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Allow for build-time disabling of unsigned integer sanitization | |
| #if !defined(_LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK) && __has_attribute(no_sanitize) | |
| #define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK __attribute__((__no_sanitize__("unsigned-integer-overflow"))) | |
| #endif | |
| # 452 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #elif defined(_LIBCPP_COMPILER_GCC) | |
| # 454 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _ALIGNAS(x) __attribute__((__aligned__(x))) | |
| #define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) | |
| #define _LIBCPP_NORETURN __attribute__((noreturn)) | |
| #if _GNUC_VER >= 407 | |
| #define _LIBCPP_UNDERLYING_TYPE(T) __underlying_type(T) | |
| #define _LIBCPP_IS_LITERAL(T) __is_literal_type(T) | |
| #define _LIBCPP_HAS_IS_FINAL | |
| #endif | |
| # 465 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__GNUC__) && _GNUC_VER >= 403 | |
| # define _LIBCPP_HAS_IS_BASE_OF | |
| #endif | |
| # 469 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !__EXCEPTIONS | |
| #define _LIBCPP_NO_EXCEPTIONS | |
| #endif | |
| # 473 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // constexpr was added to GCC in 4.6. | |
| #if _GNUC_VER < 406 | |
| #define _LIBCPP_HAS_NO_CONSTEXPR | |
| // Can only use constexpr in c++11 mode. | |
| #elif !defined(__GXX_EXPERIMENTAL_CXX0X__) && __cplusplus < 201103L | |
| # 479 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_HAS_NO_CONSTEXPR | |
| #endif | |
| # 481 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Determine if GCC supports relaxed constexpr | |
| #if !defined(__cpp_constexpr) || __cpp_constexpr < 201304L | |
| #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR | |
| #endif | |
| # 486 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // GCC 5 will support variable templates | |
| #if !defined(__cpp_variable_templates) || __cpp_variable_templates < 201304L | |
| #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES | |
| #endif | |
| # 491 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef __GXX_EXPERIMENTAL_CXX0X__ | |
| #define _LIBCPP_HAS_NO_DECLTYPE | |
| #define _LIBCPP_HAS_NO_NULLPTR | |
| #define _LIBCPP_HAS_NO_UNICODE_CHARS | |
| #define _LIBCPP_HAS_NO_VARIADICS | |
| #define _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| #define _LIBCPP_HAS_NO_STRONG_ENUMS | |
| #define _LIBCPP_HAS_NO_NOEXCEPT | |
| #else // __GXX_EXPERIMENTAL_CXX0X__ | |
| # 502 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if _GNUC_VER < 403 | |
| #define _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| #endif | |
| # 506 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if _GNUC_VER < 404 | |
| #define _LIBCPP_HAS_NO_DECLTYPE | |
| #define _LIBCPP_HAS_NO_UNICODE_CHARS | |
| #define _LIBCPP_HAS_NO_VARIADICS | |
| #define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS | |
| #endif // _GNUC_VER < 404 | |
| # 514 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if _GNUC_VER < 406 | |
| #define _LIBCPP_HAS_NO_NOEXCEPT | |
| #define _LIBCPP_HAS_NO_NULLPTR | |
| #endif | |
| # 519 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // __GXX_EXPERIMENTAL_CXX0X__ | |
| # 521 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { inline namespace _LIBCPP_NAMESPACE { | |
| #define _LIBCPP_END_NAMESPACE_STD } } | |
| #define _VSTD std::_LIBCPP_NAMESPACE | |
| namespace std { | |
| inline namespace _LIBCPP_NAMESPACE { | |
| } | |
| } | |
| #if !defined(_LIBCPP_HAS_NO_ASAN) && !defined(__SANITIZE_ADDRESS__) | |
| #define _LIBCPP_HAS_NO_ASAN | |
| #endif | |
| # 534 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #elif defined(_LIBCPP_COMPILER_MSVC) | |
| # 536 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_TOSTRING2(x) #x | |
| #define _LIBCPP_TOSTRING(x) _LIBCPP_TOSTRING2(x) | |
| #define _LIBCPP_WARNING(x) __pragma(message(__FILE__ "(" _LIBCPP_TOSTRING(__LINE__) ") : warning note: " x)) | |
| #if _MSC_VER < 1900 | |
| #error "MSVC versions prior to Visual Studio 2015 are not supported" | |
| #endif | |
| # 544 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_HAS_IS_BASE_OF | |
| #define _LIBCPP_HAS_NO_CONSTEXPR | |
| #define _LIBCPP_HAS_NO_CXX14_CONSTEXPR | |
| #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES | |
| #if _MSC_VER <= 1800 | |
| #define _LIBCPP_HAS_NO_UNICODE_CHARS | |
| #endif | |
| # 552 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_HAS_NO_NOEXCEPT | |
| #define __alignof__ __alignof | |
| #define _LIBCPP_NORETURN __declspec(noreturn) | |
| #define _ALIGNAS(x) __declspec(align(x)) | |
| #define _LIBCPP_HAS_NO_VARIADICS | |
| #define _LIBCPP_BEGIN_NAMESPACE_STD namespace std { | |
| #define _LIBCPP_END_NAMESPACE_STD } | |
| #define _VSTD std | |
| # define _LIBCPP_WEAK | |
| namespace std { | |
| } | |
| #define _LIBCPP_HAS_NO_ASAN | |
| #elif defined(_LIBCPP_COMPILER_IBM) | |
| # 569 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _ALIGNAS(x) __attribute__((__aligned__(x))) | |
| #define _ALIGNAS_TYPE(x) __attribute__((__aligned__(__alignof(x)))) | |
| #define _ATTRIBUTE(x) __attribute__((x)) | |
| #define _LIBCPP_NORETURN __attribute__((noreturn)) | |
| #define _LIBCPP_HAS_NO_GENERALIZED_INITIALIZERS | |
| #define _LIBCPP_HAS_NO_NOEXCEPT | |
| #define _LIBCPP_HAS_NO_NULLPTR | |
| #define _LIBCPP_HAS_NO_UNICODE_CHARS | |
| #define _LIBCPP_HAS_IS_BASE_OF | |
| #define _LIBCPP_HAS_IS_FINAL | |
| #define _LIBCPP_HAS_NO_VARIABLE_TEMPLATES | |
| #if defined(_AIX) | |
| #define __MULTILOCALE_API | |
| #endif | |
| # 586 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE { | |
| #define _LIBCPP_END_NAMESPACE_STD } } | |
| #define _VSTD std::_LIBCPP_NAMESPACE | |
| namespace std { | |
| inline namespace _LIBCPP_NAMESPACE { | |
| } | |
| } | |
| #define _LIBCPP_HAS_NO_ASAN | |
| #endif // _LIBCPP_COMPILER_[CLANG|GCC|MSVC|IBM] | |
| # 599 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_OBJECT_FORMAT_COFF) | |
| #if defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| # define _LIBCPP_DLL_VIS | |
| # define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS | |
| # define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS | |
| # define _LIBCPP_OVERRIDABLE_FUNC_VIS | |
| #elif defined(_LIBCPP_BUILDING_LIBRARY) | |
| # 607 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_DLL_VIS __declspec(dllexport) | |
| # define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS | |
| # define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS _LIBCPP_DLL_VIS | |
| # define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_DLL_VIS | |
| #else | |
| # 612 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_DLL_VIS __declspec(dllimport) | |
| # define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS _LIBCPP_DLL_VIS | |
| # define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS | |
| # define _LIBCPP_OVERRIDABLE_FUNC_VIS | |
| #endif | |
| # 617 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_TYPE_VIS _LIBCPP_DLL_VIS | |
| #define _LIBCPP_FUNC_VIS _LIBCPP_DLL_VIS | |
| #define _LIBCPP_EXTERN_VIS _LIBCPP_DLL_VIS | |
| #define _LIBCPP_EXCEPTION_ABI _LIBCPP_DLL_VIS | |
| #define _LIBCPP_HIDDEN | |
| #define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS | |
| #define _LIBCPP_TEMPLATE_VIS | |
| #define _LIBCPP_FUNC_VIS_ONLY | |
| #define _LIBCPP_ENUM_VIS | |
| #if defined(_LIBCPP_COMPILER_MSVC) | |
| # define _LIBCPP_INLINE_VISIBILITY __forceinline | |
| # define _LIBCPP_ALWAYS_INLINE __forceinline | |
| # define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __forceinline | |
| #else | |
| # 633 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__)) | |
| # define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) | |
| # define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __attribute__ ((__always_inline__)) | |
| #endif | |
| # 637 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // defined(_LIBCPP_OBJECT_FORMAT_COFF) | |
| # 638 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_HIDDEN | |
| #if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| #define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden"))) | |
| #else | |
| # 643 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_HIDDEN | |
| #endif | |
| # 645 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 646 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS | |
| #if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| // The inline should be removed once PR32114 is resolved | |
| #define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS inline _LIBCPP_HIDDEN | |
| #else | |
| # 652 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_METHOD_TEMPLATE_IMPLICIT_INSTANTIATION_VIS | |
| #endif | |
| # 654 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 655 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_FUNC_VIS | |
| #if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| #define _LIBCPP_FUNC_VIS __attribute__ ((__visibility__("default"))) | |
| #else | |
| # 660 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_FUNC_VIS | |
| #endif | |
| # 662 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 663 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_TYPE_VIS | |
| # if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| # define _LIBCPP_TYPE_VIS __attribute__ ((__visibility__("default"))) | |
| # else | |
| # 668 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_TYPE_VIS | |
| # endif | |
| # 670 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 671 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_TEMPLATE_VIS | |
| # if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| # if __has_attribute(__type_visibility__) | |
| # define _LIBCPP_TEMPLATE_VIS __attribute__ ((__type_visibility__("default"))) | |
| # else | |
| # 677 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_TEMPLATE_VIS __attribute__ ((__visibility__("default"))) | |
| # endif | |
| # 679 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # else | |
| # 680 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_TEMPLATE_VIS | |
| # endif | |
| # 682 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 683 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_FUNC_VIS_ONLY | |
| # define _LIBCPP_FUNC_VIS_ONLY _LIBCPP_FUNC_VIS | |
| #endif | |
| # 687 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_EXTERN_VIS | |
| # define _LIBCPP_EXTERN_VIS | |
| #endif | |
| # 691 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_OVERRIDABLE_FUNC_VIS | |
| # define _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_FUNC_VIS | |
| #endif | |
| # 695 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_EXCEPTION_ABI | |
| #if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| #define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default"))) | |
| #else | |
| # 700 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_EXCEPTION_ABI | |
| #endif | |
| # 702 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 703 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_ENUM_VIS | |
| # if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__) | |
| # define _LIBCPP_ENUM_VIS __attribute__ ((__type_visibility__("default"))) | |
| # else | |
| # 708 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_ENUM_VIS | |
| # endif | |
| # 710 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 711 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS | |
| # if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) && __has_attribute(__type_visibility__) | |
| # define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS __attribute__ ((__visibility__("default"))) | |
| # else | |
| # 716 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_EXTERN_TEMPLATE_TYPE_VIS | |
| # endif | |
| # 718 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 719 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS | |
| # define _LIBCPP_CLASS_TEMPLATE_INSTANTIATION_VIS | |
| #endif | |
| # 723 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_INLINE_VISIBILITY | |
| #if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| #define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
| #else | |
| # 728 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__always_inline__)) | |
| #endif | |
| # 730 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 731 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_ALWAYS_INLINE | |
| #if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| #define _LIBCPP_ALWAYS_INLINE __attribute__ ((__visibility__("hidden"), __always_inline__)) | |
| #else | |
| # 736 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_ALWAYS_INLINE __attribute__ ((__always_inline__)) | |
| #endif | |
| # 738 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 739 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY | |
| # if !defined(_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS) | |
| # define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __attribute__((__visibility__("default"), __always_inline__)) | |
| # else | |
| # 744 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_EXTERN_TEMPLATE_INLINE_VISIBILITY __attribute__((__always_inline__)) | |
| # endif | |
| # 746 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 747 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_PREFERRED_OVERLOAD | |
| # if __has_attribute(__enable_if__) | |
| # define _LIBCPP_PREFERRED_OVERLOAD __attribute__ ((__enable_if__(true, ""))) | |
| # endif | |
| # 752 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 753 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_HAS_NO_NOEXCEPT | |
| # define _NOEXCEPT noexcept | |
| # define _NOEXCEPT_(x) noexcept(x) | |
| #else | |
| # 758 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _NOEXCEPT throw() | |
| # define _NOEXCEPT_(x) | |
| #endif | |
| # 761 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_DEBUG_USE_EXCEPTIONS) | |
| # if !defined(_LIBCPP_DEBUG) | |
| # error cannot use _LIBCPP_DEBUG_USE_EXCEPTIONS unless _LIBCPP_DEBUG is defined | |
| # endif | |
| # 766 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _NOEXCEPT_DEBUG noexcept(false) | |
| # define _NOEXCEPT_DEBUG_(x) noexcept(false) | |
| #else | |
| # 769 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _NOEXCEPT_DEBUG _NOEXCEPT | |
| # define _NOEXCEPT_DEBUG_(x) _NOEXCEPT_(x) | |
| #endif | |
| # 772 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_HAS_NO_UNICODE_CHARS | |
| typedef unsigned short char16_t; | |
| typedef unsigned int char32_t; | |
| #endif // _LIBCPP_HAS_NO_UNICODE_CHARS | |
| # 777 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef __SIZEOF_INT128__ | |
| #define _LIBCPP_HAS_NO_INT128 | |
| #endif | |
| # 781 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_CXX03_LANG | |
| # if __has_extension(c_static_assert) | |
| # define static_assert(__b, __m) _Static_assert(__b, __m) | |
| # else | |
| # 786 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| extern "C++" { | |
| template <bool> struct __static_assert_test; | |
| template <> struct __static_assert_test<true> {}; | |
| template <unsigned> struct __static_assert_check {}; | |
| } | |
| #define static_assert(__b, __m) \ | |
| typedef __static_assert_check<sizeof(__static_assert_test<(__b)>)> \ | |
| _LIBCPP_CONCAT(__t, __LINE__) | |
| # endif // __has_extension(c_static_assert) | |
| # 795 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 796 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_HAS_NO_DECLTYPE | |
| // GCC 4.6 provides __decltype in all standard modes. | |
| #if __has_keyword(__decltype) || _LIBCPP_CLANG_VER >= 304 || _GNUC_VER >= 406 | |
| # define decltype(__x) __decltype(__x) | |
| #else | |
| # 802 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define decltype(__x) __typeof__(__x) | |
| #endif | |
| # 804 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 805 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_HAS_NO_CONSTEXPR | |
| #define _LIBCPP_CONSTEXPR | |
| #else | |
| # 809 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_CONSTEXPR constexpr | |
| #endif | |
| # 811 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_CXX03_LANG | |
| #define _LIBCPP_DEFAULT {} | |
| #else | |
| # 815 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_DEFAULT = default; | |
| #endif | |
| # 817 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_CXX03_LANG | |
| #define _LIBCPP_EQUAL_DELETE | |
| #else | |
| # 821 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_EQUAL_DELETE = delete | |
| #endif | |
| # 823 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __GNUC__ | |
| #define _NOALIAS __attribute__((__malloc__)) | |
| #else | |
| # 827 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _NOALIAS | |
| #endif | |
| # 829 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(cxx_explicit_conversions) || defined(__IBMCPP__) || \ | |
| (!defined(_LIBCPP_CXX03_LANG) && defined(__GNUC__)) // All supported GCC versions | |
| # define _LIBCPP_EXPLICIT explicit | |
| #else | |
| # 834 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_EXPLICIT | |
| #endif | |
| # 836 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !__has_builtin(__builtin_operator_new) || !__has_builtin(__builtin_operator_delete) | |
| # define _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE | |
| #endif | |
| # 840 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_HAS_NO_STRONG_ENUMS | |
| #define _LIBCPP_DECLARE_STRONG_ENUM(x) struct _LIBCPP_TYPE_VIS x { enum __lx | |
| #define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) \ | |
| __lx __v_; \ | |
| _LIBCPP_ALWAYS_INLINE x(__lx __v) : __v_(__v) {} \ | |
| _LIBCPP_ALWAYS_INLINE explicit x(int __v) : __v_(static_cast<__lx>(__v)) {} \ | |
| _LIBCPP_ALWAYS_INLINE operator int() const {return __v_;} \ | |
| }; | |
| #else // _LIBCPP_HAS_NO_STRONG_ENUMS | |
| # 850 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_DECLARE_STRONG_ENUM(x) enum class _LIBCPP_ENUM_VIS x | |
| #define _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(x) | |
| #endif // _LIBCPP_HAS_NO_STRONG_ENUMS | |
| # 853 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_DEBUG | |
| # if _LIBCPP_DEBUG == 0 | |
| # define _LIBCPP_DEBUG_LEVEL 1 | |
| # elif _LIBCPP_DEBUG == 1 | |
| # 858 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_DEBUG_LEVEL 2 | |
| # else | |
| # 860 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # error Supported values for _LIBCPP_DEBUG are 0 and 1 | |
| # endif | |
| # 862 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # if !defined(_LIBCPP_BUILDING_LIBRARY) | |
| # define _LIBCPP_EXTERN_TEMPLATE(...) | |
| # endif | |
| # 865 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 866 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_DISABLE_EXTERN_TEMPLATE | |
| #define _LIBCPP_EXTERN_TEMPLATE(...) | |
| #define _LIBCPP_EXTERN_TEMPLATE2(...) | |
| #endif | |
| # 871 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_EXTERN_TEMPLATE | |
| #define _LIBCPP_EXTERN_TEMPLATE(...) extern template __VA_ARGS__; | |
| #endif | |
| # 875 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_EXTERN_TEMPLATE2 | |
| #define _LIBCPP_EXTERN_TEMPLATE2(...) extern template __VA_ARGS__; | |
| #endif | |
| # 879 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__APPLE__) && defined(__LP64__) && !defined(__x86_64__) | |
| #define _LIBCPP_NONUNIQUE_RTTI_BIT (1ULL << 63) | |
| #endif | |
| # 883 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__APPLE__) || defined(__FreeBSD__) || defined(_LIBCPP_MSVCRT) || \ | |
| defined(__sun__) || defined(__NetBSD__) || defined(__CloudABI__) | |
| #define _LIBCPP_LOCALE__L_EXTENSIONS 1 | |
| #endif | |
| # 888 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__unix__) || (defined(__APPLE__) && defined(__MACH__)) | |
| // Most unix variants have catopen. These are the specific ones that don't. | |
| #if !defined(__BIONIC__) && !defined(_NEWLIB_VERSION) | |
| #define _LIBCPP_HAS_CATOPEN 1 | |
| #endif | |
| # 894 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 895 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef __FreeBSD__ | |
| #define _DECLARE_C99_LDBL_MATH 1 | |
| #endif | |
| # 899 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__APPLE__) | |
| # if !defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && \ | |
| defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) | |
| # define __MAC_OS_X_VERSION_MIN_REQUIRED __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ | |
| # endif | |
| # 905 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) | |
| # if __MAC_OS_X_VERSION_MIN_REQUIRED < 1060 | |
| # define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION | |
| # endif | |
| # 909 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # endif | |
| # 910 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // defined(__APPLE__) | |
| # 911 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__APPLE__) || defined(__FreeBSD__) | |
| #define _LIBCPP_HAS_DEFAULTRUNELOCALE | |
| #endif | |
| # 915 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__APPLE__) || defined(__FreeBSD__) || defined(__sun__) | |
| #define _LIBCPP_WCTYPE_IS_MASK | |
| #endif | |
| # 919 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_STD_VER | |
| # if __cplusplus <= 201103L | |
| # define _LIBCPP_STD_VER 11 | |
| # elif __cplusplus <= 201402L | |
| # 924 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_STD_VER 14 | |
| # else | |
| # 926 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_STD_VER 16 // current year, or date of c++17 ratification | |
| # endif | |
| # 928 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // _LIBCPP_STD_VER | |
| # 929 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if _LIBCPP_STD_VER > 11 | |
| #define _LIBCPP_DEPRECATED [[deprecated]] | |
| #else | |
| # 933 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_DEPRECATED | |
| #endif | |
| # 935 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if _LIBCPP_STD_VER <= 11 | |
| #define _LIBCPP_EXPLICIT_AFTER_CXX11 | |
| #define _LIBCPP_DEPRECATED_AFTER_CXX11 | |
| #else | |
| # 940 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_EXPLICIT_AFTER_CXX11 explicit | |
| #define _LIBCPP_DEPRECATED_AFTER_CXX11 [[deprecated]] | |
| #endif | |
| # 943 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if _LIBCPP_STD_VER > 11 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) | |
| #define _LIBCPP_CONSTEXPR_AFTER_CXX11 constexpr | |
| #else | |
| # 947 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| #endif | |
| # 949 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_CXX14_CONSTEXPR) | |
| #define _LIBCPP_CONSTEXPR_AFTER_CXX14 constexpr | |
| #else | |
| # 953 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_CONSTEXPR_AFTER_CXX14 | |
| #endif | |
| # 955 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // FIXME: Remove all usages of this macro once compilers catch up. | |
| #if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606L) | |
| # define _LIBCPP_HAS_NO_INLINE_VARIABLES | |
| #endif | |
| # 960 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifdef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| # define _LIBCPP_EXPLICIT_MOVE(x) _VSTD::move(x) | |
| #else | |
| # 964 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_EXPLICIT_MOVE(x) (x) | |
| #endif | |
| # 966 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_HAS_NO_ASAN | |
| _LIBCPP_FUNC_VIS extern "C" void __sanitizer_annotate_contiguous_container( | |
| const void *, const void *, const void *, const void *); | |
| #endif | |
| # 971 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Try to find out if RTTI is disabled. | |
| // g++ and cl.exe have RTTI on by default and define a macro when it is. | |
| // g++ only defines the macro in 4.3.2 and onwards. | |
| #if !defined(_LIBCPP_NO_RTTI) | |
| # if defined(__GNUC__) && ((__GNUC__ >= 5) || (__GNUC__ == 4 && \ | |
| (__GNUC_MINOR__ >= 3 || __GNUC_PATCHLEVEL__ >= 2))) && !defined(__GXX_RTTI) | |
| # define _LIBCPP_NO_RTTI | |
| # elif defined(_LIBCPP_COMPILER_MSVC) && !defined(_CPPRTTI) | |
| # 980 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_NO_RTTI | |
| # endif | |
| # 982 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 983 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_WEAK | |
| # define _LIBCPP_WEAK __attribute__((__weak__)) | |
| #endif | |
| # 987 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Thread API | |
| #if !defined(_LIBCPP_HAS_NO_THREADS) && \ | |
| !defined(_LIBCPP_HAS_THREAD_API_PTHREAD) && \ | |
| !defined(_LIBCPP_HAS_THREAD_API_WIN32) && \ | |
| !defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) | |
| # if defined(__FreeBSD__) || \ | |
| defined(__Fuchsia__) || \ | |
| defined(__NetBSD__) || \ | |
| defined(__linux__) || \ | |
| defined(__APPLE__) || \ | |
| defined(__CloudABI__) || \ | |
| defined(__sun__) || \ | |
| (defined(__MINGW32__) && __libcpp_has_include(<pthread.h>)) | |
| # define _LIBCPP_HAS_THREAD_API_PTHREAD | |
| # elif defined(_LIBCPP_WIN32API) | |
| # 1003 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_HAS_THREAD_API_WIN32 | |
| # else | |
| # 1005 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # error "No thread API" | |
| # endif // _LIBCPP_HAS_THREAD_API | |
| # 1007 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // _LIBCPP_HAS_NO_THREADS | |
| # 1008 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_PTHREAD) | |
| # error _LIBCPP_HAS_THREAD_API_PTHREAD may only be defined when \ | |
| _LIBCPP_HAS_NO_THREADS is not defined. | |
| #endif | |
| # 1013 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_HAS_NO_THREADS) && defined(_LIBCPP_HAS_THREAD_API_EXTERNAL) | |
| # error _LIBCPP_HAS_THREAD_API_EXTERNAL may not be defined when \ | |
| _LIBCPP_HAS_NO_THREADS is defined. | |
| #endif | |
| # 1018 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_HAS_NO_MONOTONIC_CLOCK) && !defined(_LIBCPP_HAS_NO_THREADS) | |
| # error _LIBCPP_HAS_NO_MONOTONIC_CLOCK may only be defined when \ | |
| _LIBCPP_HAS_NO_THREADS is defined. | |
| #endif | |
| # 1023 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Systems that use capability-based security (FreeBSD with Capsicum, | |
| // Nuxi CloudABI) may only provide local filesystem access (using *at()). | |
| // Functions like open(), rename(), unlink() and stat() should not be | |
| // used, as they attempt to access the global filesystem namespace. | |
| #ifdef __CloudABI__ | |
| #define _LIBCPP_HAS_NO_GLOBAL_FILESYSTEM_NAMESPACE | |
| #endif | |
| # 1031 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // CloudABI is intended for running networked services. Processes do not | |
| // have standard input and output channels. | |
| #ifdef __CloudABI__ | |
| #define _LIBCPP_HAS_NO_STDIN | |
| #define _LIBCPP_HAS_NO_STDOUT | |
| #endif | |
| # 1038 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(__BIONIC__) || defined(__CloudABI__) || \ | |
| defined(__Fuchsia__) || defined(_LIBCPP_HAS_MUSL_LIBC) | |
| #define _LIBCPP_PROVIDES_DEFAULT_RUNE_TABLE | |
| #endif | |
| # 1043 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Thread-unsafe functions such as strtok() and localtime() | |
| // are not available. | |
| #ifdef __CloudABI__ | |
| #define _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS | |
| #endif | |
| # 1049 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_feature(cxx_atomic) || __has_extension(c_atomic) || __has_keyword(_Atomic) | |
| #define _LIBCPP_HAS_C_ATOMIC_IMP | |
| #elif _GNUC_VER > 407 | |
| # 1053 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_HAS_GCC_ATOMIC_IMP | |
| #endif | |
| # 1055 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if (!defined(_LIBCPP_HAS_C_ATOMIC_IMP) && !defined(_LIBCPP_HAS_GCC_ATOMIC_IMP)) \ | |
| || defined(_LIBCPP_HAS_NO_THREADS) | |
| #define _LIBCPP_HAS_NO_ATOMIC_HEADER | |
| #endif | |
| # 1060 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #ifndef _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK | |
| #define _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK | |
| #endif | |
| # 1064 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS) | |
| #if defined(__clang__) && __has_attribute(acquire_capability) | |
| // Work around the attribute handling in clang. When both __declspec and | |
| // __attribute__ are present, the processing goes awry preventing the definition | |
| // of the types. | |
| #if !defined(_LIBCPP_OBJECT_FORMAT_COFF) | |
| #define _LIBCPP_HAS_THREAD_SAFETY_ANNOTATIONS | |
| #endif | |
| # 1073 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 1074 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 1075 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_attribute(require_constant_initialization) | |
| #define _LIBCPP_SAFE_STATIC __attribute__((__require_constant_initialization__)) | |
| #else | |
| # 1079 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_SAFE_STATIC | |
| #endif | |
| # 1081 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !__has_builtin(__builtin_addressof) && _GNUC_VER < 700 | |
| # define _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF | |
| #endif | |
| # 1085 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !defined(_LIBCPP_HAS_NO_OFF_T_FUNCTIONS) | |
| #if defined(_LIBCPP_MSVCRT) || defined(_NEWLIB_VERSION) | |
| #define _LIBCPP_HAS_NO_OFF_T_FUNCTIONS | |
| #endif | |
| # 1090 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 1091 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_attribute(diagnose_if) && !defined(_LIBCPP_DISABLE_ADDITIONAL_DIAGNOSTICS) | |
| # define _LIBCPP_DIAGNOSE_WARNING(...) \ | |
| __attribute__((diagnose_if(__VA_ARGS__, "warning"))) | |
| # define _LIBCPP_DIAGNOSE_ERROR(...) \ | |
| __attribute__((diagnose_if(__VA_ARGS__, "error"))) | |
| #else | |
| # 1098 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_DIAGNOSE_WARNING(...) | |
| # define _LIBCPP_DIAGNOSE_ERROR(...) | |
| #endif | |
| # 1101 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if __has_attribute(fallthough) || _GNUC_VER >= 700 | |
| // Use a function like macro to imply that it must be followed by a semicolon | |
| #define _LIBCPP_FALLTHROUGH() __attribute__((__fallthrough__)) | |
| #else | |
| # 1106 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_FALLTHROUGH() ((void)0) | |
| #endif | |
| # 1108 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_ABI_MICROSOFT) && \ | |
| (defined(_LIBCPP_COMPILER_MSVC) || __has_declspec_attribute(empty_bases)) | |
| # define _LIBCPP_DECLSPEC_EMPTY_BASES __declspec(empty_bases) | |
| #else | |
| # 1113 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_DECLSPEC_EMPTY_BASES | |
| #endif | |
| # 1115 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_ENABLE_CXX17_REMOVED_FEATURES) | |
| # define _LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR | |
| # define _LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS | |
| # define _LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE | |
| # define _LIBCPP_ENABLE_CXX17_REMOVED_BINDERS | |
| #endif // _LIBCPP_ENABLE_CXX17_REMOVED_FEATURES | |
| # 1122 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !defined(__cpp_deduction_guides) || __cpp_deduction_guides < 201611 | |
| # define _LIBCPP_HAS_NO_DEDUCTION_GUIDES | |
| #endif | |
| # 1126 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !__has_keyword(__is_aggregate) && (_GNUC_VER_NEW < 7001) | |
| # define _LIBCPP_HAS_NO_IS_AGGREGATE | |
| #endif | |
| # 1130 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if !defined(__cpp_coroutines) || __cpp_coroutines < 201703L | |
| # define _LIBCPP_HAS_NO_COROUTINES | |
| #endif | |
| # 1134 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // __cplusplus | |
| # 1136 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Decide whether to use availability macros. | |
| #if !defined(_LIBCPP_BUILDING_LIBRARY) && \ | |
| !defined(_LIBCPP_DISABLE_AVAILABILITY) && \ | |
| __has_feature(attribute_availability_with_strict) && \ | |
| __has_feature(attribute_availability_in_templates) | |
| #ifdef __APPLE__ | |
| #define _LIBCPP_USE_AVAILABILITY_APPLE | |
| #endif | |
| # 1145 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif | |
| # 1146 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Define availability macros. | |
| #if defined(_LIBCPP_USE_AVAILABILITY_APPLE) | |
| #define _LIBCPP_AVAILABILITY_SHARED_MUTEX \ | |
| __attribute__((availability(macosx,strict,introduced=10.12))) \ | |
| __attribute__((availability(ios,strict,introduced=10.0))) \ | |
| __attribute__((availability(tvos,strict,introduced=10.0))) \ | |
| __attribute__((availability(watchos,strict,introduced=3.0))) | |
| #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS __attribute__((unavailable)) | |
| #define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH __attribute__((unavailable)) | |
| #define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS \ | |
| __attribute__((availability(macosx,strict,introduced=10.12))) \ | |
| __attribute__((availability(ios,strict,introduced=10.0))) \ | |
| __attribute__((availability(tvos,strict,introduced=10.0))) \ | |
| __attribute__((availability(watchos,strict,introduced=3.0))) | |
| #define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE \ | |
| __attribute__((availability(macosx,strict,introduced=10.12))) \ | |
| __attribute__((availability(ios,strict,introduced=10.0))) \ | |
| __attribute__((availability(tvos,strict,introduced=10.0))) \ | |
| __attribute__((availability(watchos,strict,introduced=3.0))) | |
| #define _LIBCPP_AVAILABILITY_FUTURE_ERROR \ | |
| __attribute__((availability(ios,strict,introduced=6.0))) | |
| #define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE \ | |
| __attribute__((availability(macosx,strict,introduced=10.9))) \ | |
| __attribute__((availability(ios,strict,introduced=7.0))) | |
| #define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY \ | |
| __attribute__((availability(macosx,strict,introduced=10.9))) \ | |
| __attribute__((availability(ios,strict,introduced=7.0))) | |
| #define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR \ | |
| __attribute__((availability(macosx,strict,introduced=10.9))) \ | |
| __attribute__((availability(ios,strict,introduced=7.0))) | |
| #else | |
| # 1178 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_AVAILABILITY_SHARED_MUTEX | |
| #define _LIBCPP_AVAILABILITY_BAD_OPTIONAL_ACCESS | |
| #define _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH | |
| #define _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS | |
| #define _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE | |
| #define _LIBCPP_AVAILABILITY_FUTURE_ERROR | |
| #define _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE | |
| #define _LIBCPP_AVAILABILITY_LOCALE_CATEGORY | |
| #define _LIBCPP_AVAILABILITY_ATOMIC_SHARED_PTR | |
| #endif | |
| # 1188 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Define availability that depends on _LIBCPP_NO_EXCEPTIONS. | |
| #ifdef _LIBCPP_NO_EXCEPTIONS | |
| #define _LIBCPP_AVAILABILITY_DYNARRAY | |
| #define _LIBCPP_AVAILABILITY_FUTURE | |
| #else | |
| # 1194 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #define _LIBCPP_AVAILABILITY_DYNARRAY _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH | |
| #define _LIBCPP_AVAILABILITY_FUTURE _LIBCPP_AVAILABILITY_FUTURE_ERROR | |
| #endif | |
| # 1197 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Availability of stream API in the dylib got dropped and re-added. The | |
| // extern template should effectively be available at: | |
| // availability(macosx,introduced=10.9) | |
| // availability(ios,introduced=7.0) | |
| #if defined(_LIBCPP_USE_AVAILABILITY_APPLE) && \ | |
| ((defined(__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__) && \ | |
| __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ <= 1090) || \ | |
| (defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) && \ | |
| __ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__ <= 70000)) | |
| #define _LIBCPP_AVAILABILITY_NO_STREAMS_EXTERN_TEMPLATE | |
| #endif | |
| # 1209 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_COMPILER_IBM) | |
| #define _LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO | |
| #endif | |
| # 1213 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #if defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO) | |
| # define _LIBCPP_PUSH_MACROS | |
| # define _LIBCPP_POP_MACROS | |
| #else | |
| # 1218 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| // Don't warn about macro conflicts when we can restore them at the | |
| // end of the header. | |
| # ifndef _LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS | |
| # define _LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS | |
| # endif | |
| # 1223 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # if defined(_LIBCPP_COMPILER_MSVC) | |
| # define _LIBCPP_PUSH_MACROS \ | |
| __pragma(push_macro("min")) \ | |
| __pragma(push_macro("max")) | |
| # define _LIBCPP_POP_MACROS \ | |
| __pragma(pop_macro("min")) \ | |
| __pragma(pop_macro("max")) | |
| # else | |
| # 1231 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # define _LIBCPP_PUSH_MACROS \ | |
| _Pragma("push_macro(\"min\")") \ | |
| _Pragma("push_macro(\"max\")") | |
| # define _LIBCPP_POP_MACROS \ | |
| _Pragma("pop_macro(\"min\")") \ | |
| _Pragma("pop_macro(\"max\")") | |
| # endif | |
| # 1238 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // defined(_LIBCPP_HAS_NO_PRAGMA_PUSH_POP_MACRO) | |
| # 1239 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| #endif // _LIBCPP_CONFIG | |
| # 1241 "/usr/local/bin/../include/c++/v1/__config" 3 | |
| # 15 "/usr/local/bin/../include/c++/v1/experimental/__config" 2 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/experimental/__config" 3 | |
| #endif | |
| # 19 "/usr/local/bin/../include/c++/v1/experimental/__config" 3 | |
| #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL namespace std { namespace experimental { | |
| #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL } } | |
| #define _VSTD_EXPERIMENTAL std::experimental | |
| #define _LIBCPP_BEGIN_NAMESPACE_LFTS _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v1 { | |
| #define _LIBCPP_END_NAMESPACE_LFTS } } } | |
| #define _VSTD_LFTS _VSTD_EXPERIMENTAL::fundamentals_v1 | |
| #define _LIBCPP_BEGIN_NAMESPACE_LFTS_V2 _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace fundamentals_v2 { | |
| #define _LIBCPP_END_NAMESPACE_LFTS_V2 } } } | |
| #define _VSTD_LFTS_V2 _VSTD_EXPERIMENTAL::fundamentals_v2 | |
| #define _LIBCPP_BEGIN_NAMESPACE_LFTS_PMR _LIBCPP_BEGIN_NAMESPACE_LFTS namespace pmr { | |
| #define _LIBCPP_END_NAMESPACE_LFTS_PMR _LIBCPP_END_NAMESPACE_LFTS } | |
| #define _VSTD_LFTS_PMR _VSTD_LFTS::pmr | |
| #define _LIBCPP_BEGIN_NAMESPACE_CHRONO_LFTS _LIBCPP_BEGIN_NAMESPACE_STD \ | |
| namespace chrono { namespace experimental { inline namespace fundamentals_v1 { | |
| #define _LIBCPP_END_NAMESPACE_CHRONO_LFTS _LIBCPP_END_NAMESPACE_STD } } } | |
| #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_FILESYSTEM \ | |
| _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL namespace filesystem { \ | |
| inline namespace v1 { | |
| #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_FILESYSTEM \ | |
| } } _LIBCPP_END_NAMESPACE_EXPERIMENTAL | |
| #define _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL_COROUTINES \ | |
| _LIBCPP_BEGIN_NAMESPACE_EXPERIMENTAL inline namespace coroutines_v1 { | |
| #define _LIBCPP_END_NAMESPACE_EXPERIMENTAL_COROUTINES \ | |
| } _LIBCPP_END_NAMESPACE_EXPERIMENTAL | |
| #define _VSTD_CORO _VSTD_EXPERIMENTAL::coroutines_v1 | |
| #define _VSTD_FS ::std::experimental::filesystem::v1 | |
| #endif | |
| # 58 "/usr/local/bin/../include/c++/v1/experimental/__config" 3 | |
| # 50 "/usr/local/bin/../include/c++/v1/experimental/coroutine" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <new> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 50 "/usr/local/bin/../include/c++/v1/experimental/coroutine" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/new" 1 3 | |
| // -*- C++ -*- | |
| //===----------------------------- new ------------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_NEW | |
| #define _LIBCPP_NEW | |
| /* | |
| new synopsis | |
| namespace std | |
| { | |
| class bad_alloc | |
| : public exception | |
| { | |
| public: | |
| bad_alloc() noexcept; | |
| bad_alloc(const bad_alloc&) noexcept; | |
| bad_alloc& operator=(const bad_alloc&) noexcept; | |
| virtual const char* what() const noexcept; | |
| }; | |
| class bad_array_length : public bad_alloc // FIXME: Not part of C++ | |
| { | |
| public: | |
| bad_array_length() noexcept; | |
| }; | |
| class bad_array_new_length : public bad_alloc // C++14 | |
| { | |
| public: | |
| bad_array_new_length() noexcept; | |
| }; | |
| enum class align_val_t : size_t {}; // C++17 | |
| struct nothrow_t {}; | |
| extern const nothrow_t nothrow; | |
| typedef void (*new_handler)(); | |
| new_handler set_new_handler(new_handler new_p) noexcept; | |
| new_handler get_new_handler() noexcept; | |
| } // std | |
| void* operator new(std::size_t size); // replaceable | |
| void* operator new(std::size_t size, std::align_val_t alignment); // replaceable, C++17 | |
| void* operator new(std::size_t size, const std::nothrow_t&) noexcept; // replaceable | |
| void* operator new(std::size_t size, std::align_val_t alignment, | |
| const std::nothrow_t&) noexcept; // replaceable, C++17 | |
| void operator delete(void* ptr) noexcept; // replaceable | |
| void operator delete(void* ptr, std::size_t size) noexcept; // replaceable, C++14 | |
| void operator delete(void* ptr, std::align_val_t alignment) noexcept; // replaceable, C++17 | |
| void operator delete(void* ptr, std::size_t size, | |
| std::align_val_t alignment) noexcept; // replaceable, C++17 | |
| void operator delete(void* ptr, const std::nothrow_t&) noexcept; // replaceable | |
| void operator delete(void* ptr, std:align_val_t alignment, | |
| const std::nothrow_t&) noexcept; // replaceable, C++17 | |
| void* operator new[](std::size_t size); // replaceable | |
| void* operator new[](std::size_t size, | |
| std::align_val_t alignment) noexcept; // replaceable, C++17 | |
| void* operator new[](std::size_t size, const std::nothrow_t&) noexcept; // replaceable | |
| void* operator new[](std::size_t size, std::align_val_t alignment, | |
| const std::nothrow_t&) noexcept; // replaceable, C++17 | |
| void operator delete[](void* ptr) noexcept; // replaceable | |
| void operator delete[](void* ptr, std::size_t size) noexcept; // replaceable, C++14 | |
| void operator delete[](void* ptr, | |
| std::align_val_t alignment) noexcept; // replaceable, C++17 | |
| void operator delete[](void* ptr, std::size_t size, | |
| std::align_val_t alignment) noexcept; // replaceable, C++17 | |
| void operator delete[](void* ptr, const std::nothrow_t&) noexcept; // replaceable | |
| void operator delete[](void* ptr, std::align_val_t alignment, | |
| const std::nothrow_t&) noexcept; // replaceable, C++17 | |
| void* operator new (std::size_t size, void* ptr) noexcept; | |
| void* operator new[](std::size_t size, void* ptr) noexcept; | |
| void operator delete (void* ptr, void*) noexcept; | |
| void operator delete[](void* ptr, void*) noexcept; | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 88 "/usr/local/bin/../include/c++/v1/new" 3 | |
| # 89 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <exception> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 89 "/usr/local/bin/../include/c++/v1/new" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/exception" 1 3 | |
| // -*- C++ -*- | |
| //===-------------------------- exception ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_EXCEPTION | |
| #define _LIBCPP_EXCEPTION | |
| /* | |
| exception synopsis | |
| namespace std | |
| { | |
| class exception | |
| { | |
| public: | |
| exception() noexcept; | |
| exception(const exception&) noexcept; | |
| exception& operator=(const exception&) noexcept; | |
| virtual ~exception() noexcept; | |
| virtual const char* what() const noexcept; | |
| }; | |
| class bad_exception | |
| : public exception | |
| { | |
| public: | |
| bad_exception() noexcept; | |
| bad_exception(const bad_exception&) noexcept; | |
| bad_exception& operator=(const bad_exception&) noexcept; | |
| virtual ~bad_exception() noexcept; | |
| virtual const char* what() const noexcept; | |
| }; | |
| typedef void (*unexpected_handler)(); | |
| unexpected_handler set_unexpected(unexpected_handler f ) noexcept; | |
| unexpected_handler get_unexpected() noexcept; | |
| [[noreturn]] void unexpected(); | |
| typedef void (*terminate_handler)(); | |
| terminate_handler set_terminate(terminate_handler f ) noexcept; | |
| terminate_handler get_terminate() noexcept; | |
| [[noreturn]] void terminate() noexcept; | |
| bool uncaught_exception() noexcept; | |
| int uncaught_exceptions() noexcept; // C++17 | |
| typedef unspecified exception_ptr; | |
| exception_ptr current_exception() noexcept; | |
| void rethrow_exception [[noreturn]] (exception_ptr p); | |
| template<class E> exception_ptr make_exception_ptr(E e) noexcept; | |
| class nested_exception | |
| { | |
| public: | |
| nested_exception() noexcept; | |
| nested_exception(const nested_exception&) noexcept = default; | |
| nested_exception& operator=(const nested_exception&) noexcept = default; | |
| virtual ~nested_exception() = default; | |
| // access functions | |
| [[noreturn]] void rethrow_nested() const; | |
| exception_ptr nested_ptr() const noexcept; | |
| }; | |
| template <class T> [[noreturn]] void throw_with_nested(T&& t); | |
| template <class E> void rethrow_if_nested(const E& e); | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 80 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| # 81 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 81 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/cstddef" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- cstddef ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_CSTDDEF | |
| #define _LIBCPP_CSTDDEF | |
| /* | |
| cstddef synopsis | |
| Macros: | |
| offsetof(type,member-designator) | |
| NULL | |
| namespace std | |
| { | |
| Types: | |
| ptrdiff_t | |
| size_t | |
| max_align_t | |
| nullptr_t | |
| byte // C++17 | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 37 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 38 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 41 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| #endif | |
| # 42 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| // Don't include our own <stddef.h>; we don't want to declare ::nullptr_t. | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 44 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/stddef.h" 1 3 | |
| /*===---- stddef.h - Basic type definitions --------------------------------=== | |
| * | |
| * Copyright (c) 2008 Eli Friedman | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| *===-----------------------------------------------------------------------=== | |
| */ | |
| #if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \ | |
| defined(__need_size_t) || defined(__need_wchar_t) || \ | |
| defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \ | |
| !defined(__need_wchar_t) && !defined(__need_NULL) && \ | |
| !defined(__need_wint_t) | |
| /* Always define miscellaneous pieces when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define __STDDEF_H | |
| #endif | |
| # 37 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define __need_ptrdiff_t | |
| #define __need_size_t | |
| #define __need_wchar_t | |
| #define __need_NULL | |
| #define __need_STDDEF_H_misc | |
| /* __need_wint_t is intentionally not defined here. */ | |
| #endif | |
| # 44 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_ptrdiff_t) | |
| #if !defined(_PTRDIFF_T) || __has_feature(modules) | |
| /* Always define ptrdiff_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _PTRDIFF_T | |
| #endif | |
| # 51 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
| #endif | |
| # 53 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_ptrdiff_t | |
| #endif /* defined(__need_ptrdiff_t) */ | |
| # 55 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_size_t) | |
| #if !defined(_SIZE_T) || __has_feature(modules) | |
| /* Always define size_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _SIZE_T | |
| #endif | |
| # 62 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ size_t; | |
| #endif | |
| # 64 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_size_t | |
| #endif /*defined(__need_size_t) */ | |
| # 66 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| /* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is | |
| * enabled. */ | |
| #if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \ | |
| !defined(_RSIZE_T)) || __has_feature(modules) | |
| /* Always define rsize_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _RSIZE_T | |
| #endif | |
| # 76 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ rsize_t; | |
| #endif | |
| # 78 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 79 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_wchar_t) | |
| #ifndef __cplusplus | |
| /* Always define wchar_t when modules are available. */ | |
| #if !defined(_WCHAR_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WCHAR_T | |
| #if defined(_MSC_EXTENSIONS) | |
| #define _WCHAR_T_DEFINED | |
| #endif | |
| # 89 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 90 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WCHAR_TYPE__ wchar_t; | |
| #endif | |
| # 92 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 93 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wchar_t | |
| #endif /* defined(__need_wchar_t) */ | |
| # 95 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_NULL) | |
| #undef NULL | |
| #ifdef __cplusplus | |
| # if !defined(__MINGW32__) && !defined(_MSC_VER) | |
| # define NULL __null | |
| # else | |
| # 102 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL 0 | |
| # endif | |
| # 104 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #else | |
| # 105 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL ((void*)0) | |
| #endif | |
| # 107 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #ifdef __cplusplus | |
| #if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) | |
| namespace std { typedef decltype(nullptr) nullptr_t; } | |
| using ::std::nullptr_t; | |
| #endif | |
| # 112 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 113 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_NULL | |
| #endif /* defined(__need_NULL) */ | |
| # 115 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| #if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include "__stddef_max_align_t.h" | |
| #endif /* expanded by -frewrite-includes */ | |
| # 118 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/__stddef_max_align_t.h" 1 3 | |
| /*===---- __stddef_max_align_t.h - Definition of max_align_t for modules ---=== | |
| * | |
| * Copyright (c) 2014 Chandler Carruth | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| *===-----------------------------------------------------------------------=== | |
| */ | |
| #ifndef __CLANG_MAX_ALIGN_T_DEFINED | |
| #define __CLANG_MAX_ALIGN_T_DEFINED | |
| #if defined(_MSC_VER) | |
| typedef double max_align_t; | |
| #elif defined(__APPLE__) | |
| # 32 "/usr/local/lib/clang/5.0.0/include/__stddef_max_align_t.h" 3 | |
| typedef long double max_align_t; | |
| #else | |
| # 34 "/usr/local/lib/clang/5.0.0/include/__stddef_max_align_t.h" 3 | |
| // Define 'max_align_t' to match the GCC definition. | |
| typedef struct { | |
| long long __clang_max_align_nonce1 | |
| __attribute__((__aligned__(__alignof__(long long)))); | |
| long double __clang_max_align_nonce2 | |
| __attribute__((__aligned__(__alignof__(long double)))); | |
| } max_align_t; | |
| #endif | |
| # 42 "/usr/local/lib/clang/5.0.0/include/__stddef_max_align_t.h" 3 | |
| #endif | |
| # 44 "/usr/local/lib/clang/5.0.0/include/__stddef_max_align_t.h" 3 | |
| # 119 "/usr/local/lib/clang/5.0.0/include/stddef.h" 2 3 | |
| #endif | |
| # 120 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define offsetof(t, d) __builtin_offsetof(t, d) | |
| #undef __need_STDDEF_H_misc | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 123 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| /* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use | |
| __WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ | |
| #if defined(__need_wint_t) | |
| /* Always define wint_t when modules are available. */ | |
| #if !defined(_WINT_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WINT_T | |
| #endif | |
| # 132 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WINT_TYPE__ wint_t; | |
| #endif | |
| # 134 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wint_t | |
| #endif /* __need_wint_t */ | |
| # 136 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 138 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 45 "/usr/local/bin/../include/c++/v1/cstddef" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__nullptr> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 45 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/__nullptr" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- __nullptr --------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_NULLPTR | |
| #define _LIBCPP_NULLPTR | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 14 "/usr/local/bin/../include/c++/v1/__nullptr" 3 | |
| # 15 "/usr/local/bin/../include/c++/v1/__nullptr" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/__nullptr" 3 | |
| #endif | |
| # 19 "/usr/local/bin/../include/c++/v1/__nullptr" 3 | |
| #ifdef _LIBCPP_HAS_NO_NULLPTR | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| struct _LIBCPP_TEMPLATE_VIS nullptr_t | |
| { | |
| void* __lx; | |
| struct __nat {int __for_bool_;}; | |
| _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t() : __lx(0) {} | |
| _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t(int __nat::*) : __lx(0) {} | |
| _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR operator int __nat::*() const {return 0;} | |
| template <class _Tp> | |
| _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR | |
| operator _Tp* () const {return 0;} | |
| template <class _Tp, class _Up> | |
| _LIBCPP_ALWAYS_INLINE | |
| operator _Tp _Up::* () const {return 0;} | |
| friend _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR bool operator==(nullptr_t, nullptr_t) {return true;} | |
| friend _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR bool operator!=(nullptr_t, nullptr_t) {return false;} | |
| }; | |
| inline _LIBCPP_ALWAYS_INLINE _LIBCPP_CONSTEXPR nullptr_t __get_nullptr_t() {return nullptr_t(0);} | |
| #define nullptr _VSTD::__get_nullptr_t() | |
| _LIBCPP_END_NAMESPACE_STD | |
| #else // _LIBCPP_HAS_NO_NULLPTR | |
| # 54 "/usr/local/bin/../include/c++/v1/__nullptr" 3 | |
| namespace std | |
| { | |
| typedef decltype(nullptr) nullptr_t; | |
| } | |
| #endif // _LIBCPP_HAS_NO_NULLPTR | |
| # 61 "/usr/local/bin/../include/c++/v1/__nullptr" 3 | |
| #endif // _LIBCPP_NULLPTR | |
| # 63 "/usr/local/bin/../include/c++/v1/__nullptr" 3 | |
| # 46 "/usr/local/bin/../include/c++/v1/cstddef" 2 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| using ::ptrdiff_t; | |
| using ::size_t; | |
| #if defined(__CLANG_MAX_ALIGN_T_DEFINED) || defined(_GCC_MAX_ALIGN_T) || \ | |
| defined(__DEFINED_max_align_t) | |
| // Re-use the compiler's <stddef.h> max_align_t where possible. | |
| using ::max_align_t; | |
| #else | |
| # 57 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| typedef long double max_align_t; | |
| #endif | |
| # 59 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #if _LIBCPP_STD_VER > 14 | |
| namespace std // purposefully not versioned | |
| { | |
| enum class byte : unsigned char {}; | |
| constexpr byte& operator|=(byte& __lhs, byte __rhs) noexcept | |
| { return __lhs = byte(static_cast<unsigned char>(__lhs) | static_cast<unsigned char>(__rhs)); } | |
| constexpr byte operator| (byte __lhs, byte __rhs) noexcept | |
| { return byte(static_cast<unsigned char>(__lhs) | static_cast<unsigned char>(__rhs)); } | |
| constexpr byte& operator&=(byte& __lhs, byte __rhs) noexcept | |
| { return __lhs = byte(static_cast<unsigned char>(__lhs) & static_cast<unsigned char>(__rhs)); } | |
| constexpr byte operator& (byte __lhs, byte __rhs) noexcept | |
| { return byte(static_cast<unsigned char>(__lhs) & static_cast<unsigned char>(__rhs)); } | |
| constexpr byte& operator^=(byte& __lhs, byte __rhs) noexcept | |
| { return __lhs = byte(static_cast<unsigned char>(__lhs) ^ static_cast<unsigned char>(__rhs)); } | |
| constexpr byte operator^ (byte __lhs, byte __rhs) noexcept | |
| { return byte(static_cast<unsigned char>(__lhs) ^ static_cast<unsigned char>(__rhs)); } | |
| constexpr byte operator~ (byte __b) noexcept | |
| { return byte(~static_cast<unsigned char>(__b)); } | |
| } | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> // rest of byte | |
| #endif /* expanded by -frewrite-includes */ | |
| # 87 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/type_traits" 1 3 | |
| // -*- C++ -*- | |
| //===------------------------ type_traits ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_TYPE_TRAITS | |
| #define _LIBCPP_TYPE_TRAITS | |
| /* | |
| type_traits synopsis | |
| namespace std | |
| { | |
| // helper class: | |
| template <class T, T v> struct integral_constant; | |
| typedef integral_constant<bool, true> true_type; // C++11 | |
| typedef integral_constant<bool, false> false_type; // C++11 | |
| template <bool B> // C++14 | |
| using bool_constant = integral_constant<bool, B>; // C++14 | |
| typedef bool_constant<true> true_type; // C++14 | |
| typedef bool_constant<false> false_type; // C++14 | |
| // helper traits | |
| template <bool, class T = void> struct enable_if; | |
| template <bool, class T, class F> struct conditional; | |
| // Primary classification traits: | |
| template <class T> struct is_void; | |
| template <class T> struct is_null_pointer; // C++14 | |
| template <class T> struct is_integral; | |
| template <class T> struct is_floating_point; | |
| template <class T> struct is_array; | |
| template <class T> struct is_pointer; | |
| template <class T> struct is_lvalue_reference; | |
| template <class T> struct is_rvalue_reference; | |
| template <class T> struct is_member_object_pointer; | |
| template <class T> struct is_member_function_pointer; | |
| template <class T> struct is_enum; | |
| template <class T> struct is_union; | |
| template <class T> struct is_class; | |
| template <class T> struct is_function; | |
| // Secondary classification traits: | |
| template <class T> struct is_reference; | |
| template <class T> struct is_arithmetic; | |
| template <class T> struct is_fundamental; | |
| template <class T> struct is_member_pointer; | |
| template <class T> struct is_scalar; | |
| template <class T> struct is_object; | |
| template <class T> struct is_compound; | |
| // Const-volatile properties and transformations: | |
| template <class T> struct is_const; | |
| template <class T> struct is_volatile; | |
| template <class T> struct remove_const; | |
| template <class T> struct remove_volatile; | |
| template <class T> struct remove_cv; | |
| template <class T> struct add_const; | |
| template <class T> struct add_volatile; | |
| template <class T> struct add_cv; | |
| // Reference transformations: | |
| template <class T> struct remove_reference; | |
| template <class T> struct add_lvalue_reference; | |
| template <class T> struct add_rvalue_reference; | |
| // Pointer transformations: | |
| template <class T> struct remove_pointer; | |
| template <class T> struct add_pointer; | |
| // Integral properties: | |
| template <class T> struct is_signed; | |
| template <class T> struct is_unsigned; | |
| template <class T> struct make_signed; | |
| template <class T> struct make_unsigned; | |
| // Array properties and transformations: | |
| template <class T> struct rank; | |
| template <class T, unsigned I = 0> struct extent; | |
| template <class T> struct remove_extent; | |
| template <class T> struct remove_all_extents; | |
| // Member introspection: | |
| template <class T> struct is_pod; | |
| template <class T> struct is_trivial; | |
| template <class T> struct is_trivially_copyable; | |
| template <class T> struct is_standard_layout; | |
| template <class T> struct is_literal_type; | |
| template <class T> struct is_empty; | |
| template <class T> struct is_polymorphic; | |
| template <class T> struct is_abstract; | |
| template <class T> struct is_final; // C++14 | |
| template <class T> struct is_aggregate; // C++17 | |
| template <class T, class... Args> struct is_constructible; | |
| template <class T> struct is_default_constructible; | |
| template <class T> struct is_copy_constructible; | |
| template <class T> struct is_move_constructible; | |
| template <class T, class U> struct is_assignable; | |
| template <class T> struct is_copy_assignable; | |
| template <class T> struct is_move_assignable; | |
| template <class T, class U> struct is_swappable_with; // C++17 | |
| template <class T> struct is_swappable; // C++17 | |
| template <class T> struct is_destructible; | |
| template <class T, class... Args> struct is_trivially_constructible; | |
| template <class T> struct is_trivially_default_constructible; | |
| template <class T> struct is_trivially_copy_constructible; | |
| template <class T> struct is_trivially_move_constructible; | |
| template <class T, class U> struct is_trivially_assignable; | |
| template <class T> struct is_trivially_copy_assignable; | |
| template <class T> struct is_trivially_move_assignable; | |
| template <class T> struct is_trivially_destructible; | |
| template <class T, class... Args> struct is_nothrow_constructible; | |
| template <class T> struct is_nothrow_default_constructible; | |
| template <class T> struct is_nothrow_copy_constructible; | |
| template <class T> struct is_nothrow_move_constructible; | |
| template <class T, class U> struct is_nothrow_assignable; | |
| template <class T> struct is_nothrow_copy_assignable; | |
| template <class T> struct is_nothrow_move_assignable; | |
| template <class T, class U> struct is_nothrow_swappable_with; // C++17 | |
| template <class T> struct is_nothrow_swappable; // C++17 | |
| template <class T> struct is_nothrow_destructible; | |
| template <class T> struct has_virtual_destructor; | |
| // Relationships between types: | |
| template <class T, class U> struct is_same; | |
| template <class Base, class Derived> struct is_base_of; | |
| template <class From, class To> struct is_convertible; | |
| template <class, class R = void> struct is_callable; // not defined | |
| template <class Fn, class... ArgTypes, class R> | |
| struct is_callable<Fn(ArgTypes...), R>; | |
| template <class, class R = void> struct is_nothrow_callable; // not defined | |
| template <class Fn, class... ArgTypes, class R> | |
| struct is_nothrow_callable<Fn(ArgTypes...), R>; | |
| // Alignment properties and transformations: | |
| template <class T> struct alignment_of; | |
| template <size_t Len, size_t Align = most_stringent_alignment_requirement> | |
| struct aligned_storage; | |
| template <size_t Len, class... Types> struct aligned_union; | |
| template <class T> struct decay; | |
| template <class... T> struct common_type; | |
| template <class T> struct underlying_type; | |
| template <class> class result_of; // undefined | |
| template <class Fn, class... ArgTypes> class result_of<Fn(ArgTypes...)>; | |
| // const-volatile modifications: | |
| template <class T> | |
| using remove_const_t = typename remove_const<T>::type; // C++14 | |
| template <class T> | |
| using remove_volatile_t = typename remove_volatile<T>::type; // C++14 | |
| template <class T> | |
| using remove_cv_t = typename remove_cv<T>::type; // C++14 | |
| template <class T> | |
| using add_const_t = typename add_const<T>::type; // C++14 | |
| template <class T> | |
| using add_volatile_t = typename add_volatile<T>::type; // C++14 | |
| template <class T> | |
| using add_cv_t = typename add_cv<T>::type; // C++14 | |
| // reference modifications: | |
| template <class T> | |
| using remove_reference_t = typename remove_reference<T>::type; // C++14 | |
| template <class T> | |
| using add_lvalue_reference_t = typename add_lvalue_reference<T>::type; // C++14 | |
| template <class T> | |
| using add_rvalue_reference_t = typename add_rvalue_reference<T>::type; // C++14 | |
| // sign modifications: | |
| template <class T> | |
| using make_signed_t = typename make_signed<T>::type; // C++14 | |
| template <class T> | |
| using make_unsigned_t = typename make_unsigned<T>::type; // C++14 | |
| // array modifications: | |
| template <class T> | |
| using remove_extent_t = typename remove_extent<T>::type; // C++14 | |
| template <class T> | |
| using remove_all_extents_t = typename remove_all_extents<T>::type; // C++14 | |
| // pointer modifications: | |
| template <class T> | |
| using remove_pointer_t = typename remove_pointer<T>::type; // C++14 | |
| template <class T> | |
| using add_pointer_t = typename add_pointer<T>::type; // C++14 | |
| // other transformations: | |
| template <size_t Len, std::size_t Align=default-alignment> | |
| using aligned_storage_t = typename aligned_storage<Len,Align>::type; // C++14 | |
| template <std::size_t Len, class... Types> | |
| using aligned_union_t = typename aligned_union<Len,Types...>::type; // C++14 | |
| template <class T> | |
| using decay_t = typename decay<T>::type; // C++14 | |
| template <bool b, class T=void> | |
| using enable_if_t = typename enable_if<b,T>::type; // C++14 | |
| template <bool b, class T, class F> | |
| using conditional_t = typename conditional<b,T,F>::type; // C++14 | |
| template <class... T> | |
| using common_type_t = typename common_type<T...>::type; // C++14 | |
| template <class T> | |
| using underlying_type_t = typename underlying_type<T>::type; // C++14 | |
| template <class F, class... ArgTypes> | |
| using result_of_t = typename result_of<F(ArgTypes...)>::type; // C++14 | |
| template <class...> | |
| using void_t = void; // C++17 | |
| // See C++14 20.10.4.1, primary type categories | |
| template <class T> constexpr bool is_void_v | |
| = is_void<T>::value; // C++17 | |
| template <class T> constexpr bool is_null_pointer_v | |
| = is_null_pointer<T>::value; // C++17 | |
| template <class T> constexpr bool is_integral_v | |
| = is_integral<T>::value; // C++17 | |
| template <class T> constexpr bool is_floating_point_v | |
| = is_floating_point<T>::value; // C++17 | |
| template <class T> constexpr bool is_array_v | |
| = is_array<T>::value; // C++17 | |
| template <class T> constexpr bool is_pointer_v | |
| = is_pointer<T>::value; // C++17 | |
| template <class T> constexpr bool is_lvalue_reference_v | |
| = is_lvalue_reference<T>::value; // C++17 | |
| template <class T> constexpr bool is_rvalue_reference_v | |
| = is_rvalue_reference<T>::value; // C++17 | |
| template <class T> constexpr bool is_member_object_pointer_v | |
| = is_member_object_pointer<T>::value; // C++17 | |
| template <class T> constexpr bool is_member_function_pointer_v | |
| = is_member_function_pointer<T>::value; // C++17 | |
| template <class T> constexpr bool is_enum_v | |
| = is_enum<T>::value; // C++17 | |
| template <class T> constexpr bool is_union_v | |
| = is_union<T>::value; // C++17 | |
| template <class T> constexpr bool is_class_v | |
| = is_class<T>::value; // C++17 | |
| template <class T> constexpr bool is_function_v | |
| = is_function<T>::value; // C++17 | |
| // See C++14 20.10.4.2, composite type categories | |
| template <class T> constexpr bool is_reference_v | |
| = is_reference<T>::value; // C++17 | |
| template <class T> constexpr bool is_arithmetic_v | |
| = is_arithmetic<T>::value; // C++17 | |
| template <class T> constexpr bool is_fundamental_v | |
| = is_fundamental<T>::value; // C++17 | |
| template <class T> constexpr bool is_object_v | |
| = is_object<T>::value; // C++17 | |
| template <class T> constexpr bool is_scalar_v | |
| = is_scalar<T>::value; // C++17 | |
| template <class T> constexpr bool is_compound_v | |
| = is_compound<T>::value; // C++17 | |
| template <class T> constexpr bool is_member_pointer_v | |
| = is_member_pointer<T>::value; // C++17 | |
| // See C++14 20.10.4.3, type properties | |
| template <class T> constexpr bool is_const_v | |
| = is_const<T>::value; // C++17 | |
| template <class T> constexpr bool is_volatile_v | |
| = is_volatile<T>::value; // C++17 | |
| template <class T> constexpr bool is_trivial_v | |
| = is_trivial<T>::value; // C++17 | |
| template <class T> constexpr bool is_trivially_copyable_v | |
| = is_trivially_copyable<T>::value; // C++17 | |
| template <class T> constexpr bool is_standard_layout_v | |
| = is_standard_layout<T>::value; // C++17 | |
| template <class T> constexpr bool is_pod_v | |
| = is_pod<T>::value; // C++17 | |
| template <class T> constexpr bool is_literal_type_v | |
| = is_literal_type<T>::value; // C++17 | |
| template <class T> constexpr bool is_empty_v | |
| = is_empty<T>::value; // C++17 | |
| template <class T> constexpr bool is_polymorphic_v | |
| = is_polymorphic<T>::value; // C++17 | |
| template <class T> constexpr bool is_abstract_v | |
| = is_abstract<T>::value; // C++17 | |
| template <class T> constexpr bool is_final_v | |
| = is_final<T>::value; // C++17 | |
| template <class T> constexpr bool is_aggregate_v | |
| = is_aggregate<T>::value; // C++17 | |
| template <class T> constexpr bool is_signed_v | |
| = is_signed<T>::value; // C++17 | |
| template <class T> constexpr bool is_unsigned_v | |
| = is_unsigned<T>::value; // C++17 | |
| template <class T, class... Args> constexpr bool is_constructible_v | |
| = is_constructible<T, Args...>::value; // C++17 | |
| template <class T> constexpr bool is_default_constructible_v | |
| = is_default_constructible<T>::value; // C++17 | |
| template <class T> constexpr bool is_copy_constructible_v | |
| = is_copy_constructible<T>::value; // C++17 | |
| template <class T> constexpr bool is_move_constructible_v | |
| = is_move_constructible<T>::value; // C++17 | |
| template <class T, class U> constexpr bool is_assignable_v | |
| = is_assignable<T, U>::value; // C++17 | |
| template <class T> constexpr bool is_copy_assignable_v | |
| = is_copy_assignable<T>::value; // C++17 | |
| template <class T> constexpr bool is_move_assignable_v | |
| = is_move_assignable<T>::value; // C++17 | |
| template <class T, class U> constexpr bool is_swappable_with_v | |
| = is_swappable_with<T, U>::value; // C++17 | |
| template <class T> constexpr bool is_swappable_v | |
| = is_swappable<T>::value; // C++17 | |
| template <class T> constexpr bool is_destructible_v | |
| = is_destructible<T>::value; // C++17 | |
| template <class T, class... Args> constexpr bool is_trivially_constructible_v | |
| = is_trivially_constructible<T, Args...>::value; // C++17 | |
| template <class T> constexpr bool is_trivially_default_constructible_v | |
| = is_trivially_default_constructible<T>::value; // C++17 | |
| template <class T> constexpr bool is_trivially_copy_constructible_v | |
| = is_trivially_copy_constructible<T>::value; // C++17 | |
| template <class T> constexpr bool is_trivially_move_constructible_v | |
| = is_trivially_move_constructible<T>::value; // C++17 | |
| template <class T, class U> constexpr bool is_trivially_assignable_v | |
| = is_trivially_assignable<T, U>::value; // C++17 | |
| template <class T> constexpr bool is_trivially_copy_assignable_v | |
| = is_trivially_copy_assignable<T>::value; // C++17 | |
| template <class T> constexpr bool is_trivially_move_assignable_v | |
| = is_trivially_move_assignable<T>::value; // C++17 | |
| template <class T> constexpr bool is_trivially_destructible_v | |
| = is_trivially_destructible<T>::value; // C++17 | |
| template <class T, class... Args> constexpr bool is_nothrow_constructible_v | |
| = is_nothrow_constructible<T, Args...>::value; // C++17 | |
| template <class T> constexpr bool is_nothrow_default_constructible_v | |
| = is_nothrow_default_constructible<T>::value; // C++17 | |
| template <class T> constexpr bool is_nothrow_copy_constructible_v | |
| = is_nothrow_copy_constructible<T>::value; // C++17 | |
| template <class T> constexpr bool is_nothrow_move_constructible_v | |
| = is_nothrow_move_constructible<T>::value; // C++17 | |
| template <class T, class U> constexpr bool is_nothrow_assignable_v | |
| = is_nothrow_assignable<T, U>::value; // C++17 | |
| template <class T> constexpr bool is_nothrow_copy_assignable_v | |
| = is_nothrow_copy_assignable<T>::value; // C++17 | |
| template <class T> constexpr bool is_nothrow_move_assignable_v | |
| = is_nothrow_move_assignable<T>::value; // C++17 | |
| template <class T, class U> constexpr bool is_nothrow_swappable_with_v | |
| = is_nothrow_swappable_with<T, U>::value; // C++17 | |
| template <class T> constexpr bool is_nothrow_swappable_v | |
| = is_nothrow_swappable<T>::value; // C++17 | |
| template <class T> constexpr bool is_nothrow_destructible_v | |
| = is_nothrow_destructible<T>::value; // C++17 | |
| template <class T> constexpr bool has_virtual_destructor_v | |
| = has_virtual_destructor<T>::value; // C++17 | |
| // See C++14 20.10.5, type property queries | |
| template <class T> constexpr size_t alignment_of_v | |
| = alignment_of<T>::value; // C++17 | |
| template <class T> constexpr size_t rank_v | |
| = rank<T>::value; // C++17 | |
| template <class T, unsigned I = 0> constexpr size_t extent_v | |
| = extent<T, I>::value; // C++17 | |
| // See C++14 20.10.6, type relations | |
| template <class T, class U> constexpr bool is_same_v | |
| = is_same<T, U>::value; // C++17 | |
| template <class Base, class Derived> constexpr bool is_base_of_v | |
| = is_base_of<Base, Derived>::value; // C++17 | |
| template <class From, class To> constexpr bool is_convertible_v | |
| = is_convertible<From, To>::value; // C++17 | |
| template <class T, class R = void> constexpr bool is_callable_v | |
| = is_callable<T, R>::value; // C++17 | |
| template <class T, class R = void> constexpr bool is_nothrow_callable_v | |
| = is_nothrow_callable<T, R>::value; // C++17 | |
| // [meta.logical], logical operator traits: | |
| template<class... B> struct conjunction; // C++17 | |
| template<class... B> | |
| constexpr bool conjunction_v = conjunction<B...>::value; // C++17 | |
| template<class... B> struct disjunction; // C++17 | |
| template<class... B> | |
| constexpr bool disjunction_v = disjunction<B...>::value; // C++17 | |
| template<class B> struct negation; // C++17 | |
| template<class B> | |
| constexpr bool negation_v = negation<B>::value; // C++17 | |
| } | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 389 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| # 390 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 390 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/cstddef" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- cstddef ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_CSTDDEF | |
| #define _LIBCPP_CSTDDEF | |
| /* | |
| cstddef synopsis | |
| Macros: | |
| offsetof(type,member-designator) | |
| NULL | |
| namespace std | |
| { | |
| Types: | |
| ptrdiff_t | |
| size_t | |
| max_align_t | |
| nullptr_t | |
| byte // C++17 | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 37 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 38 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 41 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| #endif | |
| # 42 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| // Don't include our own <stddef.h>; we don't want to declare ::nullptr_t. | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 44 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 45 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__nullptr> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 45 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 46 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| using ::ptrdiff_t; | |
| using ::size_t; | |
| #if defined(__CLANG_MAX_ALIGN_T_DEFINED) || defined(_GCC_MAX_ALIGN_T) || \ | |
| defined(__DEFINED_max_align_t) | |
| // Re-use the compiler's <stddef.h> max_align_t where possible. | |
| using ::max_align_t; | |
| #else | |
| # 57 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| typedef long double max_align_t; | |
| #endif | |
| # 59 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #if _LIBCPP_STD_VER > 14 | |
| namespace std // purposefully not versioned | |
| { | |
| enum class byte : unsigned char {}; | |
| constexpr byte& operator|=(byte& __lhs, byte __rhs) noexcept | |
| { return __lhs = byte(static_cast<unsigned char>(__lhs) | static_cast<unsigned char>(__rhs)); } | |
| constexpr byte operator| (byte __lhs, byte __rhs) noexcept | |
| { return byte(static_cast<unsigned char>(__lhs) | static_cast<unsigned char>(__rhs)); } | |
| constexpr byte& operator&=(byte& __lhs, byte __rhs) noexcept | |
| { return __lhs = byte(static_cast<unsigned char>(__lhs) & static_cast<unsigned char>(__rhs)); } | |
| constexpr byte operator& (byte __lhs, byte __rhs) noexcept | |
| { return byte(static_cast<unsigned char>(__lhs) & static_cast<unsigned char>(__rhs)); } | |
| constexpr byte& operator^=(byte& __lhs, byte __rhs) noexcept | |
| { return __lhs = byte(static_cast<unsigned char>(__lhs) ^ static_cast<unsigned char>(__rhs)); } | |
| constexpr byte operator^ (byte __lhs, byte __rhs) noexcept | |
| { return byte(static_cast<unsigned char>(__lhs) ^ static_cast<unsigned char>(__rhs)); } | |
| constexpr byte operator~ (byte __b) noexcept | |
| { return byte(~static_cast<unsigned char>(__b)); } | |
| } | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> // rest of byte | |
| #endif /* expanded by -frewrite-includes */ | |
| # 87 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 88 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| #endif | |
| # 89 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| #endif // _LIBCPP_CSTDDEF | |
| # 91 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 391 "/usr/local/bin/../include/c++/v1/type_traits" 2 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 394 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif | |
| # 395 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| template <class _T1, class _T2> struct _LIBCPP_TEMPLATE_VIS pair; | |
| template <class _Tp> class _LIBCPP_TEMPLATE_VIS reference_wrapper; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS hash; | |
| template <class> | |
| struct __void_t { typedef void type; }; | |
| template <class _Tp> | |
| struct __identity { typedef _Tp type; }; | |
| template <class _Tp, bool> | |
| struct _LIBCPP_TEMPLATE_VIS __dependent_type : public _Tp {}; | |
| template <bool _Bp, class _If, class _Then> | |
| struct _LIBCPP_TEMPLATE_VIS conditional {typedef _If type;}; | |
| template <class _If, class _Then> | |
| struct _LIBCPP_TEMPLATE_VIS conditional<false, _If, _Then> {typedef _Then type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <bool _Bp, class _If, class _Then> using conditional_t = typename conditional<_Bp, _If, _Then>::type; | |
| #endif | |
| # 419 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <bool, class _Tp> struct _LIBCPP_TEMPLATE_VIS __lazy_enable_if {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS __lazy_enable_if<true, _Tp> {typedef typename _Tp::type type;}; | |
| template <bool, class _Tp = void> struct _LIBCPP_TEMPLATE_VIS enable_if {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS enable_if<true, _Tp> {typedef _Tp type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <bool _Bp, class _Tp = void> using enable_if_t = typename enable_if<_Bp, _Tp>::type; | |
| #endif | |
| # 429 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // addressof | |
| #ifndef _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF | |
| template <class _Tp> | |
| inline _LIBCPP_CONSTEXPR_AFTER_CXX14 | |
| _LIBCPP_NO_CFI _LIBCPP_INLINE_VISIBILITY | |
| _Tp* | |
| addressof(_Tp& __x) _NOEXCEPT | |
| { | |
| return __builtin_addressof(__x); | |
| } | |
| #else | |
| # 443 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| inline _LIBCPP_NO_CFI _LIBCPP_INLINE_VISIBILITY | |
| _Tp* | |
| addressof(_Tp& __x) _NOEXCEPT | |
| { | |
| return reinterpret_cast<_Tp *>( | |
| const_cast<char *>(&reinterpret_cast<const volatile char &>(__x))); | |
| } | |
| #endif // _LIBCPP_HAS_NO_BUILTIN_ADDRESSOF | |
| # 454 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if defined(_LIBCPP_HAS_OBJC_ARC) && !defined(_LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF) | |
| // Objective-C++ Automatic Reference Counting uses qualified pointers | |
| // that require special addressof() signatures. When | |
| // _LIBCPP_PREDEFINED_OBJC_ARC_ADDRESSOF is defined, the compiler | |
| // itself is providing these definitions. Otherwise, we provide them. | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| __strong _Tp* | |
| addressof(__strong _Tp& __x) _NOEXCEPT | |
| { | |
| return &__x; | |
| } | |
| #ifdef _LIBCPP_HAS_OBJC_ARC_WEAK | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| __weak _Tp* | |
| addressof(__weak _Tp& __x) _NOEXCEPT | |
| { | |
| return &__x; | |
| } | |
| #endif | |
| # 477 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| __autoreleasing _Tp* | |
| addressof(__autoreleasing _Tp& __x) _NOEXCEPT | |
| { | |
| return &__x; | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| __unsafe_unretained _Tp* | |
| addressof(__unsafe_unretained _Tp& __x) _NOEXCEPT | |
| { | |
| return &__x; | |
| } | |
| #endif | |
| # 494 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if !defined(_LIBCPP_CXX03_LANG) | |
| template <class _Tp> _Tp* addressof(const _Tp&&) noexcept = delete; | |
| #endif | |
| # 498 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| struct __two {char __lx[2];}; | |
| // helper class: | |
| template <class _Tp, _Tp __v> | |
| struct _LIBCPP_TEMPLATE_VIS integral_constant | |
| { | |
| static _LIBCPP_CONSTEXPR const _Tp value = __v; | |
| typedef _Tp value_type; | |
| typedef integral_constant type; | |
| _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR operator value_type() const _NOEXCEPT {return value;} | |
| #if _LIBCPP_STD_VER > 11 | |
| _LIBCPP_INLINE_VISIBILITY | |
| constexpr value_type operator ()() const _NOEXCEPT {return value;} | |
| #endif | |
| # 515 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| }; | |
| template <class _Tp, _Tp __v> | |
| _LIBCPP_CONSTEXPR const _Tp integral_constant<_Tp, __v>::value; | |
| #if _LIBCPP_STD_VER > 14 | |
| template <bool __b> | |
| using bool_constant = integral_constant<bool, __b>; | |
| #define _LIBCPP_BOOL_CONSTANT(__b) bool_constant<(__b)> | |
| #else | |
| # 525 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #define _LIBCPP_BOOL_CONSTANT(__b) integral_constant<bool,(__b)> | |
| #endif | |
| # 527 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| typedef _LIBCPP_BOOL_CONSTANT(true) true_type; | |
| typedef _LIBCPP_BOOL_CONSTANT(false) false_type; | |
| #if !defined(_LIBCPP_CXX03_LANG) | |
| // __lazy_and | |
| template <bool _Last, class ..._Preds> | |
| struct __lazy_and_impl; | |
| template <class ..._Preds> | |
| struct __lazy_and_impl<false, _Preds...> : false_type {}; | |
| template <> | |
| struct __lazy_and_impl<true> : true_type {}; | |
| template <class _Pred> | |
| struct __lazy_and_impl<true, _Pred> : integral_constant<bool, _Pred::type::value> {}; | |
| template <class _Hp, class ..._Tp> | |
| struct __lazy_and_impl<true, _Hp, _Tp...> : __lazy_and_impl<_Hp::type::value, _Tp...> {}; | |
| template <class _P1, class ..._Pr> | |
| struct __lazy_and : __lazy_and_impl<_P1::type::value, _Pr...> {}; | |
| // __lazy_or | |
| template <bool _List, class ..._Preds> | |
| struct __lazy_or_impl; | |
| template <class ..._Preds> | |
| struct __lazy_or_impl<true, _Preds...> : true_type {}; | |
| template <> | |
| struct __lazy_or_impl<false> : false_type {}; | |
| template <class _Hp, class ..._Tp> | |
| struct __lazy_or_impl<false, _Hp, _Tp...> | |
| : __lazy_or_impl<_Hp::type::value, _Tp...> {}; | |
| template <class _P1, class ..._Pr> | |
| struct __lazy_or : __lazy_or_impl<_P1::type::value, _Pr...> {}; | |
| // __lazy_not | |
| template <class _Pred> | |
| struct __lazy_not : integral_constant<bool, !_Pred::type::value> {}; | |
| // __and_ | |
| template<class...> struct __and_; | |
| template<> struct __and_<> : true_type {}; | |
| template<class _B0> struct __and_<_B0> : _B0 {}; | |
| template<class _B0, class _B1> | |
| struct __and_<_B0, _B1> : conditional<_B0::value, _B1, _B0>::type {}; | |
| template<class _B0, class _B1, class _B2, class... _Bn> | |
| struct __and_<_B0, _B1, _B2, _Bn...> | |
| : conditional<_B0::value, __and_<_B1, _B2, _Bn...>, _B0>::type {}; | |
| // __or_ | |
| template<class...> struct __or_; | |
| template<> struct __or_<> : false_type {}; | |
| template<class _B0> struct __or_<_B0> : _B0 {}; | |
| template<class _B0, class _B1> | |
| struct __or_<_B0, _B1> : conditional<_B0::value, _B0, _B1>::type {}; | |
| template<class _B0, class _B1, class _B2, class... _Bn> | |
| struct __or_<_B0, _B1, _B2, _Bn...> | |
| : conditional<_B0::value, _B0, __or_<_B1, _B2, _Bn...> >::type {}; | |
| // __not_ | |
| template<class _Tp> | |
| struct __not_ : conditional<_Tp::value, false_type, true_type>::type {}; | |
| #endif // !defined(_LIBCPP_CXX03_LANG) | |
| # 607 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_const | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_const : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_const<_Tp const> : public true_type {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_const_v | |
| = is_const<_Tp>::value; | |
| #endif | |
| # 617 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_volatile | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_volatile : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_volatile<_Tp volatile> : public true_type {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_volatile_v | |
| = is_volatile<_Tp>::value; | |
| #endif | |
| # 627 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // remove_const | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_const {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_const<const _Tp> {typedef _Tp type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using remove_const_t = typename remove_const<_Tp>::type; | |
| #endif | |
| # 635 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // remove_volatile | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_volatile {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_volatile<volatile _Tp> {typedef _Tp type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using remove_volatile_t = typename remove_volatile<_Tp>::type; | |
| #endif | |
| # 643 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // remove_cv | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_cv | |
| {typedef typename remove_volatile<typename remove_const<_Tp>::type>::type type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using remove_cv_t = typename remove_cv<_Tp>::type; | |
| #endif | |
| # 651 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_void | |
| template <class _Tp> struct __libcpp_is_void : public false_type {}; | |
| template <> struct __libcpp_is_void<void> : public true_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_void | |
| : public __libcpp_is_void<typename remove_cv<_Tp>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_void_v | |
| = is_void<_Tp>::value; | |
| #endif | |
| # 664 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // __is_nullptr_t | |
| template <class _Tp> struct __is_nullptr_t_impl : public false_type {}; | |
| template <> struct __is_nullptr_t_impl<nullptr_t> : public true_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS __is_nullptr_t | |
| : public __is_nullptr_t_impl<typename remove_cv<_Tp>::type> {}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_null_pointer | |
| : public __is_nullptr_t_impl<typename remove_cv<_Tp>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_null_pointer_v | |
| = is_null_pointer<_Tp>::value; | |
| #endif | |
| # 681 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif | |
| # 682 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_integral | |
| template <class _Tp> struct __libcpp_is_integral : public false_type {}; | |
| template <> struct __libcpp_is_integral<bool> : public true_type {}; | |
| template <> struct __libcpp_is_integral<char> : public true_type {}; | |
| template <> struct __libcpp_is_integral<signed char> : public true_type {}; | |
| template <> struct __libcpp_is_integral<unsigned char> : public true_type {}; | |
| template <> struct __libcpp_is_integral<wchar_t> : public true_type {}; | |
| #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS | |
| template <> struct __libcpp_is_integral<char16_t> : public true_type {}; | |
| template <> struct __libcpp_is_integral<char32_t> : public true_type {}; | |
| #endif // _LIBCPP_HAS_NO_UNICODE_CHARS | |
| # 695 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <> struct __libcpp_is_integral<short> : public true_type {}; | |
| template <> struct __libcpp_is_integral<unsigned short> : public true_type {}; | |
| template <> struct __libcpp_is_integral<int> : public true_type {}; | |
| template <> struct __libcpp_is_integral<unsigned int> : public true_type {}; | |
| template <> struct __libcpp_is_integral<long> : public true_type {}; | |
| template <> struct __libcpp_is_integral<unsigned long> : public true_type {}; | |
| template <> struct __libcpp_is_integral<long long> : public true_type {}; | |
| template <> struct __libcpp_is_integral<unsigned long long> : public true_type {}; | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| template <> struct __libcpp_is_integral<__int128_t> : public true_type {}; | |
| template <> struct __libcpp_is_integral<__uint128_t> : public true_type {}; | |
| #endif | |
| # 707 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_integral | |
| : public __libcpp_is_integral<typename remove_cv<_Tp>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_integral_v | |
| = is_integral<_Tp>::value; | |
| #endif | |
| # 715 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_floating_point | |
| template <class _Tp> struct __libcpp_is_floating_point : public false_type {}; | |
| template <> struct __libcpp_is_floating_point<float> : public true_type {}; | |
| template <> struct __libcpp_is_floating_point<double> : public true_type {}; | |
| template <> struct __libcpp_is_floating_point<long double> : public true_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_floating_point | |
| : public __libcpp_is_floating_point<typename remove_cv<_Tp>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_floating_point_v | |
| = is_floating_point<_Tp>::value; | |
| #endif | |
| # 730 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_array | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_array | |
| : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_array<_Tp[]> | |
| : public true_type {}; | |
| template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS is_array<_Tp[_Np]> | |
| : public true_type {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_array_v | |
| = is_array<_Tp>::value; | |
| #endif | |
| # 744 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_pointer | |
| template <class _Tp> struct __libcpp_is_pointer : public false_type {}; | |
| template <class _Tp> struct __libcpp_is_pointer<_Tp*> : public true_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_pointer | |
| : public __libcpp_is_pointer<typename remove_cv<_Tp>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_pointer_v | |
| = is_pointer<_Tp>::value; | |
| #endif | |
| # 757 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_reference | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_lvalue_reference<_Tp&> : public true_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference : public false_type {}; | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_rvalue_reference<_Tp&&> : public true_type {}; | |
| #endif | |
| # 767 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_reference : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_reference<_Tp&> : public true_type {}; | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_reference<_Tp&&> : public true_type {}; | |
| #endif | |
| # 773 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_reference_v | |
| = is_reference<_Tp>::value; | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_lvalue_reference_v | |
| = is_lvalue_reference<_Tp>::value; | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_rvalue_reference_v | |
| = is_rvalue_reference<_Tp>::value; | |
| #endif | |
| # 784 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_union | |
| #if __has_feature(is_union) || (_GNUC_VER >= 403) | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_union | |
| : public integral_constant<bool, __is_union(_Tp)> {}; | |
| #else | |
| # 792 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct __libcpp_union : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_union | |
| : public __libcpp_union<typename remove_cv<_Tp>::type> {}; | |
| #endif | |
| # 798 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_union_v | |
| = is_union<_Tp>::value; | |
| #endif | |
| # 803 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_class | |
| #if __has_feature(is_class) || (_GNUC_VER >= 403) | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_class | |
| : public integral_constant<bool, __is_class(_Tp)> {}; | |
| #else | |
| # 812 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| namespace __is_class_imp | |
| { | |
| template <class _Tp> char __test(int _Tp::*); | |
| template <class _Tp> __two __test(...); | |
| } | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_class | |
| : public integral_constant<bool, sizeof(__is_class_imp::__test<_Tp>(0)) == 1 && !is_union<_Tp>::value> {}; | |
| #endif | |
| # 823 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_class_v | |
| = is_class<_Tp>::value; | |
| #endif | |
| # 828 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_same | |
| template <class _Tp, class _Up> struct _LIBCPP_TEMPLATE_VIS is_same : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_same<_Tp, _Tp> : public true_type {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp, class _Up> _LIBCPP_CONSTEXPR bool is_same_v | |
| = is_same<_Tp, _Up>::value; | |
| #endif | |
| # 838 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_function | |
| namespace __libcpp_is_function_imp | |
| { | |
| struct __dummy_type {}; | |
| template <class _Tp> char __test(_Tp*); | |
| template <class _Tp> char __test(__dummy_type); | |
| template <class _Tp> __two __test(...); | |
| template <class _Tp> _Tp& __source(int); | |
| template <class _Tp> __dummy_type __source(...); | |
| } | |
| template <class _Tp, bool = is_class<_Tp>::value || | |
| is_union<_Tp>::value || | |
| is_void<_Tp>::value || | |
| is_reference<_Tp>::value || | |
| __is_nullptr_t<_Tp>::value > | |
| struct __libcpp_is_function | |
| : public integral_constant<bool, sizeof(__libcpp_is_function_imp::__test<_Tp>(__libcpp_is_function_imp::__source<_Tp>(0))) == 1> | |
| {}; | |
| template <class _Tp> struct __libcpp_is_function<_Tp, true> : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_function | |
| : public __libcpp_is_function<_Tp> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_function_v | |
| = is_function<_Tp>::value; | |
| #endif | |
| # 868 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_member_function_pointer | |
| // template <class _Tp> struct __libcpp_is_member_function_pointer : public false_type {}; | |
| // template <class _Tp, class _Up> struct __libcpp_is_member_function_pointer<_Tp _Up::*> : public is_function<_Tp> {}; | |
| // | |
| template <class _MP, bool _IsMemberFunctionPtr, bool _IsMemberObjectPtr> | |
| struct __member_pointer_traits_imp | |
| { // forward declaration; specializations later | |
| }; | |
| template <class _Tp> struct __libcpp_is_member_function_pointer | |
| : public false_type {}; | |
| template <class _Ret, class _Class> | |
| struct __libcpp_is_member_function_pointer<_Ret _Class::*> | |
| : public is_function<_Ret> {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_function_pointer | |
| : public __libcpp_is_member_function_pointer<typename remove_cv<_Tp>::type>::type {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_member_function_pointer_v | |
| = is_member_function_pointer<_Tp>::value; | |
| #endif | |
| # 895 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_member_pointer | |
| template <class _Tp> struct __libcpp_is_member_pointer : public false_type {}; | |
| template <class _Tp, class _Up> struct __libcpp_is_member_pointer<_Tp _Up::*> : public true_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_pointer | |
| : public __libcpp_is_member_pointer<typename remove_cv<_Tp>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_member_pointer_v | |
| = is_member_pointer<_Tp>::value; | |
| #endif | |
| # 908 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_member_object_pointer | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_member_object_pointer | |
| : public integral_constant<bool, is_member_pointer<_Tp>::value && | |
| !is_member_function_pointer<_Tp>::value> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_member_object_pointer_v | |
| = is_member_object_pointer<_Tp>::value; | |
| #endif | |
| # 919 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_enum | |
| #if __has_feature(is_enum) || (_GNUC_VER >= 403) | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_enum | |
| : public integral_constant<bool, __is_enum(_Tp)> {}; | |
| #else | |
| # 928 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_enum | |
| : public integral_constant<bool, !is_void<_Tp>::value && | |
| !is_integral<_Tp>::value && | |
| !is_floating_point<_Tp>::value && | |
| !is_array<_Tp>::value && | |
| !is_pointer<_Tp>::value && | |
| !is_reference<_Tp>::value && | |
| !is_member_pointer<_Tp>::value && | |
| !is_union<_Tp>::value && | |
| !is_class<_Tp>::value && | |
| !is_function<_Tp>::value > {}; | |
| #endif | |
| # 942 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_enum_v | |
| = is_enum<_Tp>::value; | |
| #endif | |
| # 947 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_arithmetic | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_arithmetic | |
| : public integral_constant<bool, is_integral<_Tp>::value || | |
| is_floating_point<_Tp>::value> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_arithmetic_v | |
| = is_arithmetic<_Tp>::value; | |
| #endif | |
| # 958 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_fundamental | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_fundamental | |
| : public integral_constant<bool, is_void<_Tp>::value || | |
| __is_nullptr_t<_Tp>::value || | |
| is_arithmetic<_Tp>::value> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_fundamental_v | |
| = is_fundamental<_Tp>::value; | |
| #endif | |
| # 970 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_scalar | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_scalar | |
| : public integral_constant<bool, is_arithmetic<_Tp>::value || | |
| is_member_pointer<_Tp>::value || | |
| is_pointer<_Tp>::value || | |
| __is_nullptr_t<_Tp>::value || | |
| is_enum<_Tp>::value > {}; | |
| template <> struct _LIBCPP_TEMPLATE_VIS is_scalar<nullptr_t> : public true_type {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_scalar_v | |
| = is_scalar<_Tp>::value; | |
| #endif | |
| # 986 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_object | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_object | |
| : public integral_constant<bool, is_scalar<_Tp>::value || | |
| is_array<_Tp>::value || | |
| is_union<_Tp>::value || | |
| is_class<_Tp>::value > {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_object_v | |
| = is_object<_Tp>::value; | |
| #endif | |
| # 999 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_compound | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_compound | |
| : public integral_constant<bool, !is_fundamental<_Tp>::value> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_compound_v | |
| = is_compound<_Tp>::value; | |
| #endif | |
| # 1009 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // __is_referenceable [defns.referenceable] | |
| struct __is_referenceable_impl { | |
| template <class _Tp> static _Tp& __test(int); | |
| template <class _Tp> static __two __test(...); | |
| }; | |
| template <class _Tp> | |
| struct __is_referenceable : integral_constant<bool, | |
| !is_same<decltype(__is_referenceable_impl::__test<_Tp>(0)), __two>::value> {}; | |
| // add_const | |
| template <class _Tp, bool = is_reference<_Tp>::value || | |
| is_function<_Tp>::value || | |
| is_const<_Tp>::value > | |
| struct __add_const {typedef _Tp type;}; | |
| template <class _Tp> | |
| struct __add_const<_Tp, false> {typedef const _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_const | |
| {typedef typename __add_const<_Tp>::type type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using add_const_t = typename add_const<_Tp>::type; | |
| #endif | |
| # 1039 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // add_volatile | |
| template <class _Tp, bool = is_reference<_Tp>::value || | |
| is_function<_Tp>::value || | |
| is_volatile<_Tp>::value > | |
| struct __add_volatile {typedef _Tp type;}; | |
| template <class _Tp> | |
| struct __add_volatile<_Tp, false> {typedef volatile _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_volatile | |
| {typedef typename __add_volatile<_Tp>::type type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using add_volatile_t = typename add_volatile<_Tp>::type; | |
| #endif | |
| # 1056 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // add_cv | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_cv | |
| {typedef typename add_const<typename add_volatile<_Tp>::type>::type type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using add_cv_t = typename add_cv<_Tp>::type; | |
| #endif | |
| # 1065 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // remove_reference | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_reference {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_reference<_Tp&> {typedef _Tp type;}; | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_reference<_Tp&&> {typedef _Tp type;}; | |
| #endif | |
| # 1073 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using remove_reference_t = typename remove_reference<_Tp>::type; | |
| #endif | |
| # 1077 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // add_lvalue_reference | |
| template <class _Tp, bool = __is_referenceable<_Tp>::value> struct __add_lvalue_reference_impl { typedef _Tp type; }; | |
| template <class _Tp > struct __add_lvalue_reference_impl<_Tp, true> { typedef _Tp& type; }; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_lvalue_reference | |
| {typedef typename __add_lvalue_reference_impl<_Tp>::type type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; | |
| #endif | |
| # 1089 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp, bool = __is_referenceable<_Tp>::value> struct __add_rvalue_reference_impl { typedef _Tp type; }; | |
| template <class _Tp > struct __add_rvalue_reference_impl<_Tp, true> { typedef _Tp&& type; }; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_rvalue_reference | |
| {typedef typename __add_rvalue_reference_impl<_Tp>::type type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; | |
| #endif | |
| # 1101 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| # 1103 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> _Tp&& __declval(int); | |
| template <class _Tp> _Tp __declval(long); | |
| template <class _Tp> | |
| decltype(_VSTD::__declval<_Tp>(0)) | |
| declval() _NOEXCEPT; | |
| #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| # 1114 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| typename add_lvalue_reference<_Tp>::type | |
| declval(); | |
| #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| # 1120 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // __uncvref | |
| template <class _Tp> | |
| struct __uncvref { | |
| typedef typename remove_cv<typename remove_reference<_Tp>::type>::type type; | |
| }; | |
| template <class _Tp> | |
| struct __unconstref { | |
| typedef typename remove_const<typename remove_reference<_Tp>::type>::type type; | |
| }; | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class _Tp> | |
| using __uncvref_t = typename __uncvref<_Tp>::type; | |
| #endif | |
| # 1137 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // __is_same_uncvref | |
| template <class _Tp, class _Up> | |
| struct __is_same_uncvref : is_same<typename __uncvref<_Tp>::type, | |
| typename __uncvref<_Up>::type> {}; | |
| struct __any | |
| { | |
| __any(...); | |
| }; | |
| // remove_pointer | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer<_Tp*> {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer<_Tp* const> {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer<_Tp* volatile> {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_pointer<_Tp* const volatile> {typedef _Tp type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using remove_pointer_t = typename remove_pointer<_Tp>::type; | |
| #endif | |
| # 1160 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // add_pointer | |
| template <class _Tp, | |
| bool = __is_referenceable<_Tp>::value || | |
| is_same<typename remove_cv<_Tp>::type, void>::value> | |
| struct __add_pointer_impl | |
| {typedef typename remove_reference<_Tp>::type* type;}; | |
| template <class _Tp> struct __add_pointer_impl<_Tp, false> | |
| {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS add_pointer | |
| {typedef typename __add_pointer_impl<_Tp>::type type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using add_pointer_t = typename add_pointer<_Tp>::type; | |
| #endif | |
| # 1177 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_signed | |
| template <class _Tp, bool = is_integral<_Tp>::value> | |
| struct __libcpp_is_signed_impl : public _LIBCPP_BOOL_CONSTANT(_Tp(-1) < _Tp(0)) {}; | |
| template <class _Tp> | |
| struct __libcpp_is_signed_impl<_Tp, false> : public true_type {}; // floating point | |
| template <class _Tp, bool = is_arithmetic<_Tp>::value> | |
| struct __libcpp_is_signed : public __libcpp_is_signed_impl<_Tp> {}; | |
| template <class _Tp> struct __libcpp_is_signed<_Tp, false> : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_signed : public __libcpp_is_signed<_Tp> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_signed_v | |
| = is_signed<_Tp>::value; | |
| #endif | |
| # 1197 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_unsigned | |
| template <class _Tp, bool = is_integral<_Tp>::value> | |
| struct __libcpp_is_unsigned_impl : public _LIBCPP_BOOL_CONSTANT(_Tp(0) < _Tp(-1)) {}; | |
| template <class _Tp> | |
| struct __libcpp_is_unsigned_impl<_Tp, false> : public false_type {}; // floating point | |
| template <class _Tp, bool = is_arithmetic<_Tp>::value> | |
| struct __libcpp_is_unsigned : public __libcpp_is_unsigned_impl<_Tp> {}; | |
| template <class _Tp> struct __libcpp_is_unsigned<_Tp, false> : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_unsigned : public __libcpp_is_unsigned<_Tp> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_unsigned_v | |
| = is_unsigned<_Tp>::value; | |
| #endif | |
| # 1217 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // rank | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS rank | |
| : public integral_constant<size_t, 0> {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS rank<_Tp[]> | |
| : public integral_constant<size_t, rank<_Tp>::value + 1> {}; | |
| template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS rank<_Tp[_Np]> | |
| : public integral_constant<size_t, rank<_Tp>::value + 1> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR size_t rank_v | |
| = rank<_Tp>::value; | |
| #endif | |
| # 1231 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // extent | |
| template <class _Tp, unsigned _Ip = 0> struct _LIBCPP_TEMPLATE_VIS extent | |
| : public integral_constant<size_t, 0> {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS extent<_Tp[], 0> | |
| : public integral_constant<size_t, 0> {}; | |
| template <class _Tp, unsigned _Ip> struct _LIBCPP_TEMPLATE_VIS extent<_Tp[], _Ip> | |
| : public integral_constant<size_t, extent<_Tp, _Ip-1>::value> {}; | |
| template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS extent<_Tp[_Np], 0> | |
| : public integral_constant<size_t, _Np> {}; | |
| template <class _Tp, size_t _Np, unsigned _Ip> struct _LIBCPP_TEMPLATE_VIS extent<_Tp[_Np], _Ip> | |
| : public integral_constant<size_t, extent<_Tp, _Ip-1>::value> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp, unsigned _Ip = 0> _LIBCPP_CONSTEXPR size_t extent_v | |
| = extent<_Tp, _Ip>::value; | |
| #endif | |
| # 1249 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // remove_extent | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_extent | |
| {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_extent<_Tp[]> | |
| {typedef _Tp type;}; | |
| template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS remove_extent<_Tp[_Np]> | |
| {typedef _Tp type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using remove_extent_t = typename remove_extent<_Tp>::type; | |
| #endif | |
| # 1262 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // remove_all_extents | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_all_extents | |
| {typedef _Tp type;}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS remove_all_extents<_Tp[]> | |
| {typedef typename remove_all_extents<_Tp>::type type;}; | |
| template <class _Tp, size_t _Np> struct _LIBCPP_TEMPLATE_VIS remove_all_extents<_Tp[_Np]> | |
| {typedef typename remove_all_extents<_Tp>::type type;}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using remove_all_extents_t = typename remove_all_extents<_Tp>::type; | |
| #endif | |
| # 1275 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // decay | |
| template <class _Up, bool> | |
| struct __decay { | |
| typedef typename remove_cv<_Up>::type type; | |
| }; | |
| template <class _Up> | |
| struct __decay<_Up, true> { | |
| public: | |
| typedef typename conditional | |
| < | |
| is_array<_Up>::value, | |
| typename remove_extent<_Up>::type*, | |
| typename conditional | |
| < | |
| is_function<_Up>::value, | |
| typename add_pointer<_Up>::type, | |
| typename remove_cv<_Up>::type | |
| >::type | |
| >::type type; | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS decay | |
| { | |
| private: | |
| typedef typename remove_reference<_Tp>::type _Up; | |
| public: | |
| typedef typename __decay<_Up, __is_referenceable<_Up>::value>::type type; | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using decay_t = typename decay<_Tp>::type; | |
| #endif | |
| # 1311 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_abstract | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_abstract | |
| : public integral_constant<bool, __is_abstract(_Tp)> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_abstract_v | |
| = is_abstract<_Tp>::value; | |
| #endif | |
| # 1321 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_final | |
| #if defined(_LIBCPP_HAS_IS_FINAL) | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS | |
| __libcpp_is_final : public integral_constant<bool, __is_final(_Tp)> {}; | |
| #else | |
| # 1328 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS | |
| __libcpp_is_final : public false_type {}; | |
| #endif | |
| # 1331 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if defined(_LIBCPP_HAS_IS_FINAL) && _LIBCPP_STD_VER > 11 | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS | |
| is_final : public integral_constant<bool, __is_final(_Tp)> {}; | |
| #endif | |
| # 1336 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_final_v | |
| = is_final<_Tp>::value; | |
| #endif | |
| # 1341 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_aggregate | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_IS_AGGREGATE) | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS | |
| is_aggregate : public integral_constant<bool, __is_aggregate(_Tp)> {}; | |
| #if !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> | |
| constexpr bool is_aggregate_v = is_aggregate<_Tp>::value; | |
| #endif | |
| # 1352 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_IS_AGGREGATE) | |
| # 1354 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_base_of | |
| #ifdef _LIBCPP_HAS_IS_BASE_OF | |
| template <class _Bp, class _Dp> | |
| struct _LIBCPP_TEMPLATE_VIS is_base_of | |
| : public integral_constant<bool, __is_base_of(_Bp, _Dp)> {}; | |
| #else // _LIBCPP_HAS_IS_BASE_OF | |
| # 1364 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| namespace __is_base_of_imp | |
| { | |
| template <class _Tp> | |
| struct _Dst | |
| { | |
| _Dst(const volatile _Tp &); | |
| }; | |
| template <class _Tp> | |
| struct _Src | |
| { | |
| operator const volatile _Tp &(); | |
| template <class _Up> operator const _Dst<_Up> &(); | |
| }; | |
| template <size_t> struct __one { typedef char type; }; | |
| template <class _Bp, class _Dp> typename __one<sizeof(_Dst<_Bp>(declval<_Src<_Dp> >()))>::type __test(int); | |
| template <class _Bp, class _Dp> __two __test(...); | |
| } | |
| template <class _Bp, class _Dp> | |
| struct _LIBCPP_TEMPLATE_VIS is_base_of | |
| : public integral_constant<bool, is_class<_Bp>::value && | |
| sizeof(__is_base_of_imp::__test<_Bp, _Dp>(0)) == 2> {}; | |
| #endif // _LIBCPP_HAS_IS_BASE_OF | |
| # 1389 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Bp, class _Dp> _LIBCPP_CONSTEXPR bool is_base_of_v | |
| = is_base_of<_Bp, _Dp>::value; | |
| #endif | |
| # 1394 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_convertible | |
| #if __has_feature(is_convertible_to) && !defined(_LIBCPP_USE_IS_CONVERTIBLE_FALLBACK) | |
| template <class _T1, class _T2> struct _LIBCPP_TEMPLATE_VIS is_convertible | |
| : public integral_constant<bool, __is_convertible_to(_T1, _T2) && | |
| !is_abstract<_T2>::value> {}; | |
| #else // __has_feature(is_convertible_to) | |
| # 1404 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| namespace __is_convertible_imp | |
| { | |
| template <class _Tp> void __test_convert(_Tp); | |
| template <class _From, class _To, class = void> | |
| struct __is_convertible_test : public false_type {}; | |
| template <class _From, class _To> | |
| struct __is_convertible_test<_From, _To, | |
| decltype(_VSTD::__is_convertible_imp::__test_convert<_To>(_VSTD::declval<_From>()))> : public true_type | |
| {}; | |
| template <class _Tp, bool _IsArray = is_array<_Tp>::value, | |
| bool _IsFunction = is_function<_Tp>::value, | |
| bool _IsVoid = is_void<_Tp>::value> | |
| struct __is_array_function_or_void {enum {value = 0};}; | |
| template <class _Tp> struct __is_array_function_or_void<_Tp, true, false, false> {enum {value = 1};}; | |
| template <class _Tp> struct __is_array_function_or_void<_Tp, false, true, false> {enum {value = 2};}; | |
| template <class _Tp> struct __is_array_function_or_void<_Tp, false, false, true> {enum {value = 3};}; | |
| } | |
| template <class _Tp, | |
| unsigned = __is_convertible_imp::__is_array_function_or_void<typename remove_reference<_Tp>::type>::value> | |
| struct __is_convertible_check | |
| { | |
| static const size_t __v = 0; | |
| }; | |
| template <class _Tp> | |
| struct __is_convertible_check<_Tp, 0> | |
| { | |
| static const size_t __v = sizeof(_Tp); | |
| }; | |
| template <class _T1, class _T2, | |
| unsigned _T1_is_array_function_or_void = __is_convertible_imp::__is_array_function_or_void<_T1>::value, | |
| unsigned _T2_is_array_function_or_void = __is_convertible_imp::__is_array_function_or_void<_T2>::value> | |
| struct __is_convertible | |
| : public integral_constant<bool, | |
| __is_convertible_imp::__is_convertible_test<_T1, _T2>::value | |
| #if defined(_LIBCPP_HAS_NO_RVALUE_REFERENCES) | |
| && !(!is_function<_T1>::value && !is_reference<_T1>::value && is_reference<_T2>::value | |
| && (!is_const<typename remove_reference<_T2>::type>::value | |
| || is_volatile<typename remove_reference<_T2>::type>::value) | |
| && (is_same<typename remove_cv<_T1>::type, | |
| typename remove_cv<typename remove_reference<_T2>::type>::type>::value | |
| || is_base_of<typename remove_reference<_T2>::type, _T1>::value)) | |
| #endif | |
| # 1453 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| > | |
| {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 1> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 1> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 1> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 1> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 2> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 2> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 2> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 2> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 0, 3> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 1, 3> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 2, 3> : public false_type {}; | |
| template <class _T1, class _T2> struct __is_convertible<_T1, _T2, 3, 3> : public true_type {}; | |
| template <class _T1, class _T2> struct _LIBCPP_TEMPLATE_VIS is_convertible | |
| : public __is_convertible<_T1, _T2> | |
| { | |
| static const size_t __complete_check1 = __is_convertible_check<_T1>::__v; | |
| static const size_t __complete_check2 = __is_convertible_check<_T2>::__v; | |
| }; | |
| #endif // __has_feature(is_convertible_to) | |
| # 1479 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _From, class _To> _LIBCPP_CONSTEXPR bool is_convertible_v | |
| = is_convertible<_From, _To>::value; | |
| #endif | |
| # 1484 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_empty | |
| #if __has_feature(is_empty) || (_GNUC_VER >= 407) | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_empty | |
| : public integral_constant<bool, __is_empty(_Tp)> {}; | |
| #else // __has_feature(is_empty) | |
| # 1494 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| struct __is_empty1 | |
| : public _Tp | |
| { | |
| double __lx; | |
| }; | |
| struct __is_empty2 | |
| { | |
| double __lx; | |
| }; | |
| template <class _Tp, bool = is_class<_Tp>::value> | |
| struct __libcpp_empty : public integral_constant<bool, sizeof(__is_empty1<_Tp>) == sizeof(__is_empty2)> {}; | |
| template <class _Tp> struct __libcpp_empty<_Tp, false> : public false_type {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_empty : public __libcpp_empty<_Tp> {}; | |
| #endif // __has_feature(is_empty) | |
| # 1515 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_empty_v | |
| = is_empty<_Tp>::value; | |
| #endif | |
| # 1520 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_polymorphic | |
| #if __has_feature(is_polymorphic) || defined(_LIBCPP_COMPILER_MSVC) | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_polymorphic | |
| : public integral_constant<bool, __is_polymorphic(_Tp)> {}; | |
| #else | |
| # 1530 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template<typename _Tp> char &__is_polymorphic_impl( | |
| typename enable_if<sizeof((_Tp*)dynamic_cast<const volatile void*>(declval<_Tp*>())) != 0, | |
| int>::type); | |
| template<typename _Tp> __two &__is_polymorphic_impl(...); | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_polymorphic | |
| : public integral_constant<bool, sizeof(__is_polymorphic_impl<_Tp>(0)) == 1> {}; | |
| #endif // __has_feature(is_polymorphic) | |
| # 1540 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_polymorphic_v | |
| = is_polymorphic<_Tp>::value; | |
| #endif | |
| # 1545 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // has_virtual_destructor | |
| #if __has_feature(has_virtual_destructor) || (_GNUC_VER >= 403) | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS has_virtual_destructor | |
| : public integral_constant<bool, __has_virtual_destructor(_Tp)> {}; | |
| #else | |
| # 1554 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS has_virtual_destructor | |
| : public false_type {}; | |
| #endif | |
| # 1559 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool has_virtual_destructor_v | |
| = has_virtual_destructor<_Tp>::value; | |
| #endif | |
| # 1564 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // alignment_of | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS alignment_of | |
| : public integral_constant<size_t, __alignof__(_Tp)> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR size_t alignment_of_v | |
| = alignment_of<_Tp>::value; | |
| #endif | |
| # 1574 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // aligned_storage | |
| template <class _Hp, class _Tp> | |
| struct __type_list | |
| { | |
| typedef _Hp _Head; | |
| typedef _Tp _Tail; | |
| }; | |
| struct __nat | |
| { | |
| #ifndef _LIBCPP_CXX03_LANG | |
| __nat() = delete; | |
| __nat(const __nat&) = delete; | |
| __nat& operator=(const __nat&) = delete; | |
| ~__nat() = delete; | |
| #endif | |
| # 1592 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| }; | |
| template <class _Tp> | |
| struct __align_type | |
| { | |
| static const size_t value = alignment_of<_Tp>::value; | |
| typedef _Tp type; | |
| }; | |
| struct __struct_double {long double __lx;}; | |
| struct __struct_double4 {double __lx[4];}; | |
| typedef | |
| __type_list<__align_type<unsigned char>, | |
| __type_list<__align_type<unsigned short>, | |
| __type_list<__align_type<unsigned int>, | |
| __type_list<__align_type<unsigned long>, | |
| __type_list<__align_type<unsigned long long>, | |
| __type_list<__align_type<double>, | |
| __type_list<__align_type<long double>, | |
| __type_list<__align_type<__struct_double>, | |
| __type_list<__align_type<__struct_double4>, | |
| __type_list<__align_type<int*>, | |
| __nat | |
| > > > > > > > > > > __all_types; | |
| template <class _TL, size_t _Align> struct __find_pod; | |
| template <class _Hp, size_t _Align> | |
| struct __find_pod<__type_list<_Hp, __nat>, _Align> | |
| { | |
| typedef typename conditional< | |
| _Align == _Hp::value, | |
| typename _Hp::type, | |
| void | |
| >::type type; | |
| }; | |
| template <class _Hp, class _Tp, size_t _Align> | |
| struct __find_pod<__type_list<_Hp, _Tp>, _Align> | |
| { | |
| typedef typename conditional< | |
| _Align == _Hp::value, | |
| typename _Hp::type, | |
| typename __find_pod<_Tp, _Align>::type | |
| >::type type; | |
| }; | |
| template <class _TL, size_t _Len> struct __find_max_align; | |
| template <class _Hp, size_t _Len> | |
| struct __find_max_align<__type_list<_Hp, __nat>, _Len> : public integral_constant<size_t, _Hp::value> {}; | |
| template <size_t _Len, size_t _A1, size_t _A2> | |
| struct __select_align | |
| { | |
| private: | |
| static const size_t __min = _A2 < _A1 ? _A2 : _A1; | |
| static const size_t __max = _A1 < _A2 ? _A2 : _A1; | |
| public: | |
| static const size_t value = _Len < __max ? __min : __max; | |
| }; | |
| template <class _Hp, class _Tp, size_t _Len> | |
| struct __find_max_align<__type_list<_Hp, _Tp>, _Len> | |
| : public integral_constant<size_t, __select_align<_Len, _Hp::value, __find_max_align<_Tp, _Len>::value>::value> {}; | |
| template <size_t _Len, size_t _Align = __find_max_align<__all_types, _Len>::value> | |
| struct _LIBCPP_TEMPLATE_VIS aligned_storage | |
| { | |
| typedef typename __find_pod<__all_types, _Align>::type _Aligner; | |
| static_assert(!is_void<_Aligner>::value, ""); | |
| union type | |
| { | |
| _Aligner __align; | |
| unsigned char __data[(_Len + _Align - 1)/_Align * _Align]; | |
| }; | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <size_t _Len, size_t _Align = __find_max_align<__all_types, _Len>::value> | |
| using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; | |
| #endif | |
| # 1675 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #define _CREATE_ALIGNED_STORAGE_SPECIALIZATION(n) \ | |
| template <size_t _Len>\ | |
| struct _LIBCPP_TEMPLATE_VIS aligned_storage<_Len, n>\ | |
| {\ | |
| struct _ALIGNAS(n) type\ | |
| {\ | |
| unsigned char __lx[(_Len + n - 1)/n * n];\ | |
| };\ | |
| } | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x1); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x2); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x4); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x8); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x10); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x20); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x40); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x80); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x100); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x200); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x400); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x800); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x1000); | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x2000); | |
| // PE/COFF does not support alignment beyond 8192 (=0x2000) | |
| #if !defined(_LIBCPP_OBJECT_FORMAT_COFF) | |
| _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x4000); | |
| #endif // !defined(_LIBCPP_OBJECT_FORMAT_COFF) | |
| # 1704 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #undef _CREATE_ALIGNED_STORAGE_SPECIALIZATION | |
| #ifndef _LIBCPP_HAS_NO_VARIADICS | |
| // aligned_union | |
| template <size_t _I0, size_t ..._In> | |
| struct __static_max; | |
| template <size_t _I0> | |
| struct __static_max<_I0> | |
| { | |
| static const size_t value = _I0; | |
| }; | |
| template <size_t _I0, size_t _I1, size_t ..._In> | |
| struct __static_max<_I0, _I1, _In...> | |
| { | |
| static const size_t value = _I0 >= _I1 ? __static_max<_I0, _In...>::value : | |
| __static_max<_I1, _In...>::value; | |
| }; | |
| template <size_t _Len, class _Type0, class ..._Types> | |
| struct aligned_union | |
| { | |
| static const size_t alignment_value = __static_max<__alignof__(_Type0), | |
| __alignof__(_Types)...>::value; | |
| static const size_t __len = __static_max<_Len, sizeof(_Type0), | |
| sizeof(_Types)...>::value; | |
| typedef typename aligned_storage<__len, alignment_value>::type type; | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <size_t _Len, class ..._Types> using aligned_union_t = typename aligned_union<_Len, _Types...>::type; | |
| #endif | |
| # 1740 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // _LIBCPP_HAS_NO_VARIADICS | |
| # 1742 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| struct __numeric_type | |
| { | |
| static void __test(...); | |
| static float __test(float); | |
| static double __test(char); | |
| static double __test(int); | |
| static double __test(unsigned); | |
| static double __test(long); | |
| static double __test(unsigned long); | |
| static double __test(long long); | |
| static double __test(unsigned long long); | |
| static double __test(double); | |
| static long double __test(long double); | |
| typedef decltype(__test(declval<_Tp>())) type; | |
| static const bool value = !is_same<type, void>::value; | |
| }; | |
| template <> | |
| struct __numeric_type<void> | |
| { | |
| static const bool value = true; | |
| }; | |
| // __promote | |
| template <class _A1, class _A2 = void, class _A3 = void, | |
| bool = __numeric_type<_A1>::value && | |
| __numeric_type<_A2>::value && | |
| __numeric_type<_A3>::value> | |
| class __promote_imp | |
| { | |
| public: | |
| static const bool value = false; | |
| }; | |
| template <class _A1, class _A2, class _A3> | |
| class __promote_imp<_A1, _A2, _A3, true> | |
| { | |
| private: | |
| typedef typename __promote_imp<_A1>::type __type1; | |
| typedef typename __promote_imp<_A2>::type __type2; | |
| typedef typename __promote_imp<_A3>::type __type3; | |
| public: | |
| typedef decltype(__type1() + __type2() + __type3()) type; | |
| static const bool value = true; | |
| }; | |
| template <class _A1, class _A2> | |
| class __promote_imp<_A1, _A2, void, true> | |
| { | |
| private: | |
| typedef typename __promote_imp<_A1>::type __type1; | |
| typedef typename __promote_imp<_A2>::type __type2; | |
| public: | |
| typedef decltype(__type1() + __type2()) type; | |
| static const bool value = true; | |
| }; | |
| template <class _A1> | |
| class __promote_imp<_A1, void, void, true> | |
| { | |
| public: | |
| typedef typename __numeric_type<_A1>::type type; | |
| static const bool value = true; | |
| }; | |
| template <class _A1, class _A2 = void, class _A3 = void> | |
| class __promote : public __promote_imp<_A1, _A2, _A3> {}; | |
| // make_signed / make_unsigned | |
| typedef | |
| __type_list<signed char, | |
| __type_list<signed short, | |
| __type_list<signed int, | |
| __type_list<signed long, | |
| __type_list<signed long long, | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| __type_list<__int128_t, | |
| #endif | |
| # 1825 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| __nat | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| > | |
| #endif | |
| # 1829 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| > > > > > __signed_types; | |
| typedef | |
| __type_list<unsigned char, | |
| __type_list<unsigned short, | |
| __type_list<unsigned int, | |
| __type_list<unsigned long, | |
| __type_list<unsigned long long, | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| __type_list<__uint128_t, | |
| #endif | |
| # 1840 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| __nat | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| > | |
| #endif | |
| # 1844 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| > > > > > __unsigned_types; | |
| template <class _TypeList, size_t _Size, bool = _Size <= sizeof(typename _TypeList::_Head)> struct __find_first; | |
| template <class _Hp, class _Tp, size_t _Size> | |
| struct __find_first<__type_list<_Hp, _Tp>, _Size, true> | |
| { | |
| typedef _Hp type; | |
| }; | |
| template <class _Hp, class _Tp, size_t _Size> | |
| struct __find_first<__type_list<_Hp, _Tp>, _Size, false> | |
| { | |
| typedef typename __find_first<_Tp, _Size>::type type; | |
| }; | |
| template <class _Tp, class _Up, bool = is_const<typename remove_reference<_Tp>::type>::value, | |
| bool = is_volatile<typename remove_reference<_Tp>::type>::value> | |
| struct __apply_cv | |
| { | |
| typedef _Up type; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __apply_cv<_Tp, _Up, true, false> | |
| { | |
| typedef const _Up type; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __apply_cv<_Tp, _Up, false, true> | |
| { | |
| typedef volatile _Up type; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __apply_cv<_Tp, _Up, true, true> | |
| { | |
| typedef const volatile _Up type; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __apply_cv<_Tp&, _Up, false, false> | |
| { | |
| typedef _Up& type; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __apply_cv<_Tp&, _Up, true, false> | |
| { | |
| typedef const _Up& type; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __apply_cv<_Tp&, _Up, false, true> | |
| { | |
| typedef volatile _Up& type; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __apply_cv<_Tp&, _Up, true, true> | |
| { | |
| typedef const volatile _Up& type; | |
| }; | |
| template <class _Tp, bool = is_integral<_Tp>::value || is_enum<_Tp>::value> | |
| struct __make_signed {}; | |
| template <class _Tp> | |
| struct __make_signed<_Tp, true> | |
| { | |
| typedef typename __find_first<__signed_types, sizeof(_Tp)>::type type; | |
| }; | |
| template <> struct __make_signed<bool, true> {}; | |
| template <> struct __make_signed< signed short, true> {typedef short type;}; | |
| template <> struct __make_signed<unsigned short, true> {typedef short type;}; | |
| template <> struct __make_signed< signed int, true> {typedef int type;}; | |
| template <> struct __make_signed<unsigned int, true> {typedef int type;}; | |
| template <> struct __make_signed< signed long, true> {typedef long type;}; | |
| template <> struct __make_signed<unsigned long, true> {typedef long type;}; | |
| template <> struct __make_signed< signed long long, true> {typedef long long type;}; | |
| template <> struct __make_signed<unsigned long long, true> {typedef long long type;}; | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| template <> struct __make_signed<__int128_t, true> {typedef __int128_t type;}; | |
| template <> struct __make_signed<__uint128_t, true> {typedef __int128_t type;}; | |
| #endif | |
| # 1931 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS make_signed | |
| { | |
| typedef typename __apply_cv<_Tp, typename __make_signed<typename remove_cv<_Tp>::type>::type>::type type; | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using make_signed_t = typename make_signed<_Tp>::type; | |
| #endif | |
| # 1941 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, bool = is_integral<_Tp>::value || is_enum<_Tp>::value> | |
| struct __make_unsigned {}; | |
| template <class _Tp> | |
| struct __make_unsigned<_Tp, true> | |
| { | |
| typedef typename __find_first<__unsigned_types, sizeof(_Tp)>::type type; | |
| }; | |
| template <> struct __make_unsigned<bool, true> {}; | |
| template <> struct __make_unsigned< signed short, true> {typedef unsigned short type;}; | |
| template <> struct __make_unsigned<unsigned short, true> {typedef unsigned short type;}; | |
| template <> struct __make_unsigned< signed int, true> {typedef unsigned int type;}; | |
| template <> struct __make_unsigned<unsigned int, true> {typedef unsigned int type;}; | |
| template <> struct __make_unsigned< signed long, true> {typedef unsigned long type;}; | |
| template <> struct __make_unsigned<unsigned long, true> {typedef unsigned long type;}; | |
| template <> struct __make_unsigned< signed long long, true> {typedef unsigned long long type;}; | |
| template <> struct __make_unsigned<unsigned long long, true> {typedef unsigned long long type;}; | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| template <> struct __make_unsigned<__int128_t, true> {typedef __uint128_t type;}; | |
| template <> struct __make_unsigned<__uint128_t, true> {typedef __uint128_t type;}; | |
| #endif | |
| # 1964 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS make_unsigned | |
| { | |
| typedef typename __apply_cv<_Tp, typename __make_unsigned<typename remove_cv<_Tp>::type>::type>::type type; | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using make_unsigned_t = typename make_unsigned<_Tp>::type; | |
| #endif | |
| # 1974 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #ifdef _LIBCPP_HAS_NO_VARIADICS | |
| template <class _Tp, class _Up = void, class _Vp = void> | |
| struct _LIBCPP_TEMPLATE_VIS common_type | |
| { | |
| public: | |
| typedef typename common_type<typename common_type<_Tp, _Up>::type, _Vp>::type type; | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS common_type<void, void, void> | |
| { | |
| public: | |
| typedef void type; | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS common_type<_Tp, void, void> | |
| { | |
| public: | |
| typedef typename common_type<_Tp, _Tp>::type type; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct _LIBCPP_TEMPLATE_VIS common_type<_Tp, _Up, void> | |
| { | |
| typedef typename decay<decltype( | |
| true ? _VSTD::declval<_Tp>() : _VSTD::declval<_Up>() | |
| )>::type type; | |
| }; | |
| #else // _LIBCPP_HAS_NO_VARIADICS | |
| # 2007 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // bullet 1 - sizeof...(Tp) == 0 | |
| template <class ..._Tp> | |
| struct _LIBCPP_TEMPLATE_VIS common_type {}; | |
| // bullet 2 - sizeof...(Tp) == 1 | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS common_type<_Tp> | |
| : public common_type<_Tp, _Tp> {}; | |
| // bullet 3 - sizeof...(Tp) == 2 | |
| template <class _Tp, class _Up, class = void> | |
| struct __common_type2_imp {}; | |
| template <class _Tp, class _Up> | |
| struct __common_type2_imp<_Tp, _Up, | |
| typename __void_t<decltype( | |
| true ? _VSTD::declval<_Tp>() : _VSTD::declval<_Up>() | |
| )>::type> | |
| { | |
| typedef typename decay<decltype( | |
| true ? _VSTD::declval<_Tp>() : _VSTD::declval<_Up>() | |
| )>::type type; | |
| }; | |
| template <class _Tp, class _Up, | |
| class _DTp = typename decay<_Tp>::type, | |
| class _DUp = typename decay<_Up>::type> | |
| using __common_type2 = | |
| typename conditional< | |
| is_same<_Tp, _DTp>::value && is_same<_Up, _DUp>::value, | |
| __common_type2_imp<_Tp, _Up>, | |
| common_type<_DTp, _DUp> | |
| >::type; | |
| template <class _Tp, class _Up> | |
| struct _LIBCPP_TEMPLATE_VIS common_type<_Tp, _Up> | |
| : __common_type2<_Tp, _Up> {}; | |
| // bullet 4 - sizeof...(Tp) > 2 | |
| template <class ...Tp> struct __common_types; | |
| template <class, class = void> | |
| struct __common_type_impl {}; | |
| template <class _Tp, class _Up> | |
| struct __common_type_impl< | |
| __common_types<_Tp, _Up>, | |
| typename __void_t<typename common_type<_Tp, _Up>::type>::type> | |
| { | |
| typedef typename common_type<_Tp, _Up>::type type; | |
| }; | |
| template <class _Tp, class _Up, class ..._Vp> | |
| struct __common_type_impl<__common_types<_Tp, _Up, _Vp...>, | |
| typename __void_t<typename common_type<_Tp, _Up>::type>::type> | |
| : __common_type_impl< | |
| __common_types<typename common_type<_Tp, _Up>::type, _Vp...> > | |
| { | |
| }; | |
| template <class _Tp, class _Up, class ..._Vp> | |
| struct _LIBCPP_TEMPLATE_VIS common_type<_Tp, _Up, _Vp...> | |
| : __common_type_impl<__common_types<_Tp, _Up, _Vp...> > {}; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class ..._Tp> using common_type_t = typename common_type<_Tp...>::type; | |
| #endif | |
| # 2080 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // _LIBCPP_HAS_NO_VARIADICS | |
| # 2082 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_assignable | |
| template<typename, typename _Tp> struct __select_2nd { typedef _Tp type; }; | |
| template <class _Tp, class _Arg> | |
| typename __select_2nd<decltype((_VSTD::declval<_Tp>() = _VSTD::declval<_Arg>())), true_type>::type | |
| __is_assignable_test(int); | |
| template <class, class> | |
| false_type __is_assignable_test(...); | |
| template <class _Tp, class _Arg, bool = is_void<_Tp>::value || is_void<_Arg>::value> | |
| struct __is_assignable_imp | |
| : public decltype((_VSTD::__is_assignable_test<_Tp, _Arg>(0))) {}; | |
| template <class _Tp, class _Arg> | |
| struct __is_assignable_imp<_Tp, _Arg, true> | |
| : public false_type | |
| { | |
| }; | |
| template <class _Tp, class _Arg> | |
| struct is_assignable | |
| : public __is_assignable_imp<_Tp, _Arg> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp, class _Arg> _LIBCPP_CONSTEXPR bool is_assignable_v | |
| = is_assignable<_Tp, _Arg>::value; | |
| #endif | |
| # 2113 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_copy_assignable | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_copy_assignable | |
| : public is_assignable<typename add_lvalue_reference<_Tp>::type, | |
| typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_copy_assignable_v | |
| = is_copy_assignable<_Tp>::value; | |
| #endif | |
| # 2124 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_move_assignable | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_move_assignable | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| : public is_assignable<typename add_lvalue_reference<_Tp>::type, | |
| typename add_rvalue_reference<_Tp>::type> {}; | |
| #else | |
| # 2132 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : public is_copy_assignable<_Tp> {}; | |
| #endif | |
| # 2134 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_move_assignable_v | |
| = is_move_assignable<_Tp>::value; | |
| #endif | |
| # 2139 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_destructible | |
| // if it's a reference, return true | |
| // if it's a function, return false | |
| // if it's void, return false | |
| // if it's an array of unknown bound, return false | |
| // Otherwise, return "std::declval<_Up&>().~_Up()" is well-formed | |
| // where _Up is remove_all_extents<_Tp>::type | |
| template <class> | |
| struct __is_destructible_apply { typedef int type; }; | |
| template <typename _Tp> | |
| struct __is_destructor_wellformed { | |
| template <typename _Tp1> | |
| static char __test ( | |
| typename __is_destructible_apply<decltype(_VSTD::declval<_Tp1&>().~_Tp1())>::type | |
| ); | |
| template <typename _Tp1> | |
| static __two __test (...); | |
| static const bool value = sizeof(__test<_Tp>(12)) == sizeof(char); | |
| }; | |
| template <class _Tp, bool> | |
| struct __destructible_imp; | |
| template <class _Tp> | |
| struct __destructible_imp<_Tp, false> | |
| : public _VSTD::integral_constant<bool, | |
| __is_destructor_wellformed<typename _VSTD::remove_all_extents<_Tp>::type>::value> {}; | |
| template <class _Tp> | |
| struct __destructible_imp<_Tp, true> | |
| : public _VSTD::true_type {}; | |
| template <class _Tp, bool> | |
| struct __destructible_false; | |
| template <class _Tp> | |
| struct __destructible_false<_Tp, false> : public __destructible_imp<_Tp, _VSTD::is_reference<_Tp>::value> {}; | |
| template <class _Tp> | |
| struct __destructible_false<_Tp, true> : public _VSTD::false_type {}; | |
| template <class _Tp> | |
| struct is_destructible | |
| : public __destructible_false<_Tp, _VSTD::is_function<_Tp>::value> {}; | |
| template <class _Tp> | |
| struct is_destructible<_Tp[]> | |
| : public _VSTD::false_type {}; | |
| template <> | |
| struct is_destructible<void> | |
| : public _VSTD::false_type {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_destructible_v | |
| = is_destructible<_Tp>::value; | |
| #endif | |
| # 2202 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // move | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR | |
| typename remove_reference<_Tp>::type&& | |
| move(_Tp&& __t) _NOEXCEPT | |
| { | |
| typedef typename remove_reference<_Tp>::type _Up; | |
| return static_cast<_Up&&>(__t); | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR | |
| _Tp&& | |
| forward(typename remove_reference<_Tp>::type& __t) _NOEXCEPT | |
| { | |
| return static_cast<_Tp&&>(__t); | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR | |
| _Tp&& | |
| forward(typename remove_reference<_Tp>::type&& __t) _NOEXCEPT | |
| { | |
| static_assert(!is_lvalue_reference<_Tp>::value, | |
| "can not forward an rvalue as an lvalue"); | |
| return static_cast<_Tp&&>(__t); | |
| } | |
| #else // _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| # 2235 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _Tp& | |
| move(_Tp& __t) | |
| { | |
| return __t; | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| const _Tp& | |
| move(const _Tp& __t) | |
| { | |
| return __t; | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _Tp& | |
| forward(typename remove_reference<_Tp>::type& __t) _NOEXCEPT | |
| { | |
| return __t; | |
| } | |
| template <class _Tp> | |
| class __rv | |
| { | |
| typedef typename remove_reference<_Tp>::type _Trr; | |
| _Trr& t_; | |
| public: | |
| _LIBCPP_INLINE_VISIBILITY | |
| _Trr* operator->() {return &t_;} | |
| _LIBCPP_INLINE_VISIBILITY | |
| explicit __rv(_Trr& __t) : t_(__t) {} | |
| }; | |
| #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| # 2274 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| typename decay<_Tp>::type | |
| __decay_copy(_Tp&& __t) | |
| { | |
| return _VSTD::forward<_Tp>(__t); | |
| } | |
| #else | |
| # 2286 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| typename decay<_Tp>::type | |
| __decay_copy(const _Tp& __t) | |
| { | |
| return _VSTD::forward<_Tp>(__t); | |
| } | |
| #endif | |
| # 2296 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #ifndef _LIBCPP_HAS_NO_VARIADICS | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| #if __has_feature(cxx_reference_qualified_functions) || \ | |
| (defined(_GNUC_VER) && _GNUC_VER >= 409) | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &, true, false> | |
| { | |
| typedef _Class& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) &, true, false> | |
| { | |
| typedef _Class& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&, true, false> | |
| { | |
| typedef _Class const& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const&, true, false> | |
| { | |
| typedef _Class const& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&, true, false> | |
| { | |
| typedef _Class volatile& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile&, true, false> | |
| { | |
| typedef _Class volatile& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&, true, false> | |
| { | |
| typedef _Class const volatile& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile&, true, false> | |
| { | |
| typedef _Class const volatile& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) &&, true, false> | |
| { | |
| typedef _Class&& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) &&, true, false> | |
| { | |
| typedef _Class&& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const&&, true, false> | |
| { | |
| typedef _Class const&& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const&&, true, false> | |
| { | |
| typedef _Class const&& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) volatile&&, true, false> | |
| { | |
| typedef _Class volatile&& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) volatile&&, true, false> | |
| { | |
| typedef _Class volatile&& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param...) const volatile&&, true, false> | |
| { | |
| typedef _Class const volatile&& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param...); | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_Param..., ...) const volatile&&, true, false> | |
| { | |
| typedef _Class const volatile&& _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_Param..., ...); | |
| }; | |
| #endif // __has_feature(cxx_reference_qualified_functions) || _GNUC_VER >= 409 | |
| # 2495 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #else // _LIBCPP_HAS_NO_VARIADICS | |
| # 2497 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (); | |
| }; | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(...), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (...); | |
| }; | |
| template <class _Rp, class _Class, class _P0> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0); | |
| }; | |
| template <class _Rp, class _Class, class _P0> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, ...), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, ...); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, ...), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, ...); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1, class _P2> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, _P2); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1, class _P2> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2, ...), true, false> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, _P2, ...); | |
| }; | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)() const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (); | |
| }; | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(...) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (...); | |
| }; | |
| template <class _Rp, class _Class, class _P0> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0); | |
| }; | |
| template <class _Rp, class _Class, class _P0> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, ...) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, ...); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, ...) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, ...); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1, class _P2> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, _P2); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1, class _P2> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2, ...) const, true, false> | |
| { | |
| typedef _Class const _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, _P2, ...); | |
| }; | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)() volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (); | |
| }; | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(...) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (...); | |
| }; | |
| template <class _Rp, class _Class, class _P0> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0); | |
| }; | |
| template <class _Rp, class _Class, class _P0> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, ...) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, ...); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, ...) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, ...); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1, class _P2> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, _P2); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1, class _P2> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2, ...) volatile, true, false> | |
| { | |
| typedef _Class volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, _P2, ...); | |
| }; | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)() const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (); | |
| }; | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(...) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (...); | |
| }; | |
| template <class _Rp, class _Class, class _P0> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0); | |
| }; | |
| template <class _Rp, class _Class, class _P0> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, ...) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, ...); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, ...) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, ...); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1, class _P2> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, _P2); | |
| }; | |
| template <class _Rp, class _Class, class _P0, class _P1, class _P2> | |
| struct __member_pointer_traits_imp<_Rp (_Class::*)(_P0, _P1, _P2, ...) const volatile, true, false> | |
| { | |
| typedef _Class const volatile _ClassType; | |
| typedef _Rp _ReturnType; | |
| typedef _Rp (_FnType) (_P0, _P1, _P2, ...); | |
| }; | |
| #endif // _LIBCPP_HAS_NO_VARIADICS | |
| # 2755 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Rp, class _Class> | |
| struct __member_pointer_traits_imp<_Rp _Class::*, false, true> | |
| { | |
| typedef _Class _ClassType; | |
| typedef _Rp _ReturnType; | |
| }; | |
| template <class _MP> | |
| struct __member_pointer_traits | |
| : public __member_pointer_traits_imp<typename remove_cv<_MP>::type, | |
| is_member_function_pointer<_MP>::value, | |
| is_member_object_pointer<_MP>::value> | |
| { | |
| // typedef ... _ClassType; | |
| // typedef ... _ReturnType; | |
| // typedef ... _FnType; | |
| }; | |
| template <class _DecayedFp> | |
| struct __member_pointer_class_type {}; | |
| template <class _Ret, class _ClassType> | |
| struct __member_pointer_class_type<_Ret _ClassType::*> { | |
| typedef _ClassType type; | |
| }; | |
| // result_of | |
| template <class _Callable> class result_of; | |
| #ifdef _LIBCPP_HAS_NO_VARIADICS | |
| template <class _Fn, bool, bool> | |
| class __result_of | |
| { | |
| }; | |
| template <class _Fn> | |
| class __result_of<_Fn(), true, false> | |
| { | |
| public: | |
| typedef decltype(declval<_Fn>()()) type; | |
| }; | |
| template <class _Fn, class _A0> | |
| class __result_of<_Fn(_A0), true, false> | |
| { | |
| public: | |
| typedef decltype(declval<_Fn>()(declval<_A0>())) type; | |
| }; | |
| template <class _Fn, class _A0, class _A1> | |
| class __result_of<_Fn(_A0, _A1), true, false> | |
| { | |
| public: | |
| typedef decltype(declval<_Fn>()(declval<_A0>(), declval<_A1>())) type; | |
| }; | |
| template <class _Fn, class _A0, class _A1, class _A2> | |
| class __result_of<_Fn(_A0, _A1, _A2), true, false> | |
| { | |
| public: | |
| typedef decltype(declval<_Fn>()(declval<_A0>(), declval<_A1>(), declval<_A2>())) type; | |
| }; | |
| template <class _MP, class _Tp, bool _IsMemberFunctionPtr> | |
| struct __result_of_mp; | |
| // member function pointer | |
| template <class _MP, class _Tp> | |
| struct __result_of_mp<_MP, _Tp, true> | |
| : public __identity<typename __member_pointer_traits<_MP>::_ReturnType> | |
| { | |
| }; | |
| // member data pointer | |
| template <class _MP, class _Tp, bool> | |
| struct __result_of_mdp; | |
| template <class _Rp, class _Class, class _Tp> | |
| struct __result_of_mdp<_Rp _Class::*, _Tp, false> | |
| { | |
| typedef typename __apply_cv<decltype(*_VSTD::declval<_Tp>()), _Rp>::type& type; | |
| }; | |
| template <class _Rp, class _Class, class _Tp> | |
| struct __result_of_mdp<_Rp _Class::*, _Tp, true> | |
| { | |
| typedef typename __apply_cv<_Tp, _Rp>::type& type; | |
| }; | |
| template <class _Rp, class _Class, class _Tp> | |
| struct __result_of_mp<_Rp _Class::*, _Tp, false> | |
| : public __result_of_mdp<_Rp _Class::*, _Tp, | |
| is_base_of<_Class, typename remove_reference<_Tp>::type>::value> | |
| { | |
| }; | |
| template <class _Fn, class _Tp> | |
| class __result_of<_Fn(_Tp), false, true> // _Fn must be member pointer | |
| : public __result_of_mp<typename remove_reference<_Fn>::type, | |
| _Tp, | |
| is_member_function_pointer<typename remove_reference<_Fn>::type>::value> | |
| { | |
| }; | |
| template <class _Fn, class _Tp, class _A0> | |
| class __result_of<_Fn(_Tp, _A0), false, true> // _Fn must be member pointer | |
| : public __result_of_mp<typename remove_reference<_Fn>::type, | |
| _Tp, | |
| is_member_function_pointer<typename remove_reference<_Fn>::type>::value> | |
| { | |
| }; | |
| template <class _Fn, class _Tp, class _A0, class _A1> | |
| class __result_of<_Fn(_Tp, _A0, _A1), false, true> // _Fn must be member pointer | |
| : public __result_of_mp<typename remove_reference<_Fn>::type, | |
| _Tp, | |
| is_member_function_pointer<typename remove_reference<_Fn>::type>::value> | |
| { | |
| }; | |
| template <class _Fn, class _Tp, class _A0, class _A1, class _A2> | |
| class __result_of<_Fn(_Tp, _A0, _A1, _A2), false, true> // _Fn must be member pointer | |
| : public __result_of_mp<typename remove_reference<_Fn>::type, | |
| _Tp, | |
| is_member_function_pointer<typename remove_reference<_Fn>::type>::value> | |
| { | |
| }; | |
| // result_of | |
| template <class _Fn> | |
| class _LIBCPP_TEMPLATE_VIS result_of<_Fn()> | |
| : public __result_of<_Fn(), | |
| is_class<typename remove_reference<_Fn>::type>::value || | |
| is_function<typename remove_pointer<typename remove_reference<_Fn>::type>::type>::value, | |
| is_member_pointer<typename remove_reference<_Fn>::type>::value | |
| > | |
| { | |
| }; | |
| template <class _Fn, class _A0> | |
| class _LIBCPP_TEMPLATE_VIS result_of<_Fn(_A0)> | |
| : public __result_of<_Fn(_A0), | |
| is_class<typename remove_reference<_Fn>::type>::value || | |
| is_function<typename remove_pointer<typename remove_reference<_Fn>::type>::type>::value, | |
| is_member_pointer<typename remove_reference<_Fn>::type>::value | |
| > | |
| { | |
| }; | |
| template <class _Fn, class _A0, class _A1> | |
| class _LIBCPP_TEMPLATE_VIS result_of<_Fn(_A0, _A1)> | |
| : public __result_of<_Fn(_A0, _A1), | |
| is_class<typename remove_reference<_Fn>::type>::value || | |
| is_function<typename remove_pointer<typename remove_reference<_Fn>::type>::type>::value, | |
| is_member_pointer<typename remove_reference<_Fn>::type>::value | |
| > | |
| { | |
| }; | |
| template <class _Fn, class _A0, class _A1, class _A2> | |
| class _LIBCPP_TEMPLATE_VIS result_of<_Fn(_A0, _A1, _A2)> | |
| : public __result_of<_Fn(_A0, _A1, _A2), | |
| is_class<typename remove_reference<_Fn>::type>::value || | |
| is_function<typename remove_pointer<typename remove_reference<_Fn>::type>::type>::value, | |
| is_member_pointer<typename remove_reference<_Fn>::type>::value | |
| > | |
| { | |
| }; | |
| #endif // _LIBCPP_HAS_NO_VARIADICS | |
| # 2934 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // template <class T, class... Args> struct is_constructible; | |
| namespace __is_construct | |
| { | |
| struct __nat {}; | |
| } | |
| #if !defined(_LIBCPP_CXX03_LANG) && (!__has_feature(is_constructible) || \ | |
| defined(_LIBCPP_TESTING_FALLBACK_IS_CONSTRUCTIBLE)) | |
| template <class _Tp, class... _Args> | |
| struct __libcpp_is_constructible; | |
| template <class _To, class _From> | |
| struct __is_invalid_base_to_derived_cast { | |
| static_assert(is_reference<_To>::value, "Wrong specialization"); | |
| using _RawFrom = __uncvref_t<_From>; | |
| using _RawTo = __uncvref_t<_To>; | |
| static const bool value = __lazy_and< | |
| __lazy_not<is_same<_RawFrom, _RawTo>>, | |
| is_base_of<_RawFrom, _RawTo>, | |
| __lazy_not<__libcpp_is_constructible<_RawTo, _From>> | |
| >::value; | |
| }; | |
| template <class _To, class _From> | |
| struct __is_invalid_lvalue_to_rvalue_cast : false_type { | |
| static_assert(is_reference<_To>::value, "Wrong specialization"); | |
| }; | |
| template <class _ToRef, class _FromRef> | |
| struct __is_invalid_lvalue_to_rvalue_cast<_ToRef&&, _FromRef&> { | |
| using _RawFrom = __uncvref_t<_FromRef>; | |
| using _RawTo = __uncvref_t<_ToRef>; | |
| static const bool value = __lazy_and< | |
| __lazy_not<is_function<_RawTo>>, | |
| __lazy_or< | |
| is_same<_RawFrom, _RawTo>, | |
| is_base_of<_RawTo, _RawFrom>> | |
| >::value; | |
| }; | |
| struct __is_constructible_helper | |
| { | |
| template <class _To> | |
| static void __eat(_To); | |
| // This overload is needed to work around a Clang bug that disallows | |
| // static_cast<T&&>(e) for non-reference-compatible types. | |
| // Example: static_cast<int&&>(declval<double>()); | |
| // NOTE: The static_cast implementation below is required to support | |
| // classes with explicit conversion operators. | |
| template <class _To, class _From, | |
| class = decltype(__eat<_To>(_VSTD::declval<_From>()))> | |
| static true_type __test_cast(int); | |
| template <class _To, class _From, | |
| class = decltype(static_cast<_To>(_VSTD::declval<_From>()))> | |
| static integral_constant<bool, | |
| !__is_invalid_base_to_derived_cast<_To, _From>::value && | |
| !__is_invalid_lvalue_to_rvalue_cast<_To, _From>::value | |
| > __test_cast(long); | |
| template <class, class> | |
| static false_type __test_cast(...); | |
| template <class _Tp, class ..._Args, | |
| class = decltype(_Tp(_VSTD::declval<_Args>()...))> | |
| static true_type __test_nary(int); | |
| template <class _Tp, class...> | |
| static false_type __test_nary(...); | |
| template <class _Tp, class _A0, class = decltype(::new _Tp(_VSTD::declval<_A0>()))> | |
| static is_destructible<_Tp> __test_unary(int); | |
| template <class, class> | |
| static false_type __test_unary(...); | |
| }; | |
| template <class _Tp, bool = is_void<_Tp>::value> | |
| struct __is_default_constructible | |
| : decltype(__is_constructible_helper::__test_nary<_Tp>(0)) | |
| {}; | |
| template <class _Tp> | |
| struct __is_default_constructible<_Tp, true> : false_type {}; | |
| template <class _Tp> | |
| struct __is_default_constructible<_Tp[], false> : false_type {}; | |
| template <class _Tp, size_t _Nx> | |
| struct __is_default_constructible<_Tp[_Nx], false> | |
| : __is_default_constructible<typename remove_all_extents<_Tp>::type> {}; | |
| template <class _Tp, class... _Args> | |
| struct __libcpp_is_constructible | |
| { | |
| static_assert(sizeof...(_Args) > 1, "Wrong specialization"); | |
| typedef decltype(__is_constructible_helper::__test_nary<_Tp, _Args...>(0)) | |
| type; | |
| }; | |
| template <class _Tp> | |
| struct __libcpp_is_constructible<_Tp> : __is_default_constructible<_Tp> {}; | |
| template <class _Tp, class _A0> | |
| struct __libcpp_is_constructible<_Tp, _A0> | |
| : public decltype(__is_constructible_helper::__test_unary<_Tp, _A0>(0)) | |
| {}; | |
| template <class _Tp, class _A0> | |
| struct __libcpp_is_constructible<_Tp&, _A0> | |
| : public decltype(__is_constructible_helper:: | |
| __test_cast<_Tp&, _A0>(0)) | |
| {}; | |
| template <class _Tp, class _A0> | |
| struct __libcpp_is_constructible<_Tp&&, _A0> | |
| : public decltype(__is_constructible_helper:: | |
| __test_cast<_Tp&&, _A0>(0)) | |
| {}; | |
| #endif | |
| # 3057 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if __has_feature(is_constructible) | |
| template <class _Tp, class ..._Args> | |
| struct _LIBCPP_TEMPLATE_VIS is_constructible | |
| : public integral_constant<bool, __is_constructible(_Tp, _Args...)> | |
| {}; | |
| #elif !defined(_LIBCPP_CXX03_LANG) | |
| # 3064 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, class... _Args> | |
| struct _LIBCPP_TEMPLATE_VIS is_constructible | |
| : public __libcpp_is_constructible<_Tp, _Args...>::type {}; | |
| #else | |
| # 3068 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // template <class T> struct is_constructible0; | |
| // main is_constructible0 test | |
| template <class _Tp> | |
| decltype((_Tp(), true_type())) | |
| __is_constructible0_test(_Tp&); | |
| false_type | |
| __is_constructible0_test(__any); | |
| template <class _Tp, class _A0> | |
| decltype((_Tp(_VSTD::declval<_A0>()), true_type())) | |
| __is_constructible1_test(_Tp&, _A0&); | |
| template <class _A0> | |
| false_type | |
| __is_constructible1_test(__any, _A0&); | |
| template <class _Tp, class _A0, class _A1> | |
| decltype((_Tp(_VSTD::declval<_A0>(), _VSTD::declval<_A1>()), true_type())) | |
| __is_constructible2_test(_Tp&, _A0&, _A1&); | |
| template <class _A0, class _A1> | |
| false_type | |
| __is_constructible2_test(__any, _A0&, _A1&); | |
| template <bool, class _Tp> | |
| struct __is_constructible0_imp // false, _Tp is not a scalar | |
| : public common_type | |
| < | |
| decltype(__is_constructible0_test(declval<_Tp&>())) | |
| >::type | |
| {}; | |
| template <bool, class _Tp, class _A0> | |
| struct __is_constructible1_imp // false, _Tp is not a scalar | |
| : public common_type | |
| < | |
| decltype(__is_constructible1_test(declval<_Tp&>(), declval<_A0&>())) | |
| >::type | |
| {}; | |
| template <bool, class _Tp, class _A0, class _A1> | |
| struct __is_constructible2_imp // false, _Tp is not a scalar | |
| : public common_type | |
| < | |
| decltype(__is_constructible2_test(declval<_Tp&>(), declval<_A0>(), declval<_A1>())) | |
| >::type | |
| {}; | |
| // handle scalars and reference types | |
| // Scalars are default constructible, references are not | |
| template <class _Tp> | |
| struct __is_constructible0_imp<true, _Tp> | |
| : public is_scalar<_Tp> | |
| {}; | |
| template <class _Tp, class _A0> | |
| struct __is_constructible1_imp<true, _Tp, _A0> | |
| : public is_convertible<_A0, _Tp> | |
| {}; | |
| template <class _Tp, class _A0, class _A1> | |
| struct __is_constructible2_imp<true, _Tp, _A0, _A1> | |
| : public false_type | |
| {}; | |
| // Treat scalars and reference types separately | |
| template <bool, class _Tp> | |
| struct __is_constructible0_void_check | |
| : public __is_constructible0_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value, | |
| _Tp> | |
| {}; | |
| template <bool, class _Tp, class _A0> | |
| struct __is_constructible1_void_check | |
| : public __is_constructible1_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value, | |
| _Tp, _A0> | |
| {}; | |
| template <bool, class _Tp, class _A0, class _A1> | |
| struct __is_constructible2_void_check | |
| : public __is_constructible2_imp<is_scalar<_Tp>::value || is_reference<_Tp>::value, | |
| _Tp, _A0, _A1> | |
| {}; | |
| // If any of T or Args is void, is_constructible should be false | |
| template <class _Tp> | |
| struct __is_constructible0_void_check<true, _Tp> | |
| : public false_type | |
| {}; | |
| template <class _Tp, class _A0> | |
| struct __is_constructible1_void_check<true, _Tp, _A0> | |
| : public false_type | |
| {}; | |
| template <class _Tp, class _A0, class _A1> | |
| struct __is_constructible2_void_check<true, _Tp, _A0, _A1> | |
| : public false_type | |
| {}; | |
| // is_constructible entry point | |
| template <class _Tp, class _A0 = __is_construct::__nat, | |
| class _A1 = __is_construct::__nat> | |
| struct _LIBCPP_TEMPLATE_VIS is_constructible | |
| : public __is_constructible2_void_check<is_void<_Tp>::value | |
| || is_abstract<_Tp>::value | |
| || is_function<_Tp>::value | |
| || is_void<_A0>::value | |
| || is_void<_A1>::value, | |
| _Tp, _A0, _A1> | |
| {}; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_constructible<_Tp, __is_construct::__nat, __is_construct::__nat> | |
| : public __is_constructible0_void_check<is_void<_Tp>::value | |
| || is_abstract<_Tp>::value | |
| || is_function<_Tp>::value, | |
| _Tp> | |
| {}; | |
| template <class _Tp, class _A0> | |
| struct _LIBCPP_TEMPLATE_VIS is_constructible<_Tp, _A0, __is_construct::__nat> | |
| : public __is_constructible1_void_check<is_void<_Tp>::value | |
| || is_abstract<_Tp>::value | |
| || is_function<_Tp>::value | |
| || is_void<_A0>::value, | |
| _Tp, _A0> | |
| {}; | |
| // Array types are default constructible if their element type | |
| // is default constructible | |
| template <class _Ap, size_t _Np> | |
| struct __is_constructible0_imp<false, _Ap[_Np]> | |
| : public is_constructible<typename remove_all_extents<_Ap>::type> | |
| {}; | |
| template <class _Ap, size_t _Np, class _A0> | |
| struct __is_constructible1_imp<false, _Ap[_Np], _A0> | |
| : public false_type | |
| {}; | |
| template <class _Ap, size_t _Np, class _A0, class _A1> | |
| struct __is_constructible2_imp<false, _Ap[_Np], _A0, _A1> | |
| : public false_type | |
| {}; | |
| // Incomplete array types are not constructible | |
| template <class _Ap> | |
| struct __is_constructible0_imp<false, _Ap[]> | |
| : public false_type | |
| {}; | |
| template <class _Ap, class _A0> | |
| struct __is_constructible1_imp<false, _Ap[], _A0> | |
| : public false_type | |
| {}; | |
| template <class _Ap, class _A0, class _A1> | |
| struct __is_constructible2_imp<false, _Ap[], _A0, _A1> | |
| : public false_type | |
| {}; | |
| #endif // __has_feature(is_constructible) | |
| # 3241 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) && !defined(_LIBCPP_HAS_NO_VARIADICS) | |
| template <class _Tp, class ..._Args> _LIBCPP_CONSTEXPR bool is_constructible_v | |
| = is_constructible<_Tp, _Args...>::value; | |
| #endif | |
| # 3247 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_default_constructible | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_default_constructible | |
| : public is_constructible<_Tp> | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_default_constructible_v | |
| = is_default_constructible<_Tp>::value; | |
| #endif | |
| # 3259 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_copy_constructible | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_copy_constructible | |
| : public is_constructible<_Tp, | |
| typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_copy_constructible_v | |
| = is_copy_constructible<_Tp>::value; | |
| #endif | |
| # 3271 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_move_constructible | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_move_constructible | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| : public is_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> | |
| #else | |
| # 3279 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : public is_copy_constructible<_Tp> | |
| #endif | |
| # 3281 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_move_constructible_v | |
| = is_move_constructible<_Tp>::value; | |
| #endif | |
| # 3287 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_constructible | |
| #ifndef _LIBCPP_HAS_NO_VARIADICS | |
| #if __has_feature(is_trivially_constructible) || _GNUC_VER >= 501 | |
| template <class _Tp, class... _Args> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible | |
| : integral_constant<bool, __is_trivially_constructible(_Tp, _Args...)> | |
| { | |
| }; | |
| #else // !__has_feature(is_trivially_constructible) | |
| # 3301 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, class... _Args> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible | |
| : false_type | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp> | |
| #if __has_feature(has_trivial_constructor) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_trivial_constructor(_Tp)> | |
| #else | |
| # 3313 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3315 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| template <class _Tp> | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp&&> | |
| #else | |
| # 3322 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp> | |
| #endif | |
| # 3324 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, const _Tp&> | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp&> | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| { | |
| }; | |
| #endif // !__has_feature(is_trivially_constructible) | |
| # 3341 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #else // _LIBCPP_HAS_NO_VARIADICS | |
| # 3343 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, class _A0 = __is_construct::__nat, | |
| class _A1 = __is_construct::__nat> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible | |
| : false_type | |
| { | |
| }; | |
| #if __has_feature(is_trivially_constructible) || _GNUC_VER >= 501 | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, __is_construct::__nat, | |
| __is_construct::__nat> | |
| : integral_constant<bool, __is_trivially_constructible(_Tp)> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp, | |
| __is_construct::__nat> | |
| : integral_constant<bool, __is_trivially_constructible(_Tp, _Tp)> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, const _Tp&, | |
| __is_construct::__nat> | |
| : integral_constant<bool, __is_trivially_constructible(_Tp, const _Tp&)> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp&, | |
| __is_construct::__nat> | |
| : integral_constant<bool, __is_trivially_constructible(_Tp, _Tp&)> | |
| { | |
| }; | |
| #else // !__has_feature(is_trivially_constructible) | |
| # 3382 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, __is_construct::__nat, | |
| __is_construct::__nat> | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp, | |
| __is_construct::__nat> | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, const _Tp&, | |
| __is_construct::__nat> | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_trivially_constructible<_Tp, _Tp&, | |
| __is_construct::__nat> | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| { | |
| }; | |
| #endif // !__has_feature(is_trivially_constructible) | |
| # 3412 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // _LIBCPP_HAS_NO_VARIADICS | |
| # 3414 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) && !defined(_LIBCPP_HAS_NO_VARIADICS) | |
| template <class _Tp, class... _Args> _LIBCPP_CONSTEXPR bool is_trivially_constructible_v | |
| = is_trivially_constructible<_Tp, _Args...>::value; | |
| #endif | |
| # 3419 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_default_constructible | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_default_constructible | |
| : public is_trivially_constructible<_Tp> | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_trivially_default_constructible_v | |
| = is_trivially_default_constructible<_Tp>::value; | |
| #endif | |
| # 3430 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_copy_constructible | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copy_constructible | |
| : public is_trivially_constructible<_Tp, typename add_lvalue_reference<const _Tp>::type> | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_trivially_copy_constructible_v | |
| = is_trivially_copy_constructible<_Tp>::value; | |
| #endif | |
| # 3441 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_move_constructible | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_move_constructible | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| : public is_trivially_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> | |
| #else | |
| # 3448 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : public is_trivially_copy_constructible<_Tp> | |
| #endif | |
| # 3450 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_trivially_move_constructible_v | |
| = is_trivially_move_constructible<_Tp>::value; | |
| #endif | |
| # 3456 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_assignable | |
| #if __has_feature(is_trivially_assignable) || _GNUC_VER >= 501 | |
| template <class _Tp, class _Arg> | |
| struct is_trivially_assignable | |
| : integral_constant<bool, __is_trivially_assignable(_Tp, _Arg)> | |
| { | |
| }; | |
| #else // !__has_feature(is_trivially_assignable) | |
| # 3468 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, class _Arg> | |
| struct is_trivially_assignable | |
| : public false_type {}; | |
| template <class _Tp> | |
| struct is_trivially_assignable<_Tp&, _Tp> | |
| : integral_constant<bool, is_scalar<_Tp>::value> {}; | |
| template <class _Tp> | |
| struct is_trivially_assignable<_Tp&, _Tp&> | |
| : integral_constant<bool, is_scalar<_Tp>::value> {}; | |
| template <class _Tp> | |
| struct is_trivially_assignable<_Tp&, const _Tp&> | |
| : integral_constant<bool, is_scalar<_Tp>::value> {}; | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> | |
| struct is_trivially_assignable<_Tp&, _Tp&&> | |
| : integral_constant<bool, is_scalar<_Tp>::value> {}; | |
| #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| # 3492 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // !__has_feature(is_trivially_assignable) | |
| # 3494 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp, class _Arg> _LIBCPP_CONSTEXPR bool is_trivially_assignable_v | |
| = is_trivially_assignable<_Tp, _Arg>::value; | |
| #endif | |
| # 3499 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_copy_assignable | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copy_assignable | |
| : public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type, | |
| typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_trivially_copy_assignable_v | |
| = is_trivially_copy_assignable<_Tp>::value; | |
| #endif | |
| # 3510 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_move_assignable | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_move_assignable | |
| : public is_trivially_assignable<typename add_lvalue_reference<_Tp>::type, | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| typename add_rvalue_reference<_Tp>::type> | |
| #else | |
| # 3518 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| typename add_lvalue_reference<_Tp>::type> | |
| #endif | |
| # 3520 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_trivially_move_assignable_v | |
| = is_trivially_move_assignable<_Tp>::value; | |
| #endif | |
| # 3526 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_destructible | |
| #if __has_feature(has_trivial_destructor) || (_GNUC_VER >= 403) | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible | |
| : public integral_constant<bool, is_destructible<_Tp>::value && __has_trivial_destructor(_Tp)> {}; | |
| #else | |
| # 3535 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct __libcpp_trivial_destructor | |
| : public integral_constant<bool, is_scalar<_Tp>::value || | |
| is_reference<_Tp>::value> {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible | |
| : public __libcpp_trivial_destructor<typename remove_all_extents<_Tp>::type> {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_destructible<_Tp[]> | |
| : public false_type {}; | |
| #endif | |
| # 3547 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_trivially_destructible_v | |
| = is_trivially_destructible<_Tp>::value; | |
| #endif | |
| # 3552 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_nothrow_constructible | |
| #if 0 | |
| template <class _Tp, class... _Args> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible | |
| : public integral_constant<bool, __is_nothrow_constructible(_Tp(_Args...))> | |
| { | |
| }; | |
| #else | |
| # 3563 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #ifndef _LIBCPP_HAS_NO_VARIADICS | |
| #if __has_feature(cxx_noexcept) || (_GNUC_VER >= 407 && __cplusplus >= 201103L) | |
| template <bool, bool, class _Tp, class... _Args> struct __libcpp_is_nothrow_constructible; | |
| template <class _Tp, class... _Args> | |
| struct __libcpp_is_nothrow_constructible</*is constructible*/true, /*is reference*/false, _Tp, _Args...> | |
| : public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> | |
| { | |
| }; | |
| template <class _Tp> | |
| void __implicit_conversion_to(_Tp) noexcept { } | |
| template <class _Tp, class _Arg> | |
| struct __libcpp_is_nothrow_constructible</*is constructible*/true, /*is reference*/true, _Tp, _Arg> | |
| : public integral_constant<bool, noexcept(__implicit_conversion_to<_Tp>(declval<_Arg>()))> | |
| { | |
| }; | |
| template <class _Tp, bool _IsReference, class... _Args> | |
| struct __libcpp_is_nothrow_constructible</*is constructible*/false, _IsReference, _Tp, _Args...> | |
| : public false_type | |
| { | |
| }; | |
| template <class _Tp, class... _Args> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible | |
| : __libcpp_is_nothrow_constructible<is_constructible<_Tp, _Args...>::value, is_reference<_Tp>::value, _Tp, _Args...> | |
| { | |
| }; | |
| template <class _Tp, size_t _Ns> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp[_Ns]> | |
| : __libcpp_is_nothrow_constructible<is_constructible<_Tp>::value, is_reference<_Tp>::value, _Tp> | |
| { | |
| }; | |
| #else // __has_feature(cxx_noexcept) | |
| # 3604 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, class... _Args> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible | |
| : false_type | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp> | |
| #if __has_feature(has_nothrow_constructor) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_constructor(_Tp)> | |
| #else | |
| # 3616 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3618 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| template <class _Tp> | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, _Tp&&> | |
| #else | |
| # 3625 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, _Tp> | |
| #endif | |
| # 3627 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if __has_feature(has_nothrow_copy) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_copy(_Tp)> | |
| #else | |
| # 3630 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3632 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, const _Tp&> | |
| #if __has_feature(has_nothrow_copy) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_copy(_Tp)> | |
| #else | |
| # 3640 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3642 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, _Tp&> | |
| #if __has_feature(has_nothrow_copy) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_copy(_Tp)> | |
| #else | |
| # 3650 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3652 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| #endif // __has_feature(cxx_noexcept) | |
| # 3656 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #else // _LIBCPP_HAS_NO_VARIADICS | |
| # 3658 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, class _A0 = __is_construct::__nat, | |
| class _A1 = __is_construct::__nat> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible | |
| : false_type | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, __is_construct::__nat, | |
| __is_construct::__nat> | |
| #if __has_feature(has_nothrow_constructor) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_constructor(_Tp)> | |
| #else | |
| # 3672 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3674 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, _Tp, | |
| __is_construct::__nat> | |
| #if __has_feature(has_nothrow_copy) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_copy(_Tp)> | |
| #else | |
| # 3683 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3685 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, const _Tp&, | |
| __is_construct::__nat> | |
| #if __has_feature(has_nothrow_copy) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_copy(_Tp)> | |
| #else | |
| # 3694 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3696 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_constructible<_Tp, _Tp&, | |
| __is_construct::__nat> | |
| #if __has_feature(has_nothrow_copy) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_copy(_Tp)> | |
| #else | |
| # 3705 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> | |
| #endif | |
| # 3707 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| { | |
| }; | |
| #endif // _LIBCPP_HAS_NO_VARIADICS | |
| # 3711 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // __has_feature(is_nothrow_constructible) | |
| # 3712 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) && !defined(_LIBCPP_HAS_NO_VARIADICS) | |
| template <class _Tp, class ..._Args> _LIBCPP_CONSTEXPR bool is_nothrow_constructible_v | |
| = is_nothrow_constructible<_Tp, _Args...>::value; | |
| #endif | |
| # 3717 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_nothrow_default_constructible | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_default_constructible | |
| : public is_nothrow_constructible<_Tp> | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_nothrow_default_constructible_v | |
| = is_nothrow_default_constructible<_Tp>::value; | |
| #endif | |
| # 3728 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_nothrow_copy_constructible | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_copy_constructible | |
| : public is_nothrow_constructible<_Tp, | |
| typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_nothrow_copy_constructible_v | |
| = is_nothrow_copy_constructible<_Tp>::value; | |
| #endif | |
| # 3739 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_nothrow_move_constructible | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_move_constructible | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| : public is_nothrow_constructible<_Tp, typename add_rvalue_reference<_Tp>::type> | |
| #else | |
| # 3746 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : public is_nothrow_copy_constructible<_Tp> | |
| #endif | |
| # 3748 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_nothrow_move_constructible_v | |
| = is_nothrow_move_constructible<_Tp>::value; | |
| #endif | |
| # 3754 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_nothrow_assignable | |
| #if __has_feature(cxx_noexcept) || (_GNUC_VER >= 407 && __cplusplus >= 201103L) | |
| template <bool, class _Tp, class _Arg> struct __libcpp_is_nothrow_assignable; | |
| template <class _Tp, class _Arg> | |
| struct __libcpp_is_nothrow_assignable<false, _Tp, _Arg> | |
| : public false_type | |
| { | |
| }; | |
| template <class _Tp, class _Arg> | |
| struct __libcpp_is_nothrow_assignable<true, _Tp, _Arg> | |
| : public integral_constant<bool, noexcept(_VSTD::declval<_Tp>() = _VSTD::declval<_Arg>()) > | |
| { | |
| }; | |
| template <class _Tp, class _Arg> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable | |
| : public __libcpp_is_nothrow_assignable<is_assignable<_Tp, _Arg>::value, _Tp, _Arg> | |
| { | |
| }; | |
| #else // __has_feature(cxx_noexcept) | |
| # 3780 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, class _Arg> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable | |
| : public false_type {}; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable<_Tp&, _Tp> | |
| #if __has_feature(has_nothrow_assign) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_assign(_Tp)> {}; | |
| #else | |
| # 3790 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> {}; | |
| #endif | |
| # 3792 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable<_Tp&, _Tp&> | |
| #if __has_feature(has_nothrow_assign) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_assign(_Tp)> {}; | |
| #else | |
| # 3798 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> {}; | |
| #endif | |
| # 3800 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_assignable<_Tp&, const _Tp&> | |
| #if __has_feature(has_nothrow_assign) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_assign(_Tp)> {}; | |
| #else | |
| # 3806 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> {}; | |
| #endif | |
| # 3808 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> | |
| struct is_nothrow_assignable<_Tp&, _Tp&&> | |
| #if __has_feature(has_nothrow_assign) || (_GNUC_VER >= 403) | |
| : integral_constant<bool, __has_nothrow_assign(_Tp)> {}; | |
| #else | |
| # 3816 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<_Tp>::value> {}; | |
| #endif | |
| # 3818 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| # 3820 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // __has_feature(cxx_noexcept) | |
| # 3822 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp, class _Arg> _LIBCPP_CONSTEXPR bool is_nothrow_assignable_v | |
| = is_nothrow_assignable<_Tp, _Arg>::value; | |
| #endif | |
| # 3827 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_nothrow_copy_assignable | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_copy_assignable | |
| : public is_nothrow_assignable<typename add_lvalue_reference<_Tp>::type, | |
| typename add_lvalue_reference<typename add_const<_Tp>::type>::type> {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_nothrow_copy_assignable_v | |
| = is_nothrow_copy_assignable<_Tp>::value; | |
| #endif | |
| # 3838 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_nothrow_move_assignable | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_move_assignable | |
| : public is_nothrow_assignable<typename add_lvalue_reference<_Tp>::type, | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| typename add_rvalue_reference<_Tp>::type> | |
| #else | |
| # 3846 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| typename add_lvalue_reference<_Tp>::type> | |
| #endif | |
| # 3848 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_nothrow_move_assignable_v | |
| = is_nothrow_move_assignable<_Tp>::value; | |
| #endif | |
| # 3854 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_nothrow_destructible | |
| #if __has_feature(cxx_noexcept) || (_GNUC_VER >= 407 && __cplusplus >= 201103L) | |
| template <bool, class _Tp> struct __libcpp_is_nothrow_destructible; | |
| template <class _Tp> | |
| struct __libcpp_is_nothrow_destructible<false, _Tp> | |
| : public false_type | |
| { | |
| }; | |
| template <class _Tp> | |
| struct __libcpp_is_nothrow_destructible<true, _Tp> | |
| : public integral_constant<bool, noexcept(_VSTD::declval<_Tp>().~_Tp()) > | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible | |
| : public __libcpp_is_nothrow_destructible<is_destructible<_Tp>::value, _Tp> | |
| { | |
| }; | |
| template <class _Tp, size_t _Ns> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp[_Ns]> | |
| : public is_nothrow_destructible<_Tp> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp&> | |
| : public true_type | |
| { | |
| }; | |
| #ifndef _LIBCPP_HAS_NO_RVALUE_REFERENCES | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp&&> | |
| : public true_type | |
| { | |
| }; | |
| #endif | |
| # 3900 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #else | |
| # 3902 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct __libcpp_nothrow_destructor | |
| : public integral_constant<bool, is_scalar<_Tp>::value || | |
| is_reference<_Tp>::value> {}; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible | |
| : public __libcpp_nothrow_destructor<typename remove_all_extents<_Tp>::type> {}; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_destructible<_Tp[]> | |
| : public false_type {}; | |
| #endif | |
| # 3915 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_nothrow_destructible_v | |
| = is_nothrow_destructible<_Tp>::value; | |
| #endif | |
| # 3920 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_pod | |
| #if __has_feature(is_pod) || (_GNUC_VER >= 403) | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_pod | |
| : public integral_constant<bool, __is_pod(_Tp)> {}; | |
| #else | |
| # 3929 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_pod | |
| : public integral_constant<bool, is_trivially_default_constructible<_Tp>::value && | |
| is_trivially_copy_constructible<_Tp>::value && | |
| is_trivially_copy_assignable<_Tp>::value && | |
| is_trivially_destructible<_Tp>::value> {}; | |
| #endif | |
| # 3937 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_pod_v | |
| = is_pod<_Tp>::value; | |
| #endif | |
| # 3942 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_literal_type; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_literal_type | |
| #ifdef _LIBCPP_IS_LITERAL | |
| : public integral_constant<bool, _LIBCPP_IS_LITERAL(_Tp)> | |
| #else | |
| # 3949 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<typename remove_all_extents<_Tp>::type>::value || | |
| is_reference<typename remove_all_extents<_Tp>::type>::value> | |
| #endif | |
| # 3952 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_literal_type_v | |
| = is_literal_type<_Tp>::value; | |
| #endif | |
| # 3958 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_standard_layout; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_standard_layout | |
| #if __has_feature(is_standard_layout) || (_GNUC_VER >= 407) | |
| : public integral_constant<bool, __is_standard_layout(_Tp)> | |
| #else | |
| # 3965 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<typename remove_all_extents<_Tp>::type>::value> | |
| #endif | |
| # 3967 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_standard_layout_v | |
| = is_standard_layout<_Tp>::value; | |
| #endif | |
| # 3973 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivially_copyable; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivially_copyable | |
| #if __has_feature(is_trivially_copyable) | |
| : public integral_constant<bool, __is_trivially_copyable(_Tp)> | |
| #elif _GNUC_VER >= 501 | |
| # 3980 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : public integral_constant<bool, !is_volatile<_Tp>::value && __is_trivially_copyable(_Tp)> | |
| #else | |
| # 3982 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_scalar<typename remove_all_extents<_Tp>::type>::value> | |
| #endif | |
| # 3984 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_trivially_copyable_v | |
| = is_trivially_copyable<_Tp>::value; | |
| #endif | |
| # 3990 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // is_trivial; | |
| template <class _Tp> struct _LIBCPP_TEMPLATE_VIS is_trivial | |
| #if __has_feature(is_trivial) || _GNUC_VER >= 407 | |
| : public integral_constant<bool, __is_trivial(_Tp)> | |
| #else | |
| # 3997 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| : integral_constant<bool, is_trivially_copyable<_Tp>::value && | |
| is_trivially_default_constructible<_Tp>::value> | |
| #endif | |
| # 4000 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| {}; | |
| #if _LIBCPP_STD_VER > 14 && !defined(_LIBCPP_HAS_NO_VARIABLE_TEMPLATES) | |
| template <class _Tp> _LIBCPP_CONSTEXPR bool is_trivial_v | |
| = is_trivial<_Tp>::value; | |
| #endif | |
| # 4006 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct __is_reference_wrapper_impl : public false_type {}; | |
| template <class _Tp> struct __is_reference_wrapper_impl<reference_wrapper<_Tp> > : public true_type {}; | |
| template <class _Tp> struct __is_reference_wrapper | |
| : public __is_reference_wrapper_impl<typename remove_cv<_Tp>::type> {}; | |
| #ifndef _LIBCPP_CXX03_LANG | |
| // Check for complete types | |
| template <class ..._Tp> struct __check_complete; | |
| template <> | |
| struct __check_complete<> | |
| { | |
| }; | |
| template <class _Hp, class _T0, class ..._Tp> | |
| struct __check_complete<_Hp, _T0, _Tp...> | |
| : private __check_complete<_Hp>, | |
| private __check_complete<_T0, _Tp...> | |
| { | |
| }; | |
| template <class _Hp> | |
| struct __check_complete<_Hp, _Hp> | |
| : private __check_complete<_Hp> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct __check_complete<_Tp> | |
| { | |
| static_assert(sizeof(_Tp) > 0, "Type must be complete."); | |
| }; | |
| template <class _Tp> | |
| struct __check_complete<_Tp&> | |
| : private __check_complete<_Tp> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct __check_complete<_Tp&&> | |
| : private __check_complete<_Tp> | |
| { | |
| }; | |
| template <class _Rp, class ..._Param> | |
| struct __check_complete<_Rp (*)(_Param...)> | |
| : private __check_complete<_Rp> | |
| { | |
| }; | |
| template <class ..._Param> | |
| struct __check_complete<void (*)(_Param...)> | |
| { | |
| }; | |
| template <class _Rp, class ..._Param> | |
| struct __check_complete<_Rp (_Param...)> | |
| : private __check_complete<_Rp> | |
| { | |
| }; | |
| template <class ..._Param> | |
| struct __check_complete<void (_Param...)> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...)> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) const> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) volatile> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) const volatile> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) &> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) const&> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) volatile&> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) const volatile&> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) &&> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) const&&> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) volatile&&> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class, class ..._Param> | |
| struct __check_complete<_Rp (_Class::*)(_Param...) const volatile&&> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Rp, class _Class> | |
| struct __check_complete<_Rp _Class::*> | |
| : private __check_complete<_Class> | |
| { | |
| }; | |
| template <class _Fp, class _A0, | |
| class _DecayFp = typename decay<_Fp>::type, | |
| class _DecayA0 = typename decay<_A0>::type, | |
| class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> | |
| using __enable_if_bullet1 = typename enable_if | |
| < | |
| is_member_function_pointer<_DecayFp>::value | |
| && is_base_of<_ClassT, _DecayA0>::value | |
| >::type; | |
| template <class _Fp, class _A0, | |
| class _DecayFp = typename decay<_Fp>::type, | |
| class _DecayA0 = typename decay<_A0>::type> | |
| using __enable_if_bullet2 = typename enable_if | |
| < | |
| is_member_function_pointer<_DecayFp>::value | |
| && __is_reference_wrapper<_DecayA0>::value | |
| >::type; | |
| template <class _Fp, class _A0, | |
| class _DecayFp = typename decay<_Fp>::type, | |
| class _DecayA0 = typename decay<_A0>::type, | |
| class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> | |
| using __enable_if_bullet3 = typename enable_if | |
| < | |
| is_member_function_pointer<_DecayFp>::value | |
| && !is_base_of<_ClassT, _DecayA0>::value | |
| && !__is_reference_wrapper<_DecayA0>::value | |
| >::type; | |
| template <class _Fp, class _A0, | |
| class _DecayFp = typename decay<_Fp>::type, | |
| class _DecayA0 = typename decay<_A0>::type, | |
| class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> | |
| using __enable_if_bullet4 = typename enable_if | |
| < | |
| is_member_object_pointer<_DecayFp>::value | |
| && is_base_of<_ClassT, _DecayA0>::value | |
| >::type; | |
| template <class _Fp, class _A0, | |
| class _DecayFp = typename decay<_Fp>::type, | |
| class _DecayA0 = typename decay<_A0>::type> | |
| using __enable_if_bullet5 = typename enable_if | |
| < | |
| is_member_object_pointer<_DecayFp>::value | |
| && __is_reference_wrapper<_DecayA0>::value | |
| >::type; | |
| template <class _Fp, class _A0, | |
| class _DecayFp = typename decay<_Fp>::type, | |
| class _DecayA0 = typename decay<_A0>::type, | |
| class _ClassT = typename __member_pointer_class_type<_DecayFp>::type> | |
| using __enable_if_bullet6 = typename enable_if | |
| < | |
| is_member_object_pointer<_DecayFp>::value | |
| && !is_base_of<_ClassT, _DecayA0>::value | |
| && !__is_reference_wrapper<_DecayA0>::value | |
| >::type; | |
| // __invoke forward declarations | |
| // fall back - none of the bullets | |
| #define _LIBCPP_INVOKE_RETURN(...) \ | |
| noexcept(noexcept(__VA_ARGS__)) -> decltype(__VA_ARGS__) \ | |
| { return __VA_ARGS__; } | |
| template <class ..._Args> | |
| auto __invoke(__any, _Args&& ...__args) -> __nat; | |
| template <class ..._Args> | |
| auto __invoke_constexpr(__any, _Args&& ...__args) -> __nat; | |
| // bullets 1, 2 and 3 | |
| template <class _Fp, class _A0, class ..._Args, | |
| class = __enable_if_bullet1<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| auto | |
| __invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
| _LIBCPP_INVOKE_RETURN((_VSTD::forward<_A0>(__a0).*__f)(_VSTD::forward<_Args>(__args)...)) | |
| template <class _Fp, class _A0, class ..._Args, | |
| class = __enable_if_bullet1<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR auto | |
| __invoke_constexpr(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
| _LIBCPP_INVOKE_RETURN((_VSTD::forward<_A0>(__a0).*__f)(_VSTD::forward<_Args>(__args)...)) | |
| template <class _Fp, class _A0, class ..._Args, | |
| class = __enable_if_bullet2<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| auto | |
| __invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
| _LIBCPP_INVOKE_RETURN((__a0.get().*__f)(_VSTD::forward<_Args>(__args)...)) | |
| template <class _Fp, class _A0, class ..._Args, | |
| class = __enable_if_bullet2<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR auto | |
| __invoke_constexpr(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
| _LIBCPP_INVOKE_RETURN((__a0.get().*__f)(_VSTD::forward<_Args>(__args)...)) | |
| template <class _Fp, class _A0, class ..._Args, | |
| class = __enable_if_bullet3<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| auto | |
| __invoke(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
| _LIBCPP_INVOKE_RETURN(((*_VSTD::forward<_A0>(__a0)).*__f)(_VSTD::forward<_Args>(__args)...)) | |
| template <class _Fp, class _A0, class ..._Args, | |
| class = __enable_if_bullet3<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR auto | |
| __invoke_constexpr(_Fp&& __f, _A0&& __a0, _Args&& ...__args) | |
| _LIBCPP_INVOKE_RETURN(((*_VSTD::forward<_A0>(__a0)).*__f)(_VSTD::forward<_Args>(__args)...)) | |
| // bullets 4, 5 and 6 | |
| template <class _Fp, class _A0, | |
| class = __enable_if_bullet4<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| auto | |
| __invoke(_Fp&& __f, _A0&& __a0) | |
| _LIBCPP_INVOKE_RETURN(_VSTD::forward<_A0>(__a0).*__f) | |
| template <class _Fp, class _A0, | |
| class = __enable_if_bullet4<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR auto | |
| __invoke_constexpr(_Fp&& __f, _A0&& __a0) | |
| _LIBCPP_INVOKE_RETURN(_VSTD::forward<_A0>(__a0).*__f) | |
| template <class _Fp, class _A0, | |
| class = __enable_if_bullet5<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| auto | |
| __invoke(_Fp&& __f, _A0&& __a0) | |
| _LIBCPP_INVOKE_RETURN(__a0.get().*__f) | |
| template <class _Fp, class _A0, | |
| class = __enable_if_bullet5<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR auto | |
| __invoke_constexpr(_Fp&& __f, _A0&& __a0) | |
| _LIBCPP_INVOKE_RETURN(__a0.get().*__f) | |
| template <class _Fp, class _A0, | |
| class = __enable_if_bullet6<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| auto | |
| __invoke(_Fp&& __f, _A0&& __a0) | |
| _LIBCPP_INVOKE_RETURN((*_VSTD::forward<_A0>(__a0)).*__f) | |
| template <class _Fp, class _A0, | |
| class = __enable_if_bullet6<_Fp, _A0>> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR auto | |
| __invoke_constexpr(_Fp&& __f, _A0&& __a0) | |
| _LIBCPP_INVOKE_RETURN((*_VSTD::forward<_A0>(__a0)).*__f) | |
| // bullet 7 | |
| template <class _Fp, class ..._Args> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| auto | |
| __invoke(_Fp&& __f, _Args&& ...__args) | |
| _LIBCPP_INVOKE_RETURN(_VSTD::forward<_Fp>(__f)(_VSTD::forward<_Args>(__args)...)) | |
| template <class _Fp, class ..._Args> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR auto | |
| __invoke_constexpr(_Fp&& __f, _Args&& ...__args) | |
| _LIBCPP_INVOKE_RETURN(_VSTD::forward<_Fp>(__f)(_VSTD::forward<_Args>(__args)...)) | |
| #undef _LIBCPP_INVOKE_RETURN | |
| // __invokable | |
| template <class _Ret, class _Fp, class ..._Args> | |
| struct __invokable_r | |
| : private __check_complete<_Fp> | |
| { | |
| using _Result = decltype( | |
| _VSTD::__invoke(_VSTD::declval<_Fp>(), _VSTD::declval<_Args>()...)); | |
| static const bool value = | |
| conditional< | |
| !is_same<_Result, __nat>::value, | |
| typename conditional< | |
| is_void<_Ret>::value, | |
| true_type, | |
| is_convertible<_Result, _Ret> | |
| >::type, | |
| false_type | |
| >::type::value; | |
| }; | |
| template <class _Fp, class ..._Args> | |
| using __invokable = __invokable_r<void, _Fp, _Args...>; | |
| template <bool _IsInvokable, bool _IsCVVoid, class _Ret, class _Fp, class ..._Args> | |
| struct __nothrow_invokable_r_imp { | |
| static const bool value = false; | |
| }; | |
| template <class _Ret, class _Fp, class ..._Args> | |
| struct __nothrow_invokable_r_imp<true, false, _Ret, _Fp, _Args...> | |
| { | |
| typedef __nothrow_invokable_r_imp _ThisT; | |
| template <class _Tp> | |
| static void __test_noexcept(_Tp) noexcept; | |
| static const bool value = noexcept(_ThisT::__test_noexcept<_Ret>( | |
| _VSTD::__invoke(_VSTD::declval<_Fp>(), _VSTD::declval<_Args>()...))); | |
| }; | |
| template <class _Ret, class _Fp, class ..._Args> | |
| struct __nothrow_invokable_r_imp<true, true, _Ret, _Fp, _Args...> | |
| { | |
| static const bool value = noexcept( | |
| _VSTD::__invoke(_VSTD::declval<_Fp>(), _VSTD::declval<_Args>()...)); | |
| }; | |
| template <class _Ret, class _Fp, class ..._Args> | |
| using __nothrow_invokable_r = | |
| __nothrow_invokable_r_imp< | |
| __invokable_r<_Ret, _Fp, _Args...>::value, | |
| is_void<_Ret>::value, | |
| _Ret, _Fp, _Args... | |
| >; | |
| template <class _Fp, class ..._Args> | |
| struct __invoke_of | |
| : public enable_if< | |
| __invokable<_Fp, _Args...>::value, | |
| typename __invokable_r<void, _Fp, _Args...>::_Result> | |
| { | |
| }; | |
| // result_of | |
| template <class _Fp, class ..._Args> | |
| class _LIBCPP_TEMPLATE_VIS result_of<_Fp(_Args...)> | |
| : public __invoke_of<_Fp, _Args...> | |
| { | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using result_of_t = typename result_of<_Tp>::type; | |
| #endif | |
| # 4408 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 | |
| // is_callable | |
| template <class _Fn, class _Ret = void> | |
| struct _LIBCPP_TEMPLATE_VIS is_callable; | |
| template <class _Fn, class ..._Args, class _Ret> | |
| struct _LIBCPP_TEMPLATE_VIS is_callable<_Fn(_Args...), _Ret> | |
| : integral_constant<bool, __invokable_r<_Ret, _Fn, _Args...>::value> {}; | |
| template <class _Fn, class _Ret = void> | |
| constexpr bool is_callable_v = is_callable<_Fn, _Ret>::value; | |
| // is_nothrow_callable | |
| template <class _Fn, class _Ret = void> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_callable; | |
| template <class _Fn, class ..._Args, class _Ret> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_callable<_Fn(_Args...), _Ret> | |
| : integral_constant<bool, __nothrow_invokable_r<_Ret, _Fn, _Args...>::value> | |
| {}; | |
| template <class _Fn, class _Ret = void> | |
| constexpr bool is_nothrow_callable_v = is_nothrow_callable<_Fn, _Ret>::value; | |
| #endif // _LIBCPP_STD_VER > 14 | |
| # 4437 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // !defined(_LIBCPP_CXX03_LANG) | |
| # 4439 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> struct __is_swappable; | |
| template <class _Tp> struct __is_nothrow_swappable; | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| #ifndef _LIBCPP_CXX03_LANG | |
| typename enable_if | |
| < | |
| is_move_constructible<_Tp>::value && | |
| is_move_assignable<_Tp>::value | |
| >::type | |
| #else | |
| # 4452 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| void | |
| #endif | |
| # 4454 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| swap(_Tp& __x, _Tp& __y) _NOEXCEPT_(is_nothrow_move_constructible<_Tp>::value && | |
| is_nothrow_move_assignable<_Tp>::value) | |
| { | |
| _Tp __t(_VSTD::move(__x)); | |
| __x = _VSTD::move(__y); | |
| __y = _VSTD::move(__t); | |
| } | |
| template<class _Tp, size_t _Np> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| typename enable_if< | |
| __is_swappable<_Tp>::value | |
| >::type | |
| swap(_Tp (&__a)[_Np], _Tp (&__b)[_Np]) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value); | |
| template <class _ForwardIterator1, class _ForwardIterator2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| void | |
| iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) | |
| // _NOEXCEPT_(_NOEXCEPT_(swap(*__a, *__b))) | |
| _NOEXCEPT_(_NOEXCEPT_(swap(*_VSTD::declval<_ForwardIterator1>(), | |
| *_VSTD::declval<_ForwardIterator2>()))) | |
| { | |
| swap(*__a, *__b); | |
| } | |
| // __swappable | |
| namespace __detail | |
| { | |
| // ALL generic swap overloads MUST already have a declaration available at this point. | |
| template <class _Tp, class _Up = _Tp, | |
| bool _NotVoid = !is_void<_Tp>::value && !is_void<_Up>::value> | |
| struct __swappable_with | |
| { | |
| template <class _LHS, class _RHS> | |
| static decltype(swap(_VSTD::declval<_LHS>(), _VSTD::declval<_RHS>())) | |
| __test_swap(int); | |
| template <class, class> | |
| static __nat __test_swap(long); | |
| // Extra parens are needed for the C++03 definition of decltype. | |
| typedef decltype((__test_swap<_Tp, _Up>(0))) __swap1; | |
| typedef decltype((__test_swap<_Up, _Tp>(0))) __swap2; | |
| static const bool value = !is_same<__swap1, __nat>::value | |
| && !is_same<__swap2, __nat>::value; | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __swappable_with<_Tp, _Up, false> : false_type {}; | |
| template <class _Tp, class _Up = _Tp, bool _Swappable = __swappable_with<_Tp, _Up>::value> | |
| struct __nothrow_swappable_with { | |
| static const bool value = | |
| #ifndef _LIBCPP_HAS_NO_NOEXCEPT | |
| noexcept(swap(_VSTD::declval<_Tp>(), _VSTD::declval<_Up>())) | |
| && noexcept(swap(_VSTD::declval<_Up>(), _VSTD::declval<_Tp>())); | |
| #else | |
| # 4514 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| false; | |
| #endif | |
| # 4516 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __nothrow_swappable_with<_Tp, _Up, false> : false_type {}; | |
| } // __detail | |
| template <class _Tp> | |
| struct __is_swappable | |
| : public integral_constant<bool, __detail::__swappable_with<_Tp&>::value> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct __is_nothrow_swappable | |
| : public integral_constant<bool, __detail::__nothrow_swappable_with<_Tp&>::value> | |
| { | |
| }; | |
| #if _LIBCPP_STD_VER > 14 | |
| template <class _Tp, class _Up> | |
| struct _LIBCPP_TEMPLATE_VIS is_swappable_with | |
| : public integral_constant<bool, __detail::__swappable_with<_Tp, _Up>::value> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_swappable | |
| : public conditional< | |
| __is_referenceable<_Tp>::value, | |
| is_swappable_with< | |
| typename add_lvalue_reference<_Tp>::type, | |
| typename add_lvalue_reference<_Tp>::type>, | |
| false_type | |
| >::type | |
| { | |
| }; | |
| template <class _Tp, class _Up> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_swappable_with | |
| : public integral_constant<bool, __detail::__nothrow_swappable_with<_Tp, _Up>::value> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS is_nothrow_swappable | |
| : public conditional< | |
| __is_referenceable<_Tp>::value, | |
| is_nothrow_swappable_with< | |
| typename add_lvalue_reference<_Tp>::type, | |
| typename add_lvalue_reference<_Tp>::type>, | |
| false_type | |
| >::type | |
| { | |
| }; | |
| template <class _Tp, class _Up> | |
| constexpr bool is_swappable_with_v = is_swappable_with<_Tp, _Up>::value; | |
| template <class _Tp> | |
| constexpr bool is_swappable_v = is_swappable<_Tp>::value; | |
| template <class _Tp, class _Up> | |
| constexpr bool is_nothrow_swappable_with_v = is_nothrow_swappable_with<_Tp, _Up>::value; | |
| template <class _Tp> | |
| constexpr bool is_nothrow_swappable_v = is_nothrow_swappable<_Tp>::value; | |
| #endif // _LIBCPP_STD_VER > 14 | |
| # 4586 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #ifdef _LIBCPP_UNDERLYING_TYPE | |
| template <class _Tp> | |
| struct underlying_type | |
| { | |
| typedef _LIBCPP_UNDERLYING_TYPE(_Tp) type; | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp> using underlying_type_t = typename underlying_type<_Tp>::type; | |
| #endif | |
| # 4598 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #else // _LIBCPP_UNDERLYING_TYPE | |
| # 4600 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, bool _Support = false> | |
| struct underlying_type | |
| { | |
| static_assert(_Support, "The underyling_type trait requires compiler " | |
| "support. Either no such support exists or " | |
| "libc++ does not know how to use it."); | |
| }; | |
| #endif // _LIBCPP_UNDERLYING_TYPE | |
| # 4610 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp, bool = is_enum<_Tp>::value> | |
| struct __sfinae_underlying_type | |
| { | |
| typedef typename underlying_type<_Tp>::type type; | |
| typedef decltype(((type)1) + 0) __promoted_type; | |
| }; | |
| template <class _Tp> | |
| struct __sfinae_underlying_type<_Tp, false> {}; | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| int __convert_to_integral(int __val) { return __val; } | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| unsigned __convert_to_integral(unsigned __val) { return __val; } | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| long __convert_to_integral(long __val) { return __val; } | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| unsigned long __convert_to_integral(unsigned long __val) { return __val; } | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| long long __convert_to_integral(long long __val) { return __val; } | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| unsigned long long __convert_to_integral(unsigned long long __val) {return __val; } | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| __int128_t __convert_to_integral(__int128_t __val) { return __val; } | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| __uint128_t __convert_to_integral(__uint128_t __val) { return __val; } | |
| #endif | |
| # 4647 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| typename __sfinae_underlying_type<_Tp>::__promoted_type | |
| __convert_to_integral(_Tp __val) { return __val; } | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class _Tp> | |
| struct __has_operator_addressof_member_imp | |
| { | |
| template <class _Up> | |
| static auto __test(int) | |
| -> typename __select_2nd<decltype(_VSTD::declval<_Up>().operator&()), true_type>::type; | |
| template <class> | |
| static auto __test(long) -> false_type; | |
| static const bool value = decltype(__test<_Tp>(0))::value; | |
| }; | |
| template <class _Tp> | |
| struct __has_operator_addressof_free_imp | |
| { | |
| template <class _Up> | |
| static auto __test(int) | |
| -> typename __select_2nd<decltype(operator&(_VSTD::declval<_Up>())), true_type>::type; | |
| template <class> | |
| static auto __test(long) -> false_type; | |
| static const bool value = decltype(__test<_Tp>(0))::value; | |
| }; | |
| template <class _Tp> | |
| struct __has_operator_addressof | |
| : public integral_constant<bool, __has_operator_addressof_member_imp<_Tp>::value | |
| || __has_operator_addressof_free_imp<_Tp>::value> | |
| {}; | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 4686 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #if _LIBCPP_STD_VER > 14 | |
| #define __cpp_lib_void_t 201411 | |
| template <class...> using void_t = void; | |
| # ifndef _LIBCPP_HAS_NO_VARIADICS | |
| template <class... _Args> | |
| struct conjunction : __and_<_Args...> {}; | |
| template<class... _Args> constexpr bool conjunction_v = conjunction<_Args...>::value; | |
| template <class... _Args> | |
| struct disjunction : __or_<_Args...> {}; | |
| template<class... _Args> constexpr bool disjunction_v = disjunction<_Args...>::value; | |
| template <class _Tp> | |
| struct negation : __not_<_Tp> {}; | |
| template<class _Tp> constexpr bool negation_v = negation<_Tp>::value; | |
| # endif // _LIBCPP_HAS_NO_VARIADICS | |
| # 4705 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // _LIBCPP_STD_VER > 14 | |
| # 4706 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| // These traits are used in __tree and __hash_table | |
| #ifndef _LIBCPP_CXX03_LANG | |
| struct __extract_key_fail_tag {}; | |
| struct __extract_key_self_tag {}; | |
| struct __extract_key_first_tag {}; | |
| template <class _ValTy, class _Key, | |
| class _RawValTy = typename __unconstref<_ValTy>::type> | |
| struct __can_extract_key | |
| : conditional<is_same<_RawValTy, _Key>::value, __extract_key_self_tag, | |
| __extract_key_fail_tag>::type {}; | |
| template <class _Pair, class _Key, class _First, class _Second> | |
| struct __can_extract_key<_Pair, _Key, pair<_First, _Second>> | |
| : conditional<is_same<typename remove_const<_First>::type, _Key>::value, | |
| __extract_key_first_tag, __extract_key_fail_tag>::type {}; | |
| // __can_extract_map_key uses true_type/false_type instead of the tags. | |
| // It returns true if _Key != _ContainerValueTy (the container is a map not a set) | |
| // and _ValTy == _Key. | |
| template <class _ValTy, class _Key, class _ContainerValueTy, | |
| class _RawValTy = typename __unconstref<_ValTy>::type> | |
| struct __can_extract_map_key | |
| : integral_constant<bool, is_same<_RawValTy, _Key>::value> {}; | |
| // This specialization returns __extract_key_fail_tag for non-map containers | |
| // because _Key == _ContainerValueTy | |
| template <class _ValTy, class _Key, class _RawValTy> | |
| struct __can_extract_map_key<_ValTy, _Key, _Key, _RawValTy> | |
| : false_type {}; | |
| #endif | |
| # 4739 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #if _LIBCPP_STD_VER > 14 | |
| // std::byte | |
| namespace std // purposefully not versioned | |
| { | |
| template <class _Integer> | |
| constexpr typename enable_if<is_integral_v<_Integer>, byte>::type & | |
| operator<<=(byte& __lhs, _Integer __shift) noexcept | |
| { return __lhs = byte(static_cast<unsigned char>(__lhs) << __shift); } | |
| template <class _Integer> | |
| constexpr typename enable_if<is_integral_v<_Integer>, byte>::type | |
| operator<< (byte __lhs, _Integer __shift) noexcept | |
| { return byte(static_cast<unsigned char>(__lhs) << __shift); } | |
| template <class _Integer> | |
| constexpr typename enable_if<is_integral_v<_Integer>, byte>::type & | |
| operator>>=(byte& __lhs, _Integer __shift) noexcept | |
| { return __lhs = byte(static_cast<unsigned char>(__lhs) >> __shift); } | |
| template <class _Integer> | |
| constexpr typename enable_if<is_integral_v<_Integer>, byte>::type | |
| operator>> (byte __lhs, _Integer __shift) noexcept | |
| { return byte(static_cast<unsigned char>(__lhs) >> __shift); } | |
| template <class _Integer> | |
| constexpr typename enable_if<is_integral_v<_Integer>, _Integer>::type | |
| to_integer(byte __b) noexcept { return _Integer(__b); } | |
| } | |
| #endif | |
| # 4772 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| #endif // _LIBCPP_TYPE_TRAITS | |
| # 4774 "/usr/local/bin/../include/c++/v1/type_traits" 3 | |
| # 88 "/usr/local/bin/../include/c++/v1/cstddef" 2 3 | |
| #endif | |
| # 89 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| #endif // _LIBCPP_CSTDDEF | |
| # 91 "/usr/local/bin/../include/c++/v1/cstddef" 3 | |
| # 82 "/usr/local/bin/../include/c++/v1/exception" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstdlib> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 82 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/cstdlib" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- cstdlib ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_CSTDLIB | |
| #define _LIBCPP_CSTDLIB | |
| /* | |
| cstdlib synopsis | |
| Macros: | |
| EXIT_FAILURE | |
| EXIT_SUCCESS | |
| MB_CUR_MAX | |
| NULL | |
| RAND_MAX | |
| namespace std | |
| { | |
| Types: | |
| size_t | |
| div_t | |
| ldiv_t | |
| lldiv_t // C99 | |
| double atof (const char* nptr); | |
| int atoi (const char* nptr); | |
| long atol (const char* nptr); | |
| long long atoll(const char* nptr); // C99 | |
| double strtod (const char* restrict nptr, char** restrict endptr); | |
| float strtof (const char* restrict nptr, char** restrict endptr); // C99 | |
| long double strtold (const char* restrict nptr, char** restrict endptr); // C99 | |
| long strtol (const char* restrict nptr, char** restrict endptr, int base); | |
| long long strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99 | |
| unsigned long strtoul (const char* restrict nptr, char** restrict endptr, int base); | |
| unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99 | |
| int rand(void); | |
| void srand(unsigned int seed); | |
| void* calloc(size_t nmemb, size_t size); | |
| void free(void* ptr); | |
| void* malloc(size_t size); | |
| void* realloc(void* ptr, size_t size); | |
| void abort(void); | |
| int atexit(void (*func)(void)); | |
| void exit(int status); | |
| void _Exit(int status); | |
| char* getenv(const char* name); | |
| int system(const char* string); | |
| void* bsearch(const void* key, const void* base, size_t nmemb, size_t size, | |
| int (*compar)(const void *, const void *)); | |
| void qsort(void* base, size_t nmemb, size_t size, | |
| int (*compar)(const void *, const void *)); | |
| int abs( int j); | |
| long abs( long j); | |
| long long abs(long long j); // C++0X | |
| long labs( long j); | |
| long long llabs(long long j); // C99 | |
| div_t div( int numer, int denom); | |
| ldiv_t div( long numer, long denom); | |
| lldiv_t div(long long numer, long long denom); // C++0X | |
| ldiv_t ldiv( long numer, long denom); | |
| lldiv_t lldiv(long long numer, long long denom); // C99 | |
| int mblen(const char* s, size_t n); | |
| int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n); | |
| int wctomb(char* s, wchar_t wchar); | |
| size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n); | |
| size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n); | |
| int at_quick_exit(void (*func)(void)) // C++11 | |
| void quick_exit(int status); // C++11 | |
| void *aligned_alloc(size_t alignment, size_t size); // C11 | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 85 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| # 86 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <stdlib.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 86 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/stdlib.h" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- stdlib.h ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if defined(__need_malloc_and_calloc) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 15 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #endif | |
| # 16 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stdlib.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 17 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| # 18 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #elif !defined(_LIBCPP_STDLIB_H) | |
| # 20 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #define _LIBCPP_STDLIB_H | |
| /* | |
| stdlib.h synopsis | |
| Macros: | |
| EXIT_FAILURE | |
| EXIT_SUCCESS | |
| MB_CUR_MAX | |
| NULL | |
| RAND_MAX | |
| Types: | |
| size_t | |
| div_t | |
| ldiv_t | |
| lldiv_t // C99 | |
| double atof (const char* nptr); | |
| int atoi (const char* nptr); | |
| long atol (const char* nptr); | |
| long long atoll(const char* nptr); // C99 | |
| double strtod (const char* restrict nptr, char** restrict endptr); | |
| float strtof (const char* restrict nptr, char** restrict endptr); // C99 | |
| long double strtold (const char* restrict nptr, char** restrict endptr); // C99 | |
| long strtol (const char* restrict nptr, char** restrict endptr, int base); | |
| long long strtoll (const char* restrict nptr, char** restrict endptr, int base); // C99 | |
| unsigned long strtoul (const char* restrict nptr, char** restrict endptr, int base); | |
| unsigned long long strtoull(const char* restrict nptr, char** restrict endptr, int base); // C99 | |
| int rand(void); | |
| void srand(unsigned int seed); | |
| void* calloc(size_t nmemb, size_t size); | |
| void free(void* ptr); | |
| void* malloc(size_t size); | |
| void* realloc(void* ptr, size_t size); | |
| void abort(void); | |
| int atexit(void (*func)(void)); | |
| void exit(int status); | |
| void _Exit(int status); | |
| char* getenv(const char* name); | |
| int system(const char* string); | |
| void* bsearch(const void* key, const void* base, size_t nmemb, size_t size, | |
| int (*compar)(const void *, const void *)); | |
| void qsort(void* base, size_t nmemb, size_t size, | |
| int (*compar)(const void *, const void *)); | |
| int abs( int j); | |
| long abs( long j); | |
| long long abs(long long j); // C++0X | |
| long labs( long j); | |
| long long llabs(long long j); // C99 | |
| div_t div( int numer, int denom); | |
| ldiv_t div( long numer, long denom); | |
| lldiv_t div(long long numer, long long denom); // C++0X | |
| ldiv_t ldiv( long numer, long denom); | |
| lldiv_t lldiv(long long numer, long long denom); // C99 | |
| int mblen(const char* s, size_t n); | |
| int mbtowc(wchar_t* restrict pwc, const char* restrict s, size_t n); | |
| int wctomb(char* s, wchar_t wchar); | |
| size_t mbstowcs(wchar_t* restrict pwcs, const char* restrict s, size_t n); | |
| size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n); | |
| int at_quick_exit(void (*func)(void)) // C++11 | |
| void quick_exit(int status); // C++11 | |
| void *aligned_alloc(size_t alignment, size_t size); // C11 | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 88 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| # 89 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 92 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #endif | |
| # 93 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stdlib.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 94 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| # 1 "/usr/include/stdlib.h" 1 3 4 | |
| /* Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * ISO C99 Standard: 7.20 General utilities <stdlib.h> | |
| */ | |
| #ifndef _STDLIB_H | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 24 "/usr/include/stdlib.h" 3 4 | |
| # 25 "/usr/include/stdlib.h" 3 4 | |
| /* Get size_t, wchar_t and NULL from <stddef.h>. */ | |
| #define __need_size_t | |
| #ifndef __need_malloc_and_calloc | |
| # define __need_wchar_t | |
| # define __need_NULL | |
| #endif | |
| # 32 "/usr/include/stdlib.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 32 "/usr/include/stdlib.h" 3 4 | |
| # 1 "/usr/local/bin/../include/c++/v1/stddef.h" 1 3 4 | |
| // -*- C++ -*- | |
| //===--------------------------- stddef.h ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if defined(__need_ptrdiff_t) || defined(__need_size_t) || \ | |
| defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 16 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 17 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/stddef.h" 1 3 | |
| /*===---- stddef.h - Basic type definitions --------------------------------=== | |
| * | |
| * Copyright (c) 2008 Eli Friedman | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| *===-----------------------------------------------------------------------=== | |
| */ | |
| #if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \ | |
| defined(__need_size_t) || defined(__need_wchar_t) || \ | |
| defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \ | |
| !defined(__need_wchar_t) && !defined(__need_NULL) && \ | |
| !defined(__need_wint_t) | |
| /* Always define miscellaneous pieces when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define __STDDEF_H | |
| #endif | |
| # 37 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define __need_ptrdiff_t | |
| #define __need_size_t | |
| #define __need_wchar_t | |
| #define __need_NULL | |
| #define __need_STDDEF_H_misc | |
| /* __need_wint_t is intentionally not defined here. */ | |
| #endif | |
| # 44 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_ptrdiff_t) | |
| #if !defined(_PTRDIFF_T) || __has_feature(modules) | |
| /* Always define ptrdiff_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _PTRDIFF_T | |
| #endif | |
| # 51 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
| #endif | |
| # 53 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_ptrdiff_t | |
| #endif /* defined(__need_ptrdiff_t) */ | |
| # 55 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_size_t) | |
| #if !defined(_SIZE_T) || __has_feature(modules) | |
| /* Always define size_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _SIZE_T | |
| #endif | |
| # 62 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ size_t; | |
| #endif | |
| # 64 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_size_t | |
| #endif /*defined(__need_size_t) */ | |
| # 66 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| /* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is | |
| * enabled. */ | |
| #if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \ | |
| !defined(_RSIZE_T)) || __has_feature(modules) | |
| /* Always define rsize_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _RSIZE_T | |
| #endif | |
| # 76 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ rsize_t; | |
| #endif | |
| # 78 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 79 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_wchar_t) | |
| #ifndef __cplusplus | |
| /* Always define wchar_t when modules are available. */ | |
| #if !defined(_WCHAR_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WCHAR_T | |
| #if defined(_MSC_EXTENSIONS) | |
| #define _WCHAR_T_DEFINED | |
| #endif | |
| # 89 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 90 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WCHAR_TYPE__ wchar_t; | |
| #endif | |
| # 92 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 93 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wchar_t | |
| #endif /* defined(__need_wchar_t) */ | |
| # 95 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_NULL) | |
| #undef NULL | |
| #ifdef __cplusplus | |
| # if !defined(__MINGW32__) && !defined(_MSC_VER) | |
| # define NULL __null | |
| # else | |
| # 102 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL 0 | |
| # endif | |
| # 104 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #else | |
| # 105 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL ((void*)0) | |
| #endif | |
| # 107 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #ifdef __cplusplus | |
| #if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) | |
| namespace std { typedef decltype(nullptr) nullptr_t; } | |
| using ::std::nullptr_t; | |
| #endif | |
| # 112 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 113 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_NULL | |
| #endif /* defined(__need_NULL) */ | |
| # 115 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| #if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include "__stddef_max_align_t.h" | |
| #endif /* expanded by -frewrite-includes */ | |
| # 118 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 119 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 120 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define offsetof(t, d) __builtin_offsetof(t, d) | |
| #undef __need_STDDEF_H_misc | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 123 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| /* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use | |
| __WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ | |
| #if defined(__need_wint_t) | |
| /* Always define wint_t when modules are available. */ | |
| #if !defined(_WINT_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WINT_T | |
| #endif | |
| # 132 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WINT_TYPE__ wint_t; | |
| #endif | |
| # 134 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wint_t | |
| #endif /* __need_wint_t */ | |
| # 136 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 138 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 19 "/usr/local/bin/../include/c++/v1/stddef.h" 2 3 | |
| #elif !defined(_LIBCPP_STDDEF_H) | |
| # 21 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #define _LIBCPP_STDDEF_H | |
| /* | |
| stddef.h synopsis | |
| Macros: | |
| offsetof(type,member-designator) | |
| NULL | |
| Types: | |
| ptrdiff_t | |
| size_t | |
| max_align_t | |
| nullptr_t | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 40 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 41 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 44 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 45 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 46 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 47 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #ifdef __cplusplus | |
| extern "C++" { | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__nullptr> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 51 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 52 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| using std::nullptr_t; | |
| } | |
| // Re-use the compiler's <stddef.h> max_align_t where possible. | |
| #if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \ | |
| !defined(__DEFINED_max_align_t) | |
| typedef long double max_align_t; | |
| #endif | |
| # 60 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 62 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif // _LIBCPP_STDDEF_H | |
| # 64 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 33 "/usr/include/stdlib.h" 2 3 4 | |
| __BEGIN_DECLS | |
| #ifndef __need_malloc_and_calloc | |
| #define _STDLIB_H 1 | |
| #if (defined __USE_XOPEN || defined __USE_XOPEN2K8) && !defined _SYS_WAIT_H | |
| /* XPG requires a few symbols from <sys/wait.h> being defined. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/waitflags.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 41 "/usr/include/stdlib.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/waitflags.h" 1 3 4 | |
| /* Definitions of flag bits for `waitpid' et al. | |
| Copyright (C) 1992-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #if !defined _SYS_WAIT_H && !defined _STDLIB_H | |
| # error "Never include <bits/waitflags.h> directly; use <sys/wait.h> instead." | |
| #endif | |
| # 22 "/usr/include/x86_64-linux-gnu/bits/waitflags.h" 3 4 | |
| /* Bits in the third argument to `waitpid'. */ | |
| #define WNOHANG 1 /* Don't block waiting. */ | |
| #define WUNTRACED 2 /* Report status of stopped children. */ | |
| /* Bits in the fourth argument to `waitid'. */ | |
| #define WSTOPPED 2 /* Report stopped child (same as WUNTRACED). */ | |
| #define WEXITED 4 /* Report dead child. */ | |
| #define WCONTINUED 8 /* Report continued child. */ | |
| #define WNOWAIT 0x01000000 /* Don't reap, just poll status. */ | |
| #define __WNOTHREAD 0x20000000 /* Don't wait on children of other threads | |
| in this group */ | |
| #define __WALL 0x40000000 /* Wait for any child. */ | |
| #define __WCLONE 0x80000000 /* Wait for cloned process. */ | |
| /* The following values are used by the `waitid' function. */ | |
| #if defined __USE_XOPEN || defined __USE_XOPEN2K8 | |
| # ifndef __ENUM_IDTYPE_T | |
| # define __ENUM_IDTYPE_T 1 | |
| /* The Linux kernel defines these bare, rather than an enum, | |
| which causes a conflict if the include order is reversed. */ | |
| # undef P_ALL | |
| # undef P_PID | |
| # undef P_PGID | |
| typedef enum | |
| { | |
| P_ALL, /* Wait for any child. */ | |
| P_PID, /* Wait for specified process. */ | |
| P_PGID /* Wait for members of process group. */ | |
| } idtype_t; | |
| # endif | |
| # 57 "/usr/include/x86_64-linux-gnu/bits/waitflags.h" 3 4 | |
| #endif | |
| # 58 "/usr/include/x86_64-linux-gnu/bits/waitflags.h" 3 4 | |
| # 42 "/usr/include/stdlib.h" 2 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/waitstatus.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 42 "/usr/include/stdlib.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 1 3 4 | |
| /* Definitions of status bits for `wait' et al. | |
| Copyright (C) 1992-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #if !defined _SYS_WAIT_H && !defined _STDLIB_H | |
| # error "Never include <bits/waitstatus.h> directly; use <sys/wait.h> instead." | |
| #endif | |
| # 22 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 | |
| /* Everything extant so far uses these same bits. */ | |
| /* If WIFEXITED(STATUS), the low-order 8 bits of the status. */ | |
| #define __WEXITSTATUS(status) (((status) & 0xff00) >> 8) | |
| /* If WIFSIGNALED(STATUS), the terminating signal. */ | |
| #define __WTERMSIG(status) ((status) & 0x7f) | |
| /* If WIFSTOPPED(STATUS), the signal that stopped the child. */ | |
| #define __WSTOPSIG(status) __WEXITSTATUS(status) | |
| /* Nonzero if STATUS indicates normal termination. */ | |
| #define __WIFEXITED(status) (__WTERMSIG(status) == 0) | |
| /* Nonzero if STATUS indicates termination by a signal. */ | |
| #define __WIFSIGNALED(status) \ | |
| (((signed char) (((status) & 0x7f) + 1) >> 1) > 0) | |
| /* Nonzero if STATUS indicates the child is stopped. */ | |
| #define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f) | |
| /* Nonzero if STATUS indicates the child continued after a stop. We only | |
| define this if <bits/waitflags.h> provides the WCONTINUED flag bit. */ | |
| #ifdef WCONTINUED | |
| # define __WIFCONTINUED(status) ((status) == __W_CONTINUED) | |
| #endif | |
| # 51 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 | |
| /* Nonzero if STATUS indicates the child dumped core. */ | |
| #define __WCOREDUMP(status) ((status) & __WCOREFLAG) | |
| /* Macros for constructing status values. */ | |
| #define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig)) | |
| #define __W_STOPCODE(sig) ((sig) << 8 | 0x7f) | |
| #define __W_CONTINUED 0xffff | |
| #define __WCOREFLAG 0x80 | |
| #ifdef __USE_MISC | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <endian.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 64 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 | |
| # 1 "/usr/include/endian.h" 1 3 4 | |
| /* Copyright (C) 1992-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _ENDIAN_H | |
| #define _ENDIAN_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 21 "/usr/include/endian.h" 3 4 | |
| # 22 "/usr/include/endian.h" 3 4 | |
| /* Definitions for byte order, according to significance of bytes, | |
| from low addresses to high addresses. The value is what you get by | |
| putting '4' in the most significant byte, '3' in the second most | |
| significant byte, '2' in the second least significant byte, and '1' | |
| in the least significant byte, and then writing down one digit for | |
| each byte, starting with the byte at the lowest address at the left, | |
| and proceeding to the byte with the highest address at the right. */ | |
| #define __LITTLE_ENDIAN 1234 | |
| #define __BIG_ENDIAN 4321 | |
| #define __PDP_ENDIAN 3412 | |
| /* This file defines `__BYTE_ORDER' for the particular machine. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/endian.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 36 "/usr/include/endian.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/endian.h" 1 3 4 | |
| /* i386/x86_64 are little-endian. */ | |
| #ifndef _ENDIAN_H | |
| # error "Never use <bits/endian.h> directly; include <endian.h> instead." | |
| #endif | |
| # 6 "/usr/include/x86_64-linux-gnu/bits/endian.h" 3 4 | |
| #define __BYTE_ORDER __LITTLE_ENDIAN | |
| # 37 "/usr/include/endian.h" 2 3 4 | |
| /* Some machines may need to use a different endianness for floating point | |
| values. */ | |
| #ifndef __FLOAT_WORD_ORDER | |
| # define __FLOAT_WORD_ORDER __BYTE_ORDER | |
| #endif | |
| # 43 "/usr/include/endian.h" 3 4 | |
| #ifdef __USE_MISC | |
| # define LITTLE_ENDIAN __LITTLE_ENDIAN | |
| # define BIG_ENDIAN __BIG_ENDIAN | |
| # define PDP_ENDIAN __PDP_ENDIAN | |
| # define BYTE_ORDER __BYTE_ORDER | |
| #endif | |
| # 50 "/usr/include/endian.h" 3 4 | |
| #if __BYTE_ORDER == __LITTLE_ENDIAN | |
| # define __LONG_LONG_PAIR(HI, LO) LO, HI | |
| #elif __BYTE_ORDER == __BIG_ENDIAN | |
| # 54 "/usr/include/endian.h" 3 4 | |
| # define __LONG_LONG_PAIR(HI, LO) HI, LO | |
| #endif | |
| # 56 "/usr/include/endian.h" 3 4 | |
| #if defined __USE_MISC && !defined __ASSEMBLER__ | |
| /* Conversion interfaces. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/byteswap.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 60 "/usr/include/endian.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 1 3 4 | |
| /* Macros to swap the order of bytes in integer values. | |
| Copyright (C) 1997-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H | |
| # error "Never use <bits/byteswap.h> directly; include <byteswap.h> instead." | |
| #endif | |
| # 22 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| #ifndef _BITS_BYTESWAP_H | |
| #define _BITS_BYTESWAP_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 26 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # 27 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/types.h" 1 3 4 | |
| /* bits/types.h -- definitions of __*_t types underlying *_t types. | |
| Copyright (C) 2002-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * Never include this file directly; use <sys/types.h> instead. | |
| */ | |
| #ifndef _BITS_TYPES_H | |
| #define _BITS_TYPES_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 26 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| # 27 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/wordsize.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 | |
| /* Determine the wordsize from the preprocessor defines. */ | |
| #if defined __x86_64__ && !defined __ILP32__ | |
| # define __WORDSIZE 64 | |
| #else | |
| # 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # define __WORDSIZE 32 | |
| #endif | |
| # 8 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| #ifdef __x86_64__ | |
| # define __WORDSIZE_TIME64_COMPAT32 1 | |
| /* Both x86-64 and x32 use the 64-bit system call interface. */ | |
| # define __SYSCALL_WORDSIZE 64 | |
| #endif | |
| # 14 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4 | |
| /* Convenience types. */ | |
| typedef unsigned char __u_char; | |
| typedef unsigned short int __u_short; | |
| typedef unsigned int __u_int; | |
| typedef unsigned long int __u_long; | |
| /* Fixed-size types, underlying types depend on word size and compiler. */ | |
| typedef signed char __int8_t; | |
| typedef unsigned char __uint8_t; | |
| typedef signed short int __int16_t; | |
| typedef unsigned short int __uint16_t; | |
| typedef signed int __int32_t; | |
| typedef unsigned int __uint32_t; | |
| #if __WORDSIZE == 64 | |
| typedef signed long int __int64_t; | |
| typedef unsigned long int __uint64_t; | |
| #else | |
| # 46 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| __extension__ typedef signed long long int __int64_t; | |
| __extension__ typedef unsigned long long int __uint64_t; | |
| #endif | |
| # 49 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| /* quad_t is also 64 bits. */ | |
| #if __WORDSIZE == 64 | |
| typedef long int __quad_t; | |
| typedef unsigned long int __u_quad_t; | |
| #else | |
| # 55 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| __extension__ typedef long long int __quad_t; | |
| __extension__ typedef unsigned long long int __u_quad_t; | |
| #endif | |
| # 58 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| /* The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE | |
| macros for each of the OS types we define below. The definitions | |
| of those macros must use the following macros for underlying types. | |
| We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned | |
| variants of each of the following integer types on this machine. | |
| 16 -- "natural" 16-bit type (always short) | |
| 32 -- "natural" 32-bit type (always int) | |
| 64 -- "natural" 64-bit type (long or long long) | |
| LONG32 -- 32-bit type, traditionally long | |
| QUAD -- 64-bit type, always long long | |
| WORD -- natural type of __WORDSIZE bits (int or long) | |
| LONGWORD -- type of __WORDSIZE bits, traditionally long | |
| We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the | |
| conventional uses of `long' or `long long' type modifiers match the | |
| types we define, even when a less-adorned type would be the same size. | |
| This matters for (somewhat) portably writing printf/scanf formats for | |
| these types, where using the appropriate l or ll format modifiers can | |
| make the typedefs and the formats match up across all GNU platforms. If | |
| we used `long' when it's 64 bits where `long long' is expected, then the | |
| compiler would warn about the formats not matching the argument types, | |
| and the programmer changing them to shut up the compiler would break the | |
| program's portability. | |
| Here we assume what is presently the case in all the GCC configurations | |
| we support: long long is always 64 bits, long is always word/address size, | |
| and int is always 32 bits. */ | |
| #define __S16_TYPE short int | |
| #define __U16_TYPE unsigned short int | |
| #define __S32_TYPE int | |
| #define __U32_TYPE unsigned int | |
| #define __SLONGWORD_TYPE long int | |
| #define __ULONGWORD_TYPE unsigned long int | |
| #if __WORDSIZE == 32 | |
| # define __SQUAD_TYPE __quad_t | |
| # define __UQUAD_TYPE __u_quad_t | |
| # define __SWORD_TYPE int | |
| # define __UWORD_TYPE unsigned int | |
| # define __SLONG32_TYPE long int | |
| # define __ULONG32_TYPE unsigned long int | |
| # define __S64_TYPE __quad_t | |
| # define __U64_TYPE __u_quad_t | |
| /* We want __extension__ before typedef's that use nonstandard base types | |
| such as `long long' in C89 mode. */ | |
| # define __STD_TYPE __extension__ typedef | |
| #elif __WORDSIZE == 64 | |
| # 108 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| # define __SQUAD_TYPE long int | |
| # define __UQUAD_TYPE unsigned long int | |
| # define __SWORD_TYPE long int | |
| # define __UWORD_TYPE unsigned long int | |
| # define __SLONG32_TYPE int | |
| # define __ULONG32_TYPE unsigned int | |
| # define __S64_TYPE long int | |
| # define __U64_TYPE unsigned long int | |
| /* No need to mark the typedef with __extension__. */ | |
| # define __STD_TYPE typedef | |
| #else | |
| # 119 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| # error | |
| #endif | |
| # 121 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/typesizes.h> /* Defines __*_T_TYPE macros. */ | |
| #endif /* expanded by -frewrite-includes */ | |
| # 121 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 1 3 4 | |
| /* bits/typesizes.h -- underlying types for *_t. Linux/x86-64 version. | |
| Copyright (C) 2012-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _BITS_TYPES_H | |
| # error "Never include <bits/typesizes.h> directly; use <sys/types.h> instead." | |
| #endif | |
| # 22 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4 | |
| #ifndef _BITS_TYPESIZES_H | |
| #define _BITS_TYPESIZES_H 1 | |
| /* See <bits/types.h> for the meaning of these macros. This file exists so | |
| that <bits/types.h> need not vary across different GNU platforms. */ | |
| /* X32 kernel interface is 64-bit. */ | |
| #if defined __x86_64__ && defined __ILP32__ | |
| # define __SYSCALL_SLONG_TYPE __SQUAD_TYPE | |
| # define __SYSCALL_ULONG_TYPE __UQUAD_TYPE | |
| #else | |
| # 34 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4 | |
| # define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE | |
| # define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE | |
| #endif | |
| # 37 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4 | |
| #define __DEV_T_TYPE __UQUAD_TYPE | |
| #define __UID_T_TYPE __U32_TYPE | |
| #define __GID_T_TYPE __U32_TYPE | |
| #define __INO_T_TYPE __SYSCALL_ULONG_TYPE | |
| #define __INO64_T_TYPE __UQUAD_TYPE | |
| #define __MODE_T_TYPE __U32_TYPE | |
| #ifdef __x86_64__ | |
| # define __NLINK_T_TYPE __SYSCALL_ULONG_TYPE | |
| # define __FSWORD_T_TYPE __SYSCALL_SLONG_TYPE | |
| #else | |
| # 48 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4 | |
| # define __NLINK_T_TYPE __UWORD_TYPE | |
| # define __FSWORD_T_TYPE __SWORD_TYPE | |
| #endif | |
| # 51 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4 | |
| #define __OFF_T_TYPE __SYSCALL_SLONG_TYPE | |
| #define __OFF64_T_TYPE __SQUAD_TYPE | |
| #define __PID_T_TYPE __S32_TYPE | |
| #define __RLIM_T_TYPE __SYSCALL_ULONG_TYPE | |
| #define __RLIM64_T_TYPE __UQUAD_TYPE | |
| #define __BLKCNT_T_TYPE __SYSCALL_SLONG_TYPE | |
| #define __BLKCNT64_T_TYPE __SQUAD_TYPE | |
| #define __FSBLKCNT_T_TYPE __SYSCALL_ULONG_TYPE | |
| #define __FSBLKCNT64_T_TYPE __UQUAD_TYPE | |
| #define __FSFILCNT_T_TYPE __SYSCALL_ULONG_TYPE | |
| #define __FSFILCNT64_T_TYPE __UQUAD_TYPE | |
| #define __ID_T_TYPE __U32_TYPE | |
| #define __CLOCK_T_TYPE __SYSCALL_SLONG_TYPE | |
| #define __TIME_T_TYPE __SYSCALL_SLONG_TYPE | |
| #define __USECONDS_T_TYPE __U32_TYPE | |
| #define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE | |
| #define __DADDR_T_TYPE __S32_TYPE | |
| #define __KEY_T_TYPE __S32_TYPE | |
| #define __CLOCKID_T_TYPE __S32_TYPE | |
| #define __TIMER_T_TYPE void * | |
| #define __BLKSIZE_T_TYPE __SYSCALL_SLONG_TYPE | |
| #define __FSID_T_TYPE struct { int __val[2]; } | |
| #define __SSIZE_T_TYPE __SWORD_TYPE | |
| #define __CPU_MASK_TYPE __SYSCALL_ULONG_TYPE | |
| #ifdef __x86_64__ | |
| /* Tell the libc code that off_t and off64_t are actually the same type | |
| for all ABI purposes, even if possibly expressed as different base types | |
| for C type-checking purposes. */ | |
| # define __OFF_T_MATCHES_OFF64_T 1 | |
| /* Same for ino_t and ino64_t. */ | |
| # define __INO_T_MATCHES_INO64_T 1 | |
| #endif | |
| # 85 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4 | |
| /* Number of descriptors that can fit in an `fd_set'. */ | |
| #define __FD_SETSIZE 1024 | |
| #endif /* bits/typesizes.h */ | |
| # 91 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4 | |
| # 122 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4 | |
| __STD_TYPE __DEV_T_TYPE __dev_t; /* Type of device numbers. */ | |
| __STD_TYPE __UID_T_TYPE __uid_t; /* Type of user identifications. */ | |
| __STD_TYPE __GID_T_TYPE __gid_t; /* Type of group identifications. */ | |
| __STD_TYPE __INO_T_TYPE __ino_t; /* Type of file serial numbers. */ | |
| __STD_TYPE __INO64_T_TYPE __ino64_t; /* Type of file serial numbers (LFS).*/ | |
| __STD_TYPE __MODE_T_TYPE __mode_t; /* Type of file attribute bitmasks. */ | |
| __STD_TYPE __NLINK_T_TYPE __nlink_t; /* Type of file link counts. */ | |
| __STD_TYPE __OFF_T_TYPE __off_t; /* Type of file sizes and offsets. */ | |
| __STD_TYPE __OFF64_T_TYPE __off64_t; /* Type of file sizes and offsets (LFS). */ | |
| __STD_TYPE __PID_T_TYPE __pid_t; /* Type of process identifications. */ | |
| __STD_TYPE __FSID_T_TYPE __fsid_t; /* Type of file system IDs. */ | |
| __STD_TYPE __CLOCK_T_TYPE __clock_t; /* Type of CPU usage counts. */ | |
| __STD_TYPE __RLIM_T_TYPE __rlim_t; /* Type for resource measurement. */ | |
| __STD_TYPE __RLIM64_T_TYPE __rlim64_t; /* Type for resource measurement (LFS). */ | |
| __STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */ | |
| __STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */ | |
| __STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */ | |
| __STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */ | |
| __STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */ | |
| __STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */ | |
| /* Clock ID used in clock and timer functions. */ | |
| __STD_TYPE __CLOCKID_T_TYPE __clockid_t; | |
| /* Timer ID returned by `timer_create'. */ | |
| __STD_TYPE __TIMER_T_TYPE __timer_t; | |
| /* Type to represent block size. */ | |
| __STD_TYPE __BLKSIZE_T_TYPE __blksize_t; | |
| /* Types from the Large File Support interface. */ | |
| /* Type to count number of disk blocks. */ | |
| __STD_TYPE __BLKCNT_T_TYPE __blkcnt_t; | |
| __STD_TYPE __BLKCNT64_T_TYPE __blkcnt64_t; | |
| /* Type to count file system blocks. */ | |
| __STD_TYPE __FSBLKCNT_T_TYPE __fsblkcnt_t; | |
| __STD_TYPE __FSBLKCNT64_T_TYPE __fsblkcnt64_t; | |
| /* Type to count file system nodes. */ | |
| __STD_TYPE __FSFILCNT_T_TYPE __fsfilcnt_t; | |
| __STD_TYPE __FSFILCNT64_T_TYPE __fsfilcnt64_t; | |
| /* Type of miscellaneous file system fields. */ | |
| __STD_TYPE __FSWORD_T_TYPE __fsword_t; | |
| __STD_TYPE __SSIZE_T_TYPE __ssize_t; /* Type of a byte count, or error. */ | |
| /* Signed long type used in system calls. */ | |
| __STD_TYPE __SYSCALL_SLONG_TYPE __syscall_slong_t; | |
| /* Unsigned long type used in system calls. */ | |
| __STD_TYPE __SYSCALL_ULONG_TYPE __syscall_ulong_t; | |
| /* These few don't really vary by system, they always correspond | |
| to one of the other defined types. */ | |
| typedef __off64_t __loff_t; /* Type of file sizes and offsets (LFS). */ | |
| typedef __quad_t *__qaddr_t; | |
| typedef char *__caddr_t; | |
| /* Duplicates info from stdint.h but this is used in unistd.h. */ | |
| __STD_TYPE __SWORD_TYPE __intptr_t; | |
| /* Duplicate info from sys/socket.h. */ | |
| __STD_TYPE __U32_TYPE __socklen_t; | |
| #undef __STD_TYPE | |
| #endif /* bits/types.h */ | |
| # 195 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4 | |
| # 28 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/wordsize.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 28 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 | |
| /* Determine the wordsize from the preprocessor defines. */ | |
| #if defined __x86_64__ && !defined __ILP32__ | |
| # define __WORDSIZE 64 | |
| #else | |
| # 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # define __WORDSIZE 32 | |
| #endif | |
| # 8 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| #ifdef __x86_64__ | |
| # define __WORDSIZE_TIME64_COMPAT32 1 | |
| /* Both x86-64 and x32 use the 64-bit system call interface. */ | |
| # define __SYSCALL_WORDSIZE 64 | |
| #endif | |
| # 14 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # 29 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3 4 | |
| /* Swap bytes in 16 bit value. */ | |
| #define __bswap_constant_16(x) \ | |
| ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8))) | |
| /* Get __bswap_16. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/byteswap-16.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 35 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h" 1 3 4 | |
| /* Macros to swap the order of bytes in 16-bit integer values. | |
| Copyright (C) 2012-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _BITS_BYTESWAP_H | |
| # error "Never use <bits/byteswap-16.h> directly; include <byteswap.h> instead." | |
| #endif | |
| # 22 "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h" 3 4 | |
| #ifdef __GNUC__ | |
| # if __GNUC__ >= 2 | |
| # define __bswap_16(x) \ | |
| (__extension__ \ | |
| ({ unsigned short int __v, __x = (unsigned short int) (x); \ | |
| if (__builtin_constant_p (__x)) \ | |
| __v = __bswap_constant_16 (__x); \ | |
| else \ | |
| __asm__ ("rorw $8, %w0" \ | |
| : "=r" (__v) \ | |
| : "0" (__x) \ | |
| : "cc"); \ | |
| __v; })) | |
| # else | |
| # 37 "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h" 3 4 | |
| /* This is better than nothing. */ | |
| # define __bswap_16(x) \ | |
| (__extension__ \ | |
| ({ unsigned short int __x = (unsigned short int) (x); \ | |
| __bswap_constant_16 (__x); })) | |
| # endif | |
| # 43 "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h" 3 4 | |
| #else | |
| # 44 "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h" 3 4 | |
| static __inline unsigned short int | |
| __bswap_16 (unsigned short int __bsx) | |
| { | |
| return __bswap_constant_16 (__bsx); | |
| } | |
| #endif | |
| # 50 "/usr/include/x86_64-linux-gnu/bits/byteswap-16.h" 3 4 | |
| # 36 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 2 3 4 | |
| /* Swap bytes in 32 bit value. */ | |
| #define __bswap_constant_32(x) \ | |
| ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >> 8) | \ | |
| (((x) & 0x0000ff00) << 8) | (((x) & 0x000000ff) << 24)) | |
| #ifdef __GNUC__ | |
| # if __GNUC_PREREQ (4, 3) | |
| static __inline unsigned int | |
| __bswap_32 (unsigned int __bsx) | |
| { | |
| return __builtin_bswap32 (__bsx); | |
| } | |
| # elif __GNUC__ >= 2 | |
| # 50 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # if __WORDSIZE == 64 || (defined __i486__ || defined __pentium__ \ | |
| || defined __pentiumpro__ || defined __pentium4__ \ | |
| || defined __k8__ || defined __athlon__ \ | |
| || defined __k6__ || defined __nocona__ \ | |
| || defined __core2__ || defined __geode__ \ | |
| || defined __amdfam10__) | |
| /* To swap the bytes in a word the i486 processors and up provide the | |
| `bswap' opcode. On i386 we have to use three instructions. */ | |
| # define __bswap_32(x) \ | |
| (__extension__ \ | |
| ({ unsigned int __v, __x = (x); \ | |
| if (__builtin_constant_p (__x)) \ | |
| __v = __bswap_constant_32 (__x); \ | |
| else \ | |
| __asm__ ("bswap %0" : "=r" (__v) : "0" (__x)); \ | |
| __v; })) | |
| # else | |
| # 67 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # define __bswap_32(x) \ | |
| (__extension__ \ | |
| ({ unsigned int __v, __x = (x); \ | |
| if (__builtin_constant_p (__x)) \ | |
| __v = __bswap_constant_32 (__x); \ | |
| else \ | |
| __asm__ ("rorw $8, %w0;" \ | |
| "rorl $16, %0;" \ | |
| "rorw $8, %w0" \ | |
| : "=r" (__v) \ | |
| : "0" (__x) \ | |
| : "cc"); \ | |
| __v; })) | |
| # endif | |
| # 81 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # else | |
| # 82 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # define __bswap_32(x) \ | |
| (__extension__ \ | |
| ({ unsigned int __x = (x); __bswap_constant_32 (__x); })) | |
| # endif | |
| # 86 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| #else | |
| # 87 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| static __inline unsigned int | |
| __bswap_32 (unsigned int __bsx) | |
| { | |
| return __bswap_constant_32 (__bsx); | |
| } | |
| #endif | |
| # 93 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| #if __GNUC_PREREQ (2, 0) | |
| /* Swap bytes in 64 bit value. */ | |
| # define __bswap_constant_64(x) \ | |
| (__extension__ ((((x) & 0xff00000000000000ull) >> 56) \ | |
| | (((x) & 0x00ff000000000000ull) >> 40) \ | |
| | (((x) & 0x0000ff0000000000ull) >> 24) \ | |
| | (((x) & 0x000000ff00000000ull) >> 8) \ | |
| | (((x) & 0x00000000ff000000ull) << 8) \ | |
| | (((x) & 0x0000000000ff0000ull) << 24) \ | |
| | (((x) & 0x000000000000ff00ull) << 40) \ | |
| | (((x) & 0x00000000000000ffull) << 56))) | |
| # if __GNUC_PREREQ (4, 3) | |
| static __inline __uint64_t | |
| __bswap_64 (__uint64_t __bsx) | |
| { | |
| return __builtin_bswap64 (__bsx); | |
| } | |
| # elif __WORDSIZE == 64 | |
| # 114 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # define __bswap_64(x) \ | |
| (__extension__ \ | |
| ({ __uint64_t __v, __x = (x); \ | |
| if (__builtin_constant_p (__x)) \ | |
| __v = __bswap_constant_64 (__x); \ | |
| else \ | |
| __asm__ ("bswap %q0" : "=r" (__v) : "0" (__x)); \ | |
| __v; })) | |
| # else | |
| # 123 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # define __bswap_64(x) \ | |
| (__extension__ \ | |
| ({ union { __extension__ __uint64_t __ll; \ | |
| unsigned int __l[2]; } __w, __r; \ | |
| if (__builtin_constant_p (x)) \ | |
| __r.__ll = __bswap_constant_64 (x); \ | |
| else \ | |
| { \ | |
| __w.__ll = (x); \ | |
| __r.__l[0] = __bswap_32 (__w.__l[1]); \ | |
| __r.__l[1] = __bswap_32 (__w.__l[0]); \ | |
| } \ | |
| __r.__ll; })) | |
| # endif | |
| # 137 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| #else | |
| # 138 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # define __bswap_constant_64(x) \ | |
| ((((x) & 0xff00000000000000ull) >> 56) \ | |
| | (((x) & 0x00ff000000000000ull) >> 40) \ | |
| | (((x) & 0x0000ff0000000000ull) >> 24) \ | |
| | (((x) & 0x000000ff00000000ull) >> 8) \ | |
| | (((x) & 0x00000000ff000000ull) << 8) \ | |
| | (((x) & 0x0000000000ff0000ull) << 24) \ | |
| | (((x) & 0x000000000000ff00ull) << 40) \ | |
| | (((x) & 0x00000000000000ffull) << 56)) | |
| static __inline __uint64_t | |
| __bswap_64 (__uint64_t __bsx) | |
| { | |
| return __bswap_constant_64 (__bsx); | |
| } | |
| #endif | |
| # 154 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| #endif /* _BITS_BYTESWAP_H */ | |
| # 156 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 3 4 | |
| # 61 "/usr/include/endian.h" 2 3 4 | |
| # if __BYTE_ORDER == __LITTLE_ENDIAN | |
| # define htobe16(x) __bswap_16 (x) | |
| # define htole16(x) (x) | |
| # define be16toh(x) __bswap_16 (x) | |
| # define le16toh(x) (x) | |
| # define htobe32(x) __bswap_32 (x) | |
| # define htole32(x) (x) | |
| # define be32toh(x) __bswap_32 (x) | |
| # define le32toh(x) (x) | |
| # define htobe64(x) __bswap_64 (x) | |
| # define htole64(x) (x) | |
| # define be64toh(x) __bswap_64 (x) | |
| # define le64toh(x) (x) | |
| # else | |
| # 79 "/usr/include/endian.h" 3 4 | |
| # define htobe16(x) (x) | |
| # define htole16(x) __bswap_16 (x) | |
| # define be16toh(x) (x) | |
| # define le16toh(x) __bswap_16 (x) | |
| # define htobe32(x) (x) | |
| # define htole32(x) __bswap_32 (x) | |
| # define be32toh(x) (x) | |
| # define le32toh(x) __bswap_32 (x) | |
| # define htobe64(x) (x) | |
| # define htole64(x) __bswap_64 (x) | |
| # define be64toh(x) (x) | |
| # define le64toh(x) __bswap_64 (x) | |
| # endif | |
| # 94 "/usr/include/endian.h" 3 4 | |
| #endif | |
| # 95 "/usr/include/endian.h" 3 4 | |
| #endif /* endian.h */ | |
| # 97 "/usr/include/endian.h" 3 4 | |
| # 65 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 2 3 4 | |
| union wait | |
| { | |
| int w_status; | |
| struct | |
| { | |
| # if __BYTE_ORDER == __LITTLE_ENDIAN | |
| unsigned int __w_termsig:7; /* Terminating signal. */ | |
| unsigned int __w_coredump:1; /* Set if dumped core. */ | |
| unsigned int __w_retcode:8; /* Return code if exited normally. */ | |
| unsigned int:16; | |
| # endif /* Little endian. */ | |
| # 77 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 | |
| # if __BYTE_ORDER == __BIG_ENDIAN | |
| unsigned int:16; | |
| unsigned int __w_retcode:8; | |
| unsigned int __w_coredump:1; | |
| unsigned int __w_termsig:7; | |
| # endif /* Big endian. */ | |
| # 83 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 | |
| } __wait_terminated; | |
| struct | |
| { | |
| # if __BYTE_ORDER == __LITTLE_ENDIAN | |
| unsigned int __w_stopval:8; /* W_STOPPED if stopped. */ | |
| unsigned int __w_stopsig:8; /* Stopping signal. */ | |
| unsigned int:16; | |
| # endif /* Little endian. */ | |
| # 91 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 | |
| # if __BYTE_ORDER == __BIG_ENDIAN | |
| unsigned int:16; | |
| unsigned int __w_stopsig:8; /* Stopping signal. */ | |
| unsigned int __w_stopval:8; /* W_STOPPED if stopped. */ | |
| # endif /* Big endian. */ | |
| # 96 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 | |
| } __wait_stopped; | |
| }; | |
| # define w_termsig __wait_terminated.__w_termsig | |
| # define w_coredump __wait_terminated.__w_coredump | |
| # define w_retcode __wait_terminated.__w_retcode | |
| # define w_stopsig __wait_stopped.__w_stopsig | |
| # define w_stopval __wait_stopped.__w_stopval | |
| #endif /* Use misc. */ | |
| # 106 "/usr/include/x86_64-linux-gnu/bits/waitstatus.h" 3 4 | |
| # 43 "/usr/include/stdlib.h" 2 3 4 | |
| # ifdef __USE_MISC | |
| /* Lots of hair to allow traditional BSD use of `union wait' | |
| as well as POSIX.1 use of `int' for the status word. */ | |
| # if defined __GNUC__ && !defined __cplusplus | |
| # define __WAIT_INT(status) \ | |
| (__extension__ (((union { __typeof(status) __in; int __i; }) \ | |
| { .__in = (status) }).__i)) | |
| # else | |
| # 54 "/usr/include/stdlib.h" 3 4 | |
| # define __WAIT_INT(status) (*(int *) &(status)) | |
| # endif | |
| # 56 "/usr/include/stdlib.h" 3 4 | |
| /* This is the type of the argument to `wait'. The funky union | |
| causes redeclarations with either `int *' or `union wait *' to be | |
| allowed without complaint. __WAIT_STATUS_DEFN is the type used in | |
| the actual function definitions. */ | |
| # if !defined __GNUC__ || __GNUC__ < 2 || defined __cplusplus | |
| # define __WAIT_STATUS void * | |
| # define __WAIT_STATUS_DEFN void * | |
| # else | |
| # 66 "/usr/include/stdlib.h" 3 4 | |
| /* This works in GCC 2.6.1 and later. */ | |
| typedef union | |
| { | |
| union wait *__uptr; | |
| int *__iptr; | |
| } __WAIT_STATUS __attribute__ ((__transparent_union__)); | |
| # define __WAIT_STATUS_DEFN int * | |
| # endif | |
| # 74 "/usr/include/stdlib.h" 3 4 | |
| # else /* Don't use misc. */ | |
| # 76 "/usr/include/stdlib.h" 3 4 | |
| # define __WAIT_INT(status) (status) | |
| # define __WAIT_STATUS int * | |
| # define __WAIT_STATUS_DEFN int * | |
| # endif /* Use misc. */ | |
| # 82 "/usr/include/stdlib.h" 3 4 | |
| /* Define the macros <sys/wait.h> also would define this way. */ | |
| # define WEXITSTATUS(status) __WEXITSTATUS (__WAIT_INT (status)) | |
| # define WTERMSIG(status) __WTERMSIG (__WAIT_INT (status)) | |
| # define WSTOPSIG(status) __WSTOPSIG (__WAIT_INT (status)) | |
| # define WIFEXITED(status) __WIFEXITED (__WAIT_INT (status)) | |
| # define WIFSIGNALED(status) __WIFSIGNALED (__WAIT_INT (status)) | |
| # define WIFSTOPPED(status) __WIFSTOPPED (__WAIT_INT (status)) | |
| # ifdef __WIFCONTINUED | |
| # define WIFCONTINUED(status) __WIFCONTINUED (__WAIT_INT (status)) | |
| # endif | |
| # 93 "/usr/include/stdlib.h" 3 4 | |
| #endif /* X/Open or XPG7 and <sys/wait.h> not included. */ | |
| # 94 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Returned by `div'. */ | |
| typedef struct | |
| { | |
| int quot; /* Quotient. */ | |
| int rem; /* Remainder. */ | |
| } div_t; | |
| /* Returned by `ldiv'. */ | |
| #ifndef __ldiv_t_defined | |
| typedef struct | |
| { | |
| long int quot; /* Quotient. */ | |
| long int rem; /* Remainder. */ | |
| } ldiv_t; | |
| # define __ldiv_t_defined 1 | |
| #endif | |
| # 112 "/usr/include/stdlib.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #if defined __USE_ISOC99 && !defined __lldiv_t_defined | |
| __BEGIN_NAMESPACE_C99 | |
| /* Returned by `lldiv'. */ | |
| __extension__ typedef struct | |
| { | |
| long long int quot; /* Quotient. */ | |
| long long int rem; /* Remainder. */ | |
| } lldiv_t; | |
| # define __lldiv_t_defined 1 | |
| __END_NAMESPACE_C99 | |
| #endif | |
| # 125 "/usr/include/stdlib.h" 3 4 | |
| /* The largest number rand will return (same as INT_MAX). */ | |
| #define RAND_MAX 2147483647 | |
| /* We define these the same for all machines. | |
| Changes from this to the outside world should be done in `_exit'. */ | |
| #define EXIT_FAILURE 1 /* Failing exit status. */ | |
| #define EXIT_SUCCESS 0 /* Successful exit status. */ | |
| /* Maximum length of a multibyte character in the current locale. */ | |
| #define MB_CUR_MAX (__ctype_get_mb_cur_max ()) | |
| extern size_t __ctype_get_mb_cur_max (void) __THROW __wur; | |
| __BEGIN_NAMESPACE_STD | |
| /* Convert a string to a floating-point number. */ | |
| extern double atof (const char *__nptr) | |
| __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| /* Convert a string to an integer. */ | |
| extern int atoi (const char *__nptr) | |
| __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| /* Convert a string to a long integer. */ | |
| extern long int atol (const char *__nptr) | |
| __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Convert a string to a long long integer. */ | |
| __extension__ extern long long int atoll (const char *__nptr) | |
| __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| __END_NAMESPACE_C99 | |
| #endif | |
| # 161 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Convert a string to a floating-point number. */ | |
| extern double strtod (const char *__restrict __nptr, | |
| char **__restrict __endptr) | |
| __THROW __nonnull ((1)); | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Likewise for `float' and `long double' sizes of floating-point numbers. */ | |
| extern float strtof (const char *__restrict __nptr, | |
| char **__restrict __endptr) __THROW __nonnull ((1)); | |
| extern long double strtold (const char *__restrict __nptr, | |
| char **__restrict __endptr) | |
| __THROW __nonnull ((1)); | |
| __END_NAMESPACE_C99 | |
| #endif | |
| # 180 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Convert a string to a long integer. */ | |
| extern long int strtol (const char *__restrict __nptr, | |
| char **__restrict __endptr, int __base) | |
| __THROW __nonnull ((1)); | |
| /* Convert a string to an unsigned long integer. */ | |
| extern unsigned long int strtoul (const char *__restrict __nptr, | |
| char **__restrict __endptr, int __base) | |
| __THROW __nonnull ((1)); | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_MISC | |
| /* Convert a string to a quadword integer. */ | |
| __extension__ | |
| extern long long int strtoq (const char *__restrict __nptr, | |
| char **__restrict __endptr, int __base) | |
| __THROW __nonnull ((1)); | |
| /* Convert a string to an unsigned quadword integer. */ | |
| __extension__ | |
| extern unsigned long long int strtouq (const char *__restrict __nptr, | |
| char **__restrict __endptr, int __base) | |
| __THROW __nonnull ((1)); | |
| #endif /* Use misc. */ | |
| # 204 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Convert a string to a quadword integer. */ | |
| __extension__ | |
| extern long long int strtoll (const char *__restrict __nptr, | |
| char **__restrict __endptr, int __base) | |
| __THROW __nonnull ((1)); | |
| /* Convert a string to an unsigned quadword integer. */ | |
| __extension__ | |
| extern unsigned long long int strtoull (const char *__restrict __nptr, | |
| char **__restrict __endptr, int __base) | |
| __THROW __nonnull ((1)); | |
| __END_NAMESPACE_C99 | |
| #endif /* ISO C99 or use MISC. */ | |
| # 219 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* The concept of one static locale per category is not very well | |
| thought out. Many applications will need to process its data using | |
| information from several different locales. Another problem is | |
| the implementation of the internationalization handling in the | |
| ISO C++ standard library. To support this another set of | |
| the functions using locale data exist which take an additional | |
| argument. | |
| Attention: even though several *_l interfaces are part of POSIX:2008, | |
| these are not. */ | |
| /* Structure for reentrant locale using functions. This is an | |
| (almost) opaque type for the user level programs. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <xlocale.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 235 "/usr/include/stdlib.h" 3 4 | |
| # 1 "/usr/include/xlocale.h" 1 3 4 | |
| /* Definition of locale datatype. | |
| Copyright (C) 1997-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _XLOCALE_H | |
| #define _XLOCALE_H 1 | |
| /* Structure for reentrant locale using functions. This is an | |
| (almost) opaque type for the user level programs. The file and | |
| this data structure is not standardized. Don't rely on it. It can | |
| go away without warning. */ | |
| typedef struct __locale_struct | |
| { | |
| /* Note: LC_ALL is not a valid index into this array. */ | |
| struct __locale_data *__locales[13]; /* 13 = __LC_LAST. */ | |
| /* To increase the speed of this solution we add some special members. */ | |
| const unsigned short int *__ctype_b; | |
| const int *__ctype_tolower; | |
| const int *__ctype_toupper; | |
| /* Note: LC_ALL is not a valid index into this array. */ | |
| const char *__names[13]; | |
| } *__locale_t; | |
| /* POSIX 2008 makes locale_t official. */ | |
| typedef __locale_t locale_t; | |
| #endif /* xlocale.h */ | |
| # 45 "/usr/include/xlocale.h" 3 4 | |
| # 236 "/usr/include/stdlib.h" 2 3 4 | |
| /* Special versions of the functions above which take the locale to | |
| use as an additional parameter. */ | |
| extern long int strtol_l (const char *__restrict __nptr, | |
| char **__restrict __endptr, int __base, | |
| __locale_t __loc) __THROW __nonnull ((1, 4)); | |
| extern unsigned long int strtoul_l (const char *__restrict __nptr, | |
| char **__restrict __endptr, | |
| int __base, __locale_t __loc) | |
| __THROW __nonnull ((1, 4)); | |
| __extension__ | |
| extern long long int strtoll_l (const char *__restrict __nptr, | |
| char **__restrict __endptr, int __base, | |
| __locale_t __loc) | |
| __THROW __nonnull ((1, 4)); | |
| __extension__ | |
| extern unsigned long long int strtoull_l (const char *__restrict __nptr, | |
| char **__restrict __endptr, | |
| int __base, __locale_t __loc) | |
| __THROW __nonnull ((1, 4)); | |
| extern double strtod_l (const char *__restrict __nptr, | |
| char **__restrict __endptr, __locale_t __loc) | |
| __THROW __nonnull ((1, 3)); | |
| extern float strtof_l (const char *__restrict __nptr, | |
| char **__restrict __endptr, __locale_t __loc) | |
| __THROW __nonnull ((1, 3)); | |
| extern long double strtold_l (const char *__restrict __nptr, | |
| char **__restrict __endptr, | |
| __locale_t __loc) | |
| __THROW __nonnull ((1, 3)); | |
| #endif /* GNU */ | |
| # 273 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_EXTERN_INLINES | |
| __BEGIN_NAMESPACE_STD | |
| __extern_inline int | |
| __NTH (atoi (const char *__nptr)) | |
| { | |
| return (int) strtol (__nptr, (char **) NULL, 10); | |
| } | |
| __extern_inline long int | |
| __NTH (atol (const char *__nptr)) | |
| { | |
| return strtol (__nptr, (char **) NULL, 10); | |
| } | |
| __END_NAMESPACE_STD | |
| # ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| __extension__ __extern_inline long long int | |
| __NTH (atoll (const char *__nptr)) | |
| { | |
| return strtoll (__nptr, (char **) NULL, 10); | |
| } | |
| __END_NAMESPACE_C99 | |
| # endif | |
| # 298 "/usr/include/stdlib.h" 3 4 | |
| #endif /* Optimizing and Inlining. */ | |
| # 299 "/usr/include/stdlib.h" 3 4 | |
| #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED | |
| /* Convert N to base 64 using the digits "./0-9A-Za-z", least-significant | |
| digit first. Returns a pointer to static storage overwritten by the | |
| next call. */ | |
| extern char *l64a (long int __n) __THROW __wur; | |
| /* Read a number from a string S in base 64 as above. */ | |
| extern long int a64l (const char *__s) | |
| __THROW __attribute_pure__ __nonnull ((1)) __wur; | |
| #endif /* Use misc || extended X/Open. */ | |
| # 312 "/usr/include/stdlib.h" 3 4 | |
| #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <sys/types.h> /* we need int32_t... */ | |
| #endif /* expanded by -frewrite-includes */ | |
| # 314 "/usr/include/stdlib.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/sys/types.h" 1 3 4 | |
| /* Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * POSIX Standard: 2.6 Primitive System Data Types <sys/types.h> | |
| */ | |
| #ifndef _SYS_TYPES_H | |
| #define _SYS_TYPES_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 25 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 26 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| __BEGIN_DECLS | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 29 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 30 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifdef __USE_MISC | |
| # ifndef __u_char_defined | |
| typedef __u_char u_char; | |
| typedef __u_short u_short; | |
| typedef __u_int u_int; | |
| typedef __u_long u_long; | |
| typedef __quad_t quad_t; | |
| typedef __u_quad_t u_quad_t; | |
| typedef __fsid_t fsid_t; | |
| # define __u_char_defined | |
| # endif | |
| # 42 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #endif | |
| # 43 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| typedef __loff_t loff_t; | |
| #ifndef __ino_t_defined | |
| # ifndef __USE_FILE_OFFSET64 | |
| typedef __ino_t ino_t; | |
| # else | |
| # 50 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| typedef __ino64_t ino_t; | |
| # endif | |
| # 52 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # define __ino_t_defined | |
| #endif | |
| # 54 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #if defined __USE_LARGEFILE64 && !defined __ino64_t_defined | |
| typedef __ino64_t ino64_t; | |
| # define __ino64_t_defined | |
| #endif | |
| # 58 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifndef __dev_t_defined | |
| typedef __dev_t dev_t; | |
| # define __dev_t_defined | |
| #endif | |
| # 63 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifndef __gid_t_defined | |
| typedef __gid_t gid_t; | |
| # define __gid_t_defined | |
| #endif | |
| # 68 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifndef __mode_t_defined | |
| typedef __mode_t mode_t; | |
| # define __mode_t_defined | |
| #endif | |
| # 73 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifndef __nlink_t_defined | |
| typedef __nlink_t nlink_t; | |
| # define __nlink_t_defined | |
| #endif | |
| # 78 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifndef __uid_t_defined | |
| typedef __uid_t uid_t; | |
| # define __uid_t_defined | |
| #endif | |
| # 83 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifndef __off_t_defined | |
| # ifndef __USE_FILE_OFFSET64 | |
| typedef __off_t off_t; | |
| # else | |
| # 88 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| typedef __off64_t off_t; | |
| # endif | |
| # 90 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # define __off_t_defined | |
| #endif | |
| # 92 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #if defined __USE_LARGEFILE64 && !defined __off64_t_defined | |
| typedef __off64_t off64_t; | |
| # define __off64_t_defined | |
| #endif | |
| # 96 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifndef __pid_t_defined | |
| typedef __pid_t pid_t; | |
| # define __pid_t_defined | |
| #endif | |
| # 101 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #if (defined __USE_XOPEN || defined __USE_XOPEN2K8) \ | |
| && !defined __id_t_defined | |
| typedef __id_t id_t; | |
| # define __id_t_defined | |
| #endif | |
| # 107 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifndef __ssize_t_defined | |
| typedef __ssize_t ssize_t; | |
| # define __ssize_t_defined | |
| #endif | |
| # 112 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifdef __USE_MISC | |
| # ifndef __daddr_t_defined | |
| typedef __daddr_t daddr_t; | |
| typedef __caddr_t caddr_t; | |
| # define __daddr_t_defined | |
| # endif | |
| # 119 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #endif | |
| # 120 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #if (defined __USE_MISC || defined __USE_XOPEN) && !defined __key_t_defined | |
| typedef __key_t key_t; | |
| # define __key_t_defined | |
| #endif | |
| # 125 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #if defined __USE_XOPEN || defined __USE_XOPEN2K8 | |
| # define __need_clock_t | |
| #endif | |
| # 129 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #define __need_time_t | |
| #define __need_timer_t | |
| #define __need_clockid_t | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <time.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 132 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 1 "/usr/include/time.h" 1 3 4 | |
| /* Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * ISO C99 Standard: 7.23 Date and time <time.h> | |
| */ | |
| #ifndef _TIME_H | |
| #if (! defined __need_time_t && !defined __need_clock_t && \ | |
| ! defined __need_timespec) | |
| # define _TIME_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/include/time.h" 3 4 | |
| # 28 "/usr/include/time.h" 3 4 | |
| __BEGIN_DECLS | |
| #endif | |
| # 32 "/usr/include/time.h" 3 4 | |
| #ifdef _TIME_H | |
| /* Get size_t and NULL from <stddef.h>. */ | |
| # define __need_size_t | |
| # define __need_NULL | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 37 "/usr/include/time.h" 3 4 | |
| # 38 "/usr/include/time.h" 3 4 | |
| /* This defines CLOCKS_PER_SEC, which is the number of processor clock | |
| ticks per second. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/time.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 41 "/usr/include/time.h" 3 4 | |
| # 42 "/usr/include/time.h" 3 4 | |
| /* This is the obsolete POSIX.1-1988 name for the same constant. */ | |
| # if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K | |
| # ifndef CLK_TCK | |
| # define CLK_TCK CLOCKS_PER_SEC | |
| # endif | |
| # 48 "/usr/include/time.h" 3 4 | |
| # endif | |
| # 49 "/usr/include/time.h" 3 4 | |
| #endif /* <time.h> included. */ | |
| # 51 "/usr/include/time.h" 3 4 | |
| #if !defined __clock_t_defined && (defined _TIME_H || defined __need_clock_t) | |
| # define __clock_t_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 55 "/usr/include/time.h" 3 4 | |
| # 56 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Returned by `clock'. */ | |
| typedef __clock_t clock_t; | |
| __END_NAMESPACE_STD | |
| #if defined __USE_XOPEN || defined __USE_POSIX | |
| __USING_NAMESPACE_STD(clock_t) | |
| #endif | |
| # 64 "/usr/include/time.h" 3 4 | |
| #endif /* clock_t not defined and <time.h> or need clock_t. */ | |
| # 66 "/usr/include/time.h" 3 4 | |
| #undef __need_clock_t | |
| #if !defined __time_t_defined && (defined _TIME_H || defined __need_time_t) | |
| # define __time_t_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 71 "/usr/include/time.h" 3 4 | |
| # 72 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Returned by `time'. */ | |
| typedef __time_t time_t; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_POSIX | |
| __USING_NAMESPACE_STD(time_t) | |
| #endif | |
| # 80 "/usr/include/time.h" 3 4 | |
| #endif /* time_t not defined and <time.h> or need time_t. */ | |
| # 82 "/usr/include/time.h" 3 4 | |
| #undef __need_time_t | |
| #if !defined __clockid_t_defined && \ | |
| ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_clockid_t) | |
| # define __clockid_t_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 88 "/usr/include/time.h" 3 4 | |
| # 89 "/usr/include/time.h" 3 4 | |
| /* Clock ID used in clock and timer functions. */ | |
| typedef __clockid_t clockid_t; | |
| #endif /* clockid_t not defined and <time.h> or need clockid_t. */ | |
| # 94 "/usr/include/time.h" 3 4 | |
| #undef __clockid_time_t | |
| #if !defined __timer_t_defined && \ | |
| ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t) | |
| # define __timer_t_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 100 "/usr/include/time.h" 3 4 | |
| # 101 "/usr/include/time.h" 3 4 | |
| /* Timer ID returned by `timer_create'. */ | |
| typedef __timer_t timer_t; | |
| #endif /* timer_t not defined and <time.h> or need timer_t. */ | |
| # 106 "/usr/include/time.h" 3 4 | |
| #undef __need_timer_t | |
| #if (!defined __timespec_defined \ | |
| && ((defined _TIME_H \ | |
| && (defined __USE_POSIX199309 \ | |
| || defined __USE_ISOC11)) \ | |
| || defined __need_timespec)) | |
| # define __timespec_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> /* This defines __time_t for us. */ | |
| #endif /* expanded by -frewrite-includes */ | |
| # 116 "/usr/include/time.h" 3 4 | |
| # 117 "/usr/include/time.h" 3 4 | |
| /* POSIX.1b structure for a time value. This is like a `struct timeval' but | |
| has nanoseconds instead of microseconds. */ | |
| struct timespec | |
| { | |
| __time_t tv_sec; /* Seconds. */ | |
| __syscall_slong_t tv_nsec; /* Nanoseconds. */ | |
| }; | |
| #endif /* timespec not defined and <time.h> or need timespec. */ | |
| # 127 "/usr/include/time.h" 3 4 | |
| #undef __need_timespec | |
| #ifdef _TIME_H | |
| __BEGIN_NAMESPACE_STD | |
| /* Used by other time functions. */ | |
| struct tm | |
| { | |
| int tm_sec; /* Seconds. [0-60] (1 leap second) */ | |
| int tm_min; /* Minutes. [0-59] */ | |
| int tm_hour; /* Hours. [0-23] */ | |
| int tm_mday; /* Day. [1-31] */ | |
| int tm_mon; /* Month. [0-11] */ | |
| int tm_year; /* Year - 1900. */ | |
| int tm_wday; /* Day of week. [0-6] */ | |
| int tm_yday; /* Days in year.[0-365] */ | |
| int tm_isdst; /* DST. [-1/0/1]*/ | |
| # ifdef __USE_MISC | |
| long int tm_gmtoff; /* Seconds east of UTC. */ | |
| const char *tm_zone; /* Timezone abbreviation. */ | |
| # else | |
| # 149 "/usr/include/time.h" 3 4 | |
| long int __tm_gmtoff; /* Seconds east of UTC. */ | |
| const char *__tm_zone; /* Timezone abbreviation. */ | |
| # endif | |
| # 152 "/usr/include/time.h" 3 4 | |
| }; | |
| __END_NAMESPACE_STD | |
| #if defined __USE_XOPEN || defined __USE_POSIX | |
| __USING_NAMESPACE_STD(tm) | |
| #endif | |
| # 157 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_POSIX199309 | |
| /* POSIX.1b structure for timer start values and intervals. */ | |
| struct itimerspec | |
| { | |
| struct timespec it_interval; | |
| struct timespec it_value; | |
| }; | |
| /* We can use a simple forward declaration. */ | |
| struct sigevent; | |
| # endif /* POSIX.1b */ | |
| # 171 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_XOPEN2K | |
| # ifndef __pid_t_defined | |
| typedef __pid_t pid_t; | |
| # define __pid_t_defined | |
| # endif | |
| # 177 "/usr/include/time.h" 3 4 | |
| # endif | |
| # 178 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_ISOC11 | |
| /* Time base values for timespec_get. */ | |
| # define TIME_UTC 1 | |
| # endif | |
| # 184 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Time used by the program so far (user time + system time). | |
| The result / CLOCKS_PER_SECOND is program time in seconds. */ | |
| extern clock_t clock (void) __THROW; | |
| /* Return the current time and put it in *TIMER if TIMER is not NULL. */ | |
| extern time_t time (time_t *__timer) __THROW; | |
| /* Return the difference between TIME1 and TIME0. */ | |
| extern double difftime (time_t __time1, time_t __time0) | |
| __THROW __attribute__ ((__const__)); | |
| /* Return the `time_t' representation of TP and normalize TP. */ | |
| extern time_t mktime (struct tm *__tp) __THROW; | |
| /* Format TP into S according to FORMAT. | |
| Write no more than MAXSIZE characters and return the number | |
| of characters written, or 0 if it would exceed MAXSIZE. */ | |
| extern size_t strftime (char *__restrict __s, size_t __maxsize, | |
| const char *__restrict __format, | |
| const struct tm *__restrict __tp) __THROW; | |
| __END_NAMESPACE_STD | |
| # ifdef __USE_XOPEN | |
| /* Parse S according to FORMAT and store binary time information in TP. | |
| The return value is a pointer to the first unparsed character in S. */ | |
| extern char *strptime (const char *__restrict __s, | |
| const char *__restrict __fmt, struct tm *__tp) | |
| __THROW; | |
| # endif | |
| # 217 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_XOPEN2K8 | |
| /* Similar to the two functions above but take the information from | |
| the provided locale and not the global locale. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <xlocale.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 221 "/usr/include/time.h" 3 4 | |
| # 222 "/usr/include/time.h" 3 4 | |
| extern size_t strftime_l (char *__restrict __s, size_t __maxsize, | |
| const char *__restrict __format, | |
| const struct tm *__restrict __tp, | |
| __locale_t __loc) __THROW; | |
| # endif | |
| # 228 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_GNU | |
| extern char *strptime_l (const char *__restrict __s, | |
| const char *__restrict __fmt, struct tm *__tp, | |
| __locale_t __loc) __THROW; | |
| # endif | |
| # 234 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return the `struct tm' representation of *TIMER | |
| in Universal Coordinated Time (aka Greenwich Mean Time). */ | |
| extern struct tm *gmtime (const time_t *__timer) __THROW; | |
| /* Return the `struct tm' representation | |
| of *TIMER in the local timezone. */ | |
| extern struct tm *localtime (const time_t *__timer) __THROW; | |
| __END_NAMESPACE_STD | |
| # ifdef __USE_POSIX | |
| /* Return the `struct tm' representation of *TIMER in UTC, | |
| using *TP to store the result. */ | |
| extern struct tm *gmtime_r (const time_t *__restrict __timer, | |
| struct tm *__restrict __tp) __THROW; | |
| /* Return the `struct tm' representation of *TIMER in local time, | |
| using *TP to store the result. */ | |
| extern struct tm *localtime_r (const time_t *__restrict __timer, | |
| struct tm *__restrict __tp) __THROW; | |
| # endif /* POSIX */ | |
| # 257 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n" | |
| that is the representation of TP in this format. */ | |
| extern char *asctime (const struct tm *__tp) __THROW; | |
| /* Equivalent to `asctime (localtime (timer))'. */ | |
| extern char *ctime (const time_t *__timer) __THROW; | |
| __END_NAMESPACE_STD | |
| # ifdef __USE_POSIX | |
| /* Reentrant versions of the above functions. */ | |
| /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n" | |
| that is the representation of TP in this format. */ | |
| extern char *asctime_r (const struct tm *__restrict __tp, | |
| char *__restrict __buf) __THROW; | |
| /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */ | |
| extern char *ctime_r (const time_t *__restrict __timer, | |
| char *__restrict __buf) __THROW; | |
| # endif /* POSIX */ | |
| # 279 "/usr/include/time.h" 3 4 | |
| /* Defined in localtime.c. */ | |
| extern char *__tzname[2]; /* Current timezone names. */ | |
| extern int __daylight; /* If daylight-saving time is ever in use. */ | |
| extern long int __timezone; /* Seconds west of UTC. */ | |
| # ifdef __USE_POSIX | |
| /* Same as above. */ | |
| extern char *tzname[2]; | |
| /* Set time conversion information from the TZ environment variable. | |
| If TZ is not defined, a locale-dependent default is used. */ | |
| extern void tzset (void) __THROW; | |
| # endif | |
| # 295 "/usr/include/time.h" 3 4 | |
| # if defined __USE_MISC || defined __USE_XOPEN | |
| extern int daylight; | |
| extern long int timezone; | |
| # endif | |
| # 300 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_MISC | |
| /* Set the system time to *WHEN. | |
| This call is restricted to the superuser. */ | |
| extern int stime (const time_t *__when) __THROW; | |
| # endif | |
| # 306 "/usr/include/time.h" 3 4 | |
| /* Nonzero if YEAR is a leap year (every 4 years, | |
| except every 100th isn't, and every 400th is). */ | |
| # define __isleap(year) \ | |
| ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) | |
| # ifdef __USE_MISC | |
| /* Miscellaneous functions many Unices inherited from the public domain | |
| localtime package. These are included only for compatibility. */ | |
| /* Like `mktime', but for TP represents Universal Time, not local time. */ | |
| extern time_t timegm (struct tm *__tp) __THROW; | |
| /* Another name for `mktime'. */ | |
| extern time_t timelocal (struct tm *__tp) __THROW; | |
| /* Return the number of days in YEAR. */ | |
| extern int dysize (int __year) __THROW __attribute__ ((__const__)); | |
| # endif | |
| # 327 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_POSIX199309 | |
| /* Pause execution for a number of nanoseconds. | |
| This function is a cancellation point and therefore not marked with | |
| __THROW. */ | |
| extern int nanosleep (const struct timespec *__requested_time, | |
| struct timespec *__remaining); | |
| /* Get resolution of clock CLOCK_ID. */ | |
| extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW; | |
| /* Get current value of clock CLOCK_ID and store it in TP. */ | |
| extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW; | |
| /* Set clock CLOCK_ID to value TP. */ | |
| extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) | |
| __THROW; | |
| # ifdef __USE_XOPEN2K | |
| /* High-resolution sleep with the specified clock. | |
| This function is a cancellation point and therefore not marked with | |
| __THROW. */ | |
| extern int clock_nanosleep (clockid_t __clock_id, int __flags, | |
| const struct timespec *__req, | |
| struct timespec *__rem); | |
| /* Return clock ID for CPU-time clock. */ | |
| extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW; | |
| # endif | |
| # 360 "/usr/include/time.h" 3 4 | |
| /* Create new per-process timer using CLOCK_ID. */ | |
| extern int timer_create (clockid_t __clock_id, | |
| struct sigevent *__restrict __evp, | |
| timer_t *__restrict __timerid) __THROW; | |
| /* Delete timer TIMERID. */ | |
| extern int timer_delete (timer_t __timerid) __THROW; | |
| /* Set timer TIMERID to VALUE, returning old value in OVALUE. */ | |
| extern int timer_settime (timer_t __timerid, int __flags, | |
| const struct itimerspec *__restrict __value, | |
| struct itimerspec *__restrict __ovalue) __THROW; | |
| /* Get current value of timer TIMERID and store it in VALUE. */ | |
| extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) | |
| __THROW; | |
| /* Get expiration overrun for timer TIMERID. */ | |
| extern int timer_getoverrun (timer_t __timerid) __THROW; | |
| # endif | |
| # 382 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_ISOC11 | |
| /* Set TS to calendar time based in time base BASE. */ | |
| extern int timespec_get (struct timespec *__ts, int __base) | |
| __THROW __nonnull ((1)); | |
| # endif | |
| # 389 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_XOPEN_EXTENDED | |
| /* Set to one of the following values to indicate an error. | |
| 1 the DATEMSK environment variable is null or undefined, | |
| 2 the template file cannot be opened for reading, | |
| 3 failed to get file status information, | |
| 4 the template file is not a regular file, | |
| 5 an error is encountered while reading the template file, | |
| 6 memory allication failed (not enough memory available), | |
| 7 there is no line in the template that matches the input, | |
| 8 invalid input specification Example: February 31 or a time is | |
| specified that can not be represented in a time_t (representing | |
| the time in seconds since 00:00:00 UTC, January 1, 1970) */ | |
| extern int getdate_err; | |
| /* Parse the given string as a date specification and return a value | |
| representing the value. The templates from the file identified by | |
| the environment variable DATEMSK are used. In case of an error | |
| `getdate_err' is set. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern struct tm *getdate (const char *__string); | |
| # endif | |
| # 414 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_GNU | |
| /* Since `getdate' is not reentrant because of the use of `getdate_err' | |
| and the static buffer to return the result in, we provide a thread-safe | |
| variant. The functionality is the same. The result is returned in | |
| the buffer pointed to by RESBUFP and in case of an error the return | |
| value is != 0 with the same values as given above for `getdate_err'. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern int getdate_r (const char *__restrict __string, | |
| struct tm *__restrict __resbufp); | |
| # endif | |
| # 429 "/usr/include/time.h" 3 4 | |
| __END_DECLS | |
| #endif /* <time.h> included. */ | |
| # 433 "/usr/include/time.h" 3 4 | |
| #endif /* <time.h> not already included. */ | |
| # 435 "/usr/include/time.h" 3 4 | |
| # 133 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 | |
| #ifdef __USE_XOPEN | |
| # ifndef __useconds_t_defined | |
| typedef __useconds_t useconds_t; | |
| # define __useconds_t_defined | |
| # endif | |
| # 139 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # ifndef __suseconds_t_defined | |
| typedef __suseconds_t suseconds_t; | |
| # define __suseconds_t_defined | |
| # endif | |
| # 143 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #endif | |
| # 144 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #define __need_size_t | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 146 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 1 "/usr/local/bin/../include/c++/v1/stddef.h" 1 3 4 | |
| // -*- C++ -*- | |
| //===--------------------------- stddef.h ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if defined(__need_ptrdiff_t) || defined(__need_size_t) || \ | |
| defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 16 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 17 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/stddef.h" 1 3 | |
| /*===---- stddef.h - Basic type definitions --------------------------------=== | |
| * | |
| * Copyright (c) 2008 Eli Friedman | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| *===-----------------------------------------------------------------------=== | |
| */ | |
| #if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \ | |
| defined(__need_size_t) || defined(__need_wchar_t) || \ | |
| defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \ | |
| !defined(__need_wchar_t) && !defined(__need_NULL) && \ | |
| !defined(__need_wint_t) | |
| /* Always define miscellaneous pieces when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define __STDDEF_H | |
| #endif | |
| # 37 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define __need_ptrdiff_t | |
| #define __need_size_t | |
| #define __need_wchar_t | |
| #define __need_NULL | |
| #define __need_STDDEF_H_misc | |
| /* __need_wint_t is intentionally not defined here. */ | |
| #endif | |
| # 44 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_ptrdiff_t) | |
| #if !defined(_PTRDIFF_T) || __has_feature(modules) | |
| /* Always define ptrdiff_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _PTRDIFF_T | |
| #endif | |
| # 51 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
| #endif | |
| # 53 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_ptrdiff_t | |
| #endif /* defined(__need_ptrdiff_t) */ | |
| # 55 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_size_t) | |
| #if !defined(_SIZE_T) || __has_feature(modules) | |
| /* Always define size_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _SIZE_T | |
| #endif | |
| # 62 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ size_t; | |
| #endif | |
| # 64 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_size_t | |
| #endif /*defined(__need_size_t) */ | |
| # 66 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| /* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is | |
| * enabled. */ | |
| #if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \ | |
| !defined(_RSIZE_T)) || __has_feature(modules) | |
| /* Always define rsize_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _RSIZE_T | |
| #endif | |
| # 76 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ rsize_t; | |
| #endif | |
| # 78 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 79 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_wchar_t) | |
| #ifndef __cplusplus | |
| /* Always define wchar_t when modules are available. */ | |
| #if !defined(_WCHAR_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WCHAR_T | |
| #if defined(_MSC_EXTENSIONS) | |
| #define _WCHAR_T_DEFINED | |
| #endif | |
| # 89 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 90 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WCHAR_TYPE__ wchar_t; | |
| #endif | |
| # 92 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 93 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wchar_t | |
| #endif /* defined(__need_wchar_t) */ | |
| # 95 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_NULL) | |
| #undef NULL | |
| #ifdef __cplusplus | |
| # if !defined(__MINGW32__) && !defined(_MSC_VER) | |
| # define NULL __null | |
| # else | |
| # 102 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL 0 | |
| # endif | |
| # 104 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #else | |
| # 105 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL ((void*)0) | |
| #endif | |
| # 107 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #ifdef __cplusplus | |
| #if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) | |
| namespace std { typedef decltype(nullptr) nullptr_t; } | |
| using ::std::nullptr_t; | |
| #endif | |
| # 112 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 113 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_NULL | |
| #endif /* defined(__need_NULL) */ | |
| # 115 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| #if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include "__stddef_max_align_t.h" | |
| #endif /* expanded by -frewrite-includes */ | |
| # 118 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 119 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 120 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define offsetof(t, d) __builtin_offsetof(t, d) | |
| #undef __need_STDDEF_H_misc | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 123 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| /* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use | |
| __WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ | |
| #if defined(__need_wint_t) | |
| /* Always define wint_t when modules are available. */ | |
| #if !defined(_WINT_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WINT_T | |
| #endif | |
| # 132 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WINT_TYPE__ wint_t; | |
| #endif | |
| # 134 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wint_t | |
| #endif /* __need_wint_t */ | |
| # 136 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 138 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 19 "/usr/local/bin/../include/c++/v1/stddef.h" 2 3 | |
| #elif !defined(_LIBCPP_STDDEF_H) | |
| # 21 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #define _LIBCPP_STDDEF_H | |
| /* | |
| stddef.h synopsis | |
| Macros: | |
| offsetof(type,member-designator) | |
| NULL | |
| Types: | |
| ptrdiff_t | |
| size_t | |
| max_align_t | |
| nullptr_t | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 40 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 41 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 44 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 45 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 46 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 47 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #ifdef __cplusplus | |
| extern "C++" { | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__nullptr> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 51 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 52 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| using std::nullptr_t; | |
| } | |
| // Re-use the compiler's <stddef.h> max_align_t where possible. | |
| #if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \ | |
| !defined(__DEFINED_max_align_t) | |
| typedef long double max_align_t; | |
| #endif | |
| # 60 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 62 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif // _LIBCPP_STDDEF_H | |
| # 64 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 147 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 | |
| #ifdef __USE_MISC | |
| /* Old compatibility names for C types. */ | |
| typedef unsigned long int ulong; | |
| typedef unsigned short int ushort; | |
| typedef unsigned int uint; | |
| #endif | |
| # 154 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| /* These size-specific names are used by some of the inet code. */ | |
| #if !__GNUC_PREREQ (2, 7) | |
| /* These types are defined by the ISO C99 header <inttypes.h>. */ | |
| # ifndef __int8_t_defined | |
| # define __int8_t_defined | |
| typedef char int8_t; | |
| typedef short int int16_t; | |
| typedef int int32_t; | |
| # if __WORDSIZE == 64 | |
| typedef long int int64_t; | |
| # else | |
| # 168 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| __extension__ typedef long long int int64_t; | |
| # endif | |
| # 170 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # endif | |
| # 171 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| /* But these were defined by ISO C without the first `_'. */ | |
| typedef unsigned char u_int8_t; | |
| typedef unsigned short int u_int16_t; | |
| typedef unsigned int u_int32_t; | |
| # if __WORDSIZE == 64 | |
| typedef unsigned long int u_int64_t; | |
| # else | |
| # 179 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| __extension__ typedef unsigned long long int u_int64_t; | |
| # endif | |
| # 181 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| typedef int register_t; | |
| #else | |
| # 185 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| /* For GCC 2.7 and later, we can use specific type-size attributes. */ | |
| # define __intN_t(N, MODE) \ | |
| typedef int int##N##_t __attribute__ ((__mode__ (MODE))) | |
| # define __u_intN_t(N, MODE) \ | |
| typedef unsigned int u_int##N##_t __attribute__ ((__mode__ (MODE))) | |
| # ifndef __int8_t_defined | |
| # define __int8_t_defined | |
| __intN_t (8, __QI__); | |
| __intN_t (16, __HI__); | |
| __intN_t (32, __SI__); | |
| __intN_t (64, __DI__); | |
| # endif | |
| # 199 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| __u_intN_t (8, __QI__); | |
| __u_intN_t (16, __HI__); | |
| __u_intN_t (32, __SI__); | |
| __u_intN_t (64, __DI__); | |
| typedef int register_t __attribute__ ((__mode__ (__word__))); | |
| /* Some code from BIND tests this macro to see if the types above are | |
| defined. */ | |
| #endif | |
| # 211 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #define __BIT_TYPES_DEFINED__ 1 | |
| #ifdef __USE_MISC | |
| /* In BSD <sys/types.h> is expected to define BYTE_ORDER. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <endian.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 216 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 217 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| /* It also defines `fd_set' and the FD_* macros for `select'. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <sys/select.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 219 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/sys/select.h" 1 3 4 | |
| /* `fd_set' type and related macros, and `select'/`pselect' declarations. | |
| Copyright (C) 1996-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> */ | |
| #ifndef _SYS_SELECT_H | |
| #define _SYS_SELECT_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 24 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| # 25 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| /* Get definition of needed basic types. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| # 28 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| /* Get __FD_* definitions. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/select.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 30 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/select.h" 1 3 4 | |
| /* Copyright (C) 1997-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _SYS_SELECT_H | |
| # error "Never use <bits/select.h> directly; include <sys/select.h> instead." | |
| #endif | |
| # 21 "/usr/include/x86_64-linux-gnu/bits/select.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/wordsize.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 22 "/usr/include/x86_64-linux-gnu/bits/select.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 | |
| /* Determine the wordsize from the preprocessor defines. */ | |
| #if defined __x86_64__ && !defined __ILP32__ | |
| # define __WORDSIZE 64 | |
| #else | |
| # 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # define __WORDSIZE 32 | |
| #endif | |
| # 8 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| #ifdef __x86_64__ | |
| # define __WORDSIZE_TIME64_COMPAT32 1 | |
| /* Both x86-64 and x32 use the 64-bit system call interface. */ | |
| # define __SYSCALL_WORDSIZE 64 | |
| #endif | |
| # 14 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # 23 "/usr/include/x86_64-linux-gnu/bits/select.h" 2 3 4 | |
| #if defined __GNUC__ && __GNUC__ >= 2 | |
| # if __WORDSIZE == 64 | |
| # define __FD_ZERO_STOS "stosq" | |
| # else | |
| # 30 "/usr/include/x86_64-linux-gnu/bits/select.h" 3 4 | |
| # define __FD_ZERO_STOS "stosl" | |
| # endif | |
| # 32 "/usr/include/x86_64-linux-gnu/bits/select.h" 3 4 | |
| # define __FD_ZERO(fdsp) \ | |
| do { \ | |
| int __d0, __d1; \ | |
| __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS \ | |
| : "=c" (__d0), "=D" (__d1) \ | |
| : "a" (0), "0" (sizeof (fd_set) \ | |
| / sizeof (__fd_mask)), \ | |
| "1" (&__FDS_BITS (fdsp)[0]) \ | |
| : "memory"); \ | |
| } while (0) | |
| #else /* ! GNU CC */ | |
| # 45 "/usr/include/x86_64-linux-gnu/bits/select.h" 3 4 | |
| /* We don't use `memset' because this would require a prototype and | |
| the array isn't too big. */ | |
| # define __FD_ZERO(set) \ | |
| do { \ | |
| unsigned int __i; \ | |
| fd_set *__arr = (set); \ | |
| for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \ | |
| __FDS_BITS (__arr)[__i] = 0; \ | |
| } while (0) | |
| #endif /* GNU CC */ | |
| # 57 "/usr/include/x86_64-linux-gnu/bits/select.h" 3 4 | |
| #define __FD_SET(d, set) \ | |
| ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d))) | |
| #define __FD_CLR(d, set) \ | |
| ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d))) | |
| #define __FD_ISSET(d, set) \ | |
| ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0) | |
| # 31 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3 4 | |
| /* Get __sigset_t. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/sigset.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 33 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 1 3 4 | |
| /* __sig_atomic_t, __sigset_t, and related definitions. Linux version. | |
| Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _SIGSET_H_types | |
| # define _SIGSET_H_types 1 | |
| typedef int __sig_atomic_t; | |
| /* A `sigset_t' has a bit for each signal. */ | |
| # define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) | |
| typedef struct | |
| { | |
| unsigned long int __val[_SIGSET_NWORDS]; | |
| } __sigset_t; | |
| #endif | |
| # 33 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3 4 | |
| /* We only want to define these functions if <signal.h> was actually | |
| included; otherwise we were included just to define the types. Since we | |
| are namespace-clean, it wouldn't hurt to define extra macros. But | |
| trouble can be caused by functions being defined (e.g., any global | |
| register vars declared later will cause compilation errors). */ | |
| #if !defined _SIGSET_H_fns && defined _SIGNAL_H | |
| # define _SIGSET_H_fns 1 | |
| # ifndef _EXTERN_INLINE | |
| # define _EXTERN_INLINE __extern_inline | |
| # endif | |
| # 47 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3 4 | |
| /* Return a mask that includes the bit for SIG only. */ | |
| # define __sigmask(sig) \ | |
| (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int)))) | |
| /* Return the word index for SIG. */ | |
| # define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int))) | |
| # if defined __GNUC__ && __GNUC__ >= 2 | |
| # define __sigemptyset(set) \ | |
| (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ | |
| sigset_t *__set = (set); \ | |
| while (--__cnt >= 0) __set->__val[__cnt] = 0; \ | |
| 0; })) | |
| # define __sigfillset(set) \ | |
| (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ | |
| sigset_t *__set = (set); \ | |
| while (--__cnt >= 0) __set->__val[__cnt] = ~0UL; \ | |
| 0; })) | |
| # ifdef __USE_GNU | |
| /* The POSIX does not specify for handling the whole signal set in one | |
| command. This is often wanted and so we define three more functions | |
| here. */ | |
| # define __sigisemptyset(set) \ | |
| (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ | |
| const sigset_t *__set = (set); \ | |
| int __ret = __set->__val[--__cnt]; \ | |
| while (!__ret && --__cnt >= 0) \ | |
| __ret = __set->__val[__cnt]; \ | |
| __ret == 0; })) | |
| # define __sigandset(dest, left, right) \ | |
| (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ | |
| sigset_t *__dest = (dest); \ | |
| const sigset_t *__left = (left); \ | |
| const sigset_t *__right = (right); \ | |
| while (--__cnt >= 0) \ | |
| __dest->__val[__cnt] = (__left->__val[__cnt] \ | |
| & __right->__val[__cnt]); \ | |
| 0; })) | |
| # define __sigorset(dest, left, right) \ | |
| (__extension__ ({ int __cnt = _SIGSET_NWORDS; \ | |
| sigset_t *__dest = (dest); \ | |
| const sigset_t *__left = (left); \ | |
| const sigset_t *__right = (right); \ | |
| while (--__cnt >= 0) \ | |
| __dest->__val[__cnt] = (__left->__val[__cnt] \ | |
| | __right->__val[__cnt]); \ | |
| 0; })) | |
| # endif | |
| # 97 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3 4 | |
| # endif | |
| # 98 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3 4 | |
| /* These functions needn't check for a bogus signal number -- error | |
| checking is done in the non __ versions. */ | |
| extern int __sigismember (const __sigset_t *, int); | |
| extern int __sigaddset (__sigset_t *, int); | |
| extern int __sigdelset (__sigset_t *, int); | |
| # ifdef __USE_EXTERN_INLINES | |
| # define __SIGSETFN(NAME, BODY, CONST) \ | |
| _EXTERN_INLINE int \ | |
| NAME (CONST __sigset_t *__set, int __sig) \ | |
| { \ | |
| unsigned long int __mask = __sigmask (__sig); \ | |
| unsigned long int __word = __sigword (__sig); \ | |
| return BODY; \ | |
| } | |
| __SIGSETFN (__sigismember, (__set->__val[__word] & __mask) ? 1 : 0, const) | |
| __SIGSETFN (__sigaddset, ((__set->__val[__word] |= __mask), 0), ) | |
| __SIGSETFN (__sigdelset, ((__set->__val[__word] &= ~__mask), 0), ) | |
| # undef __SIGSETFN | |
| # endif | |
| # 122 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3 4 | |
| #endif /* ! _SIGSET_H_fns. */ | |
| # 125 "/usr/include/x86_64-linux-gnu/bits/sigset.h" 3 4 | |
| # 34 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3 4 | |
| #ifndef __sigset_t_defined | |
| # define __sigset_t_defined | |
| typedef __sigset_t sigset_t; | |
| #endif | |
| # 39 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| /* Get definition of timer specification structures. */ | |
| #define __need_time_t | |
| #define __need_timespec | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <time.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 43 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| # 1 "/usr/include/time.h" 1 3 4 | |
| /* Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * ISO C99 Standard: 7.23 Date and time <time.h> | |
| */ | |
| #ifndef _TIME_H | |
| #if (! defined __need_time_t && !defined __need_clock_t && \ | |
| ! defined __need_timespec) | |
| # define _TIME_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/include/time.h" 3 4 | |
| # 28 "/usr/include/time.h" 3 4 | |
| __BEGIN_DECLS | |
| #endif | |
| # 32 "/usr/include/time.h" 3 4 | |
| #ifdef _TIME_H | |
| /* Get size_t and NULL from <stddef.h>. */ | |
| # define __need_size_t | |
| # define __need_NULL | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 37 "/usr/include/time.h" 3 4 | |
| # 38 "/usr/include/time.h" 3 4 | |
| /* This defines CLOCKS_PER_SEC, which is the number of processor clock | |
| ticks per second. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/time.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 41 "/usr/include/time.h" 3 4 | |
| # 42 "/usr/include/time.h" 3 4 | |
| /* This is the obsolete POSIX.1-1988 name for the same constant. */ | |
| # if !defined __STRICT_ANSI__ && !defined __USE_XOPEN2K | |
| # ifndef CLK_TCK | |
| # define CLK_TCK CLOCKS_PER_SEC | |
| # endif | |
| # 48 "/usr/include/time.h" 3 4 | |
| # endif | |
| # 49 "/usr/include/time.h" 3 4 | |
| #endif /* <time.h> included. */ | |
| # 51 "/usr/include/time.h" 3 4 | |
| #if !defined __clock_t_defined && (defined _TIME_H || defined __need_clock_t) | |
| # define __clock_t_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 55 "/usr/include/time.h" 3 4 | |
| # 56 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Returned by `clock'. */ | |
| typedef __clock_t clock_t; | |
| __END_NAMESPACE_STD | |
| #if defined __USE_XOPEN || defined __USE_POSIX | |
| __USING_NAMESPACE_STD(clock_t) | |
| #endif | |
| # 64 "/usr/include/time.h" 3 4 | |
| #endif /* clock_t not defined and <time.h> or need clock_t. */ | |
| # 66 "/usr/include/time.h" 3 4 | |
| #undef __need_clock_t | |
| #if !defined __time_t_defined && (defined _TIME_H || defined __need_time_t) | |
| # define __time_t_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 71 "/usr/include/time.h" 3 4 | |
| # 72 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Returned by `time'. */ | |
| typedef __time_t time_t; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_POSIX | |
| __USING_NAMESPACE_STD(time_t) | |
| #endif | |
| # 80 "/usr/include/time.h" 3 4 | |
| #endif /* time_t not defined and <time.h> or need time_t. */ | |
| # 82 "/usr/include/time.h" 3 4 | |
| #undef __need_time_t | |
| #if !defined __clockid_t_defined && \ | |
| ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_clockid_t) | |
| # define __clockid_t_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 88 "/usr/include/time.h" 3 4 | |
| # 89 "/usr/include/time.h" 3 4 | |
| /* Clock ID used in clock and timer functions. */ | |
| typedef __clockid_t clockid_t; | |
| #endif /* clockid_t not defined and <time.h> or need clockid_t. */ | |
| # 94 "/usr/include/time.h" 3 4 | |
| #undef __clockid_time_t | |
| #if !defined __timer_t_defined && \ | |
| ((defined _TIME_H && defined __USE_POSIX199309) || defined __need_timer_t) | |
| # define __timer_t_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 100 "/usr/include/time.h" 3 4 | |
| # 101 "/usr/include/time.h" 3 4 | |
| /* Timer ID returned by `timer_create'. */ | |
| typedef __timer_t timer_t; | |
| #endif /* timer_t not defined and <time.h> or need timer_t. */ | |
| # 106 "/usr/include/time.h" 3 4 | |
| #undef __need_timer_t | |
| #if (!defined __timespec_defined \ | |
| && ((defined _TIME_H \ | |
| && (defined __USE_POSIX199309 \ | |
| || defined __USE_ISOC11)) \ | |
| || defined __need_timespec)) | |
| # define __timespec_defined 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> /* This defines __time_t for us. */ | |
| #endif /* expanded by -frewrite-includes */ | |
| # 116 "/usr/include/time.h" 3 4 | |
| # 117 "/usr/include/time.h" 3 4 | |
| /* POSIX.1b structure for a time value. This is like a `struct timeval' but | |
| has nanoseconds instead of microseconds. */ | |
| struct timespec | |
| { | |
| __time_t tv_sec; /* Seconds. */ | |
| __syscall_slong_t tv_nsec; /* Nanoseconds. */ | |
| }; | |
| #endif /* timespec not defined and <time.h> or need timespec. */ | |
| # 127 "/usr/include/time.h" 3 4 | |
| #undef __need_timespec | |
| #ifdef _TIME_H | |
| __BEGIN_NAMESPACE_STD | |
| /* Used by other time functions. */ | |
| struct tm | |
| { | |
| int tm_sec; /* Seconds. [0-60] (1 leap second) */ | |
| int tm_min; /* Minutes. [0-59] */ | |
| int tm_hour; /* Hours. [0-23] */ | |
| int tm_mday; /* Day. [1-31] */ | |
| int tm_mon; /* Month. [0-11] */ | |
| int tm_year; /* Year - 1900. */ | |
| int tm_wday; /* Day of week. [0-6] */ | |
| int tm_yday; /* Days in year.[0-365] */ | |
| int tm_isdst; /* DST. [-1/0/1]*/ | |
| # ifdef __USE_MISC | |
| long int tm_gmtoff; /* Seconds east of UTC. */ | |
| const char *tm_zone; /* Timezone abbreviation. */ | |
| # else | |
| # 149 "/usr/include/time.h" 3 4 | |
| long int __tm_gmtoff; /* Seconds east of UTC. */ | |
| const char *__tm_zone; /* Timezone abbreviation. */ | |
| # endif | |
| # 152 "/usr/include/time.h" 3 4 | |
| }; | |
| __END_NAMESPACE_STD | |
| #if defined __USE_XOPEN || defined __USE_POSIX | |
| __USING_NAMESPACE_STD(tm) | |
| #endif | |
| # 157 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_POSIX199309 | |
| /* POSIX.1b structure for timer start values and intervals. */ | |
| struct itimerspec | |
| { | |
| struct timespec it_interval; | |
| struct timespec it_value; | |
| }; | |
| /* We can use a simple forward declaration. */ | |
| struct sigevent; | |
| # endif /* POSIX.1b */ | |
| # 171 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_XOPEN2K | |
| # ifndef __pid_t_defined | |
| typedef __pid_t pid_t; | |
| # define __pid_t_defined | |
| # endif | |
| # 177 "/usr/include/time.h" 3 4 | |
| # endif | |
| # 178 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_ISOC11 | |
| /* Time base values for timespec_get. */ | |
| # define TIME_UTC 1 | |
| # endif | |
| # 184 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Time used by the program so far (user time + system time). | |
| The result / CLOCKS_PER_SECOND is program time in seconds. */ | |
| extern clock_t clock (void) __THROW; | |
| /* Return the current time and put it in *TIMER if TIMER is not NULL. */ | |
| extern time_t time (time_t *__timer) __THROW; | |
| /* Return the difference between TIME1 and TIME0. */ | |
| extern double difftime (time_t __time1, time_t __time0) | |
| __THROW __attribute__ ((__const__)); | |
| /* Return the `time_t' representation of TP and normalize TP. */ | |
| extern time_t mktime (struct tm *__tp) __THROW; | |
| /* Format TP into S according to FORMAT. | |
| Write no more than MAXSIZE characters and return the number | |
| of characters written, or 0 if it would exceed MAXSIZE. */ | |
| extern size_t strftime (char *__restrict __s, size_t __maxsize, | |
| const char *__restrict __format, | |
| const struct tm *__restrict __tp) __THROW; | |
| __END_NAMESPACE_STD | |
| # ifdef __USE_XOPEN | |
| /* Parse S according to FORMAT and store binary time information in TP. | |
| The return value is a pointer to the first unparsed character in S. */ | |
| extern char *strptime (const char *__restrict __s, | |
| const char *__restrict __fmt, struct tm *__tp) | |
| __THROW; | |
| # endif | |
| # 217 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_XOPEN2K8 | |
| /* Similar to the two functions above but take the information from | |
| the provided locale and not the global locale. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <xlocale.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 221 "/usr/include/time.h" 3 4 | |
| # 222 "/usr/include/time.h" 3 4 | |
| extern size_t strftime_l (char *__restrict __s, size_t __maxsize, | |
| const char *__restrict __format, | |
| const struct tm *__restrict __tp, | |
| __locale_t __loc) __THROW; | |
| # endif | |
| # 228 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_GNU | |
| extern char *strptime_l (const char *__restrict __s, | |
| const char *__restrict __fmt, struct tm *__tp, | |
| __locale_t __loc) __THROW; | |
| # endif | |
| # 234 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return the `struct tm' representation of *TIMER | |
| in Universal Coordinated Time (aka Greenwich Mean Time). */ | |
| extern struct tm *gmtime (const time_t *__timer) __THROW; | |
| /* Return the `struct tm' representation | |
| of *TIMER in the local timezone. */ | |
| extern struct tm *localtime (const time_t *__timer) __THROW; | |
| __END_NAMESPACE_STD | |
| # ifdef __USE_POSIX | |
| /* Return the `struct tm' representation of *TIMER in UTC, | |
| using *TP to store the result. */ | |
| extern struct tm *gmtime_r (const time_t *__restrict __timer, | |
| struct tm *__restrict __tp) __THROW; | |
| /* Return the `struct tm' representation of *TIMER in local time, | |
| using *TP to store the result. */ | |
| extern struct tm *localtime_r (const time_t *__restrict __timer, | |
| struct tm *__restrict __tp) __THROW; | |
| # endif /* POSIX */ | |
| # 257 "/usr/include/time.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return a string of the form "Day Mon dd hh:mm:ss yyyy\n" | |
| that is the representation of TP in this format. */ | |
| extern char *asctime (const struct tm *__tp) __THROW; | |
| /* Equivalent to `asctime (localtime (timer))'. */ | |
| extern char *ctime (const time_t *__timer) __THROW; | |
| __END_NAMESPACE_STD | |
| # ifdef __USE_POSIX | |
| /* Reentrant versions of the above functions. */ | |
| /* Return in BUF a string of the form "Day Mon dd hh:mm:ss yyyy\n" | |
| that is the representation of TP in this format. */ | |
| extern char *asctime_r (const struct tm *__restrict __tp, | |
| char *__restrict __buf) __THROW; | |
| /* Equivalent to `asctime_r (localtime_r (timer, *TMP*), buf)'. */ | |
| extern char *ctime_r (const time_t *__restrict __timer, | |
| char *__restrict __buf) __THROW; | |
| # endif /* POSIX */ | |
| # 279 "/usr/include/time.h" 3 4 | |
| /* Defined in localtime.c. */ | |
| extern char *__tzname[2]; /* Current timezone names. */ | |
| extern int __daylight; /* If daylight-saving time is ever in use. */ | |
| extern long int __timezone; /* Seconds west of UTC. */ | |
| # ifdef __USE_POSIX | |
| /* Same as above. */ | |
| extern char *tzname[2]; | |
| /* Set time conversion information from the TZ environment variable. | |
| If TZ is not defined, a locale-dependent default is used. */ | |
| extern void tzset (void) __THROW; | |
| # endif | |
| # 295 "/usr/include/time.h" 3 4 | |
| # if defined __USE_MISC || defined __USE_XOPEN | |
| extern int daylight; | |
| extern long int timezone; | |
| # endif | |
| # 300 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_MISC | |
| /* Set the system time to *WHEN. | |
| This call is restricted to the superuser. */ | |
| extern int stime (const time_t *__when) __THROW; | |
| # endif | |
| # 306 "/usr/include/time.h" 3 4 | |
| /* Nonzero if YEAR is a leap year (every 4 years, | |
| except every 100th isn't, and every 400th is). */ | |
| # define __isleap(year) \ | |
| ((year) % 4 == 0 && ((year) % 100 != 0 || (year) % 400 == 0)) | |
| # ifdef __USE_MISC | |
| /* Miscellaneous functions many Unices inherited from the public domain | |
| localtime package. These are included only for compatibility. */ | |
| /* Like `mktime', but for TP represents Universal Time, not local time. */ | |
| extern time_t timegm (struct tm *__tp) __THROW; | |
| /* Another name for `mktime'. */ | |
| extern time_t timelocal (struct tm *__tp) __THROW; | |
| /* Return the number of days in YEAR. */ | |
| extern int dysize (int __year) __THROW __attribute__ ((__const__)); | |
| # endif | |
| # 327 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_POSIX199309 | |
| /* Pause execution for a number of nanoseconds. | |
| This function is a cancellation point and therefore not marked with | |
| __THROW. */ | |
| extern int nanosleep (const struct timespec *__requested_time, | |
| struct timespec *__remaining); | |
| /* Get resolution of clock CLOCK_ID. */ | |
| extern int clock_getres (clockid_t __clock_id, struct timespec *__res) __THROW; | |
| /* Get current value of clock CLOCK_ID and store it in TP. */ | |
| extern int clock_gettime (clockid_t __clock_id, struct timespec *__tp) __THROW; | |
| /* Set clock CLOCK_ID to value TP. */ | |
| extern int clock_settime (clockid_t __clock_id, const struct timespec *__tp) | |
| __THROW; | |
| # ifdef __USE_XOPEN2K | |
| /* High-resolution sleep with the specified clock. | |
| This function is a cancellation point and therefore not marked with | |
| __THROW. */ | |
| extern int clock_nanosleep (clockid_t __clock_id, int __flags, | |
| const struct timespec *__req, | |
| struct timespec *__rem); | |
| /* Return clock ID for CPU-time clock. */ | |
| extern int clock_getcpuclockid (pid_t __pid, clockid_t *__clock_id) __THROW; | |
| # endif | |
| # 360 "/usr/include/time.h" 3 4 | |
| /* Create new per-process timer using CLOCK_ID. */ | |
| extern int timer_create (clockid_t __clock_id, | |
| struct sigevent *__restrict __evp, | |
| timer_t *__restrict __timerid) __THROW; | |
| /* Delete timer TIMERID. */ | |
| extern int timer_delete (timer_t __timerid) __THROW; | |
| /* Set timer TIMERID to VALUE, returning old value in OVALUE. */ | |
| extern int timer_settime (timer_t __timerid, int __flags, | |
| const struct itimerspec *__restrict __value, | |
| struct itimerspec *__restrict __ovalue) __THROW; | |
| /* Get current value of timer TIMERID and store it in VALUE. */ | |
| extern int timer_gettime (timer_t __timerid, struct itimerspec *__value) | |
| __THROW; | |
| /* Get expiration overrun for timer TIMERID. */ | |
| extern int timer_getoverrun (timer_t __timerid) __THROW; | |
| # endif | |
| # 382 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_ISOC11 | |
| /* Set TS to calendar time based in time base BASE. */ | |
| extern int timespec_get (struct timespec *__ts, int __base) | |
| __THROW __nonnull ((1)); | |
| # endif | |
| # 389 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_XOPEN_EXTENDED | |
| /* Set to one of the following values to indicate an error. | |
| 1 the DATEMSK environment variable is null or undefined, | |
| 2 the template file cannot be opened for reading, | |
| 3 failed to get file status information, | |
| 4 the template file is not a regular file, | |
| 5 an error is encountered while reading the template file, | |
| 6 memory allication failed (not enough memory available), | |
| 7 there is no line in the template that matches the input, | |
| 8 invalid input specification Example: February 31 or a time is | |
| specified that can not be represented in a time_t (representing | |
| the time in seconds since 00:00:00 UTC, January 1, 1970) */ | |
| extern int getdate_err; | |
| /* Parse the given string as a date specification and return a value | |
| representing the value. The templates from the file identified by | |
| the environment variable DATEMSK are used. In case of an error | |
| `getdate_err' is set. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern struct tm *getdate (const char *__string); | |
| # endif | |
| # 414 "/usr/include/time.h" 3 4 | |
| # ifdef __USE_GNU | |
| /* Since `getdate' is not reentrant because of the use of `getdate_err' | |
| and the static buffer to return the result in, we provide a thread-safe | |
| variant. The functionality is the same. The result is returned in | |
| the buffer pointed to by RESBUFP and in case of an error the return | |
| value is != 0 with the same values as given above for `getdate_err'. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern int getdate_r (const char *__restrict __string, | |
| struct tm *__restrict __resbufp); | |
| # endif | |
| # 429 "/usr/include/time.h" 3 4 | |
| __END_DECLS | |
| #endif /* <time.h> included. */ | |
| # 433 "/usr/include/time.h" 3 4 | |
| #endif /* <time.h> not already included. */ | |
| # 435 "/usr/include/time.h" 3 4 | |
| # 44 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3 4 | |
| #define __need_timeval | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/time.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 45 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/time.h" 1 3 4 | |
| /* System-dependent timing definitions. Linux version. | |
| Copyright (C) 1996-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * Never include this file directly; use <time.h> instead. | |
| */ | |
| #if defined __need_timeval || defined __USE_GNU | |
| # ifndef _STRUCT_TIMEVAL | |
| # define _STRUCT_TIMEVAL 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 26 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| # 27 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| /* A time value that is accurate to the nearest | |
| microsecond but also has a range of years. */ | |
| struct timeval | |
| { | |
| __time_t tv_sec; /* Seconds. */ | |
| __suseconds_t tv_usec; /* Microseconds. */ | |
| }; | |
| # endif /* struct timeval */ | |
| # 36 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| #endif | |
| # 37 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| #ifndef __need_timeval | |
| # ifndef _BITS_TIME_H | |
| # define _BITS_TIME_H 1 | |
| /* ISO/IEC 9899:1999 7.23.1: Components of time | |
| The macro `CLOCKS_PER_SEC' is an expression with type `clock_t' that is | |
| the number per second of the value returned by the `clock' function. */ | |
| /* CAE XSH, Issue 4, Version 2: <time.h> | |
| The value of CLOCKS_PER_SEC is required to be 1 million on all | |
| XSI-conformant systems. */ | |
| # define CLOCKS_PER_SEC ((clock_t) 1000000) | |
| # if (!defined __STRICT_ANSI__ || defined __USE_POSIX) \ | |
| && !defined __USE_XOPEN2K | |
| /* Even though CLOCKS_PER_SEC has such a strange value CLK_TCK | |
| presents the real value for clock ticks per second for the system. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 54 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| # 55 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| extern long int __sysconf (int); | |
| # define CLK_TCK ((__clock_t) __sysconf (2)) /* 2 is _SC_CLK_TCK */ | |
| # endif | |
| # 58 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| # ifdef __USE_POSIX199309 | |
| /* Identifier for system-wide realtime clock. */ | |
| # define CLOCK_REALTIME 0 | |
| /* Monotonic system-wide clock. */ | |
| # define CLOCK_MONOTONIC 1 | |
| /* High-resolution timer from the CPU. */ | |
| # define CLOCK_PROCESS_CPUTIME_ID 2 | |
| /* Thread-specific CPU-time clock. */ | |
| # define CLOCK_THREAD_CPUTIME_ID 3 | |
| /* Monotonic system-wide clock, not adjusted for frequency scaling. */ | |
| # define CLOCK_MONOTONIC_RAW 4 | |
| /* Identifier for system-wide realtime clock, updated only on ticks. */ | |
| # define CLOCK_REALTIME_COARSE 5 | |
| /* Monotonic system-wide clock, updated only on ticks. */ | |
| # define CLOCK_MONOTONIC_COARSE 6 | |
| /* Monotonic system-wide clock that includes time spent in suspension. */ | |
| # define CLOCK_BOOTTIME 7 | |
| /* Like CLOCK_REALTIME but also wakes suspended system. */ | |
| # define CLOCK_REALTIME_ALARM 8 | |
| /* Like CLOCK_BOOTTIME but also wakes suspended system. */ | |
| # define CLOCK_BOOTTIME_ALARM 9 | |
| /* Like CLOCK_REALTIME but in International Atomic Time. */ | |
| # define CLOCK_TAI 11 | |
| /* Flag to indicate time is absolute. */ | |
| # define TIMER_ABSTIME 1 | |
| # endif | |
| # 86 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| # ifdef __USE_GNU | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/timex.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 88 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| # 89 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| __BEGIN_DECLS | |
| /* Tune a POSIX clock. */ | |
| extern int clock_adjtime (__clockid_t __clock_id, struct timex *__utx) __THROW; | |
| __END_DECLS | |
| # endif /* use GNU */ | |
| # 97 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| # endif /* bits/time.h */ | |
| # 99 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| #endif | |
| # 100 "/usr/include/x86_64-linux-gnu/bits/time.h" 3 4 | |
| #undef __need_timeval | |
| # 46 "/usr/include/x86_64-linux-gnu/sys/select.h" 2 3 4 | |
| #ifndef __suseconds_t_defined | |
| typedef __suseconds_t suseconds_t; | |
| # define __suseconds_t_defined | |
| #endif | |
| # 51 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| /* The fd_set member is required to be an array of longs. */ | |
| typedef long int __fd_mask; | |
| /* Some versions of <linux/posix_types.h> define this macros. */ | |
| #undef __NFDBITS | |
| /* It's easier to assume 8-bit bytes than to get CHAR_BIT. */ | |
| #define __NFDBITS (8 * (int) sizeof (__fd_mask)) | |
| #define __FD_ELT(d) ((d) / __NFDBITS) | |
| #define __FD_MASK(d) ((__fd_mask) (1UL << ((d) % __NFDBITS))) | |
| /* fd_set for select and pselect. */ | |
| typedef struct | |
| { | |
| /* XPG4.2 requires this member name. Otherwise avoid the name | |
| from the global namespace. */ | |
| #ifdef __USE_XOPEN | |
| __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS]; | |
| # define __FDS_BITS(set) ((set)->fds_bits) | |
| #else | |
| # 72 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| __fd_mask __fds_bits[__FD_SETSIZE / __NFDBITS]; | |
| # define __FDS_BITS(set) ((set)->__fds_bits) | |
| #endif | |
| # 75 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| } fd_set; | |
| /* Maximum number of file descriptors in `fd_set'. */ | |
| #define FD_SETSIZE __FD_SETSIZE | |
| #ifdef __USE_MISC | |
| /* Sometimes the fd_set member is assumed to have this type. */ | |
| typedef __fd_mask fd_mask; | |
| /* Number of bits per word of `fd_set' (some code assumes this is 32). */ | |
| # define NFDBITS __NFDBITS | |
| #endif | |
| # 87 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| /* Access macros for `fd_set'. */ | |
| #define FD_SET(fd, fdsetp) __FD_SET (fd, fdsetp) | |
| #define FD_CLR(fd, fdsetp) __FD_CLR (fd, fdsetp) | |
| #define FD_ISSET(fd, fdsetp) __FD_ISSET (fd, fdsetp) | |
| #define FD_ZERO(fdsetp) __FD_ZERO (fdsetp) | |
| __BEGIN_DECLS | |
| /* Check the first NFDS descriptors each in READFDS (if not NULL) for read | |
| readiness, in WRITEFDS (if not NULL) for write readiness, and in EXCEPTFDS | |
| (if not NULL) for exceptional conditions. If TIMEOUT is not NULL, time out | |
| after waiting the interval specified therein. Returns the number of ready | |
| descriptors, or -1 for errors. | |
| This function is a cancellation point and therefore not marked with | |
| __THROW. */ | |
| extern int select (int __nfds, fd_set *__restrict __readfds, | |
| fd_set *__restrict __writefds, | |
| fd_set *__restrict __exceptfds, | |
| struct timeval *__restrict __timeout); | |
| #ifdef __USE_XOPEN2K | |
| /* Same as above only that the TIMEOUT value is given with higher | |
| resolution and a sigmask which is been set temporarily. This version | |
| should be used. | |
| This function is a cancellation point and therefore not marked with | |
| __THROW. */ | |
| extern int pselect (int __nfds, fd_set *__restrict __readfds, | |
| fd_set *__restrict __writefds, | |
| fd_set *__restrict __exceptfds, | |
| const struct timespec *__restrict __timeout, | |
| const __sigset_t *__restrict __sigmask); | |
| #endif | |
| # 124 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| /* Define some inlines helping to catch common problems. */ | |
| #if __USE_FORTIFY_LEVEL > 0 && defined __GNUC__ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/select2.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 128 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| # 129 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| #endif | |
| # 130 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| __END_DECLS | |
| #endif /* sys/select.h */ | |
| # 134 "/usr/include/x86_64-linux-gnu/sys/select.h" 3 4 | |
| # 220 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 | |
| /* BSD defines these symbols, so we follow. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <sys/sysmacros.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 222 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 1 3 4 | |
| /* Definitions of macros to access `dev_t' values. | |
| Copyright (C) 1996-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _SYS_SYSMACROS_H | |
| #define _SYS_SYSMACROS_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 22 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 3 4 | |
| # 23 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 3 4 | |
| __BEGIN_DECLS | |
| __extension__ | |
| extern unsigned int gnu_dev_major (unsigned long long int __dev) | |
| __THROW __attribute_const__; | |
| __extension__ | |
| extern unsigned int gnu_dev_minor (unsigned long long int __dev) | |
| __THROW __attribute_const__; | |
| __extension__ | |
| extern unsigned long long int gnu_dev_makedev (unsigned int __major, | |
| unsigned int __minor) | |
| __THROW __attribute_const__; | |
| #ifdef __USE_EXTERN_INLINES | |
| __extension__ __extern_inline __attribute_const__ unsigned int | |
| __NTH (gnu_dev_major (unsigned long long int __dev)) | |
| { | |
| return ((__dev >> 8) & 0xfff) | ((unsigned int) (__dev >> 32) & ~0xfff); | |
| } | |
| __extension__ __extern_inline __attribute_const__ unsigned int | |
| __NTH (gnu_dev_minor (unsigned long long int __dev)) | |
| { | |
| return (__dev & 0xff) | ((unsigned int) (__dev >> 12) & ~0xff); | |
| } | |
| __extension__ __extern_inline __attribute_const__ unsigned long long int | |
| __NTH (gnu_dev_makedev (unsigned int __major, unsigned int __minor)) | |
| { | |
| return ((__minor & 0xff) | ((__major & 0xfff) << 8) | |
| | (((unsigned long long int) (__minor & ~0xff)) << 12) | |
| | (((unsigned long long int) (__major & ~0xfff)) << 32)); | |
| } | |
| #endif | |
| # 58 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 3 4 | |
| __END_DECLS | |
| /* Access the functions with their traditional names. */ | |
| #define major(dev) gnu_dev_major (dev) | |
| #define minor(dev) gnu_dev_minor (dev) | |
| #define makedev(maj, min) gnu_dev_makedev (maj, min) | |
| #endif /* sys/sysmacros.h */ | |
| # 66 "/usr/include/x86_64-linux-gnu/sys/sysmacros.h" 3 4 | |
| # 223 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 | |
| #endif /* Use misc. */ | |
| # 224 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #if (defined __USE_UNIX98 || defined __USE_XOPEN2K8) \ | |
| && !defined __blksize_t_defined | |
| typedef __blksize_t blksize_t; | |
| # define __blksize_t_defined | |
| #endif | |
| # 231 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| /* Types from the Large File Support interface. */ | |
| #ifndef __USE_FILE_OFFSET64 | |
| # ifndef __blkcnt_t_defined | |
| typedef __blkcnt_t blkcnt_t; /* Type to count number of disk blocks. */ | |
| # define __blkcnt_t_defined | |
| # endif | |
| # 238 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # ifndef __fsblkcnt_t_defined | |
| typedef __fsblkcnt_t fsblkcnt_t; /* Type to count file system blocks. */ | |
| # define __fsblkcnt_t_defined | |
| # endif | |
| # 242 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # ifndef __fsfilcnt_t_defined | |
| typedef __fsfilcnt_t fsfilcnt_t; /* Type to count file system inodes. */ | |
| # define __fsfilcnt_t_defined | |
| # endif | |
| # 246 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #else | |
| # 247 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # ifndef __blkcnt_t_defined | |
| typedef __blkcnt64_t blkcnt_t; /* Type to count number of disk blocks. */ | |
| # define __blkcnt_t_defined | |
| # endif | |
| # 251 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # ifndef __fsblkcnt_t_defined | |
| typedef __fsblkcnt64_t fsblkcnt_t; /* Type to count file system blocks. */ | |
| # define __fsblkcnt_t_defined | |
| # endif | |
| # 255 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # ifndef __fsfilcnt_t_defined | |
| typedef __fsfilcnt64_t fsfilcnt_t; /* Type to count file system inodes. */ | |
| # define __fsfilcnt_t_defined | |
| # endif | |
| # 259 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #endif | |
| # 260 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| #ifdef __USE_LARGEFILE64 | |
| typedef __blkcnt64_t blkcnt64_t; /* Type to count number of disk blocks. */ | |
| typedef __fsblkcnt64_t fsblkcnt64_t; /* Type to count file system blocks. */ | |
| typedef __fsfilcnt64_t fsfilcnt64_t; /* Type to count file system inodes. */ | |
| #endif | |
| # 266 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| /* Now add the thread types. */ | |
| #if defined __USE_POSIX199506 || defined __USE_UNIX98 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/pthreadtypes.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 270 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 1 3 4 | |
| /* Copyright (C) 2002-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _BITS_PTHREADTYPES_H | |
| #define _BITS_PTHREADTYPES_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/wordsize.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 21 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 | |
| /* Determine the wordsize from the preprocessor defines. */ | |
| #if defined __x86_64__ && !defined __ILP32__ | |
| # define __WORDSIZE 64 | |
| #else | |
| # 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # define __WORDSIZE 32 | |
| #endif | |
| # 8 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| #ifdef __x86_64__ | |
| # define __WORDSIZE_TIME64_COMPAT32 1 | |
| /* Both x86-64 and x32 use the 64-bit system call interface. */ | |
| # define __SYSCALL_WORDSIZE 64 | |
| #endif | |
| # 14 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # 22 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 2 3 4 | |
| #ifdef __x86_64__ | |
| # if __WORDSIZE == 64 | |
| # define __SIZEOF_PTHREAD_ATTR_T 56 | |
| # define __SIZEOF_PTHREAD_MUTEX_T 40 | |
| # define __SIZEOF_PTHREAD_MUTEXATTR_T 4 | |
| # define __SIZEOF_PTHREAD_COND_T 48 | |
| # define __SIZEOF_PTHREAD_CONDATTR_T 4 | |
| # define __SIZEOF_PTHREAD_RWLOCK_T 56 | |
| # define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 | |
| # define __SIZEOF_PTHREAD_BARRIER_T 32 | |
| # define __SIZEOF_PTHREAD_BARRIERATTR_T 4 | |
| # else | |
| # 35 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| # define __SIZEOF_PTHREAD_ATTR_T 32 | |
| # define __SIZEOF_PTHREAD_MUTEX_T 32 | |
| # define __SIZEOF_PTHREAD_MUTEXATTR_T 4 | |
| # define __SIZEOF_PTHREAD_COND_T 48 | |
| # define __SIZEOF_PTHREAD_CONDATTR_T 4 | |
| # define __SIZEOF_PTHREAD_RWLOCK_T 44 | |
| # define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 | |
| # define __SIZEOF_PTHREAD_BARRIER_T 20 | |
| # define __SIZEOF_PTHREAD_BARRIERATTR_T 4 | |
| # endif | |
| # 45 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| #else | |
| # 46 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| # define __SIZEOF_PTHREAD_ATTR_T 36 | |
| # define __SIZEOF_PTHREAD_MUTEX_T 24 | |
| # define __SIZEOF_PTHREAD_MUTEXATTR_T 4 | |
| # define __SIZEOF_PTHREAD_COND_T 48 | |
| # define __SIZEOF_PTHREAD_CONDATTR_T 4 | |
| # define __SIZEOF_PTHREAD_RWLOCK_T 32 | |
| # define __SIZEOF_PTHREAD_RWLOCKATTR_T 8 | |
| # define __SIZEOF_PTHREAD_BARRIER_T 20 | |
| # define __SIZEOF_PTHREAD_BARRIERATTR_T 4 | |
| #endif | |
| # 56 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| /* Thread identifiers. The structure of the attribute type is not | |
| exposed on purpose. */ | |
| typedef unsigned long int pthread_t; | |
| union pthread_attr_t | |
| { | |
| char __size[__SIZEOF_PTHREAD_ATTR_T]; | |
| long int __align; | |
| }; | |
| #ifndef __have_pthread_attr_t | |
| typedef union pthread_attr_t pthread_attr_t; | |
| # define __have_pthread_attr_t 1 | |
| #endif | |
| # 72 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| #ifdef __x86_64__ | |
| typedef struct __pthread_internal_list | |
| { | |
| struct __pthread_internal_list *__prev; | |
| struct __pthread_internal_list *__next; | |
| } __pthread_list_t; | |
| #else | |
| # 81 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| typedef struct __pthread_internal_slist | |
| { | |
| struct __pthread_internal_slist *__next; | |
| } __pthread_slist_t; | |
| #endif | |
| # 86 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| /* Data structures for mutex handling. The structure of the attribute | |
| type is not exposed on purpose. */ | |
| typedef union | |
| { | |
| struct __pthread_mutex_s | |
| { | |
| int __lock; | |
| unsigned int __count; | |
| int __owner; | |
| #ifdef __x86_64__ | |
| unsigned int __nusers; | |
| #endif | |
| # 100 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| /* KIND must stay at this position in the structure to maintain | |
| binary compatibility. */ | |
| int __kind; | |
| #ifdef __x86_64__ | |
| short __spins; | |
| short __elision; | |
| __pthread_list_t __list; | |
| # define __PTHREAD_MUTEX_HAVE_PREV 1 | |
| /* Mutex __spins initializer used by PTHREAD_MUTEX_INITIALIZER. */ | |
| # define __PTHREAD_SPINS 0, 0 | |
| #else | |
| # 111 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| unsigned int __nusers; | |
| __extension__ union | |
| { | |
| struct | |
| { | |
| short __espins; | |
| short __elision; | |
| # define __spins __elision_data.__espins | |
| # define __elision __elision_data.__elision | |
| # define __PTHREAD_SPINS { 0, 0 } | |
| } __elision_data; | |
| __pthread_slist_t __list; | |
| }; | |
| #endif | |
| # 125 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| } __data; | |
| char __size[__SIZEOF_PTHREAD_MUTEX_T]; | |
| long int __align; | |
| } pthread_mutex_t; | |
| typedef union | |
| { | |
| char __size[__SIZEOF_PTHREAD_MUTEXATTR_T]; | |
| int __align; | |
| } pthread_mutexattr_t; | |
| /* Data structure for conditional variable handling. The structure of | |
| the attribute type is not exposed on purpose. */ | |
| typedef union | |
| { | |
| struct | |
| { | |
| int __lock; | |
| unsigned int __futex; | |
| __extension__ unsigned long long int __total_seq; | |
| __extension__ unsigned long long int __wakeup_seq; | |
| __extension__ unsigned long long int __woken_seq; | |
| void *__mutex; | |
| unsigned int __nwaiters; | |
| unsigned int __broadcast_seq; | |
| } __data; | |
| char __size[__SIZEOF_PTHREAD_COND_T]; | |
| __extension__ long long int __align; | |
| } pthread_cond_t; | |
| typedef union | |
| { | |
| char __size[__SIZEOF_PTHREAD_CONDATTR_T]; | |
| int __align; | |
| } pthread_condattr_t; | |
| /* Keys for thread-specific data */ | |
| typedef unsigned int pthread_key_t; | |
| /* Once-only execution */ | |
| typedef int pthread_once_t; | |
| #if defined __USE_UNIX98 || defined __USE_XOPEN2K | |
| /* Data structure for read-write lock variable handling. The | |
| structure of the attribute type is not exposed on purpose. */ | |
| typedef union | |
| { | |
| # ifdef __x86_64__ | |
| struct | |
| { | |
| int __lock; | |
| unsigned int __nr_readers; | |
| unsigned int __readers_wakeup; | |
| unsigned int __writer_wakeup; | |
| unsigned int __nr_readers_queued; | |
| unsigned int __nr_writers_queued; | |
| int __writer; | |
| int __shared; | |
| signed char __rwelision; | |
| # ifdef __ILP32__ | |
| unsigned char __pad1[3]; | |
| # define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0 } | |
| # else | |
| # 192 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| unsigned char __pad1[7]; | |
| # define __PTHREAD_RWLOCK_ELISION_EXTRA 0, { 0, 0, 0, 0, 0, 0, 0 } | |
| # endif | |
| # 195 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| unsigned long int __pad2; | |
| /* FLAGS must stay at this position in the structure to maintain | |
| binary compatibility. */ | |
| unsigned int __flags; | |
| # define __PTHREAD_RWLOCK_INT_FLAGS_SHARED 1 | |
| } __data; | |
| # else | |
| # 202 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| struct | |
| { | |
| int __lock; | |
| unsigned int __nr_readers; | |
| unsigned int __readers_wakeup; | |
| unsigned int __writer_wakeup; | |
| unsigned int __nr_readers_queued; | |
| unsigned int __nr_writers_queued; | |
| /* FLAGS must stay at this position in the structure to maintain | |
| binary compatibility. */ | |
| unsigned char __flags; | |
| unsigned char __shared; | |
| signed char __rwelision; | |
| # define __PTHREAD_RWLOCK_ELISION_EXTRA 0 | |
| unsigned char __pad2; | |
| int __writer; | |
| } __data; | |
| # endif | |
| # 220 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| char __size[__SIZEOF_PTHREAD_RWLOCK_T]; | |
| long int __align; | |
| } pthread_rwlock_t; | |
| typedef union | |
| { | |
| char __size[__SIZEOF_PTHREAD_RWLOCKATTR_T]; | |
| long int __align; | |
| } pthread_rwlockattr_t; | |
| #endif | |
| # 230 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| #ifdef __USE_XOPEN2K | |
| /* POSIX spinlock data type. */ | |
| typedef volatile int pthread_spinlock_t; | |
| /* POSIX barriers data type. The structure of the type is | |
| deliberately not exposed. */ | |
| typedef union | |
| { | |
| char __size[__SIZEOF_PTHREAD_BARRIER_T]; | |
| long int __align; | |
| } pthread_barrier_t; | |
| typedef union | |
| { | |
| char __size[__SIZEOF_PTHREAD_BARRIERATTR_T]; | |
| int __align; | |
| } pthread_barrierattr_t; | |
| #endif | |
| # 251 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| #ifndef __x86_64__ | |
| /* Extra attributes for the cleanup functions. */ | |
| # define __cleanup_fct_attribute __attribute__ ((__regparm__ (1))) | |
| #endif | |
| # 257 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| #endif /* bits/pthreadtypes.h */ | |
| # 259 "/usr/include/x86_64-linux-gnu/bits/pthreadtypes.h" 3 4 | |
| # 271 "/usr/include/x86_64-linux-gnu/sys/types.h" 2 3 4 | |
| #endif | |
| # 272 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| __END_DECLS | |
| #endif /* sys/types.h */ | |
| # 276 "/usr/include/x86_64-linux-gnu/sys/types.h" 3 4 | |
| # 315 "/usr/include/stdlib.h" 2 3 4 | |
| /* These are the functions that actually do things. The `random', `srandom', | |
| `initstate' and `setstate' functions are those from BSD Unices. | |
| The `rand' and `srand' functions are required by the ANSI standard. | |
| We provide both interfaces to the same random number generator. */ | |
| /* Return a random long integer between 0 and RAND_MAX inclusive. */ | |
| extern long int random (void) __THROW; | |
| /* Seed the random number generator with the given number. */ | |
| extern void srandom (unsigned int __seed) __THROW; | |
| /* Initialize the random number generator to use state buffer STATEBUF, | |
| of length STATELEN, and seed it with SEED. Optimal lengths are 8, 16, | |
| 32, 64, 128 and 256, the bigger the better; values less than 8 will | |
| cause an error and values greater than 256 will be rounded down. */ | |
| extern char *initstate (unsigned int __seed, char *__statebuf, | |
| size_t __statelen) __THROW __nonnull ((2)); | |
| /* Switch the random number generator to state buffer STATEBUF, | |
| which should have been previously initialized by `initstate'. */ | |
| extern char *setstate (char *__statebuf) __THROW __nonnull ((1)); | |
| # ifdef __USE_MISC | |
| /* Reentrant versions of the `random' family of functions. | |
| These functions all use the following data structure to contain | |
| state, rather than global state variables. */ | |
| struct random_data | |
| { | |
| int32_t *fptr; /* Front pointer. */ | |
| int32_t *rptr; /* Rear pointer. */ | |
| int32_t *state; /* Array of state values. */ | |
| int rand_type; /* Type of random number generator. */ | |
| int rand_deg; /* Degree of random number generator. */ | |
| int rand_sep; /* Distance between front and rear. */ | |
| int32_t *end_ptr; /* Pointer behind state table. */ | |
| }; | |
| extern int random_r (struct random_data *__restrict __buf, | |
| int32_t *__restrict __result) __THROW __nonnull ((1, 2)); | |
| extern int srandom_r (unsigned int __seed, struct random_data *__buf) | |
| __THROW __nonnull ((2)); | |
| extern int initstate_r (unsigned int __seed, char *__restrict __statebuf, | |
| size_t __statelen, | |
| struct random_data *__restrict __buf) | |
| __THROW __nonnull ((2, 4)); | |
| extern int setstate_r (char *__restrict __statebuf, | |
| struct random_data *__restrict __buf) | |
| __THROW __nonnull ((1, 2)); | |
| # endif /* Use misc. */ | |
| # 369 "/usr/include/stdlib.h" 3 4 | |
| #endif /* Use extended X/Open || misc. */ | |
| # 370 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return a random integer between 0 and RAND_MAX inclusive. */ | |
| extern int rand (void) __THROW; | |
| /* Seed the random number generator with the given number. */ | |
| extern void srand (unsigned int __seed) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_POSIX | |
| /* Reentrant interface according to POSIX.1. */ | |
| extern int rand_r (unsigned int *__seed) __THROW; | |
| #endif | |
| # 383 "/usr/include/stdlib.h" 3 4 | |
| #if defined __USE_MISC || defined __USE_XOPEN | |
| /* System V style 48-bit random number generator functions. */ | |
| /* Return non-negative, double-precision floating-point value in [0.0,1.0). */ | |
| extern double drand48 (void) __THROW; | |
| extern double erand48 (unsigned short int __xsubi[3]) __THROW __nonnull ((1)); | |
| /* Return non-negative, long integer in [0,2^31). */ | |
| extern long int lrand48 (void) __THROW; | |
| extern long int nrand48 (unsigned short int __xsubi[3]) | |
| __THROW __nonnull ((1)); | |
| /* Return signed, long integers in [-2^31,2^31). */ | |
| extern long int mrand48 (void) __THROW; | |
| extern long int jrand48 (unsigned short int __xsubi[3]) | |
| __THROW __nonnull ((1)); | |
| /* Seed random number generator. */ | |
| extern void srand48 (long int __seedval) __THROW; | |
| extern unsigned short int *seed48 (unsigned short int __seed16v[3]) | |
| __THROW __nonnull ((1)); | |
| extern void lcong48 (unsigned short int __param[7]) __THROW __nonnull ((1)); | |
| # ifdef __USE_MISC | |
| /* Data structure for communication with thread safe versions. This | |
| type is to be regarded as opaque. It's only exported because users | |
| have to allocate objects of this type. */ | |
| struct drand48_data | |
| { | |
| unsigned short int __x[3]; /* Current state. */ | |
| unsigned short int __old_x[3]; /* Old state. */ | |
| unsigned short int __c; /* Additive const. in congruential formula. */ | |
| unsigned short int __init; /* Flag for initializing. */ | |
| __extension__ unsigned long long int __a; /* Factor in congruential | |
| formula. */ | |
| }; | |
| /* Return non-negative, double-precision floating-point value in [0.0,1.0). */ | |
| extern int drand48_r (struct drand48_data *__restrict __buffer, | |
| double *__restrict __result) __THROW __nonnull ((1, 2)); | |
| extern int erand48_r (unsigned short int __xsubi[3], | |
| struct drand48_data *__restrict __buffer, | |
| double *__restrict __result) __THROW __nonnull ((1, 2)); | |
| /* Return non-negative, long integer in [0,2^31). */ | |
| extern int lrand48_r (struct drand48_data *__restrict __buffer, | |
| long int *__restrict __result) | |
| __THROW __nonnull ((1, 2)); | |
| extern int nrand48_r (unsigned short int __xsubi[3], | |
| struct drand48_data *__restrict __buffer, | |
| long int *__restrict __result) | |
| __THROW __nonnull ((1, 2)); | |
| /* Return signed, long integers in [-2^31,2^31). */ | |
| extern int mrand48_r (struct drand48_data *__restrict __buffer, | |
| long int *__restrict __result) | |
| __THROW __nonnull ((1, 2)); | |
| extern int jrand48_r (unsigned short int __xsubi[3], | |
| struct drand48_data *__restrict __buffer, | |
| long int *__restrict __result) | |
| __THROW __nonnull ((1, 2)); | |
| /* Seed random number generator. */ | |
| extern int srand48_r (long int __seedval, struct drand48_data *__buffer) | |
| __THROW __nonnull ((2)); | |
| extern int seed48_r (unsigned short int __seed16v[3], | |
| struct drand48_data *__buffer) __THROW __nonnull ((1, 2)); | |
| extern int lcong48_r (unsigned short int __param[7], | |
| struct drand48_data *__buffer) | |
| __THROW __nonnull ((1, 2)); | |
| # endif /* Use misc. */ | |
| # 458 "/usr/include/stdlib.h" 3 4 | |
| #endif /* Use misc or X/Open. */ | |
| # 459 "/usr/include/stdlib.h" 3 4 | |
| #endif /* don't just need malloc and calloc */ | |
| # 461 "/usr/include/stdlib.h" 3 4 | |
| #ifndef __malloc_and_calloc_defined | |
| # define __malloc_and_calloc_defined | |
| __BEGIN_NAMESPACE_STD | |
| /* Allocate SIZE bytes of memory. */ | |
| extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur; | |
| /* Allocate NMEMB elements of SIZE bytes each, all initialized to 0. */ | |
| extern void *calloc (size_t __nmemb, size_t __size) | |
| __THROW __attribute_malloc__ __wur; | |
| __END_NAMESPACE_STD | |
| #endif | |
| # 472 "/usr/include/stdlib.h" 3 4 | |
| #ifndef __need_malloc_and_calloc | |
| __BEGIN_NAMESPACE_STD | |
| /* Re-allocate the previously allocated block | |
| in PTR, making the new block SIZE bytes long. */ | |
| /* __attribute_malloc__ is not used, because if realloc returns | |
| the same pointer that was passed to it, aliasing needs to be allowed | |
| between objects pointed by the old and new pointers. */ | |
| extern void *realloc (void *__ptr, size_t __size) | |
| __THROW __attribute_warn_unused_result__; | |
| /* Free a block allocated by `malloc', `realloc' or `calloc'. */ | |
| extern void free (void *__ptr) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_MISC | |
| /* Free a block. An alias for `free'. (Sun Unices). */ | |
| extern void cfree (void *__ptr) __THROW; | |
| #endif /* Use misc. */ | |
| # 490 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_MISC | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <alloca.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 492 "/usr/include/stdlib.h" 3 4 | |
| # 1 "/usr/include/alloca.h" 1 3 4 | |
| /* Copyright (C) 1992-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _ALLOCA_H | |
| #define _ALLOCA_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 21 "/usr/include/alloca.h" 3 4 | |
| # 22 "/usr/include/alloca.h" 3 4 | |
| #define __need_size_t | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 24 "/usr/include/alloca.h" 3 4 | |
| # 1 "/usr/local/bin/../include/c++/v1/stddef.h" 1 3 4 | |
| // -*- C++ -*- | |
| //===--------------------------- stddef.h ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if defined(__need_ptrdiff_t) || defined(__need_size_t) || \ | |
| defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 16 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 17 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/stddef.h" 1 3 | |
| /*===---- stddef.h - Basic type definitions --------------------------------=== | |
| * | |
| * Copyright (c) 2008 Eli Friedman | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| *===-----------------------------------------------------------------------=== | |
| */ | |
| #if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \ | |
| defined(__need_size_t) || defined(__need_wchar_t) || \ | |
| defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \ | |
| !defined(__need_wchar_t) && !defined(__need_NULL) && \ | |
| !defined(__need_wint_t) | |
| /* Always define miscellaneous pieces when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define __STDDEF_H | |
| #endif | |
| # 37 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define __need_ptrdiff_t | |
| #define __need_size_t | |
| #define __need_wchar_t | |
| #define __need_NULL | |
| #define __need_STDDEF_H_misc | |
| /* __need_wint_t is intentionally not defined here. */ | |
| #endif | |
| # 44 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_ptrdiff_t) | |
| #if !defined(_PTRDIFF_T) || __has_feature(modules) | |
| /* Always define ptrdiff_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _PTRDIFF_T | |
| #endif | |
| # 51 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
| #endif | |
| # 53 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_ptrdiff_t | |
| #endif /* defined(__need_ptrdiff_t) */ | |
| # 55 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_size_t) | |
| #if !defined(_SIZE_T) || __has_feature(modules) | |
| /* Always define size_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _SIZE_T | |
| #endif | |
| # 62 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ size_t; | |
| #endif | |
| # 64 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_size_t | |
| #endif /*defined(__need_size_t) */ | |
| # 66 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| /* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is | |
| * enabled. */ | |
| #if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \ | |
| !defined(_RSIZE_T)) || __has_feature(modules) | |
| /* Always define rsize_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _RSIZE_T | |
| #endif | |
| # 76 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ rsize_t; | |
| #endif | |
| # 78 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 79 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_wchar_t) | |
| #ifndef __cplusplus | |
| /* Always define wchar_t when modules are available. */ | |
| #if !defined(_WCHAR_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WCHAR_T | |
| #if defined(_MSC_EXTENSIONS) | |
| #define _WCHAR_T_DEFINED | |
| #endif | |
| # 89 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 90 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WCHAR_TYPE__ wchar_t; | |
| #endif | |
| # 92 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 93 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wchar_t | |
| #endif /* defined(__need_wchar_t) */ | |
| # 95 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_NULL) | |
| #undef NULL | |
| #ifdef __cplusplus | |
| # if !defined(__MINGW32__) && !defined(_MSC_VER) | |
| # define NULL __null | |
| # else | |
| # 102 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL 0 | |
| # endif | |
| # 104 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #else | |
| # 105 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL ((void*)0) | |
| #endif | |
| # 107 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #ifdef __cplusplus | |
| #if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) | |
| namespace std { typedef decltype(nullptr) nullptr_t; } | |
| using ::std::nullptr_t; | |
| #endif | |
| # 112 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 113 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_NULL | |
| #endif /* defined(__need_NULL) */ | |
| # 115 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| #if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include "__stddef_max_align_t.h" | |
| #endif /* expanded by -frewrite-includes */ | |
| # 118 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 119 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 120 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define offsetof(t, d) __builtin_offsetof(t, d) | |
| #undef __need_STDDEF_H_misc | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 123 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| /* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use | |
| __WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ | |
| #if defined(__need_wint_t) | |
| /* Always define wint_t when modules are available. */ | |
| #if !defined(_WINT_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WINT_T | |
| #endif | |
| # 132 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WINT_TYPE__ wint_t; | |
| #endif | |
| # 134 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wint_t | |
| #endif /* __need_wint_t */ | |
| # 136 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 138 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 19 "/usr/local/bin/../include/c++/v1/stddef.h" 2 3 | |
| #elif !defined(_LIBCPP_STDDEF_H) | |
| # 21 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #define _LIBCPP_STDDEF_H | |
| /* | |
| stddef.h synopsis | |
| Macros: | |
| offsetof(type,member-designator) | |
| NULL | |
| Types: | |
| ptrdiff_t | |
| size_t | |
| max_align_t | |
| nullptr_t | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 40 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 41 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 44 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 45 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 46 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 47 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #ifdef __cplusplus | |
| extern "C++" { | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__nullptr> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 51 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 52 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| using std::nullptr_t; | |
| } | |
| // Re-use the compiler's <stddef.h> max_align_t where possible. | |
| #if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \ | |
| !defined(__DEFINED_max_align_t) | |
| typedef long double max_align_t; | |
| #endif | |
| # 60 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 62 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif // _LIBCPP_STDDEF_H | |
| # 64 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 25 "/usr/include/alloca.h" 2 3 4 | |
| __BEGIN_DECLS | |
| /* Remove any previous definitions. */ | |
| #undef alloca | |
| /* Allocate a block that will be freed when the calling function exits. */ | |
| extern void *alloca (size_t __size) __THROW; | |
| #ifdef __GNUC__ | |
| # define alloca(size) __builtin_alloca (size) | |
| #endif /* GCC. */ | |
| # 37 "/usr/include/alloca.h" 3 4 | |
| __END_DECLS | |
| #endif /* alloca.h */ | |
| # 41 "/usr/include/alloca.h" 3 4 | |
| # 493 "/usr/include/stdlib.h" 2 3 4 | |
| #endif /* Use misc. */ | |
| # 494 "/usr/include/stdlib.h" 3 4 | |
| #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K) \ | |
| || defined __USE_MISC | |
| /* Allocate SIZE bytes on a page boundary. The storage cannot be freed. */ | |
| extern void *valloc (size_t __size) __THROW __attribute_malloc__ __wur; | |
| #endif | |
| # 500 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_XOPEN2K | |
| /* Allocate memory of SIZE bytes with an alignment of ALIGNMENT. */ | |
| extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size) | |
| __THROW __nonnull ((1)) __wur; | |
| #endif | |
| # 506 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_ISOC11 | |
| /* ISO C variant of aligned allocation. */ | |
| extern void *aligned_alloc (size_t __alignment, size_t __size) | |
| __THROW __attribute_malloc__ __attribute_alloc_size__ ((2)) __wur; | |
| #endif | |
| # 512 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Abort execution and generate a core-dump. */ | |
| extern void abort (void) __THROW __attribute__ ((__noreturn__)); | |
| /* Register a function to be called when `exit' is called. */ | |
| extern int atexit (void (*__func) (void)) __THROW __nonnull ((1)); | |
| #if defined __USE_ISOC11 || defined __USE_ISOCXX11 | |
| /* Register a function to be called when `quick_exit' is called. */ | |
| # ifdef __cplusplus | |
| extern "C++" int at_quick_exit (void (*__func) (void)) | |
| __THROW __asm ("at_quick_exit") __nonnull ((1)); | |
| # else | |
| # 527 "/usr/include/stdlib.h" 3 4 | |
| extern int at_quick_exit (void (*__func) (void)) __THROW __nonnull ((1)); | |
| # endif | |
| # 529 "/usr/include/stdlib.h" 3 4 | |
| #endif | |
| # 530 "/usr/include/stdlib.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_MISC | |
| /* Register a function to be called with the status | |
| given to `exit' and the given argument. */ | |
| extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg) | |
| __THROW __nonnull ((1)); | |
| #endif | |
| # 538 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Call all functions registered with `atexit' and `on_exit', | |
| in the reverse of the order in which they were registered, | |
| perform stdio cleanup, and terminate program execution with STATUS. */ | |
| extern void exit (int __status) __THROW __attribute__ ((__noreturn__)); | |
| #if defined __USE_ISOC11 || defined __USE_ISOCXX11 | |
| /* Call all functions registered with `at_quick_exit' in the reverse | |
| of the order in which they were registered and terminate program | |
| execution with STATUS. */ | |
| extern void quick_exit (int __status) __THROW __attribute__ ((__noreturn__)); | |
| #endif | |
| # 551 "/usr/include/stdlib.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Terminate the program with STATUS without calling any of the | |
| functions registered with `atexit' or `on_exit'. */ | |
| extern void _Exit (int __status) __THROW __attribute__ ((__noreturn__)); | |
| __END_NAMESPACE_C99 | |
| #endif | |
| # 560 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return the value of envariable NAME, or NULL if it doesn't exist. */ | |
| extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* This function is similar to the above but returns NULL if the | |
| programs is running with SUID or SGID enabled. */ | |
| extern char *secure_getenv (const char *__name) | |
| __THROW __nonnull ((1)) __wur; | |
| #endif | |
| # 573 "/usr/include/stdlib.h" 3 4 | |
| #if defined __USE_MISC || defined __USE_XOPEN | |
| /* The SVID says this is in <stdio.h>, but this seems a better place. */ | |
| /* Put STRING, which is of the form "NAME=VALUE", in the environment. | |
| If there is no `=', remove NAME from the environment. */ | |
| extern int putenv (char *__string) __THROW __nonnull ((1)); | |
| #endif | |
| # 580 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_XOPEN2K | |
| /* Set NAME to VALUE in the environment. | |
| If REPLACE is nonzero, overwrite an existing value. */ | |
| extern int setenv (const char *__name, const char *__value, int __replace) | |
| __THROW __nonnull ((2)); | |
| /* Remove the variable NAME from the environment. */ | |
| extern int unsetenv (const char *__name) __THROW __nonnull ((1)); | |
| #endif | |
| # 590 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_MISC | |
| /* The `clearenv' was planned to be added to POSIX.1 but probably | |
| never made it. Nevertheless the POSIX.9 standard (POSIX bindings | |
| for Fortran 77) requires this function. */ | |
| extern int clearenv (void) __THROW; | |
| #endif | |
| # 597 "/usr/include/stdlib.h" 3 4 | |
| #if defined __USE_MISC \ | |
| || (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) | |
| /* Generate a unique temporary file name from TEMPLATE. | |
| The last six characters of TEMPLATE must be "XXXXXX"; | |
| they are replaced with a string that makes the file name unique. | |
| Always returns TEMPLATE, it's either a temporary file name or a null | |
| string if it cannot get a unique file name. */ | |
| extern char *mktemp (char *__template) __THROW __nonnull ((1)); | |
| #endif | |
| # 608 "/usr/include/stdlib.h" 3 4 | |
| #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 | |
| /* Generate a unique temporary file name from TEMPLATE. | |
| The last six characters of TEMPLATE must be "XXXXXX"; | |
| they are replaced with a string that makes the filename unique. | |
| Returns a file descriptor open on the file for reading and writing, | |
| or -1 if it cannot create a uniquely-named file. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| # ifndef __USE_FILE_OFFSET64 | |
| extern int mkstemp (char *__template) __nonnull ((1)) __wur; | |
| # else | |
| # 621 "/usr/include/stdlib.h" 3 4 | |
| # ifdef __REDIRECT | |
| extern int __REDIRECT (mkstemp, (char *__template), mkstemp64) | |
| __nonnull ((1)) __wur; | |
| # else | |
| # 625 "/usr/include/stdlib.h" 3 4 | |
| # define mkstemp mkstemp64 | |
| # endif | |
| # 627 "/usr/include/stdlib.h" 3 4 | |
| # endif | |
| # 628 "/usr/include/stdlib.h" 3 4 | |
| # ifdef __USE_LARGEFILE64 | |
| extern int mkstemp64 (char *__template) __nonnull ((1)) __wur; | |
| # endif | |
| # 631 "/usr/include/stdlib.h" 3 4 | |
| #endif | |
| # 632 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_MISC | |
| /* Similar to mkstemp, but the template can have a suffix after the | |
| XXXXXX. The length of the suffix is specified in the second | |
| parameter. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| # ifndef __USE_FILE_OFFSET64 | |
| extern int mkstemps (char *__template, int __suffixlen) __nonnull ((1)) __wur; | |
| # else | |
| # 643 "/usr/include/stdlib.h" 3 4 | |
| # ifdef __REDIRECT | |
| extern int __REDIRECT (mkstemps, (char *__template, int __suffixlen), | |
| mkstemps64) __nonnull ((1)) __wur; | |
| # else | |
| # 647 "/usr/include/stdlib.h" 3 4 | |
| # define mkstemps mkstemps64 | |
| # endif | |
| # 649 "/usr/include/stdlib.h" 3 4 | |
| # endif | |
| # 650 "/usr/include/stdlib.h" 3 4 | |
| # ifdef __USE_LARGEFILE64 | |
| extern int mkstemps64 (char *__template, int __suffixlen) | |
| __nonnull ((1)) __wur; | |
| # endif | |
| # 654 "/usr/include/stdlib.h" 3 4 | |
| #endif | |
| # 655 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| /* Create a unique temporary directory from TEMPLATE. | |
| The last six characters of TEMPLATE must be "XXXXXX"; | |
| they are replaced with a string that makes the directory name unique. | |
| Returns TEMPLATE, or a null pointer if it cannot get a unique name. | |
| The directory is created mode 700. */ | |
| extern char *mkdtemp (char *__template) __THROW __nonnull ((1)) __wur; | |
| #endif | |
| # 664 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Generate a unique temporary file name from TEMPLATE similar to | |
| mkstemp. But allow the caller to pass additional flags which are | |
| used in the open call to create the file.. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| # ifndef __USE_FILE_OFFSET64 | |
| extern int mkostemp (char *__template, int __flags) __nonnull ((1)) __wur; | |
| # else | |
| # 675 "/usr/include/stdlib.h" 3 4 | |
| # ifdef __REDIRECT | |
| extern int __REDIRECT (mkostemp, (char *__template, int __flags), mkostemp64) | |
| __nonnull ((1)) __wur; | |
| # else | |
| # 679 "/usr/include/stdlib.h" 3 4 | |
| # define mkostemp mkostemp64 | |
| # endif | |
| # 681 "/usr/include/stdlib.h" 3 4 | |
| # endif | |
| # 682 "/usr/include/stdlib.h" 3 4 | |
| # ifdef __USE_LARGEFILE64 | |
| extern int mkostemp64 (char *__template, int __flags) __nonnull ((1)) __wur; | |
| # endif | |
| # 685 "/usr/include/stdlib.h" 3 4 | |
| /* Similar to mkostemp, but the template can have a suffix after the | |
| XXXXXX. The length of the suffix is specified in the second | |
| parameter. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| # ifndef __USE_FILE_OFFSET64 | |
| extern int mkostemps (char *__template, int __suffixlen, int __flags) | |
| __nonnull ((1)) __wur; | |
| # else | |
| # 696 "/usr/include/stdlib.h" 3 4 | |
| # ifdef __REDIRECT | |
| extern int __REDIRECT (mkostemps, (char *__template, int __suffixlen, | |
| int __flags), mkostemps64) | |
| __nonnull ((1)) __wur; | |
| # else | |
| # 701 "/usr/include/stdlib.h" 3 4 | |
| # define mkostemps mkostemps64 | |
| # endif | |
| # 703 "/usr/include/stdlib.h" 3 4 | |
| # endif | |
| # 704 "/usr/include/stdlib.h" 3 4 | |
| # ifdef __USE_LARGEFILE64 | |
| extern int mkostemps64 (char *__template, int __suffixlen, int __flags) | |
| __nonnull ((1)) __wur; | |
| # endif | |
| # 708 "/usr/include/stdlib.h" 3 4 | |
| #endif | |
| # 709 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Execute the given line as a shell command. | |
| This function is a cancellation point and therefore not marked with | |
| __THROW. */ | |
| extern int system (const char *__command) __wur; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* Return a malloc'd string containing the canonical absolute name of the | |
| existing named file. */ | |
| extern char *canonicalize_file_name (const char *__name) | |
| __THROW __nonnull ((1)) __wur; | |
| #endif | |
| # 726 "/usr/include/stdlib.h" 3 4 | |
| #if defined __USE_MISC || defined __USE_XOPEN_EXTENDED | |
| /* Return the canonical absolute name of file NAME. If RESOLVED is | |
| null, the result is malloc'd; otherwise, if the canonical name is | |
| PATH_MAX chars or more, returns null with `errno' set to | |
| ENAMETOOLONG; if the name fits in fewer than PATH_MAX chars, | |
| returns the name in RESOLVED. */ | |
| extern char *realpath (const char *__restrict __name, | |
| char *__restrict __resolved) __THROW __wur; | |
| #endif | |
| # 736 "/usr/include/stdlib.h" 3 4 | |
| /* Shorthand for type of comparison functions. */ | |
| #ifndef __COMPAR_FN_T | |
| # define __COMPAR_FN_T | |
| typedef int (*__compar_fn_t) (const void *, const void *); | |
| # ifdef __USE_GNU | |
| typedef __compar_fn_t comparison_fn_t; | |
| # endif | |
| # 746 "/usr/include/stdlib.h" 3 4 | |
| #endif | |
| # 747 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_GNU | |
| typedef int (*__compar_d_fn_t) (const void *, const void *, void *); | |
| #endif | |
| # 750 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Do a binary search for KEY in BASE, which consists of NMEMB elements | |
| of SIZE bytes each, using COMPAR to perform the comparisons. */ | |
| extern void *bsearch (const void *__key, const void *__base, | |
| size_t __nmemb, size_t __size, __compar_fn_t __compar) | |
| __nonnull ((1, 2, 5)) __wur; | |
| #ifdef __USE_EXTERN_INLINES | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/stdlib-bsearch.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 759 "/usr/include/stdlib.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/stdlib-bsearch.h" 1 3 4 | |
| /* Perform binary search - inline version. | |
| Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| __extern_inline void * | |
| bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size, | |
| __compar_fn_t __compar) | |
| { | |
| size_t __l, __u, __idx; | |
| const void *__p; | |
| int __comparison; | |
| __l = 0; | |
| __u = __nmemb; | |
| while (__l < __u) | |
| { | |
| __idx = (__l + __u) / 2; | |
| __p = (void *) (((const char *) __base) + (__idx * __size)); | |
| __comparison = (*__compar) (__key, __p); | |
| if (__comparison < 0) | |
| __u = __idx; | |
| else if (__comparison > 0) | |
| __l = __idx + 1; | |
| else | |
| return (void *) __p; | |
| } | |
| return NULL; | |
| } | |
| # 760 "/usr/include/stdlib.h" 2 3 4 | |
| #endif | |
| # 761 "/usr/include/stdlib.h" 3 4 | |
| /* Sort NMEMB elements of BASE, of SIZE bytes each, | |
| using COMPAR to perform the comparisons. */ | |
| extern void qsort (void *__base, size_t __nmemb, size_t __size, | |
| __compar_fn_t __compar) __nonnull ((1, 4)); | |
| #ifdef __USE_GNU | |
| extern void qsort_r (void *__base, size_t __nmemb, size_t __size, | |
| __compar_d_fn_t __compar, void *__arg) | |
| __nonnull ((1, 4)); | |
| #endif | |
| # 771 "/usr/include/stdlib.h" 3 4 | |
| /* Return the absolute value of X. */ | |
| extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur; | |
| extern long int labs (long int __x) __THROW __attribute__ ((__const__)) __wur; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ISOC99 | |
| __extension__ extern long long int llabs (long long int __x) | |
| __THROW __attribute__ ((__const__)) __wur; | |
| #endif | |
| # 782 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return the `div_t', `ldiv_t' or `lldiv_t' representation | |
| of the value of NUMER over DENOM. */ | |
| /* GCC may have built-ins for these someday. */ | |
| extern div_t div (int __numer, int __denom) | |
| __THROW __attribute__ ((__const__)) __wur; | |
| extern ldiv_t ldiv (long int __numer, long int __denom) | |
| __THROW __attribute__ ((__const__)) __wur; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| __extension__ extern lldiv_t lldiv (long long int __numer, | |
| long long int __denom) | |
| __THROW __attribute__ ((__const__)) __wur; | |
| __END_NAMESPACE_C99 | |
| #endif | |
| # 801 "/usr/include/stdlib.h" 3 4 | |
| #if (defined __USE_XOPEN_EXTENDED && !defined __USE_XOPEN2K8) \ | |
| || defined __USE_MISC | |
| /* Convert floating point numbers to strings. The returned values are | |
| valid only until another call to the same function. */ | |
| /* Convert VALUE to a string with NDIGIT digits and return a pointer to | |
| this. Set *DECPT with the position of the decimal character and *SIGN | |
| with the sign of the number. */ | |
| extern char *ecvt (double __value, int __ndigit, int *__restrict __decpt, | |
| int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; | |
| /* Convert VALUE to a string rounded to NDIGIT decimal digits. Set *DECPT | |
| with the position of the decimal character and *SIGN with the sign of | |
| the number. */ | |
| extern char *fcvt (double __value, int __ndigit, int *__restrict __decpt, | |
| int *__restrict __sign) __THROW __nonnull ((3, 4)) __wur; | |
| /* If possible convert VALUE to a string with NDIGIT significant digits. | |
| Otherwise use exponential representation. The resulting string will | |
| be written to BUF. */ | |
| extern char *gcvt (double __value, int __ndigit, char *__buf) | |
| __THROW __nonnull ((3)) __wur; | |
| #endif | |
| # 826 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_MISC | |
| /* Long double versions of above functions. */ | |
| extern char *qecvt (long double __value, int __ndigit, | |
| int *__restrict __decpt, int *__restrict __sign) | |
| __THROW __nonnull ((3, 4)) __wur; | |
| extern char *qfcvt (long double __value, int __ndigit, | |
| int *__restrict __decpt, int *__restrict __sign) | |
| __THROW __nonnull ((3, 4)) __wur; | |
| extern char *qgcvt (long double __value, int __ndigit, char *__buf) | |
| __THROW __nonnull ((3)) __wur; | |
| /* Reentrant version of the functions above which provide their own | |
| buffers. */ | |
| extern int ecvt_r (double __value, int __ndigit, int *__restrict __decpt, | |
| int *__restrict __sign, char *__restrict __buf, | |
| size_t __len) __THROW __nonnull ((3, 4, 5)); | |
| extern int fcvt_r (double __value, int __ndigit, int *__restrict __decpt, | |
| int *__restrict __sign, char *__restrict __buf, | |
| size_t __len) __THROW __nonnull ((3, 4, 5)); | |
| extern int qecvt_r (long double __value, int __ndigit, | |
| int *__restrict __decpt, int *__restrict __sign, | |
| char *__restrict __buf, size_t __len) | |
| __THROW __nonnull ((3, 4, 5)); | |
| extern int qfcvt_r (long double __value, int __ndigit, | |
| int *__restrict __decpt, int *__restrict __sign, | |
| char *__restrict __buf, size_t __len) | |
| __THROW __nonnull ((3, 4, 5)); | |
| #endif /* misc */ | |
| # 857 "/usr/include/stdlib.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return the length of the multibyte character | |
| in S, which is no longer than N. */ | |
| extern int mblen (const char *__s, size_t __n) __THROW; | |
| /* Return the length of the given multibyte character, | |
| putting its `wchar_t' representation in *PWC. */ | |
| extern int mbtowc (wchar_t *__restrict __pwc, | |
| const char *__restrict __s, size_t __n) __THROW; | |
| /* Put the multibyte character represented | |
| by WCHAR in S, returning its length. */ | |
| extern int wctomb (char *__s, wchar_t __wchar) __THROW; | |
| /* Convert a multibyte string to a wide char string. */ | |
| extern size_t mbstowcs (wchar_t *__restrict __pwcs, | |
| const char *__restrict __s, size_t __n) __THROW; | |
| /* Convert a wide char string to multibyte string. */ | |
| extern size_t wcstombs (char *__restrict __s, | |
| const wchar_t *__restrict __pwcs, size_t __n) | |
| __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_MISC | |
| /* Determine whether the string value of RESPONSE matches the affirmation | |
| or negative response expression as specified by the LC_MESSAGES category | |
| in the program's current locale. Returns 1 if affirmative, 0 if | |
| negative, and -1 if not matching. */ | |
| extern int rpmatch (const char *__response) __THROW __nonnull ((1)) __wur; | |
| #endif | |
| # 889 "/usr/include/stdlib.h" 3 4 | |
| #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 | |
| /* Parse comma separated suboption from *OPTIONP and match against | |
| strings in TOKENS. If found return index and set *VALUEP to | |
| optional value introduced by an equal sign. If the suboption is | |
| not part of TOKENS return in *VALUEP beginning of unknown | |
| suboption. On exit *OPTIONP is set to the beginning of the next | |
| token or at the terminating NUL character. */ | |
| extern int getsubopt (char **__restrict __optionp, | |
| char *const *__restrict __tokens, | |
| char **__restrict __valuep) | |
| __THROW __nonnull ((1, 2, 3)) __wur; | |
| #endif | |
| # 903 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_XOPEN | |
| /* Setup DES tables according KEY. */ | |
| extern void setkey (const char *__key) __THROW __nonnull ((1)); | |
| #endif | |
| # 909 "/usr/include/stdlib.h" 3 4 | |
| /* X/Open pseudo terminal handling. */ | |
| #ifdef __USE_XOPEN2KXSI | |
| /* Return a master pseudo-terminal handle. */ | |
| extern int posix_openpt (int __oflag) __wur; | |
| #endif | |
| # 917 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_XOPEN | |
| /* The next four functions all take a master pseudo-tty fd and | |
| perform an operation on the associated slave: */ | |
| /* Chown the slave to the calling user. */ | |
| extern int grantpt (int __fd) __THROW; | |
| /* Release an internal lock so the slave can be opened. | |
| Call after grantpt(). */ | |
| extern int unlockpt (int __fd) __THROW; | |
| /* Return the pathname of the pseudo terminal slave associated with | |
| the master FD is open on, or NULL on errors. | |
| The returned storage is good until the next call to this function. */ | |
| extern char *ptsname (int __fd) __THROW __wur; | |
| #endif | |
| # 934 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Store at most BUFLEN characters of the pathname of the slave pseudo | |
| terminal associated with the master FD is open on in BUF. | |
| Return 0 on success, otherwise an error number. */ | |
| extern int ptsname_r (int __fd, char *__buf, size_t __buflen) | |
| __THROW __nonnull ((2)); | |
| /* Open a master pseudo terminal and return its file descriptor. */ | |
| extern int getpt (void); | |
| #endif | |
| # 945 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __USE_MISC | |
| /* Put the 1 minute, 5 minute and 15 minute load averages into the first | |
| NELEM elements of LOADAVG. Return the number written (never more than | |
| three, but may be less than NELEM), or -1 if an error occurred. */ | |
| extern int getloadavg (double __loadavg[], int __nelem) | |
| __THROW __nonnull ((1)); | |
| #endif | |
| # 953 "/usr/include/stdlib.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/stdlib-float.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 954 "/usr/include/stdlib.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h" 1 3 4 | |
| /* Floating-point inline functions for stdlib.h. | |
| Copyright (C) 2012-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _STDLIB_H | |
| # error "Never use <bits/stdlib-float.h> directly; include <stdlib.h> instead." | |
| #endif | |
| # 22 "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h" 3 4 | |
| #ifdef __USE_EXTERN_INLINES | |
| __BEGIN_NAMESPACE_STD | |
| __extern_inline double | |
| __NTH (atof (const char *__nptr)) | |
| { | |
| return strtod (__nptr, (char **) NULL); | |
| } | |
| __END_NAMESPACE_STD | |
| #endif /* Optimizing and Inlining. */ | |
| # 32 "/usr/include/x86_64-linux-gnu/bits/stdlib-float.h" 3 4 | |
| # 955 "/usr/include/stdlib.h" 2 3 4 | |
| /* Define some macros helping to catch buffer overflows. */ | |
| #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/stdlib.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 958 "/usr/include/stdlib.h" 3 4 | |
| # 959 "/usr/include/stdlib.h" 3 4 | |
| #endif | |
| # 960 "/usr/include/stdlib.h" 3 4 | |
| #ifdef __LDBL_COMPAT | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/stdlib-ldbl.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 961 "/usr/include/stdlib.h" 3 4 | |
| # 962 "/usr/include/stdlib.h" 3 4 | |
| #endif | |
| # 963 "/usr/include/stdlib.h" 3 4 | |
| #endif /* don't just need malloc and calloc */ | |
| # 965 "/usr/include/stdlib.h" 3 4 | |
| #undef __need_malloc_and_calloc | |
| __END_DECLS | |
| #endif /* stdlib.h */ | |
| # 970 "/usr/include/stdlib.h" 3 4 | |
| # 95 "/usr/local/bin/../include/c++/v1/stdlib.h" 2 3 | |
| #ifdef __cplusplus | |
| extern "C++" { | |
| #undef abs | |
| #undef div | |
| #undef labs | |
| #undef ldiv | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| #undef llabs | |
| #undef lldiv | |
| #endif | |
| # 108 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| // MSVCRT already has the correct prototype in <stdlib.h> if __cplusplus is defined | |
| #if !defined(_LIBCPP_MSVCRT) && !defined(__sun__) && !defined(_AIX) | |
| inline _LIBCPP_INLINE_VISIBILITY long abs( long __x) _NOEXCEPT {return labs(__x);} | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| inline _LIBCPP_INLINE_VISIBILITY long long abs(long long __x) _NOEXCEPT {return llabs(__x);} | |
| #endif // _LIBCPP_HAS_NO_LONG_LONG | |
| # 115 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| inline _LIBCPP_INLINE_VISIBILITY ldiv_t div( long __x, long __y) _NOEXCEPT {return ldiv(__x, __y);} | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| inline _LIBCPP_INLINE_VISIBILITY lldiv_t div(long long __x, long long __y) _NOEXCEPT {return lldiv(__x, __y);} | |
| #endif // _LIBCPP_HAS_NO_LONG_LONG | |
| # 120 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #endif // _LIBCPP_MSVCRT / __sun__ / _AIX | |
| # 121 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| } // extern "C++" | |
| #endif // __cplusplus | |
| # 125 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| #endif // _LIBCPP_STDLIB_H | |
| # 127 "/usr/local/bin/../include/c++/v1/stdlib.h" 3 | |
| # 87 "/usr/local/bin/../include/c++/v1/cstdlib" 2 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 90 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| #endif | |
| # 91 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| #ifdef __GNUC__ | |
| #define _LIBCPP_UNREACHABLE() __builtin_unreachable() | |
| #else | |
| # 95 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| #define _LIBCPP_UNREACHABLE() _VSTD::abort() | |
| #endif | |
| # 97 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| using ::size_t; | |
| using ::div_t; | |
| using ::ldiv_t; | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| using ::lldiv_t; | |
| #endif // _LIBCPP_HAS_NO_LONG_LONG | |
| # 106 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| using ::atof; | |
| using ::atoi; | |
| using ::atol; | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| using ::atoll; | |
| #endif // _LIBCPP_HAS_NO_LONG_LONG | |
| # 112 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| using ::strtod; | |
| using ::strtof; | |
| using ::strtold; | |
| using ::strtol; | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| using ::strtoll; | |
| #endif // _LIBCPP_HAS_NO_LONG_LONG | |
| # 119 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| using ::strtoul; | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| using ::strtoull; | |
| #endif // _LIBCPP_HAS_NO_LONG_LONG | |
| # 123 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| using ::rand; | |
| using ::srand; | |
| using ::calloc; | |
| using ::free; | |
| using ::malloc; | |
| using ::realloc; | |
| using ::abort; | |
| using ::atexit; | |
| using ::exit; | |
| using ::_Exit; | |
| #ifndef _LIBCPP_WINDOWS_STORE_APP | |
| using ::getenv; | |
| using ::system; | |
| #endif | |
| # 137 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| using ::bsearch; | |
| using ::qsort; | |
| using ::abs; | |
| using ::labs; | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| using ::llabs; | |
| #endif // _LIBCPP_HAS_NO_LONG_LONG | |
| # 144 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| using ::div; | |
| using ::ldiv; | |
| #ifndef _LIBCPP_HAS_NO_LONG_LONG | |
| using ::lldiv; | |
| #endif // _LIBCPP_HAS_NO_LONG_LONG | |
| # 149 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| using ::mblen; | |
| using ::mbtowc; | |
| using ::wctomb; | |
| using ::mbstowcs; | |
| using ::wcstombs; | |
| #ifdef _LIBCPP_HAS_QUICK_EXIT | |
| using ::at_quick_exit; | |
| using ::quick_exit; | |
| #endif | |
| # 158 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| #ifdef _LIBCPP_HAS_C11_FEATURES | |
| using ::aligned_alloc; | |
| #endif | |
| # 161 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP_CSTDLIB | |
| # 165 "/usr/local/bin/../include/c++/v1/cstdlib" 3 | |
| # 83 "/usr/local/bin/../include/c++/v1/exception" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 83 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| # 84 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| #if defined(_LIBCPP_ABI_MICROSOFT) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <vcruntime_exception.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 86 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| # 87 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| #endif | |
| # 88 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 91 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| #endif | |
| # 92 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| namespace std // purposefully not using versioning namespace | |
| { | |
| #if !defined(_LIBCPP_ABI_MICROSOFT) | |
| class _LIBCPP_EXCEPTION_ABI exception | |
| { | |
| public: | |
| _LIBCPP_INLINE_VISIBILITY exception() _NOEXCEPT {} | |
| virtual ~exception() _NOEXCEPT; | |
| virtual const char* what() const _NOEXCEPT; | |
| }; | |
| class _LIBCPP_EXCEPTION_ABI bad_exception | |
| : public exception | |
| { | |
| public: | |
| _LIBCPP_INLINE_VISIBILITY bad_exception() _NOEXCEPT {} | |
| virtual ~bad_exception() _NOEXCEPT; | |
| virtual const char* what() const _NOEXCEPT; | |
| }; | |
| #endif // !_LIBCPP_ABI_MICROSOFT | |
| # 114 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| #if _LIBCPP_STD_VER <= 14 \ | |
| || defined(_LIBCPP_ENABLE_CXX17_REMOVED_UNEXPECTED_FUNCTIONS) \ | |
| || defined(_LIBCPP_BUILDING_LIBRARY) | |
| typedef void (*unexpected_handler)(); | |
| _LIBCPP_FUNC_VIS unexpected_handler set_unexpected(unexpected_handler) _NOEXCEPT; | |
| _LIBCPP_FUNC_VIS unexpected_handler get_unexpected() _NOEXCEPT; | |
| _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void unexpected(); | |
| #endif | |
| # 123 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| typedef void (*terminate_handler)(); | |
| _LIBCPP_FUNC_VIS terminate_handler set_terminate(terminate_handler) _NOEXCEPT; | |
| _LIBCPP_FUNC_VIS terminate_handler get_terminate() _NOEXCEPT; | |
| _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void terminate() _NOEXCEPT; | |
| _LIBCPP_FUNC_VIS bool uncaught_exception() _NOEXCEPT; | |
| _LIBCPP_FUNC_VIS _LIBCPP_AVAILABILITY_UNCAUGHT_EXCEPTIONS int uncaught_exceptions() _NOEXCEPT; | |
| class _LIBCPP_TYPE_VIS exception_ptr; | |
| _LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; | |
| _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); | |
| #ifndef _LIBCPP_ABI_MICROSOFT | |
| class _LIBCPP_TYPE_VIS exception_ptr | |
| { | |
| void* __ptr_; | |
| public: | |
| _LIBCPP_INLINE_VISIBILITY exception_ptr() _NOEXCEPT : __ptr_() {} | |
| _LIBCPP_INLINE_VISIBILITY exception_ptr(nullptr_t) _NOEXCEPT : __ptr_() {} | |
| exception_ptr(const exception_ptr&) _NOEXCEPT; | |
| exception_ptr& operator=(const exception_ptr&) _NOEXCEPT; | |
| ~exception_ptr() _NOEXCEPT; | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_EXPLICIT operator bool() const _NOEXCEPT | |
| {return __ptr_ != nullptr;} | |
| friend _LIBCPP_INLINE_VISIBILITY | |
| bool operator==(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT | |
| {return __x.__ptr_ == __y.__ptr_;} | |
| friend _LIBCPP_INLINE_VISIBILITY | |
| bool operator!=(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT | |
| {return !(__x == __y);} | |
| friend _LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; | |
| friend _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr); | |
| }; | |
| template<class _Ep> | |
| exception_ptr | |
| make_exception_ptr(_Ep __e) _NOEXCEPT | |
| { | |
| #ifndef _LIBCPP_NO_EXCEPTIONS | |
| try | |
| { | |
| throw __e; | |
| } | |
| catch (...) | |
| { | |
| return current_exception(); | |
| } | |
| #else | |
| # 179 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| ((void)__e); | |
| _VSTD::abort(); | |
| #endif | |
| # 182 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| } | |
| #else // _LIBCPP_ABI_MICROSOFT | |
| # 185 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| class _LIBCPP_TYPE_VIS exception_ptr | |
| { | |
| #if defined(__clang__) | |
| #pragma clang diagnostic push | |
| #pragma clang diagnostic ignored "-Wunused-private-field" | |
| #endif | |
| # 192 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| void* __ptr1_; | |
| void* __ptr2_; | |
| #if defined(__clang__) | |
| #pragma clang diagnostic pop | |
| #endif | |
| # 197 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| public: | |
| exception_ptr() _NOEXCEPT; | |
| exception_ptr(nullptr_t) _NOEXCEPT; | |
| exception_ptr(const exception_ptr& __other) _NOEXCEPT; | |
| exception_ptr& operator=(const exception_ptr& __other) _NOEXCEPT; | |
| exception_ptr& operator=(nullptr_t) _NOEXCEPT; | |
| ~exception_ptr() _NOEXCEPT; | |
| _LIBCPP_EXPLICIT operator bool() const _NOEXCEPT; | |
| }; | |
| _LIBCPP_FUNC_VIS | |
| bool operator==(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT; | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| bool operator!=(const exception_ptr& __x, const exception_ptr& __y) _NOEXCEPT | |
| {return !(__x == __y);} | |
| _LIBCPP_FUNC_VIS void swap(exception_ptr&, exception_ptr&) _NOEXCEPT; | |
| _LIBCPP_FUNC_VIS exception_ptr __copy_exception_ptr(void *__except, const void* __ptr); | |
| _LIBCPP_FUNC_VIS exception_ptr current_exception() _NOEXCEPT; | |
| _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void rethrow_exception(exception_ptr p); | |
| // This is a built-in template function which automagically extracts the required | |
| // information. | |
| template <class _E> void *__GetExceptionInfo(_E); | |
| template<class _Ep> | |
| exception_ptr | |
| make_exception_ptr(_Ep __e) _NOEXCEPT | |
| { | |
| return __copy_exception_ptr(_VSTD::addressof(__e), __GetExceptionInfo(__e)); | |
| } | |
| #endif // _LIBCPP_ABI_MICROSOFT | |
| # 232 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| // nested_exception | |
| class _LIBCPP_EXCEPTION_ABI nested_exception | |
| { | |
| exception_ptr __ptr_; | |
| public: | |
| nested_exception() _NOEXCEPT; | |
| // nested_exception(const nested_exception&) noexcept = default; | |
| // nested_exception& operator=(const nested_exception&) noexcept = default; | |
| virtual ~nested_exception() _NOEXCEPT; | |
| // access functions | |
| _LIBCPP_NORETURN void rethrow_nested() const; | |
| _LIBCPP_INLINE_VISIBILITY exception_ptr nested_ptr() const _NOEXCEPT {return __ptr_;} | |
| }; | |
| template <class _Tp> | |
| struct __nested | |
| : public _Tp, | |
| public nested_exception | |
| { | |
| _LIBCPP_INLINE_VISIBILITY explicit __nested(const _Tp& __t) : _Tp(__t) {} | |
| }; | |
| #ifndef _LIBCPP_NO_EXCEPTIONS | |
| template <class _Tp, class _Up, bool> | |
| struct __throw_with_nested; | |
| template <class _Tp, class _Up> | |
| struct __throw_with_nested<_Tp, _Up, true> { | |
| _LIBCPP_NORETURN static inline _LIBCPP_ALWAYS_INLINE void | |
| #ifndef _LIBCPP_CXX03_LANG | |
| __do_throw(_Tp&& __t) | |
| #else | |
| # 266 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| __do_throw (_Tp& __t) | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 268 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| { | |
| throw __nested<_Up>(_VSTD::forward<_Tp>(__t)); | |
| } | |
| }; | |
| template <class _Tp, class _Up> | |
| struct __throw_with_nested<_Tp, _Up, false> { | |
| _LIBCPP_NORETURN static inline _LIBCPP_ALWAYS_INLINE void | |
| #ifndef _LIBCPP_CXX03_LANG | |
| __do_throw(_Tp&& __t) | |
| #else | |
| # 279 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| __do_throw (_Tp& __t) | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 281 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| { | |
| throw _VSTD::forward<_Tp>(__t); | |
| } | |
| }; | |
| #endif | |
| # 286 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| template <class _Tp> | |
| _LIBCPP_NORETURN | |
| void | |
| #ifndef _LIBCPP_CXX03_LANG | |
| throw_with_nested(_Tp&& __t) | |
| #else | |
| # 293 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| throw_with_nested (_Tp& __t) | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 295 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| { | |
| #ifndef _LIBCPP_NO_EXCEPTIONS | |
| typedef typename decay<_Tp>::type _Up; | |
| static_assert( is_copy_constructible<_Up>::value, "type thrown must be CopyConstructible"); | |
| __throw_with_nested<_Tp, _Up, | |
| is_class<_Up>::value && | |
| !is_base_of<nested_exception, _Up>::value && | |
| !__libcpp_is_final<_Up>::value>:: | |
| __do_throw(_VSTD::forward<_Tp>(__t)); | |
| #else | |
| # 305 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| ((void)__t); | |
| // FIXME: Make this abort | |
| #endif | |
| # 308 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| } | |
| template <class _From, class _To> | |
| struct __can_dynamic_cast : public _LIBCPP_BOOL_CONSTANT( | |
| is_polymorphic<_From>::value && | |
| (!is_base_of<_To, _From>::value || | |
| is_convertible<const _From*, const _To*>::value)) {}; | |
| template <class _Ep> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| void | |
| rethrow_if_nested(const _Ep& __e, | |
| typename enable_if< __can_dynamic_cast<_Ep, nested_exception>::value>::type* = 0) | |
| { | |
| const nested_exception* __nep = dynamic_cast<const nested_exception*>(_VSTD::addressof(__e)); | |
| if (__nep) | |
| __nep->rethrow_nested(); | |
| } | |
| template <class _Ep> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| void | |
| rethrow_if_nested(const _Ep&, | |
| typename enable_if<!__can_dynamic_cast<_Ep, nested_exception>::value>::type* = 0) | |
| { | |
| } | |
| } // std | |
| #endif // _LIBCPP_EXCEPTION | |
| # 338 "/usr/local/bin/../include/c++/v1/exception" 3 | |
| # 90 "/usr/local/bin/../include/c++/v1/new" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 90 "/usr/local/bin/../include/c++/v1/new" 3 | |
| # 91 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #ifdef _LIBCPP_NO_EXCEPTIONS | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstdlib> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 92 "/usr/local/bin/../include/c++/v1/new" 3 | |
| # 93 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #endif | |
| # 94 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #if defined(_LIBCPP_ABI_MICROSOFT) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <new.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 96 "/usr/local/bin/../include/c++/v1/new" 3 | |
| # 97 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #endif | |
| # 98 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 101 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #endif | |
| # 102 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #if !(defined(_LIBCPP_BUILDING_NEW) || _LIBCPP_STD_VER >= 14 || \ | |
| (defined(__cpp_sized_deallocation) && __cpp_sized_deallocation >= 201309)) | |
| # define _LIBCPP_HAS_NO_SIZED_DEALLOCATION | |
| #endif | |
| # 107 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) && \ | |
| (!(defined(_LIBCPP_BUILDING_NEW) || _LIBCPP_STD_VER > 14 || \ | |
| (defined(__cpp_aligned_new) && __cpp_aligned_new >= 201606))) | |
| # define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION | |
| #endif | |
| # 113 "/usr/local/bin/../include/c++/v1/new" 3 | |
| namespace std // purposefully not using versioning namespace | |
| { | |
| #if !defined(_LIBCPP_ABI_MICROSOFT) | |
| struct _LIBCPP_TYPE_VIS nothrow_t {}; | |
| extern _LIBCPP_FUNC_VIS const nothrow_t nothrow; | |
| class _LIBCPP_EXCEPTION_ABI bad_alloc | |
| : public exception | |
| { | |
| public: | |
| bad_alloc() _NOEXCEPT; | |
| virtual ~bad_alloc() _NOEXCEPT; | |
| virtual const char* what() const _NOEXCEPT; | |
| }; | |
| class _LIBCPP_EXCEPTION_ABI bad_array_new_length | |
| : public bad_alloc | |
| { | |
| public: | |
| bad_array_new_length() _NOEXCEPT; | |
| virtual ~bad_array_new_length() _NOEXCEPT; | |
| virtual const char* what() const _NOEXCEPT; | |
| }; | |
| typedef void (*new_handler)(); | |
| _LIBCPP_FUNC_VIS new_handler set_new_handler(new_handler) _NOEXCEPT; | |
| _LIBCPP_FUNC_VIS new_handler get_new_handler() _NOEXCEPT; | |
| #endif // !_LIBCPP_ABI_MICROSOFT | |
| # 144 "/usr/local/bin/../include/c++/v1/new" 3 | |
| _LIBCPP_NORETURN _LIBCPP_FUNC_VIS void __throw_bad_alloc(); // not in C++ spec | |
| #if defined(_LIBCPP_BUILDING_LIBRARY) || (_LIBCPP_STD_VER > 11) | |
| class _LIBCPP_EXCEPTION_ABI _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH | |
| bad_array_length : public bad_alloc { | |
| public: | |
| bad_array_length() _NOEXCEPT; | |
| virtual ~bad_array_length() _NOEXCEPT; | |
| virtual const char* what() const _NOEXCEPT; | |
| }; | |
| #define _LIBCPP_BAD_ARRAY_LENGTH_DEFINED | |
| #endif // defined(_LIBCPP_BUILDING_NEW) || (_LIBCPP_STD_VER > 11) | |
| # 160 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) || _LIBCPP_STD_VER > 14 | |
| #ifndef _LIBCPP_CXX03_LANG | |
| enum class _LIBCPP_ENUM_VIS align_val_t : size_t { }; | |
| #else | |
| # 165 "/usr/local/bin/../include/c++/v1/new" 3 | |
| enum align_val_t { __zero = 0, __max = (size_t)-1 }; | |
| #endif | |
| # 167 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #endif | |
| # 168 "/usr/local/bin/../include/c++/v1/new" 3 | |
| } // std | |
| #if defined(_LIBCPP_CXX03_LANG) | |
| #define _THROW_BAD_ALLOC throw(std::bad_alloc) | |
| #else | |
| # 174 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #define _THROW_BAD_ALLOC | |
| #endif | |
| # 176 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #if !defined(_LIBCPP_ABI_MICROSOFT) | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz) _THROW_BAD_ALLOC; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p) _NOEXCEPT; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, const std::nothrow_t&) _NOEXCEPT; | |
| #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz) _NOEXCEPT; | |
| #endif | |
| # 186 "/usr/local/bin/../include/c++/v1/new" 3 | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz) _THROW_BAD_ALLOC; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, const std::nothrow_t&) _NOEXCEPT _NOALIAS; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p) _NOEXCEPT; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, const std::nothrow_t&) _NOEXCEPT; | |
| #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete[](void* __p, std::size_t __sz) _NOEXCEPT; | |
| #endif | |
| # 194 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #ifndef _LIBCPP_HAS_NO_ALIGNED_ALLOCATION | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz, std::align_val_t, const std::nothrow_t&) _NOEXCEPT _NOALIAS; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t) _NOEXCEPT; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete(void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT; | |
| #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete(void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; | |
| #endif | |
| # 203 "/usr/local/bin/../include/c++/v1/new" 3 | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, std::align_val_t) _THROW_BAD_ALLOC; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new[](std::size_t __sz, std::align_val_t, const std::nothrow_t&) _NOEXCEPT _NOALIAS; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t) _NOEXCEPT; | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS void operator delete[](void* __p, std::align_val_t, const std::nothrow_t&) _NOEXCEPT; | |
| #ifndef _LIBCPP_HAS_NO_SIZED_DEALLOCATION | |
| _LIBCPP_OVERRIDABLE_FUNC_VIS _LIBCPP_AVAILABILITY_SIZED_NEW_DELETE void operator delete[](void* __p, std::size_t __sz, std::align_val_t) _NOEXCEPT; | |
| #endif | |
| # 211 "/usr/local/bin/../include/c++/v1/new" 3 | |
| #endif | |
| # 212 "/usr/local/bin/../include/c++/v1/new" 3 | |
| inline _LIBCPP_INLINE_VISIBILITY void* operator new (std::size_t, void* __p) _NOEXCEPT {return __p;} | |
| inline _LIBCPP_INLINE_VISIBILITY void* operator new[](std::size_t, void* __p) _NOEXCEPT {return __p;} | |
| inline _LIBCPP_INLINE_VISIBILITY void operator delete (void*, void*) _NOEXCEPT {} | |
| inline _LIBCPP_INLINE_VISIBILITY void operator delete[](void*, void*) _NOEXCEPT {} | |
| #endif // !_LIBCPP_ABI_MICROSOFT | |
| # 219 "/usr/local/bin/../include/c++/v1/new" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| inline _LIBCPP_INLINE_VISIBILITY void *__allocate(size_t __size) { | |
| #ifdef _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE | |
| return ::operator new(__size); | |
| #else | |
| # 226 "/usr/local/bin/../include/c++/v1/new" 3 | |
| return __builtin_operator_new(__size); | |
| #endif | |
| # 228 "/usr/local/bin/../include/c++/v1/new" 3 | |
| } | |
| inline _LIBCPP_INLINE_VISIBILITY void __libcpp_deallocate(void *__ptr) { | |
| #ifdef _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE | |
| ::operator delete(__ptr); | |
| #else | |
| # 234 "/usr/local/bin/../include/c++/v1/new" 3 | |
| __builtin_operator_delete(__ptr); | |
| #endif | |
| # 236 "/usr/local/bin/../include/c++/v1/new" 3 | |
| } | |
| #ifdef _LIBCPP_BAD_ARRAY_LENGTH_DEFINED | |
| _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE | |
| #ifndef _LIBCPP_NO_EXCEPTIONS | |
| _LIBCPP_AVAILABILITY_BAD_ARRAY_LENGTH | |
| #endif | |
| # 243 "/usr/local/bin/../include/c++/v1/new" 3 | |
| void __throw_bad_array_length() | |
| { | |
| #ifndef _LIBCPP_NO_EXCEPTIONS | |
| throw bad_array_length(); | |
| #else | |
| # 248 "/usr/local/bin/../include/c++/v1/new" 3 | |
| _VSTD::abort(); | |
| #endif | |
| # 250 "/usr/local/bin/../include/c++/v1/new" 3 | |
| } | |
| #endif | |
| # 252 "/usr/local/bin/../include/c++/v1/new" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP_NEW | |
| # 256 "/usr/local/bin/../include/c++/v1/new" 3 | |
| # 51 "/usr/local/bin/../include/c++/v1/experimental/coroutine" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 51 "/usr/local/bin/../include/c++/v1/experimental/coroutine" 3 | |
| # 52 "/usr/local/bin/../include/c++/v1/experimental/coroutine" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <functional> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 52 "/usr/local/bin/../include/c++/v1/experimental/coroutine" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/functional" 1 3 | |
| // -*- C++ -*- | |
| //===------------------------ functional ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_FUNCTIONAL | |
| #define _LIBCPP_FUNCTIONAL | |
| /* | |
| functional synopsis | |
| namespace std | |
| { | |
| template <class Arg, class Result> | |
| struct unary_function | |
| { | |
| typedef Arg argument_type; | |
| typedef Result result_type; | |
| }; | |
| template <class Arg1, class Arg2, class Result> | |
| struct binary_function | |
| { | |
| typedef Arg1 first_argument_type; | |
| typedef Arg2 second_argument_type; | |
| typedef Result result_type; | |
| }; | |
| template <class T> | |
| class reference_wrapper | |
| : public unary_function<T1, R> // if wrapping a unary functor | |
| : public binary_function<T1, T2, R> // if wraping a binary functor | |
| { | |
| public: | |
| // types | |
| typedef T type; | |
| typedef see below result_type; // Not always defined | |
| // construct/copy/destroy | |
| reference_wrapper(T&) noexcept; | |
| reference_wrapper(T&&) = delete; // do not bind to temps | |
| reference_wrapper(const reference_wrapper<T>& x) noexcept; | |
| // assignment | |
| reference_wrapper& operator=(const reference_wrapper<T>& x) noexcept; | |
| // access | |
| operator T& () const noexcept; | |
| T& get() const noexcept; | |
| // invoke | |
| template <class... ArgTypes> | |
| typename result_of<T&(ArgTypes&&...)>::type | |
| operator() (ArgTypes&&...) const; | |
| }; | |
| template <class T> reference_wrapper<T> ref(T& t) noexcept; | |
| template <class T> void ref(const T&& t) = delete; | |
| template <class T> reference_wrapper<T> ref(reference_wrapper<T>t) noexcept; | |
| template <class T> reference_wrapper<const T> cref(const T& t) noexcept; | |
| template <class T> void cref(const T&& t) = delete; | |
| template <class T> reference_wrapper<const T> cref(reference_wrapper<T> t) noexcept; | |
| template <class T> // <class T=void> in C++14 | |
| struct plus : binary_function<T, T, T> | |
| { | |
| T operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct minus : binary_function<T, T, T> | |
| { | |
| T operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct multiplies : binary_function<T, T, T> | |
| { | |
| T operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct divides : binary_function<T, T, T> | |
| { | |
| T operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct modulus : binary_function<T, T, T> | |
| { | |
| T operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct negate : unary_function<T, T> | |
| { | |
| T operator()(const T& x) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct equal_to : binary_function<T, T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct not_equal_to : binary_function<T, T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct greater : binary_function<T, T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct less : binary_function<T, T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct greater_equal : binary_function<T, T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct less_equal : binary_function<T, T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct logical_and : binary_function<T, T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct logical_or : binary_function<T, T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct logical_not : unary_function<T, bool> | |
| { | |
| bool operator()(const T& x) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct bit_and : unary_function<T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct bit_or : unary_function<T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T> // <class T=void> in C++14 | |
| struct bit_xor : unary_function<T, bool> | |
| { | |
| bool operator()(const T& x, const T& y) const; | |
| }; | |
| template <class T=void> // C++14 | |
| struct bit_xor : unary_function<T, bool> | |
| { | |
| bool operator()(const T& x) const; | |
| }; | |
| template <class Predicate> | |
| class unary_negate | |
| : public unary_function<typename Predicate::argument_type, bool> | |
| { | |
| public: | |
| explicit unary_negate(const Predicate& pred); | |
| bool operator()(const typename Predicate::argument_type& x) const; | |
| }; | |
| template <class Predicate> unary_negate<Predicate> not1(const Predicate& pred); | |
| template <class Predicate> | |
| class binary_negate | |
| : public binary_function<typename Predicate::first_argument_type, | |
| typename Predicate::second_argument_type, | |
| bool> | |
| { | |
| public: | |
| explicit binary_negate(const Predicate& pred); | |
| bool operator()(const typename Predicate::first_argument_type& x, | |
| const typename Predicate::second_argument_type& y) const; | |
| }; | |
| template <class Predicate> binary_negate<Predicate> not2(const Predicate& pred); | |
| template <class F> unspecified not_fn(F&& f); // C++17 | |
| template<class T> struct is_bind_expression; | |
| template<class T> struct is_placeholder; | |
| // See C++14 20.9.9, Function object binders | |
| template <class T> constexpr bool is_bind_expression_v | |
| = is_bind_expression<T>::value; // C++17 | |
| template <class T> constexpr int is_placeholder_v | |
| = is_placeholder<T>::value; // C++17 | |
| template<class Fn, class... BoundArgs> | |
| unspecified bind(Fn&&, BoundArgs&&...); | |
| template<class R, class Fn, class... BoundArgs> | |
| unspecified bind(Fn&&, BoundArgs&&...); | |
| namespace placeholders { | |
| // M is the implementation-defined number of placeholders | |
| extern unspecified _1; | |
| extern unspecified _2; | |
| . | |
| . | |
| . | |
| extern unspecified _Mp; | |
| } | |
| template <class Operation> | |
| class binder1st // deprecated in C++11, removed in C++17 | |
| : public unary_function<typename Operation::second_argument_type, | |
| typename Operation::result_type> | |
| { | |
| protected: | |
| Operation op; | |
| typename Operation::first_argument_type value; | |
| public: | |
| binder1st(const Operation& x, const typename Operation::first_argument_type y); | |
| typename Operation::result_type operator()( typename Operation::second_argument_type& x) const; | |
| typename Operation::result_type operator()(const typename Operation::second_argument_type& x) const; | |
| }; | |
| template <class Operation, class T> | |
| binder1st<Operation> bind1st(const Operation& op, const T& x); // deprecated in C++11, removed in C++17 | |
| template <class Operation> | |
| class binder2nd // deprecated in C++11, removed in C++17 | |
| : public unary_function<typename Operation::first_argument_type, | |
| typename Operation::result_type> | |
| { | |
| protected: | |
| Operation op; | |
| typename Operation::second_argument_type value; | |
| public: | |
| binder2nd(const Operation& x, const typename Operation::second_argument_type y); | |
| typename Operation::result_type operator()( typename Operation::first_argument_type& x) const; | |
| typename Operation::result_type operator()(const typename Operation::first_argument_type& x) const; | |
| }; | |
| template <class Operation, class T> | |
| binder2nd<Operation> bind2nd(const Operation& op, const T& x); // deprecated in C++11, removed in C++17 | |
| template <class Arg, class Result> // deprecated in C++11, removed in C++17 | |
| class pointer_to_unary_function : public unary_function<Arg, Result> | |
| { | |
| public: | |
| explicit pointer_to_unary_function(Result (*f)(Arg)); | |
| Result operator()(Arg x) const; | |
| }; | |
| template <class Arg, class Result> | |
| pointer_to_unary_function<Arg,Result> ptr_fun(Result (*f)(Arg)); // deprecated in C++11, removed in C++17 | |
| template <class Arg1, class Arg2, class Result> // deprecated in C++11, removed in C++17 | |
| class pointer_to_binary_function : public binary_function<Arg1, Arg2, Result> | |
| { | |
| public: | |
| explicit pointer_to_binary_function(Result (*f)(Arg1, Arg2)); | |
| Result operator()(Arg1 x, Arg2 y) const; | |
| }; | |
| template <class Arg1, class Arg2, class Result> | |
| pointer_to_binary_function<Arg1,Arg2,Result> ptr_fun(Result (*f)(Arg1,Arg2)); // deprecated in C++11, removed in C++17 | |
| template<class S, class T> // deprecated in C++11, removed in C++17 | |
| class mem_fun_t : public unary_function<T*, S> | |
| { | |
| public: | |
| explicit mem_fun_t(S (T::*p)()); | |
| S operator()(T* p) const; | |
| }; | |
| template<class S, class T, class A> | |
| class mem_fun1_t : public binary_function<T*, A, S> // deprecated in C++11, removed in C++17 | |
| { | |
| public: | |
| explicit mem_fun1_t(S (T::*p)(A)); | |
| S operator()(T* p, A x) const; | |
| }; | |
| template<class S, class T> mem_fun_t<S,T> mem_fun(S (T::*f)()); // deprecated in C++11, removed in C++17 | |
| template<class S, class T, class A> mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A)); // deprecated in C++11, removed in C++17 | |
| template<class S, class T> | |
| class mem_fun_ref_t : public unary_function<T, S> // deprecated in C++11, removed in C++17 | |
| { | |
| public: | |
| explicit mem_fun_ref_t(S (T::*p)()); | |
| S operator()(T& p) const; | |
| }; | |
| template<class S, class T, class A> | |
| class mem_fun1_ref_t : public binary_function<T, A, S> // deprecated in C++11, removed in C++17 | |
| { | |
| public: | |
| explicit mem_fun1_ref_t(S (T::*p)(A)); | |
| S operator()(T& p, A x) const; | |
| }; | |
| template<class S, class T> mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)()); // deprecated in C++11, removed in C++17 | |
| template<class S, class T, class A> mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A)); // deprecated in C++11, removed in C++17 | |
| template <class S, class T> | |
| class const_mem_fun_t : public unary_function<const T*, S> // deprecated in C++11, removed in C++17 | |
| { | |
| public: | |
| explicit const_mem_fun_t(S (T::*p)() const); | |
| S operator()(const T* p) const; | |
| }; | |
| template <class S, class T, class A> | |
| class const_mem_fun1_t : public binary_function<const T*, A, S> // deprecated in C++11, removed in C++17 | |
| { | |
| public: | |
| explicit const_mem_fun1_t(S (T::*p)(A) const); | |
| S operator()(const T* p, A x) const; | |
| }; | |
| template <class S, class T> const_mem_fun_t<S,T> mem_fun(S (T::*f)() const); // deprecated in C++11, removed in C++17 | |
| template <class S, class T, class A> const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const); // deprecated in C++11, removed in C++17 | |
| template <class S, class T> | |
| class const_mem_fun_ref_t : public unary_function<T, S> // deprecated in C++11, removed in C++17 | |
| { | |
| public: | |
| explicit const_mem_fun_ref_t(S (T::*p)() const); | |
| S operator()(const T& p) const; | |
| }; | |
| template <class S, class T, class A> | |
| class const_mem_fun1_ref_t : public binary_function<T, A, S> // deprecated in C++11, removed in C++17 | |
| { | |
| public: | |
| explicit const_mem_fun1_ref_t(S (T::*p)(A) const); | |
| S operator()(const T& p, A x) const; | |
| }; | |
| template <class S, class T> const_mem_fun_ref_t<S,T> mem_fun_ref(S (T::*f)() const); // deprecated in C++11, removed in C++17 | |
| template <class S, class T, class A> const_mem_fun1_ref_t<S,T,A> mem_fun_ref(S (T::*f)(A) const); // deprecated in C++11, removed in C++17 | |
| template<class R, class T> unspecified mem_fn(R T::*); | |
| class bad_function_call | |
| : public exception | |
| { | |
| }; | |
| template<class> class function; // undefined | |
| template<class R, class... ArgTypes> | |
| class function<R(ArgTypes...)> | |
| : public unary_function<T1, R> // iff sizeof...(ArgTypes) == 1 and | |
| // ArgTypes contains T1 | |
| : public binary_function<T1, T2, R> // iff sizeof...(ArgTypes) == 2 and | |
| // ArgTypes contains T1 and T2 | |
| { | |
| public: | |
| typedef R result_type; | |
| // construct/copy/destroy: | |
| function() noexcept; | |
| function(nullptr_t) noexcept; | |
| function(const function&); | |
| function(function&&) noexcept; | |
| template<class F> | |
| function(F); | |
| template<Allocator Alloc> | |
| function(allocator_arg_t, const Alloc&) noexcept; // removed in C++17 | |
| template<Allocator Alloc> | |
| function(allocator_arg_t, const Alloc&, nullptr_t) noexcept; // removed in C++17 | |
| template<Allocator Alloc> | |
| function(allocator_arg_t, const Alloc&, const function&); // removed in C++17 | |
| template<Allocator Alloc> | |
| function(allocator_arg_t, const Alloc&, function&&); // removed in C++17 | |
| template<class F, Allocator Alloc> | |
| function(allocator_arg_t, const Alloc&, F); // removed in C++17 | |
| function& operator=(const function&); | |
| function& operator=(function&&) noexcept; | |
| function& operator=(nullptr_t) noexcept; | |
| template<class F> | |
| function& operator=(F&&); | |
| template<class F> | |
| function& operator=(reference_wrapper<F>) noexcept; | |
| ~function(); | |
| // function modifiers: | |
| void swap(function&) noexcept; | |
| template<class F, class Alloc> | |
| void assign(F&&, const Alloc&); // Removed in C++17 | |
| // function capacity: | |
| explicit operator bool() const noexcept; | |
| // function invocation: | |
| R operator()(ArgTypes...) const; | |
| // function target access: | |
| const std::type_info& target_type() const noexcept; | |
| template <typename T> T* target() noexcept; | |
| template <typename T> const T* target() const noexcept; | |
| }; | |
| // Null pointer comparisons: | |
| template <class R, class ... ArgTypes> | |
| bool operator==(const function<R(ArgTypes...)>&, nullptr_t) noexcept; | |
| template <class R, class ... ArgTypes> | |
| bool operator==(nullptr_t, const function<R(ArgTypes...)>&) noexcept; | |
| template <class R, class ... ArgTypes> | |
| bool operator!=(const function<R(ArgTypes...)>&, nullptr_t) noexcept; | |
| template <class R, class ... ArgTypes> | |
| bool operator!=(nullptr_t, const function<R(ArgTypes...)>&) noexcept; | |
| // specialized algorithms: | |
| template <class R, class ... ArgTypes> | |
| void swap(function<R(ArgTypes...)>&, function<R(ArgTypes...)>&) noexcept; | |
| template <class T> struct hash; | |
| template <> struct hash<bool>; | |
| template <> struct hash<char>; | |
| template <> struct hash<signed char>; | |
| template <> struct hash<unsigned char>; | |
| template <> struct hash<char16_t>; | |
| template <> struct hash<char32_t>; | |
| template <> struct hash<wchar_t>; | |
| template <> struct hash<short>; | |
| template <> struct hash<unsigned short>; | |
| template <> struct hash<int>; | |
| template <> struct hash<unsigned int>; | |
| template <> struct hash<long>; | |
| template <> struct hash<long long>; | |
| template <> struct hash<unsigned long>; | |
| template <> struct hash<unsigned long long>; | |
| template <> struct hash<float>; | |
| template <> struct hash<double>; | |
| template <> struct hash<long double>; | |
| template<class T> struct hash<T*>; | |
| template <> struct hash<nullptr_t>; // C++17 | |
| } // std | |
| POLICY: For non-variadic implementations, the number of arguments is limited | |
| to 3. It is hoped that the need for non-variadic implementations | |
| will be minimal. | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 483 "/usr/local/bin/../include/c++/v1/functional" 3 | |
| # 484 "/usr/local/bin/../include/c++/v1/functional" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 484 "/usr/local/bin/../include/c++/v1/functional" 3 | |
| # 485 "/usr/local/bin/../include/c++/v1/functional" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <typeinfo> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 485 "/usr/local/bin/../include/c++/v1/functional" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/typeinfo" 1 3 | |
| // -*- C++ -*- | |
| //===-------------------------- typeinfo ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef __LIBCPP_TYPEINFO | |
| #define __LIBCPP_TYPEINFO | |
| /* | |
| typeinfo synopsis | |
| namespace std { | |
| class type_info | |
| { | |
| public: | |
| virtual ~type_info(); | |
| bool operator==(const type_info& rhs) const noexcept; | |
| bool operator!=(const type_info& rhs) const noexcept; | |
| bool before(const type_info& rhs) const noexcept; | |
| size_t hash_code() const noexcept; | |
| const char* name() const noexcept; | |
| type_info(const type_info& rhs) = delete; | |
| type_info& operator=(const type_info& rhs) = delete; | |
| }; | |
| class bad_cast | |
| : public exception | |
| { | |
| public: | |
| bad_cast() noexcept; | |
| bad_cast(const bad_cast&) noexcept; | |
| bad_cast& operator=(const bad_cast&) noexcept; | |
| virtual const char* what() const noexcept; | |
| }; | |
| class bad_typeid | |
| : public exception | |
| { | |
| public: | |
| bad_typeid() noexcept; | |
| bad_typeid(const bad_typeid&) noexcept; | |
| bad_typeid& operator=(const bad_typeid&) noexcept; | |
| virtual const char* what() const noexcept; | |
| }; | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 60 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| # 61 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <exception> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 61 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| # 62 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 62 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| # 63 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstdint> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 63 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/cstdint" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- cstdint ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_CSTDINT | |
| #define _LIBCPP_CSTDINT | |
| /* | |
| cstdint synopsis | |
| Macros: | |
| INT8_MIN | |
| INT16_MIN | |
| INT32_MIN | |
| INT64_MIN | |
| INT8_MAX | |
| INT16_MAX | |
| INT32_MAX | |
| INT64_MAX | |
| UINT8_MAX | |
| UINT16_MAX | |
| UINT32_MAX | |
| UINT64_MAX | |
| INT_LEAST8_MIN | |
| INT_LEAST16_MIN | |
| INT_LEAST32_MIN | |
| INT_LEAST64_MIN | |
| INT_LEAST8_MAX | |
| INT_LEAST16_MAX | |
| INT_LEAST32_MAX | |
| INT_LEAST64_MAX | |
| UINT_LEAST8_MAX | |
| UINT_LEAST16_MAX | |
| UINT_LEAST32_MAX | |
| UINT_LEAST64_MAX | |
| INT_FAST8_MIN | |
| INT_FAST16_MIN | |
| INT_FAST32_MIN | |
| INT_FAST64_MIN | |
| INT_FAST8_MAX | |
| INT_FAST16_MAX | |
| INT_FAST32_MAX | |
| INT_FAST64_MAX | |
| UINT_FAST8_MAX | |
| UINT_FAST16_MAX | |
| UINT_FAST32_MAX | |
| UINT_FAST64_MAX | |
| INTPTR_MIN | |
| INTPTR_MAX | |
| UINTPTR_MAX | |
| INTMAX_MIN | |
| INTMAX_MAX | |
| UINTMAX_MAX | |
| PTRDIFF_MIN | |
| PTRDIFF_MAX | |
| SIG_ATOMIC_MIN | |
| SIG_ATOMIC_MAX | |
| SIZE_MAX | |
| WCHAR_MIN | |
| WCHAR_MAX | |
| WINT_MIN | |
| WINT_MAX | |
| INT8_C(value) | |
| INT16_C(value) | |
| INT32_C(value) | |
| INT64_C(value) | |
| UINT8_C(value) | |
| UINT16_C(value) | |
| UINT32_C(value) | |
| UINT64_C(value) | |
| INTMAX_C(value) | |
| UINTMAX_C(value) | |
| namespace std | |
| { | |
| Types: | |
| int8_t | |
| int16_t | |
| int32_t | |
| int64_t | |
| uint8_t | |
| uint16_t | |
| uint32_t | |
| uint64_t | |
| int_least8_t | |
| int_least16_t | |
| int_least32_t | |
| int_least64_t | |
| uint_least8_t | |
| uint_least16_t | |
| uint_least32_t | |
| uint_least64_t | |
| int_fast8_t | |
| int_fast16_t | |
| int_fast32_t | |
| int_fast64_t | |
| uint_fast8_t | |
| uint_fast16_t | |
| uint_fast32_t | |
| uint_fast64_t | |
| intptr_t | |
| uintptr_t | |
| intmax_t | |
| uintmax_t | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 144 "/usr/local/bin/../include/c++/v1/cstdint" 3 | |
| # 145 "/usr/local/bin/../include/c++/v1/cstdint" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <stdint.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 145 "/usr/local/bin/../include/c++/v1/cstdint" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/stdint.h" 1 3 | |
| // -*- C++ -*- | |
| //===---------------------------- stdint.h --------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_STDINT_H | |
| #define _LIBCPP_STDINT_H | |
| /* | |
| stdint.h synopsis | |
| Macros: | |
| INT8_MIN | |
| INT16_MIN | |
| INT32_MIN | |
| INT64_MIN | |
| INT8_MAX | |
| INT16_MAX | |
| INT32_MAX | |
| INT64_MAX | |
| UINT8_MAX | |
| UINT16_MAX | |
| UINT32_MAX | |
| UINT64_MAX | |
| INT_LEAST8_MIN | |
| INT_LEAST16_MIN | |
| INT_LEAST32_MIN | |
| INT_LEAST64_MIN | |
| INT_LEAST8_MAX | |
| INT_LEAST16_MAX | |
| INT_LEAST32_MAX | |
| INT_LEAST64_MAX | |
| UINT_LEAST8_MAX | |
| UINT_LEAST16_MAX | |
| UINT_LEAST32_MAX | |
| UINT_LEAST64_MAX | |
| INT_FAST8_MIN | |
| INT_FAST16_MIN | |
| INT_FAST32_MIN | |
| INT_FAST64_MIN | |
| INT_FAST8_MAX | |
| INT_FAST16_MAX | |
| INT_FAST32_MAX | |
| INT_FAST64_MAX | |
| UINT_FAST8_MAX | |
| UINT_FAST16_MAX | |
| UINT_FAST32_MAX | |
| UINT_FAST64_MAX | |
| INTPTR_MIN | |
| INTPTR_MAX | |
| UINTPTR_MAX | |
| INTMAX_MIN | |
| INTMAX_MAX | |
| UINTMAX_MAX | |
| PTRDIFF_MIN | |
| PTRDIFF_MAX | |
| SIG_ATOMIC_MIN | |
| SIG_ATOMIC_MAX | |
| SIZE_MAX | |
| WCHAR_MIN | |
| WCHAR_MAX | |
| WINT_MIN | |
| WINT_MAX | |
| INT8_C(value) | |
| INT16_C(value) | |
| INT32_C(value) | |
| INT64_C(value) | |
| UINT8_C(value) | |
| UINT16_C(value) | |
| UINT32_C(value) | |
| UINT64_C(value) | |
| INTMAX_C(value) | |
| UINTMAX_C(value) | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 102 "/usr/local/bin/../include/c++/v1/stdint.h" 3 | |
| # 103 "/usr/local/bin/../include/c++/v1/stdint.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 106 "/usr/local/bin/../include/c++/v1/stdint.h" 3 | |
| #endif | |
| # 107 "/usr/local/bin/../include/c++/v1/stdint.h" 3 | |
| /* C99 stdlib (e.g. glibc < 2.18) does not provide macros needed | |
| for C++11 unless __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS | |
| are defined | |
| */ | |
| #if defined(__cplusplus) && !defined(__STDC_LIMIT_MACROS) | |
| # define __STDC_LIMIT_MACROS | |
| #endif | |
| # 115 "/usr/local/bin/../include/c++/v1/stdint.h" 3 | |
| #if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) | |
| # define __STDC_CONSTANT_MACROS | |
| #endif | |
| # 118 "/usr/local/bin/../include/c++/v1/stdint.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stdint.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 119 "/usr/local/bin/../include/c++/v1/stdint.h" 3 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/stdint.h" 1 3 | |
| /*===---- stdint.h - Standard header for sized integer types --------------===*\ | |
| * | |
| * Copyright (c) 2009 Chris Lattner | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| \*===----------------------------------------------------------------------===*/ | |
| #ifndef __CLANG_STDINT_H | |
| #define __CLANG_STDINT_H | |
| /* If we're hosted, fall back to the system's stdint.h, which might have | |
| * additional definitions. | |
| */ | |
| #if __STDC_HOSTED__ && (1)/*__has_include_next(<stdint.h>)*/ | |
| // C99 7.18.3 Limits of other integer types | |
| // | |
| // Footnote 219, 220: C++ implementations should define these macros only when | |
| // __STDC_LIMIT_MACROS is defined before <stdint.h> is included. | |
| // | |
| // Footnote 222: C++ implementations should define these macros only when | |
| // __STDC_CONSTANT_MACROS is defined before <stdint.h> is included. | |
| // | |
| // C++11 [cstdint.syn]p2: | |
| // | |
| // The macros defined by <cstdint> are provided unconditionally. In particular, | |
| // the symbols __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS (mentioned in | |
| // footnotes 219, 220, and 222 in the C standard) play no role in C++. | |
| // | |
| // C11 removed the problematic footnotes. | |
| // | |
| // Work around this inconsistency by always defining those macros in C++ mode, | |
| // so that a C library implementation which follows the C99 standard can be | |
| // used in C++. | |
| # ifdef __cplusplus | |
| # if !defined(__STDC_LIMIT_MACROS) | |
| # define __STDC_LIMIT_MACROS | |
| # define __STDC_LIMIT_MACROS_DEFINED_BY_CLANG | |
| # endif | |
| # 57 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # if !defined(__STDC_CONSTANT_MACROS) | |
| # define __STDC_CONSTANT_MACROS | |
| # define __STDC_CONSTANT_MACROS_DEFINED_BY_CLANG | |
| # endif | |
| # 61 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # endif | |
| # 62 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include_next <stdint.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 63 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # 1 "/usr/include/stdint.h" 1 3 4 | |
| /* Copyright (C) 1997-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * ISO C99: 7.18 Integer types <stdint.h> | |
| */ | |
| #ifndef _STDINT_H | |
| #define _STDINT_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 25 "/usr/include/stdint.h" 3 4 | |
| # 26 "/usr/include/stdint.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/wchar.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 26 "/usr/include/stdint.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 1 3 4 | |
| /* wchar_t type related definitions. | |
| Copyright (C) 2000-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| #ifndef _BITS_WCHAR_H | |
| #define _BITS_WCHAR_H 1 | |
| /* The fallback definitions, for when __WCHAR_MAX__ or __WCHAR_MIN__ | |
| are not defined, give the right value and type as long as both int | |
| and wchar_t are 32-bit types. Adding L'\0' to a constant value | |
| ensures that the type is correct; it is necessary to use (L'\0' + | |
| 0) rather than just L'\0' so that the type in C++ is the promoted | |
| version of wchar_t rather than the distinct wchar_t type itself. | |
| Because wchar_t in preprocessor #if expressions is treated as | |
| intmax_t or uintmax_t, the expression (L'\0' - 1) would have the | |
| wrong value for WCHAR_MAX in such expressions and so cannot be used | |
| to define __WCHAR_MAX in the unsigned case. */ | |
| #ifdef __WCHAR_MAX__ | |
| # define __WCHAR_MAX __WCHAR_MAX__ | |
| #elif L'\0' - 1 > 0 | |
| # 36 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 3 4 | |
| # define __WCHAR_MAX (0xffffffffu + L'\0') | |
| #else | |
| # 38 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 3 4 | |
| # define __WCHAR_MAX (0x7fffffff + L'\0') | |
| #endif | |
| # 40 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 3 4 | |
| #ifdef __WCHAR_MIN__ | |
| # define __WCHAR_MIN __WCHAR_MIN__ | |
| #elif L'\0' - 1 > 0 | |
| # 44 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 3 4 | |
| # define __WCHAR_MIN (L'\0' + 0) | |
| #else | |
| # 46 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 3 4 | |
| # define __WCHAR_MIN (-__WCHAR_MAX - 1) | |
| #endif | |
| # 48 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 3 4 | |
| #endif /* bits/wchar.h */ | |
| # 50 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 3 4 | |
| # 27 "/usr/include/stdint.h" 2 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/wordsize.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/include/stdint.h" 3 4 | |
| # 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4 | |
| /* Determine the wordsize from the preprocessor defines. */ | |
| #if defined __x86_64__ && !defined __ILP32__ | |
| # define __WORDSIZE 64 | |
| #else | |
| # 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # define __WORDSIZE 32 | |
| #endif | |
| # 8 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| #ifdef __x86_64__ | |
| # define __WORDSIZE_TIME64_COMPAT32 1 | |
| /* Both x86-64 and x32 use the 64-bit system call interface. */ | |
| # define __SYSCALL_WORDSIZE 64 | |
| #endif | |
| # 14 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4 | |
| # 28 "/usr/include/stdint.h" 2 3 4 | |
| /* Exact integral types. */ | |
| /* Signed. */ | |
| /* There is some amount of overlap with <sys/types.h> as known by inet code */ | |
| #ifndef __int8_t_defined | |
| # define __int8_t_defined | |
| typedef signed char int8_t; | |
| typedef short int int16_t; | |
| typedef int int32_t; | |
| # if __WORDSIZE == 64 | |
| typedef long int int64_t; | |
| # else | |
| # 42 "/usr/include/stdint.h" 3 4 | |
| __extension__ | |
| typedef long long int int64_t; | |
| # endif | |
| # 45 "/usr/include/stdint.h" 3 4 | |
| #endif | |
| # 46 "/usr/include/stdint.h" 3 4 | |
| /* Unsigned. */ | |
| typedef unsigned char uint8_t; | |
| typedef unsigned short int uint16_t; | |
| #ifndef __uint32_t_defined | |
| typedef unsigned int uint32_t; | |
| # define __uint32_t_defined | |
| #endif | |
| # 54 "/usr/include/stdint.h" 3 4 | |
| #if __WORDSIZE == 64 | |
| typedef unsigned long int uint64_t; | |
| #else | |
| # 57 "/usr/include/stdint.h" 3 4 | |
| __extension__ | |
| typedef unsigned long long int uint64_t; | |
| #endif | |
| # 60 "/usr/include/stdint.h" 3 4 | |
| /* Small types. */ | |
| /* Signed. */ | |
| typedef signed char int_least8_t; | |
| typedef short int int_least16_t; | |
| typedef int int_least32_t; | |
| #if __WORDSIZE == 64 | |
| typedef long int int_least64_t; | |
| #else | |
| # 71 "/usr/include/stdint.h" 3 4 | |
| __extension__ | |
| typedef long long int int_least64_t; | |
| #endif | |
| # 74 "/usr/include/stdint.h" 3 4 | |
| /* Unsigned. */ | |
| typedef unsigned char uint_least8_t; | |
| typedef unsigned short int uint_least16_t; | |
| typedef unsigned int uint_least32_t; | |
| #if __WORDSIZE == 64 | |
| typedef unsigned long int uint_least64_t; | |
| #else | |
| # 82 "/usr/include/stdint.h" 3 4 | |
| __extension__ | |
| typedef unsigned long long int uint_least64_t; | |
| #endif | |
| # 85 "/usr/include/stdint.h" 3 4 | |
| /* Fast types. */ | |
| /* Signed. */ | |
| typedef signed char int_fast8_t; | |
| #if __WORDSIZE == 64 | |
| typedef long int int_fast16_t; | |
| typedef long int int_fast32_t; | |
| typedef long int int_fast64_t; | |
| #else | |
| # 96 "/usr/include/stdint.h" 3 4 | |
| typedef int int_fast16_t; | |
| typedef int int_fast32_t; | |
| __extension__ | |
| typedef long long int int_fast64_t; | |
| #endif | |
| # 101 "/usr/include/stdint.h" 3 4 | |
| /* Unsigned. */ | |
| typedef unsigned char uint_fast8_t; | |
| #if __WORDSIZE == 64 | |
| typedef unsigned long int uint_fast16_t; | |
| typedef unsigned long int uint_fast32_t; | |
| typedef unsigned long int uint_fast64_t; | |
| #else | |
| # 109 "/usr/include/stdint.h" 3 4 | |
| typedef unsigned int uint_fast16_t; | |
| typedef unsigned int uint_fast32_t; | |
| __extension__ | |
| typedef unsigned long long int uint_fast64_t; | |
| #endif | |
| # 114 "/usr/include/stdint.h" 3 4 | |
| /* Types for `void *' pointers. */ | |
| #if __WORDSIZE == 64 | |
| # ifndef __intptr_t_defined | |
| typedef long int intptr_t; | |
| # define __intptr_t_defined | |
| # endif | |
| # 122 "/usr/include/stdint.h" 3 4 | |
| typedef unsigned long int uintptr_t; | |
| #else | |
| # 124 "/usr/include/stdint.h" 3 4 | |
| # ifndef __intptr_t_defined | |
| typedef int intptr_t; | |
| # define __intptr_t_defined | |
| # endif | |
| # 128 "/usr/include/stdint.h" 3 4 | |
| typedef unsigned int uintptr_t; | |
| #endif | |
| # 130 "/usr/include/stdint.h" 3 4 | |
| /* Largest integral types. */ | |
| #if __WORDSIZE == 64 | |
| typedef long int intmax_t; | |
| typedef unsigned long int uintmax_t; | |
| #else | |
| # 137 "/usr/include/stdint.h" 3 4 | |
| __extension__ | |
| typedef long long int intmax_t; | |
| __extension__ | |
| typedef unsigned long long int uintmax_t; | |
| #endif | |
| # 142 "/usr/include/stdint.h" 3 4 | |
| # if __WORDSIZE == 64 | |
| # define __INT64_C(c) c ## L | |
| # define __UINT64_C(c) c ## UL | |
| # else | |
| # 148 "/usr/include/stdint.h" 3 4 | |
| # define __INT64_C(c) c ## LL | |
| # define __UINT64_C(c) c ## ULL | |
| # endif | |
| # 151 "/usr/include/stdint.h" 3 4 | |
| /* Limits of integral types. */ | |
| /* Minimum of signed integral types. */ | |
| # define INT8_MIN (-128) | |
| # define INT16_MIN (-32767-1) | |
| # define INT32_MIN (-2147483647-1) | |
| # define INT64_MIN (-__INT64_C(9223372036854775807)-1) | |
| /* Maximum of signed integral types. */ | |
| # define INT8_MAX (127) | |
| # define INT16_MAX (32767) | |
| # define INT32_MAX (2147483647) | |
| # define INT64_MAX (__INT64_C(9223372036854775807)) | |
| /* Maximum of unsigned integral types. */ | |
| # define UINT8_MAX (255) | |
| # define UINT16_MAX (65535) | |
| # define UINT32_MAX (4294967295U) | |
| # define UINT64_MAX (__UINT64_C(18446744073709551615)) | |
| /* Minimum of signed integral types having a minimum size. */ | |
| # define INT_LEAST8_MIN (-128) | |
| # define INT_LEAST16_MIN (-32767-1) | |
| # define INT_LEAST32_MIN (-2147483647-1) | |
| # define INT_LEAST64_MIN (-__INT64_C(9223372036854775807)-1) | |
| /* Maximum of signed integral types having a minimum size. */ | |
| # define INT_LEAST8_MAX (127) | |
| # define INT_LEAST16_MAX (32767) | |
| # define INT_LEAST32_MAX (2147483647) | |
| # define INT_LEAST64_MAX (__INT64_C(9223372036854775807)) | |
| /* Maximum of unsigned integral types having a minimum size. */ | |
| # define UINT_LEAST8_MAX (255) | |
| # define UINT_LEAST16_MAX (65535) | |
| # define UINT_LEAST32_MAX (4294967295U) | |
| # define UINT_LEAST64_MAX (__UINT64_C(18446744073709551615)) | |
| /* Minimum of fast signed integral types having a minimum size. */ | |
| # define INT_FAST8_MIN (-128) | |
| # if __WORDSIZE == 64 | |
| # define INT_FAST16_MIN (-9223372036854775807L-1) | |
| # define INT_FAST32_MIN (-9223372036854775807L-1) | |
| # else | |
| # 196 "/usr/include/stdint.h" 3 4 | |
| # define INT_FAST16_MIN (-2147483647-1) | |
| # define INT_FAST32_MIN (-2147483647-1) | |
| # endif | |
| # 199 "/usr/include/stdint.h" 3 4 | |
| # define INT_FAST64_MIN (-__INT64_C(9223372036854775807)-1) | |
| /* Maximum of fast signed integral types having a minimum size. */ | |
| # define INT_FAST8_MAX (127) | |
| # if __WORDSIZE == 64 | |
| # define INT_FAST16_MAX (9223372036854775807L) | |
| # define INT_FAST32_MAX (9223372036854775807L) | |
| # else | |
| # 206 "/usr/include/stdint.h" 3 4 | |
| # define INT_FAST16_MAX (2147483647) | |
| # define INT_FAST32_MAX (2147483647) | |
| # endif | |
| # 209 "/usr/include/stdint.h" 3 4 | |
| # define INT_FAST64_MAX (__INT64_C(9223372036854775807)) | |
| /* Maximum of fast unsigned integral types having a minimum size. */ | |
| # define UINT_FAST8_MAX (255) | |
| # if __WORDSIZE == 64 | |
| # define UINT_FAST16_MAX (18446744073709551615UL) | |
| # define UINT_FAST32_MAX (18446744073709551615UL) | |
| # else | |
| # 217 "/usr/include/stdint.h" 3 4 | |
| # define UINT_FAST16_MAX (4294967295U) | |
| # define UINT_FAST32_MAX (4294967295U) | |
| # endif | |
| # 220 "/usr/include/stdint.h" 3 4 | |
| # define UINT_FAST64_MAX (__UINT64_C(18446744073709551615)) | |
| /* Values to test for integral types holding `void *' pointer. */ | |
| # if __WORDSIZE == 64 | |
| # define INTPTR_MIN (-9223372036854775807L-1) | |
| # define INTPTR_MAX (9223372036854775807L) | |
| # define UINTPTR_MAX (18446744073709551615UL) | |
| # else | |
| # 229 "/usr/include/stdint.h" 3 4 | |
| # define INTPTR_MIN (-2147483647-1) | |
| # define INTPTR_MAX (2147483647) | |
| # define UINTPTR_MAX (4294967295U) | |
| # endif | |
| # 233 "/usr/include/stdint.h" 3 4 | |
| /* Minimum for largest signed integral type. */ | |
| # define INTMAX_MIN (-__INT64_C(9223372036854775807)-1) | |
| /* Maximum for largest signed integral type. */ | |
| # define INTMAX_MAX (__INT64_C(9223372036854775807)) | |
| /* Maximum for largest unsigned integral type. */ | |
| # define UINTMAX_MAX (__UINT64_C(18446744073709551615)) | |
| /* Limits of other integer types. */ | |
| /* Limits of `ptrdiff_t' type. */ | |
| # if __WORDSIZE == 64 | |
| # define PTRDIFF_MIN (-9223372036854775807L-1) | |
| # define PTRDIFF_MAX (9223372036854775807L) | |
| # else | |
| # 251 "/usr/include/stdint.h" 3 4 | |
| # define PTRDIFF_MIN (-2147483647-1) | |
| # define PTRDIFF_MAX (2147483647) | |
| # endif | |
| # 254 "/usr/include/stdint.h" 3 4 | |
| /* Limits of `sig_atomic_t'. */ | |
| # define SIG_ATOMIC_MIN (-2147483647-1) | |
| # define SIG_ATOMIC_MAX (2147483647) | |
| /* Limit of `size_t' type. */ | |
| # if __WORDSIZE == 64 | |
| # define SIZE_MAX (18446744073709551615UL) | |
| # else | |
| # 263 "/usr/include/stdint.h" 3 4 | |
| # ifdef __WORDSIZE32_SIZE_ULONG | |
| # define SIZE_MAX (4294967295UL) | |
| # else | |
| # 266 "/usr/include/stdint.h" 3 4 | |
| # define SIZE_MAX (4294967295U) | |
| # endif | |
| # 268 "/usr/include/stdint.h" 3 4 | |
| # endif | |
| # 269 "/usr/include/stdint.h" 3 4 | |
| /* Limits of `wchar_t'. */ | |
| # ifndef WCHAR_MIN | |
| /* These constants might also be defined in <wchar.h>. */ | |
| # define WCHAR_MIN __WCHAR_MIN | |
| # define WCHAR_MAX __WCHAR_MAX | |
| # endif | |
| # 276 "/usr/include/stdint.h" 3 4 | |
| /* Limits of `wint_t'. */ | |
| # define WINT_MIN (0u) | |
| # define WINT_MAX (4294967295u) | |
| /* Signed. */ | |
| # define INT8_C(c) c | |
| # define INT16_C(c) c | |
| # define INT32_C(c) c | |
| # if __WORDSIZE == 64 | |
| # define INT64_C(c) c ## L | |
| # else | |
| # 288 "/usr/include/stdint.h" 3 4 | |
| # define INT64_C(c) c ## LL | |
| # endif | |
| # 290 "/usr/include/stdint.h" 3 4 | |
| /* Unsigned. */ | |
| # define UINT8_C(c) c | |
| # define UINT16_C(c) c | |
| # define UINT32_C(c) c ## U | |
| # if __WORDSIZE == 64 | |
| # define UINT64_C(c) c ## UL | |
| # else | |
| # 298 "/usr/include/stdint.h" 3 4 | |
| # define UINT64_C(c) c ## ULL | |
| # endif | |
| # 300 "/usr/include/stdint.h" 3 4 | |
| /* Maximal type. */ | |
| # if __WORDSIZE == 64 | |
| # define INTMAX_C(c) c ## L | |
| # define UINTMAX_C(c) c ## UL | |
| # else | |
| # 306 "/usr/include/stdint.h" 3 4 | |
| # define INTMAX_C(c) c ## LL | |
| # define UINTMAX_C(c) c ## ULL | |
| # endif | |
| # 309 "/usr/include/stdint.h" 3 4 | |
| #endif /* stdint.h */ | |
| # 311 "/usr/include/stdint.h" 3 4 | |
| # 64 "/usr/local/lib/clang/5.0.0/include/stdint.h" 2 3 | |
| # ifdef __STDC_LIMIT_MACROS_DEFINED_BY_CLANG | |
| # undef __STDC_LIMIT_MACROS | |
| # undef __STDC_LIMIT_MACROS_DEFINED_BY_CLANG | |
| # endif | |
| # 69 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # ifdef __STDC_CONSTANT_MACROS_DEFINED_BY_CLANG | |
| # undef __STDC_CONSTANT_MACROS | |
| # undef __STDC_CONSTANT_MACROS_DEFINED_BY_CLANG | |
| # endif | |
| # 73 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #else | |
| # 75 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| /* C99 7.18.1.1 Exact-width integer types. | |
| * C99 7.18.1.2 Minimum-width integer types. | |
| * C99 7.18.1.3 Fastest minimum-width integer types. | |
| * | |
| * The standard requires that exact-width type be defined for 8-, 16-, 32-, and | |
| * 64-bit types if they are implemented. Other exact width types are optional. | |
| * This implementation defines an exact-width types for every integer width | |
| * that is represented in the standard integer types. | |
| * | |
| * The standard also requires minimum-width types be defined for 8-, 16-, 32-, | |
| * and 64-bit widths regardless of whether there are corresponding exact-width | |
| * types. | |
| * | |
| * To accommodate targets that are missing types that are exactly 8, 16, 32, or | |
| * 64 bits wide, this implementation takes an approach of cascading | |
| * redefintions, redefining __int_leastN_t to successively smaller exact-width | |
| * types. It is therefore important that the types are defined in order of | |
| * descending widths. | |
| * | |
| * We currently assume that the minimum-width types and the fastest | |
| * minimum-width types are the same. This is allowed by the standard, but is | |
| * suboptimal. | |
| * | |
| * In violation of the standard, some targets do not implement a type that is | |
| * wide enough to represent all of the required widths (8-, 16-, 32-, 64-bit). | |
| * To accommodate these targets, a required minimum-width type is only | |
| * defined if there exists an exact-width type of equal or greater width. | |
| */ | |
| #ifdef __INT64_TYPE__ | |
| # ifndef __int8_t_defined /* glibc sys/types.h also defines int64_t*/ | |
| typedef __INT64_TYPE__ int64_t; | |
| # endif /* __int8_t_defined */ | |
| # 109 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| typedef __UINT64_TYPE__ uint64_t; | |
| # define __int_least64_t int64_t | |
| # define __uint_least64_t uint64_t | |
| # define __int_least32_t int64_t | |
| # define __uint_least32_t uint64_t | |
| # define __int_least16_t int64_t | |
| # define __uint_least16_t uint64_t | |
| # define __int_least8_t int64_t | |
| # define __uint_least8_t uint64_t | |
| #endif /* __INT64_TYPE__ */ | |
| # 119 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __int_least64_t | |
| typedef __int_least64_t int_least64_t; | |
| typedef __uint_least64_t uint_least64_t; | |
| typedef __int_least64_t int_fast64_t; | |
| typedef __uint_least64_t uint_fast64_t; | |
| #endif /* __int_least64_t */ | |
| # 126 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT56_TYPE__ | |
| typedef __INT56_TYPE__ int56_t; | |
| typedef __UINT56_TYPE__ uint56_t; | |
| typedef int56_t int_least56_t; | |
| typedef uint56_t uint_least56_t; | |
| typedef int56_t int_fast56_t; | |
| typedef uint56_t uint_fast56_t; | |
| # define __int_least32_t int56_t | |
| # define __uint_least32_t uint56_t | |
| # define __int_least16_t int56_t | |
| # define __uint_least16_t uint56_t | |
| # define __int_least8_t int56_t | |
| # define __uint_least8_t uint56_t | |
| #endif /* __INT56_TYPE__ */ | |
| # 141 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT48_TYPE__ | |
| typedef __INT48_TYPE__ int48_t; | |
| typedef __UINT48_TYPE__ uint48_t; | |
| typedef int48_t int_least48_t; | |
| typedef uint48_t uint_least48_t; | |
| typedef int48_t int_fast48_t; | |
| typedef uint48_t uint_fast48_t; | |
| # define __int_least32_t int48_t | |
| # define __uint_least32_t uint48_t | |
| # define __int_least16_t int48_t | |
| # define __uint_least16_t uint48_t | |
| # define __int_least8_t int48_t | |
| # define __uint_least8_t uint48_t | |
| #endif /* __INT48_TYPE__ */ | |
| # 157 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT40_TYPE__ | |
| typedef __INT40_TYPE__ int40_t; | |
| typedef __UINT40_TYPE__ uint40_t; | |
| typedef int40_t int_least40_t; | |
| typedef uint40_t uint_least40_t; | |
| typedef int40_t int_fast40_t; | |
| typedef uint40_t uint_fast40_t; | |
| # define __int_least32_t int40_t | |
| # define __uint_least32_t uint40_t | |
| # define __int_least16_t int40_t | |
| # define __uint_least16_t uint40_t | |
| # define __int_least8_t int40_t | |
| # define __uint_least8_t uint40_t | |
| #endif /* __INT40_TYPE__ */ | |
| # 173 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT32_TYPE__ | |
| # ifndef __int8_t_defined /* glibc sys/types.h also defines int32_t*/ | |
| typedef __INT32_TYPE__ int32_t; | |
| # endif /* __int8_t_defined */ | |
| # 180 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # ifndef __uint32_t_defined /* more glibc compatibility */ | |
| # define __uint32_t_defined | |
| typedef __UINT32_TYPE__ uint32_t; | |
| # endif /* __uint32_t_defined */ | |
| # 185 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define __int_least32_t int32_t | |
| # define __uint_least32_t uint32_t | |
| # define __int_least16_t int32_t | |
| # define __uint_least16_t uint32_t | |
| # define __int_least8_t int32_t | |
| # define __uint_least8_t uint32_t | |
| #endif /* __INT32_TYPE__ */ | |
| # 193 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __int_least32_t | |
| typedef __int_least32_t int_least32_t; | |
| typedef __uint_least32_t uint_least32_t; | |
| typedef __int_least32_t int_fast32_t; | |
| typedef __uint_least32_t uint_fast32_t; | |
| #endif /* __int_least32_t */ | |
| # 200 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT24_TYPE__ | |
| typedef __INT24_TYPE__ int24_t; | |
| typedef __UINT24_TYPE__ uint24_t; | |
| typedef int24_t int_least24_t; | |
| typedef uint24_t uint_least24_t; | |
| typedef int24_t int_fast24_t; | |
| typedef uint24_t uint_fast24_t; | |
| # define __int_least16_t int24_t | |
| # define __uint_least16_t uint24_t | |
| # define __int_least8_t int24_t | |
| # define __uint_least8_t uint24_t | |
| #endif /* __INT24_TYPE__ */ | |
| # 213 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT16_TYPE__ | |
| #ifndef __int8_t_defined /* glibc sys/types.h also defines int16_t*/ | |
| typedef __INT16_TYPE__ int16_t; | |
| #endif /* __int8_t_defined */ | |
| # 218 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| typedef __UINT16_TYPE__ uint16_t; | |
| # define __int_least16_t int16_t | |
| # define __uint_least16_t uint16_t | |
| # define __int_least8_t int16_t | |
| # define __uint_least8_t uint16_t | |
| #endif /* __INT16_TYPE__ */ | |
| # 224 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __int_least16_t | |
| typedef __int_least16_t int_least16_t; | |
| typedef __uint_least16_t uint_least16_t; | |
| typedef __int_least16_t int_fast16_t; | |
| typedef __uint_least16_t uint_fast16_t; | |
| #endif /* __int_least16_t */ | |
| # 231 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT8_TYPE__ | |
| #ifndef __int8_t_defined /* glibc sys/types.h also defines int8_t*/ | |
| typedef __INT8_TYPE__ int8_t; | |
| #endif /* __int8_t_defined */ | |
| # 237 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| typedef __UINT8_TYPE__ uint8_t; | |
| # define __int_least8_t int8_t | |
| # define __uint_least8_t uint8_t | |
| #endif /* __INT8_TYPE__ */ | |
| # 241 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __int_least8_t | |
| typedef __int_least8_t int_least8_t; | |
| typedef __uint_least8_t uint_least8_t; | |
| typedef __int_least8_t int_fast8_t; | |
| typedef __uint_least8_t uint_fast8_t; | |
| #endif /* __int_least8_t */ | |
| # 248 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| /* prevent glibc sys/types.h from defining conflicting types */ | |
| #ifndef __int8_t_defined | |
| # define __int8_t_defined | |
| #endif /* __int8_t_defined */ | |
| # 253 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| /* C99 7.18.1.4 Integer types capable of holding object pointers. | |
| */ | |
| #define __stdint_join3(a,b,c) a ## b ## c | |
| #ifndef _INTPTR_T | |
| #ifndef __intptr_t_defined | |
| typedef __INTPTR_TYPE__ intptr_t; | |
| #define __intptr_t_defined | |
| #define _INTPTR_T | |
| #endif | |
| # 264 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif | |
| # 265 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifndef _UINTPTR_T | |
| typedef __UINTPTR_TYPE__ uintptr_t; | |
| #define _UINTPTR_T | |
| #endif | |
| # 270 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| /* C99 7.18.1.5 Greatest-width integer types. | |
| */ | |
| typedef __INTMAX_TYPE__ intmax_t; | |
| typedef __UINTMAX_TYPE__ uintmax_t; | |
| /* C99 7.18.4 Macros for minimum-width integer constants. | |
| * | |
| * The standard requires that integer constant macros be defined for all the | |
| * minimum-width types defined above. As 8-, 16-, 32-, and 64-bit minimum-width | |
| * types are required, the corresponding integer constant macros are defined | |
| * here. This implementation also defines minimum-width types for every other | |
| * integer width that the target implements, so corresponding macros are | |
| * defined below, too. | |
| * | |
| * These macros are defined using the same successive-shrinking approach as | |
| * the type definitions above. It is likewise important that macros are defined | |
| * in order of decending width. | |
| * | |
| * Note that C++ should not check __STDC_CONSTANT_MACROS here, contrary to the | |
| * claims of the C standard (see C++ 18.3.1p2, [cstdint.syn]). | |
| */ | |
| #define __int_c_join(a, b) a ## b | |
| #define __int_c(v, suffix) __int_c_join(v, suffix) | |
| #define __uint_c(v, suffix) __int_c_join(v##U, suffix) | |
| #ifdef __INT64_TYPE__ | |
| # ifdef __INT64_C_SUFFIX__ | |
| # define __int64_c_suffix __INT64_C_SUFFIX__ | |
| # define __int32_c_suffix __INT64_C_SUFFIX__ | |
| # define __int16_c_suffix __INT64_C_SUFFIX__ | |
| # define __int8_c_suffix __INT64_C_SUFFIX__ | |
| # else | |
| # 305 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # undef __int64_c_suffix | |
| # undef __int32_c_suffix | |
| # undef __int16_c_suffix | |
| # undef __int8_c_suffix | |
| # endif /* __INT64_C_SUFFIX__ */ | |
| # 310 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __INT64_TYPE__ */ | |
| # 311 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __int_least64_t | |
| # ifdef __int64_c_suffix | |
| # define INT64_C(v) __int_c(v, __int64_c_suffix) | |
| # define UINT64_C(v) __uint_c(v, __int64_c_suffix) | |
| # else | |
| # 317 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define INT64_C(v) v | |
| # define UINT64_C(v) v ## U | |
| # endif /* __int64_c_suffix */ | |
| # 320 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __int_least64_t */ | |
| # 321 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT56_TYPE__ | |
| # ifdef __INT56_C_SUFFIX__ | |
| # define INT56_C(v) __int_c(v, __INT56_C_SUFFIX__) | |
| # define UINT56_C(v) __uint_c(v, __INT56_C_SUFFIX__) | |
| # define __int32_c_suffix __INT56_C_SUFFIX__ | |
| # define __int16_c_suffix __INT56_C_SUFFIX__ | |
| # define __int8_c_suffix __INT56_C_SUFFIX__ | |
| # else | |
| # 331 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define INT56_C(v) v | |
| # define UINT56_C(v) v ## U | |
| # undef __int32_c_suffix | |
| # undef __int16_c_suffix | |
| # undef __int8_c_suffix | |
| # endif /* __INT56_C_SUFFIX__ */ | |
| # 337 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __INT56_TYPE__ */ | |
| # 338 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT48_TYPE__ | |
| # ifdef __INT48_C_SUFFIX__ | |
| # define INT48_C(v) __int_c(v, __INT48_C_SUFFIX__) | |
| # define UINT48_C(v) __uint_c(v, __INT48_C_SUFFIX__) | |
| # define __int32_c_suffix __INT48_C_SUFFIX__ | |
| # define __int16_c_suffix __INT48_C_SUFFIX__ | |
| # define __int8_c_suffix __INT48_C_SUFFIX__ | |
| # else | |
| # 348 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define INT48_C(v) v | |
| # define UINT48_C(v) v ## U | |
| # undef __int32_c_suffix | |
| # undef __int16_c_suffix | |
| # undef __int8_c_suffix | |
| # endif /* __INT48_C_SUFFIX__ */ | |
| # 354 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __INT48_TYPE__ */ | |
| # 355 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT40_TYPE__ | |
| # ifdef __INT40_C_SUFFIX__ | |
| # define INT40_C(v) __int_c(v, __INT40_C_SUFFIX__) | |
| # define UINT40_C(v) __uint_c(v, __INT40_C_SUFFIX__) | |
| # define __int32_c_suffix __INT40_C_SUFFIX__ | |
| # define __int16_c_suffix __INT40_C_SUFFIX__ | |
| # define __int8_c_suffix __INT40_C_SUFFIX__ | |
| # else | |
| # 365 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define INT40_C(v) v | |
| # define UINT40_C(v) v ## U | |
| # undef __int32_c_suffix | |
| # undef __int16_c_suffix | |
| # undef __int8_c_suffix | |
| # endif /* __INT40_C_SUFFIX__ */ | |
| # 371 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __INT40_TYPE__ */ | |
| # 372 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT32_TYPE__ | |
| # ifdef __INT32_C_SUFFIX__ | |
| # define __int32_c_suffix __INT32_C_SUFFIX__ | |
| # define __int16_c_suffix __INT32_C_SUFFIX__ | |
| # define __int8_c_suffix __INT32_C_SUFFIX__ | |
| #else | |
| # 380 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # undef __int32_c_suffix | |
| # undef __int16_c_suffix | |
| # undef __int8_c_suffix | |
| # endif /* __INT32_C_SUFFIX__ */ | |
| # 384 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __INT32_TYPE__ */ | |
| # 385 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __int_least32_t | |
| # ifdef __int32_c_suffix | |
| # define INT32_C(v) __int_c(v, __int32_c_suffix) | |
| # define UINT32_C(v) __uint_c(v, __int32_c_suffix) | |
| # else | |
| # 391 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define INT32_C(v) v | |
| # define UINT32_C(v) v ## U | |
| # endif /* __int32_c_suffix */ | |
| # 394 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __int_least32_t */ | |
| # 395 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT24_TYPE__ | |
| # ifdef __INT24_C_SUFFIX__ | |
| # define INT24_C(v) __int_c(v, __INT24_C_SUFFIX__) | |
| # define UINT24_C(v) __uint_c(v, __INT24_C_SUFFIX__) | |
| # define __int16_c_suffix __INT24_C_SUFFIX__ | |
| # define __int8_c_suffix __INT24_C_SUFFIX__ | |
| # else | |
| # 404 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define INT24_C(v) v | |
| # define UINT24_C(v) v ## U | |
| # undef __int16_c_suffix | |
| # undef __int8_c_suffix | |
| # endif /* __INT24_C_SUFFIX__ */ | |
| # 409 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __INT24_TYPE__ */ | |
| # 410 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT16_TYPE__ | |
| # ifdef __INT16_C_SUFFIX__ | |
| # define __int16_c_suffix __INT16_C_SUFFIX__ | |
| # define __int8_c_suffix __INT16_C_SUFFIX__ | |
| #else | |
| # 417 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # undef __int16_c_suffix | |
| # undef __int8_c_suffix | |
| # endif /* __INT16_C_SUFFIX__ */ | |
| # 420 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __INT16_TYPE__ */ | |
| # 421 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __int_least16_t | |
| # ifdef __int16_c_suffix | |
| # define INT16_C(v) __int_c(v, __int16_c_suffix) | |
| # define UINT16_C(v) __uint_c(v, __int16_c_suffix) | |
| # else | |
| # 427 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define INT16_C(v) v | |
| # define UINT16_C(v) v ## U | |
| # endif /* __int16_c_suffix */ | |
| # 430 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __int_least16_t */ | |
| # 431 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT8_TYPE__ | |
| # ifdef __INT8_C_SUFFIX__ | |
| # define __int8_c_suffix __INT8_C_SUFFIX__ | |
| #else | |
| # 437 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # undef __int8_c_suffix | |
| # endif /* __INT8_C_SUFFIX__ */ | |
| # 439 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __INT8_TYPE__ */ | |
| # 440 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __int_least8_t | |
| # ifdef __int8_c_suffix | |
| # define INT8_C(v) __int_c(v, __int8_c_suffix) | |
| # define UINT8_C(v) __uint_c(v, __int8_c_suffix) | |
| # else | |
| # 446 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define INT8_C(v) v | |
| # define UINT8_C(v) v ## U | |
| # endif /* __int8_c_suffix */ | |
| # 449 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __int_least8_t */ | |
| # 450 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| /* C99 7.18.2.1 Limits of exact-width integer types. | |
| * C99 7.18.2.2 Limits of minimum-width integer types. | |
| * C99 7.18.2.3 Limits of fastest minimum-width integer types. | |
| * | |
| * The presence of limit macros are completely optional in C99. This | |
| * implementation defines limits for all of the types (exact- and | |
| * minimum-width) that it defines above, using the limits of the minimum-width | |
| * type for any types that do not have exact-width representations. | |
| * | |
| * As in the type definitions, this section takes an approach of | |
| * successive-shrinking to determine which limits to use for the standard (8, | |
| * 16, 32, 64) bit widths when they don't have exact representations. It is | |
| * therefore important that the defintions be kept in order of decending | |
| * widths. | |
| * | |
| * Note that C++ should not check __STDC_LIMIT_MACROS here, contrary to the | |
| * claims of the C standard (see C++ 18.3.1p2, [cstdint.syn]). | |
| */ | |
| #ifdef __INT64_TYPE__ | |
| # define INT64_MAX INT64_C( 9223372036854775807) | |
| # define INT64_MIN (-INT64_C( 9223372036854775807)-1) | |
| # define UINT64_MAX UINT64_C(18446744073709551615) | |
| # define __INT_LEAST64_MIN INT64_MIN | |
| # define __INT_LEAST64_MAX INT64_MAX | |
| # define __UINT_LEAST64_MAX UINT64_MAX | |
| # define __INT_LEAST32_MIN INT64_MIN | |
| # define __INT_LEAST32_MAX INT64_MAX | |
| # define __UINT_LEAST32_MAX UINT64_MAX | |
| # define __INT_LEAST16_MIN INT64_MIN | |
| # define __INT_LEAST16_MAX INT64_MAX | |
| # define __UINT_LEAST16_MAX UINT64_MAX | |
| # define __INT_LEAST8_MIN INT64_MIN | |
| # define __INT_LEAST8_MAX INT64_MAX | |
| # define __UINT_LEAST8_MAX UINT64_MAX | |
| #endif /* __INT64_TYPE__ */ | |
| # 488 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT_LEAST64_MIN | |
| # define INT_LEAST64_MIN __INT_LEAST64_MIN | |
| # define INT_LEAST64_MAX __INT_LEAST64_MAX | |
| # define UINT_LEAST64_MAX __UINT_LEAST64_MAX | |
| # define INT_FAST64_MIN __INT_LEAST64_MIN | |
| # define INT_FAST64_MAX __INT_LEAST64_MAX | |
| # define UINT_FAST64_MAX __UINT_LEAST64_MAX | |
| #endif /* __INT_LEAST64_MIN */ | |
| # 497 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT56_TYPE__ | |
| # define INT56_MAX INT56_C(36028797018963967) | |
| # define INT56_MIN (-INT56_C(36028797018963967)-1) | |
| # define UINT56_MAX UINT56_C(72057594037927935) | |
| # define INT_LEAST56_MIN INT56_MIN | |
| # define INT_LEAST56_MAX INT56_MAX | |
| # define UINT_LEAST56_MAX UINT56_MAX | |
| # define INT_FAST56_MIN INT56_MIN | |
| # define INT_FAST56_MAX INT56_MAX | |
| # define UINT_FAST56_MAX UINT56_MAX | |
| # define __INT_LEAST32_MIN INT56_MIN | |
| # define __INT_LEAST32_MAX INT56_MAX | |
| # define __UINT_LEAST32_MAX UINT56_MAX | |
| # define __INT_LEAST16_MIN INT56_MIN | |
| # define __INT_LEAST16_MAX INT56_MAX | |
| # define __UINT_LEAST16_MAX UINT56_MAX | |
| # define __INT_LEAST8_MIN INT56_MIN | |
| # define __INT_LEAST8_MAX INT56_MAX | |
| # define __UINT_LEAST8_MAX UINT56_MAX | |
| #endif /* __INT56_TYPE__ */ | |
| # 519 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT48_TYPE__ | |
| # define INT48_MAX INT48_C(140737488355327) | |
| # define INT48_MIN (-INT48_C(140737488355327)-1) | |
| # define UINT48_MAX UINT48_C(281474976710655) | |
| # define INT_LEAST48_MIN INT48_MIN | |
| # define INT_LEAST48_MAX INT48_MAX | |
| # define UINT_LEAST48_MAX UINT48_MAX | |
| # define INT_FAST48_MIN INT48_MIN | |
| # define INT_FAST48_MAX INT48_MAX | |
| # define UINT_FAST48_MAX UINT48_MAX | |
| # define __INT_LEAST32_MIN INT48_MIN | |
| # define __INT_LEAST32_MAX INT48_MAX | |
| # define __UINT_LEAST32_MAX UINT48_MAX | |
| # define __INT_LEAST16_MIN INT48_MIN | |
| # define __INT_LEAST16_MAX INT48_MAX | |
| # define __UINT_LEAST16_MAX UINT48_MAX | |
| # define __INT_LEAST8_MIN INT48_MIN | |
| # define __INT_LEAST8_MAX INT48_MAX | |
| # define __UINT_LEAST8_MAX UINT48_MAX | |
| #endif /* __INT48_TYPE__ */ | |
| # 541 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT40_TYPE__ | |
| # define INT40_MAX INT40_C(549755813887) | |
| # define INT40_MIN (-INT40_C(549755813887)-1) | |
| # define UINT40_MAX UINT40_C(1099511627775) | |
| # define INT_LEAST40_MIN INT40_MIN | |
| # define INT_LEAST40_MAX INT40_MAX | |
| # define UINT_LEAST40_MAX UINT40_MAX | |
| # define INT_FAST40_MIN INT40_MIN | |
| # define INT_FAST40_MAX INT40_MAX | |
| # define UINT_FAST40_MAX UINT40_MAX | |
| # define __INT_LEAST32_MIN INT40_MIN | |
| # define __INT_LEAST32_MAX INT40_MAX | |
| # define __UINT_LEAST32_MAX UINT40_MAX | |
| # define __INT_LEAST16_MIN INT40_MIN | |
| # define __INT_LEAST16_MAX INT40_MAX | |
| # define __UINT_LEAST16_MAX UINT40_MAX | |
| # define __INT_LEAST8_MIN INT40_MIN | |
| # define __INT_LEAST8_MAX INT40_MAX | |
| # define __UINT_LEAST8_MAX UINT40_MAX | |
| #endif /* __INT40_TYPE__ */ | |
| # 563 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT32_TYPE__ | |
| # define INT32_MAX INT32_C(2147483647) | |
| # define INT32_MIN (-INT32_C(2147483647)-1) | |
| # define UINT32_MAX UINT32_C(4294967295) | |
| # define __INT_LEAST32_MIN INT32_MIN | |
| # define __INT_LEAST32_MAX INT32_MAX | |
| # define __UINT_LEAST32_MAX UINT32_MAX | |
| # define __INT_LEAST16_MIN INT32_MIN | |
| # define __INT_LEAST16_MAX INT32_MAX | |
| # define __UINT_LEAST16_MAX UINT32_MAX | |
| # define __INT_LEAST8_MIN INT32_MIN | |
| # define __INT_LEAST8_MAX INT32_MAX | |
| # define __UINT_LEAST8_MAX UINT32_MAX | |
| #endif /* __INT32_TYPE__ */ | |
| # 579 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT_LEAST32_MIN | |
| # define INT_LEAST32_MIN __INT_LEAST32_MIN | |
| # define INT_LEAST32_MAX __INT_LEAST32_MAX | |
| # define UINT_LEAST32_MAX __UINT_LEAST32_MAX | |
| # define INT_FAST32_MIN __INT_LEAST32_MIN | |
| # define INT_FAST32_MAX __INT_LEAST32_MAX | |
| # define UINT_FAST32_MAX __UINT_LEAST32_MAX | |
| #endif /* __INT_LEAST32_MIN */ | |
| # 588 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT24_TYPE__ | |
| # define INT24_MAX INT24_C(8388607) | |
| # define INT24_MIN (-INT24_C(8388607)-1) | |
| # define UINT24_MAX UINT24_C(16777215) | |
| # define INT_LEAST24_MIN INT24_MIN | |
| # define INT_LEAST24_MAX INT24_MAX | |
| # define UINT_LEAST24_MAX UINT24_MAX | |
| # define INT_FAST24_MIN INT24_MIN | |
| # define INT_FAST24_MAX INT24_MAX | |
| # define UINT_FAST24_MAX UINT24_MAX | |
| # define __INT_LEAST16_MIN INT24_MIN | |
| # define __INT_LEAST16_MAX INT24_MAX | |
| # define __UINT_LEAST16_MAX UINT24_MAX | |
| # define __INT_LEAST8_MIN INT24_MIN | |
| # define __INT_LEAST8_MAX INT24_MAX | |
| # define __UINT_LEAST8_MAX UINT24_MAX | |
| #endif /* __INT24_TYPE__ */ | |
| # 607 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT16_TYPE__ | |
| #define INT16_MAX INT16_C(32767) | |
| #define INT16_MIN (-INT16_C(32767)-1) | |
| #define UINT16_MAX UINT16_C(65535) | |
| # define __INT_LEAST16_MIN INT16_MIN | |
| # define __INT_LEAST16_MAX INT16_MAX | |
| # define __UINT_LEAST16_MAX UINT16_MAX | |
| # define __INT_LEAST8_MIN INT16_MIN | |
| # define __INT_LEAST8_MAX INT16_MAX | |
| # define __UINT_LEAST8_MAX UINT16_MAX | |
| #endif /* __INT16_TYPE__ */ | |
| # 620 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT_LEAST16_MIN | |
| # define INT_LEAST16_MIN __INT_LEAST16_MIN | |
| # define INT_LEAST16_MAX __INT_LEAST16_MAX | |
| # define UINT_LEAST16_MAX __UINT_LEAST16_MAX | |
| # define INT_FAST16_MIN __INT_LEAST16_MIN | |
| # define INT_FAST16_MAX __INT_LEAST16_MAX | |
| # define UINT_FAST16_MAX __UINT_LEAST16_MAX | |
| #endif /* __INT_LEAST16_MIN */ | |
| # 629 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT8_TYPE__ | |
| # define INT8_MAX INT8_C(127) | |
| # define INT8_MIN (-INT8_C(127)-1) | |
| # define UINT8_MAX UINT8_C(255) | |
| # define __INT_LEAST8_MIN INT8_MIN | |
| # define __INT_LEAST8_MAX INT8_MAX | |
| # define __UINT_LEAST8_MAX UINT8_MAX | |
| #endif /* __INT8_TYPE__ */ | |
| # 639 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifdef __INT_LEAST8_MIN | |
| # define INT_LEAST8_MIN __INT_LEAST8_MIN | |
| # define INT_LEAST8_MAX __INT_LEAST8_MAX | |
| # define UINT_LEAST8_MAX __UINT_LEAST8_MAX | |
| # define INT_FAST8_MIN __INT_LEAST8_MIN | |
| # define INT_FAST8_MAX __INT_LEAST8_MAX | |
| # define UINT_FAST8_MAX __UINT_LEAST8_MAX | |
| #endif /* __INT_LEAST8_MIN */ | |
| # 648 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| /* Some utility macros */ | |
| #define __INTN_MIN(n) __stdint_join3( INT, n, _MIN) | |
| #define __INTN_MAX(n) __stdint_join3( INT, n, _MAX) | |
| #define __UINTN_MAX(n) __stdint_join3(UINT, n, _MAX) | |
| #define __INTN_C(n, v) __stdint_join3( INT, n, _C(v)) | |
| #define __UINTN_C(n, v) __stdint_join3(UINT, n, _C(v)) | |
| /* C99 7.18.2.4 Limits of integer types capable of holding object pointers. */ | |
| /* C99 7.18.3 Limits of other integer types. */ | |
| #define INTPTR_MIN (-__INTPTR_MAX__-1) | |
| #define INTPTR_MAX __INTPTR_MAX__ | |
| #define UINTPTR_MAX __UINTPTR_MAX__ | |
| #define PTRDIFF_MIN (-__PTRDIFF_MAX__-1) | |
| #define PTRDIFF_MAX __PTRDIFF_MAX__ | |
| #define SIZE_MAX __SIZE_MAX__ | |
| /* ISO9899:2011 7.20 (C11 Annex K): Define RSIZE_MAX if __STDC_WANT_LIB_EXT1__ | |
| * is enabled. */ | |
| #if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 | |
| #define RSIZE_MAX (SIZE_MAX >> 1) | |
| #endif | |
| # 671 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| /* C99 7.18.2.5 Limits of greatest-width integer types. */ | |
| #define INTMAX_MIN (-__INTMAX_MAX__-1) | |
| #define INTMAX_MAX __INTMAX_MAX__ | |
| #define UINTMAX_MAX __UINTMAX_MAX__ | |
| /* C99 7.18.3 Limits of other integer types. */ | |
| #define SIG_ATOMIC_MIN __INTN_MIN(__SIG_ATOMIC_WIDTH__) | |
| #define SIG_ATOMIC_MAX __INTN_MAX(__SIG_ATOMIC_WIDTH__) | |
| #ifdef __WINT_UNSIGNED__ | |
| # define WINT_MIN __UINTN_C(__WINT_WIDTH__, 0) | |
| # define WINT_MAX __UINTN_MAX(__WINT_WIDTH__) | |
| #else | |
| # 684 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define WINT_MIN __INTN_MIN(__WINT_WIDTH__) | |
| # define WINT_MAX __INTN_MAX(__WINT_WIDTH__) | |
| #endif | |
| # 687 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifndef WCHAR_MAX | |
| # define WCHAR_MAX __WCHAR_MAX__ | |
| #endif | |
| # 691 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #ifndef WCHAR_MIN | |
| # if __WCHAR_MAX__ == __INTN_MAX(__WCHAR_WIDTH__) | |
| # define WCHAR_MIN __INTN_MIN(__WCHAR_WIDTH__) | |
| # else | |
| # 695 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # define WCHAR_MIN __UINTN_C(__WCHAR_WIDTH__, 0) | |
| # endif | |
| # 697 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif | |
| # 698 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| /* 7.18.4.2 Macros for greatest-width integer constants. */ | |
| #define INTMAX_C(v) __int_c(v, __INTMAX_C_SUFFIX__) | |
| #define UINTMAX_C(v) __int_c(v, __UINTMAX_C_SUFFIX__) | |
| #endif /* __STDC_HOSTED__ */ | |
| # 704 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| #endif /* __CLANG_STDINT_H */ | |
| # 705 "/usr/local/lib/clang/5.0.0/include/stdint.h" 3 | |
| # 120 "/usr/local/bin/../include/c++/v1/stdint.h" 2 3 | |
| #endif // _LIBCPP_STDINT_H | |
| # 122 "/usr/local/bin/../include/c++/v1/stdint.h" 3 | |
| # 146 "/usr/local/bin/../include/c++/v1/cstdint" 2 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 149 "/usr/local/bin/../include/c++/v1/cstdint" 3 | |
| #endif | |
| # 150 "/usr/local/bin/../include/c++/v1/cstdint" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| using::int8_t; | |
| using::int16_t; | |
| using::int32_t; | |
| using::int64_t; | |
| using::uint8_t; | |
| using::uint16_t; | |
| using::uint32_t; | |
| using::uint64_t; | |
| using::int_least8_t; | |
| using::int_least16_t; | |
| using::int_least32_t; | |
| using::int_least64_t; | |
| using::uint_least8_t; | |
| using::uint_least16_t; | |
| using::uint_least32_t; | |
| using::uint_least64_t; | |
| using::int_fast8_t; | |
| using::int_fast16_t; | |
| using::int_fast32_t; | |
| using::int_fast64_t; | |
| using::uint_fast8_t; | |
| using::uint_fast16_t; | |
| using::uint_fast32_t; | |
| using::uint_fast64_t; | |
| using::intptr_t; | |
| using::uintptr_t; | |
| using::intmax_t; | |
| using::uintmax_t; | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP_CSTDINT | |
| # 192 "/usr/local/bin/../include/c++/v1/cstdint" 3 | |
| # 64 "/usr/local/bin/../include/c++/v1/typeinfo" 2 3 | |
| #ifdef _LIBCPP_NO_EXCEPTIONS | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstdlib> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 65 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| # 66 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #endif | |
| # 67 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 70 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #endif | |
| # 71 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #if defined(_LIBCPP_ABI_MICROSOFT) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <vcruntime_typeinfo.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 73 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| # 74 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #elif defined(_LIBCPP_NONUNIQUE_RTTI_BIT) | |
| # 75 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #define _LIBCPP_HAS_NONUNIQUE_TYPEINFO | |
| #else | |
| # 77 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| #define _LIBCPP_HAS_UNIQUE_TYPEINFO | |
| #endif | |
| # 79 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| namespace std // purposefully not using versioning namespace | |
| { | |
| #if !defined(_LIBCPP_ABI_MICROSOFT) | |
| class _LIBCPP_EXCEPTION_ABI type_info | |
| { | |
| type_info& operator=(const type_info&); | |
| type_info(const type_info&); | |
| #if defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO) | |
| _LIBCPP_INLINE_VISIBILITY | |
| int __compare_nonunique_names(const type_info &__arg) const _NOEXCEPT | |
| { return __builtin_strcmp(name(), __arg.name()); } | |
| #endif | |
| # 94 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| protected: | |
| #if defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO) | |
| // A const char* with the non-unique RTTI bit possibly set. | |
| uintptr_t __type_name; | |
| _LIBCPP_INLINE_VISIBILITY | |
| explicit type_info(const char* __n) | |
| : __type_name(reinterpret_cast<uintptr_t>(__n)) {} | |
| #else | |
| # 104 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| const char *__type_name; | |
| _LIBCPP_INLINE_VISIBILITY | |
| explicit type_info(const char* __n) : __type_name(__n) {} | |
| #endif | |
| # 109 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| public: | |
| _LIBCPP_AVAILABILITY_TYPEINFO_VTABLE | |
| virtual ~type_info(); | |
| #if defined(_LIBCPP_HAS_NONUNIQUE_TYPEINFO) | |
| _LIBCPP_INLINE_VISIBILITY | |
| const char* name() const _NOEXCEPT | |
| { | |
| return reinterpret_cast<const char*>(__type_name & | |
| ~_LIBCPP_NONUNIQUE_RTTI_BIT); | |
| } | |
| _LIBCPP_INLINE_VISIBILITY | |
| bool before(const type_info& __arg) const _NOEXCEPT | |
| { | |
| if (!((__type_name & __arg.__type_name) & _LIBCPP_NONUNIQUE_RTTI_BIT)) | |
| return __type_name < __arg.__type_name; | |
| return __compare_nonunique_names(__arg) < 0; | |
| } | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t hash_code() const _NOEXCEPT | |
| { | |
| if (!(__type_name & _LIBCPP_NONUNIQUE_RTTI_BIT)) | |
| return __type_name; | |
| const char* __ptr = name(); | |
| size_t __hash = 5381; | |
| while (unsigned char __c = static_cast<unsigned char>(*__ptr++)) | |
| __hash = (__hash * 33) ^ __c; | |
| return __hash; | |
| } | |
| _LIBCPP_INLINE_VISIBILITY | |
| bool operator==(const type_info& __arg) const _NOEXCEPT | |
| { | |
| if (__type_name == __arg.__type_name) | |
| return true; | |
| if (!((__type_name & __arg.__type_name) & _LIBCPP_NONUNIQUE_RTTI_BIT)) | |
| return false; | |
| return __compare_nonunique_names(__arg) == 0; | |
| } | |
| #else | |
| # 154 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| _LIBCPP_INLINE_VISIBILITY | |
| const char* name() const _NOEXCEPT | |
| { return __type_name; } | |
| _LIBCPP_INLINE_VISIBILITY | |
| bool before(const type_info& __arg) const _NOEXCEPT | |
| { return __type_name < __arg.__type_name; } | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t hash_code() const _NOEXCEPT | |
| { return reinterpret_cast<size_t>(__type_name); } | |
| _LIBCPP_INLINE_VISIBILITY | |
| bool operator==(const type_info& __arg) const _NOEXCEPT | |
| { return __type_name == __arg.__type_name; } | |
| #endif | |
| # 170 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| _LIBCPP_INLINE_VISIBILITY | |
| bool operator!=(const type_info& __arg) const _NOEXCEPT | |
| { return !operator==(__arg); } | |
| }; | |
| class _LIBCPP_EXCEPTION_ABI bad_cast | |
| : public exception | |
| { | |
| public: | |
| bad_cast() _NOEXCEPT; | |
| virtual ~bad_cast() _NOEXCEPT; | |
| virtual const char* what() const _NOEXCEPT; | |
| }; | |
| class _LIBCPP_EXCEPTION_ABI bad_typeid | |
| : public exception | |
| { | |
| public: | |
| bad_typeid() _NOEXCEPT; | |
| virtual ~bad_typeid() _NOEXCEPT; | |
| virtual const char* what() const _NOEXCEPT; | |
| }; | |
| #endif // !_LIBCPP_ABI_MICROSOFT | |
| # 195 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| } // std | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| _LIBCPP_NORETURN inline _LIBCPP_ALWAYS_INLINE | |
| void __throw_bad_cast() | |
| { | |
| #ifndef _LIBCPP_NO_EXCEPTIONS | |
| throw bad_cast(); | |
| #else | |
| # 205 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| _VSTD::abort(); | |
| #endif | |
| # 207 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| } | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // __LIBCPP_TYPEINFO | |
| # 211 "/usr/local/bin/../include/c++/v1/typeinfo" 3 | |
| # 486 "/usr/local/bin/../include/c++/v1/functional" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <exception> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 486 "/usr/local/bin/../include/c++/v1/functional" 3 | |
| # 487 "/usr/local/bin/../include/c++/v1/functional" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <memory> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 487 "/usr/local/bin/../include/c++/v1/functional" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/memory" 1 3 | |
| // -*- C++ -*- | |
| //===-------------------------- memory ------------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_MEMORY | |
| #define _LIBCPP_MEMORY | |
| /* | |
| memory synopsis | |
| namespace std | |
| { | |
| struct allocator_arg_t { }; | |
| constexpr allocator_arg_t allocator_arg = allocator_arg_t(); | |
| template <class T, class Alloc> struct uses_allocator; | |
| template <class Ptr> | |
| struct pointer_traits | |
| { | |
| typedef Ptr pointer; | |
| typedef <details> element_type; | |
| typedef <details> difference_type; | |
| template <class U> using rebind = <details>; | |
| static pointer pointer_to(<details>); | |
| }; | |
| template <class T> | |
| struct pointer_traits<T*> | |
| { | |
| typedef T* pointer; | |
| typedef T element_type; | |
| typedef ptrdiff_t difference_type; | |
| template <class U> using rebind = U*; | |
| static pointer pointer_to(<details>) noexcept; | |
| }; | |
| template <class Alloc> | |
| struct allocator_traits | |
| { | |
| typedef Alloc allocator_type; | |
| typedef typename allocator_type::value_type | |
| value_type; | |
| typedef Alloc::pointer | value_type* pointer; | |
| typedef Alloc::const_pointer | |
| | pointer_traits<pointer>::rebind<const value_type> | |
| const_pointer; | |
| typedef Alloc::void_pointer | |
| | pointer_traits<pointer>::rebind<void> | |
| void_pointer; | |
| typedef Alloc::const_void_pointer | |
| | pointer_traits<pointer>::rebind<const void> | |
| const_void_pointer; | |
| typedef Alloc::difference_type | |
| | pointer_traits<pointer>::difference_type | |
| difference_type; | |
| typedef Alloc::size_type | |
| | make_unsigned<difference_type>::type | |
| size_type; | |
| typedef Alloc::propagate_on_container_copy_assignment | |
| | false_type propagate_on_container_copy_assignment; | |
| typedef Alloc::propagate_on_container_move_assignment | |
| | false_type propagate_on_container_move_assignment; | |
| typedef Alloc::propagate_on_container_swap | |
| | false_type propagate_on_container_swap; | |
| typedef Alloc::is_always_equal | |
| | is_empty is_always_equal; | |
| template <class T> using rebind_alloc = Alloc::rebind<U>::other | Alloc<T, Args...>; | |
| template <class T> using rebind_traits = allocator_traits<rebind_alloc<T>>; | |
| static pointer allocate(allocator_type& a, size_type n); | |
| static pointer allocate(allocator_type& a, size_type n, const_void_pointer hint); | |
| static void deallocate(allocator_type& a, pointer p, size_type n) noexcept; | |
| template <class T, class... Args> | |
| static void construct(allocator_type& a, T* p, Args&&... args); | |
| template <class T> | |
| static void destroy(allocator_type& a, T* p); | |
| static size_type max_size(const allocator_type& a); // noexcept in C++14 | |
| static allocator_type | |
| select_on_container_copy_construction(const allocator_type& a); | |
| }; | |
| template <> | |
| class allocator<void> | |
| { | |
| public: | |
| typedef void* pointer; | |
| typedef const void* const_pointer; | |
| typedef void value_type; | |
| template <class _Up> struct rebind {typedef allocator<_Up> other;}; | |
| }; | |
| template <class T> | |
| class allocator | |
| { | |
| public: | |
| typedef size_t size_type; | |
| typedef ptrdiff_t difference_type; | |
| typedef T* pointer; | |
| typedef const T* const_pointer; | |
| typedef typename add_lvalue_reference<T>::type reference; | |
| typedef typename add_lvalue_reference<const T>::type const_reference; | |
| typedef T value_type; | |
| template <class U> struct rebind {typedef allocator<U> other;}; | |
| allocator() noexcept; | |
| allocator(const allocator&) noexcept; | |
| template <class U> allocator(const allocator<U>&) noexcept; | |
| ~allocator(); | |
| pointer address(reference x) const noexcept; | |
| const_pointer address(const_reference x) const noexcept; | |
| pointer allocate(size_type, allocator<void>::const_pointer hint = 0); | |
| void deallocate(pointer p, size_type n) noexcept; | |
| size_type max_size() const noexcept; | |
| template<class U, class... Args> | |
| void construct(U* p, Args&&... args); | |
| template <class U> | |
| void destroy(U* p); | |
| }; | |
| template <class T, class U> | |
| bool operator==(const allocator<T>&, const allocator<U>&) noexcept; | |
| template <class T, class U> | |
| bool operator!=(const allocator<T>&, const allocator<U>&) noexcept; | |
| template <class OutputIterator, class T> | |
| class raw_storage_iterator | |
| : public iterator<output_iterator_tag, | |
| T, // purposefully not C++03 | |
| ptrdiff_t, // purposefully not C++03 | |
| T*, // purposefully not C++03 | |
| raw_storage_iterator&> // purposefully not C++03 | |
| { | |
| public: | |
| explicit raw_storage_iterator(OutputIterator x); | |
| raw_storage_iterator& operator*(); | |
| raw_storage_iterator& operator=(const T& element); | |
| raw_storage_iterator& operator++(); | |
| raw_storage_iterator operator++(int); | |
| }; | |
| template <class T> pair<T*,ptrdiff_t> get_temporary_buffer(ptrdiff_t n) noexcept; | |
| template <class T> void return_temporary_buffer(T* p) noexcept; | |
| template <class T> T* addressof(T& r) noexcept; | |
| template <class T> T* addressof(const T&& r) noexcept = delete; | |
| template <class InputIterator, class ForwardIterator> | |
| ForwardIterator | |
| uninitialized_copy(InputIterator first, InputIterator last, ForwardIterator result); | |
| template <class InputIterator, class Size, class ForwardIterator> | |
| ForwardIterator | |
| uninitialized_copy_n(InputIterator first, Size n, ForwardIterator result); | |
| template <class ForwardIterator, class T> | |
| void uninitialized_fill(ForwardIterator first, ForwardIterator last, const T& x); | |
| template <class ForwardIterator, class Size, class T> | |
| ForwardIterator | |
| uninitialized_fill_n(ForwardIterator first, Size n, const T& x); | |
| template <class T> | |
| void destroy_at(T* location); | |
| template <class ForwardIterator> | |
| void destroy(ForwardIterator first, ForwardIterator last); | |
| template <class ForwardIterator, class Size> | |
| ForwardIterator destroy_n(ForwardIterator first, Size n); | |
| template <class InputIterator, class ForwardIterator> | |
| ForwardIterator uninitialized_move(InputIterator first, InputIterator last, ForwardIterator result); | |
| template <class InputIterator, class Size, class ForwardIterator> | |
| pair<InputIterator,ForwardIterator> uninitialized_move_n(InputIterator first, Size n, ForwardIterator result); | |
| template <class ForwardIterator> | |
| void uninitialized_value_construct(ForwardIterator first, ForwardIterator last); | |
| template <class ForwardIterator, class Size> | |
| ForwardIterator uninitialized_value_construct_n(ForwardIterator first, Size n); | |
| template <class ForwardIterator> | |
| void uninitialized_default_construct(ForwardIterator first, ForwardIterator last); | |
| template <class ForwardIterator, class Size> | |
| ForwardIterator uninitialized_default_construct_n(ForwardIterator first, Size n); | |
| template <class Y> struct auto_ptr_ref {}; // removed in C++17 | |
| template<class X> | |
| class auto_ptr // removed in C++17 | |
| { | |
| public: | |
| typedef X element_type; | |
| explicit auto_ptr(X* p =0) throw(); | |
| auto_ptr(auto_ptr&) throw(); | |
| template<class Y> auto_ptr(auto_ptr<Y>&) throw(); | |
| auto_ptr& operator=(auto_ptr&) throw(); | |
| template<class Y> auto_ptr& operator=(auto_ptr<Y>&) throw(); | |
| auto_ptr& operator=(auto_ptr_ref<X> r) throw(); | |
| ~auto_ptr() throw(); | |
| typename add_lvalue_reference<X>::type operator*() const throw(); | |
| X* operator->() const throw(); | |
| X* get() const throw(); | |
| X* release() throw(); | |
| void reset(X* p =0) throw(); | |
| auto_ptr(auto_ptr_ref<X>) throw(); | |
| template<class Y> operator auto_ptr_ref<Y>() throw(); | |
| template<class Y> operator auto_ptr<Y>() throw(); | |
| }; | |
| template <class T> | |
| struct default_delete | |
| { | |
| constexpr default_delete() noexcept = default; | |
| template <class U> default_delete(const default_delete<U>&) noexcept; | |
| void operator()(T*) const noexcept; | |
| }; | |
| template <class T> | |
| struct default_delete<T[]> | |
| { | |
| constexpr default_delete() noexcept = default; | |
| void operator()(T*) const noexcept; | |
| template <class U> void operator()(U*) const = delete; | |
| }; | |
| template <class T, class D = default_delete<T>> | |
| class unique_ptr | |
| { | |
| public: | |
| typedef see below pointer; | |
| typedef T element_type; | |
| typedef D deleter_type; | |
| // constructors | |
| constexpr unique_ptr() noexcept; | |
| explicit unique_ptr(pointer p) noexcept; | |
| unique_ptr(pointer p, see below d1) noexcept; | |
| unique_ptr(pointer p, see below d2) noexcept; | |
| unique_ptr(unique_ptr&& u) noexcept; | |
| unique_ptr(nullptr_t) noexcept : unique_ptr() { } | |
| template <class U, class E> | |
| unique_ptr(unique_ptr<U, E>&& u) noexcept; | |
| template <class U> | |
| unique_ptr(auto_ptr<U>&& u) noexcept; // removed in C++17 | |
| // destructor | |
| ~unique_ptr(); | |
| // assignment | |
| unique_ptr& operator=(unique_ptr&& u) noexcept; | |
| template <class U, class E> unique_ptr& operator=(unique_ptr<U, E>&& u) noexcept; | |
| unique_ptr& operator=(nullptr_t) noexcept; | |
| // observers | |
| typename add_lvalue_reference<T>::type operator*() const; | |
| pointer operator->() const noexcept; | |
| pointer get() const noexcept; | |
| deleter_type& get_deleter() noexcept; | |
| const deleter_type& get_deleter() const noexcept; | |
| explicit operator bool() const noexcept; | |
| // modifiers | |
| pointer release() noexcept; | |
| void reset(pointer p = pointer()) noexcept; | |
| void swap(unique_ptr& u) noexcept; | |
| }; | |
| template <class T, class D> | |
| class unique_ptr<T[], D> | |
| { | |
| public: | |
| typedef implementation-defined pointer; | |
| typedef T element_type; | |
| typedef D deleter_type; | |
| // constructors | |
| constexpr unique_ptr() noexcept; | |
| explicit unique_ptr(pointer p) noexcept; | |
| unique_ptr(pointer p, see below d) noexcept; | |
| unique_ptr(pointer p, see below d) noexcept; | |
| unique_ptr(unique_ptr&& u) noexcept; | |
| unique_ptr(nullptr_t) noexcept : unique_ptr() { } | |
| // destructor | |
| ~unique_ptr(); | |
| // assignment | |
| unique_ptr& operator=(unique_ptr&& u) noexcept; | |
| unique_ptr& operator=(nullptr_t) noexcept; | |
| // observers | |
| T& operator[](size_t i) const; | |
| pointer get() const noexcept; | |
| deleter_type& get_deleter() noexcept; | |
| const deleter_type& get_deleter() const noexcept; | |
| explicit operator bool() const noexcept; | |
| // modifiers | |
| pointer release() noexcept; | |
| void reset(pointer p = pointer()) noexcept; | |
| void reset(nullptr_t) noexcept; | |
| template <class U> void reset(U) = delete; | |
| void swap(unique_ptr& u) noexcept; | |
| }; | |
| template <class T, class D> | |
| void swap(unique_ptr<T, D>& x, unique_ptr<T, D>& y) noexcept; | |
| template <class T1, class D1, class T2, class D2> | |
| bool operator==(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); | |
| template <class T1, class D1, class T2, class D2> | |
| bool operator!=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); | |
| template <class T1, class D1, class T2, class D2> | |
| bool operator<(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); | |
| template <class T1, class D1, class T2, class D2> | |
| bool operator<=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); | |
| template <class T1, class D1, class T2, class D2> | |
| bool operator>(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); | |
| template <class T1, class D1, class T2, class D2> | |
| bool operator>=(const unique_ptr<T1, D1>& x, const unique_ptr<T2, D2>& y); | |
| template <class T, class D> | |
| bool operator==(const unique_ptr<T, D>& x, nullptr_t) noexcept; | |
| template <class T, class D> | |
| bool operator==(nullptr_t, const unique_ptr<T, D>& y) noexcept; | |
| template <class T, class D> | |
| bool operator!=(const unique_ptr<T, D>& x, nullptr_t) noexcept; | |
| template <class T, class D> | |
| bool operator!=(nullptr_t, const unique_ptr<T, D>& y) noexcept; | |
| template <class T, class D> | |
| bool operator<(const unique_ptr<T, D>& x, nullptr_t); | |
| template <class T, class D> | |
| bool operator<(nullptr_t, const unique_ptr<T, D>& y); | |
| template <class T, class D> | |
| bool operator<=(const unique_ptr<T, D>& x, nullptr_t); | |
| template <class T, class D> | |
| bool operator<=(nullptr_t, const unique_ptr<T, D>& y); | |
| template <class T, class D> | |
| bool operator>(const unique_ptr<T, D>& x, nullptr_t); | |
| template <class T, class D> | |
| bool operator>(nullptr_t, const unique_ptr<T, D>& y); | |
| template <class T, class D> | |
| bool operator>=(const unique_ptr<T, D>& x, nullptr_t); | |
| template <class T, class D> | |
| bool operator>=(nullptr_t, const unique_ptr<T, D>& y); | |
| class bad_weak_ptr | |
| : public std::exception | |
| { | |
| bad_weak_ptr() noexcept; | |
| }; | |
| template<class T, class... Args> unique_ptr<T> make_unique(Args&&... args); // C++14 | |
| template<class T> unique_ptr<T> make_unique(size_t n); // C++14 | |
| template<class T, class... Args> unspecified make_unique(Args&&...) = delete; // C++14, T == U[N] | |
| template<class T> | |
| class shared_ptr | |
| { | |
| public: | |
| typedef T element_type; | |
| typedef weak_ptr<T> weak_type; // C++17 | |
| // constructors: | |
| constexpr shared_ptr() noexcept; | |
| template<class Y> explicit shared_ptr(Y* p); | |
| template<class Y, class D> shared_ptr(Y* p, D d); | |
| template<class Y, class D, class A> shared_ptr(Y* p, D d, A a); | |
| template <class D> shared_ptr(nullptr_t p, D d); | |
| template <class D, class A> shared_ptr(nullptr_t p, D d, A a); | |
| template<class Y> shared_ptr(const shared_ptr<Y>& r, T *p) noexcept; | |
| shared_ptr(const shared_ptr& r) noexcept; | |
| template<class Y> shared_ptr(const shared_ptr<Y>& r) noexcept; | |
| shared_ptr(shared_ptr&& r) noexcept; | |
| template<class Y> shared_ptr(shared_ptr<Y>&& r) noexcept; | |
| template<class Y> explicit shared_ptr(const weak_ptr<Y>& r); | |
| template<class Y> shared_ptr(auto_ptr<Y>&& r); // removed in C++17 | |
| template <class Y, class D> shared_ptr(unique_ptr<Y, D>&& r); | |
| shared_ptr(nullptr_t) : shared_ptr() { } | |
| // destructor: | |
| ~shared_ptr(); | |
| // assignment: | |
| shared_ptr& operator=(const shared_ptr& r) noexcept; | |
| template<class Y> shared_ptr& operator=(const shared_ptr<Y>& r) noexcept; | |
| shared_ptr& operator=(shared_ptr&& r) noexcept; | |
| template<class Y> shared_ptr& operator=(shared_ptr<Y>&& r); | |
| template<class Y> shared_ptr& operator=(auto_ptr<Y>&& r); // removed in C++17 | |
| template <class Y, class D> shared_ptr& operator=(unique_ptr<Y, D>&& r); | |
| // modifiers: | |
| void swap(shared_ptr& r) noexcept; | |
| void reset() noexcept; | |
| template<class Y> void reset(Y* p); | |
| template<class Y, class D> void reset(Y* p, D d); | |
| template<class Y, class D, class A> void reset(Y* p, D d, A a); | |
| // observers: | |
| T* get() const noexcept; | |
| T& operator*() const noexcept; | |
| T* operator->() const noexcept; | |
| long use_count() const noexcept; | |
| bool unique() const noexcept; | |
| explicit operator bool() const noexcept; | |
| template<class U> bool owner_before(shared_ptr<U> const& b) const noexcept; | |
| template<class U> bool owner_before(weak_ptr<U> const& b) const noexcept; | |
| }; | |
| // shared_ptr comparisons: | |
| template<class T, class U> | |
| bool operator==(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept; | |
| template<class T, class U> | |
| bool operator!=(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept; | |
| template<class T, class U> | |
| bool operator<(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept; | |
| template<class T, class U> | |
| bool operator>(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept; | |
| template<class T, class U> | |
| bool operator<=(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept; | |
| template<class T, class U> | |
| bool operator>=(shared_ptr<T> const& a, shared_ptr<U> const& b) noexcept; | |
| template <class T> | |
| bool operator==(const shared_ptr<T>& x, nullptr_t) noexcept; | |
| template <class T> | |
| bool operator==(nullptr_t, const shared_ptr<T>& y) noexcept; | |
| template <class T> | |
| bool operator!=(const shared_ptr<T>& x, nullptr_t) noexcept; | |
| template <class T> | |
| bool operator!=(nullptr_t, const shared_ptr<T>& y) noexcept; | |
| template <class T> | |
| bool operator<(const shared_ptr<T>& x, nullptr_t) noexcept; | |
| template <class T> | |
| bool operator<(nullptr_t, const shared_ptr<T>& y) noexcept; | |
| template <class T> | |
| bool operator<=(const shared_ptr<T>& x, nullptr_t) noexcept; | |
| template <class T> | |
| bool operator<=(nullptr_t, const shared_ptr<T>& y) noexcept; | |
| template <class T> | |
| bool operator>(const shared_ptr<T>& x, nullptr_t) noexcept; | |
| template <class T> | |
| bool operator>(nullptr_t, const shared_ptr<T>& y) noexcept; | |
| template <class T> | |
| bool operator>=(const shared_ptr<T>& x, nullptr_t) noexcept; | |
| template <class T> | |
| bool operator>=(nullptr_t, const shared_ptr<T>& y) noexcept; | |
| // shared_ptr specialized algorithms: | |
| template<class T> void swap(shared_ptr<T>& a, shared_ptr<T>& b) noexcept; | |
| // shared_ptr casts: | |
| template<class T, class U> | |
| shared_ptr<T> static_pointer_cast(shared_ptr<U> const& r) noexcept; | |
| template<class T, class U> | |
| shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const& r) noexcept; | |
| template<class T, class U> | |
| shared_ptr<T> const_pointer_cast(shared_ptr<U> const& r) noexcept; | |
| // shared_ptr I/O: | |
| template<class E, class T, class Y> | |
| basic_ostream<E, T>& operator<< (basic_ostream<E, T>& os, shared_ptr<Y> const& p); | |
| // shared_ptr get_deleter: | |
| template<class D, class T> D* get_deleter(shared_ptr<T> const& p) noexcept; | |
| template<class T, class... Args> | |
| shared_ptr<T> make_shared(Args&&... args); | |
| template<class T, class A, class... Args> | |
| shared_ptr<T> allocate_shared(const A& a, Args&&... args); | |
| template<class T> | |
| class weak_ptr | |
| { | |
| public: | |
| typedef T element_type; | |
| // constructors | |
| constexpr weak_ptr() noexcept; | |
| template<class Y> weak_ptr(shared_ptr<Y> const& r) noexcept; | |
| weak_ptr(weak_ptr const& r) noexcept; | |
| template<class Y> weak_ptr(weak_ptr<Y> const& r) noexcept; | |
| weak_ptr(weak_ptr&& r) noexcept; // C++14 | |
| template<class Y> weak_ptr(weak_ptr<Y>&& r) noexcept; // C++14 | |
| // destructor | |
| ~weak_ptr(); | |
| // assignment | |
| weak_ptr& operator=(weak_ptr const& r) noexcept; | |
| template<class Y> weak_ptr& operator=(weak_ptr<Y> const& r) noexcept; | |
| template<class Y> weak_ptr& operator=(shared_ptr<Y> const& r) noexcept; | |
| weak_ptr& operator=(weak_ptr&& r) noexcept; // C++14 | |
| template<class Y> weak_ptr& operator=(weak_ptr<Y>&& r) noexcept; // C++14 | |
| // modifiers | |
| void swap(weak_ptr& r) noexcept; | |
| void reset() noexcept; | |
| // observers | |
| long use_count() const noexcept; | |
| bool expired() const noexcept; | |
| shared_ptr<T> lock() const noexcept; | |
| template<class U> bool owner_before(shared_ptr<U> const& b) const noexcept; | |
| template<class U> bool owner_before(weak_ptr<U> const& b) const noexcept; | |
| }; | |
| // weak_ptr specialized algorithms: | |
| template<class T> void swap(weak_ptr<T>& a, weak_ptr<T>& b) noexcept; | |
| // class owner_less: | |
| template<class T> struct owner_less; | |
| template<class T> | |
| struct owner_less<shared_ptr<T>> | |
| : binary_function<shared_ptr<T>, shared_ptr<T>, bool> | |
| { | |
| typedef bool result_type; | |
| bool operator()(shared_ptr<T> const&, shared_ptr<T> const&) const noexcept; | |
| bool operator()(shared_ptr<T> const&, weak_ptr<T> const&) const noexcept; | |
| bool operator()(weak_ptr<T> const&, shared_ptr<T> const&) const noexcept; | |
| }; | |
| template<class T> | |
| struct owner_less<weak_ptr<T>> | |
| : binary_function<weak_ptr<T>, weak_ptr<T>, bool> | |
| { | |
| typedef bool result_type; | |
| bool operator()(weak_ptr<T> const&, weak_ptr<T> const&) const noexcept; | |
| bool operator()(shared_ptr<T> const&, weak_ptr<T> const&) const noexcept; | |
| bool operator()(weak_ptr<T> const&, shared_ptr<T> const&) const noexcept; | |
| }; | |
| template <> // Added in C++14 | |
| struct owner_less<void> | |
| { | |
| template <class _Tp, class _Up> | |
| bool operator()( shared_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) const noexcept; | |
| template <class _Tp, class _Up> | |
| bool operator()( shared_ptr<_Tp> const& __x, weak_ptr<_Up> const& __y) const noexcept; | |
| template <class _Tp, class _Up> | |
| bool operator()( weak_ptr<_Tp> const& __x, shared_ptr<_Up> const& __y) const noexcept; | |
| template <class _Tp, class _Up> | |
| bool operator()( weak_ptr<_Tp> const& __x, weak_ptr<_Up> const& __y) const noexcept; | |
| typedef void is_transparent; | |
| }; | |
| template<class T> | |
| class enable_shared_from_this | |
| { | |
| protected: | |
| constexpr enable_shared_from_this() noexcept; | |
| enable_shared_from_this(enable_shared_from_this const&) noexcept; | |
| enable_shared_from_this& operator=(enable_shared_from_this const&) noexcept; | |
| ~enable_shared_from_this(); | |
| public: | |
| shared_ptr<T> shared_from_this(); | |
| shared_ptr<T const> shared_from_this() const; | |
| }; | |
| template<class T> | |
| bool atomic_is_lock_free(const shared_ptr<T>* p); | |
| template<class T> | |
| shared_ptr<T> atomic_load(const shared_ptr<T>* p); | |
| template<class T> | |
| shared_ptr<T> atomic_load_explicit(const shared_ptr<T>* p, memory_order mo); | |
| template<class T> | |
| void atomic_store(shared_ptr<T>* p, shared_ptr<T> r); | |
| template<class T> | |
| void atomic_store_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo); | |
| template<class T> | |
| shared_ptr<T> atomic_exchange(shared_ptr<T>* p, shared_ptr<T> r); | |
| template<class T> | |
| shared_ptr<T> | |
| atomic_exchange_explicit(shared_ptr<T>* p, shared_ptr<T> r, memory_order mo); | |
| template<class T> | |
| bool | |
| atomic_compare_exchange_weak(shared_ptr<T>* p, shared_ptr<T>* v, shared_ptr<T> w); | |
| template<class T> | |
| bool | |
| atomic_compare_exchange_strong( shared_ptr<T>* p, shared_ptr<T>* v, shared_ptr<T> w); | |
| template<class T> | |
| bool | |
| atomic_compare_exchange_weak_explicit(shared_ptr<T>* p, shared_ptr<T>* v, | |
| shared_ptr<T> w, memory_order success, | |
| memory_order failure); | |
| template<class T> | |
| bool | |
| atomic_compare_exchange_strong_explicit(shared_ptr<T>* p, shared_ptr<T>* v, | |
| shared_ptr<T> w, memory_order success, | |
| memory_order failure); | |
| // Hash support | |
| template <class T> struct hash; | |
| template <class T, class D> struct hash<unique_ptr<T, D> >; | |
| template <class T> struct hash<shared_ptr<T> >; | |
| // Pointer safety | |
| enum class pointer_safety { relaxed, preferred, strict }; | |
| void declare_reachable(void *p); | |
| template <class T> T *undeclare_reachable(T *p); | |
| void declare_no_pointers(char *p, size_t n); | |
| void undeclare_no_pointers(char *p, size_t n); | |
| pointer_safety get_pointer_safety() noexcept; | |
| void* align(size_t alignment, size_t size, void*& ptr, size_t& space); | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 642 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 643 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 643 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 644 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <typeinfo> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 644 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 645 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 645 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 646 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstdint> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 646 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 647 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <new> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 647 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 648 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <utility> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 648 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/utility" 1 3 | |
| // -*- C++ -*- | |
| //===-------------------------- utility -----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_UTILITY | |
| #define _LIBCPP_UTILITY | |
| /* | |
| utility synopsis | |
| namespace std | |
| { | |
| template <class T> | |
| void | |
| swap(T& a, T& b); | |
| namespace rel_ops | |
| { | |
| template<class T> bool operator!=(const T&, const T&); | |
| template<class T> bool operator> (const T&, const T&); | |
| template<class T> bool operator<=(const T&, const T&); | |
| template<class T> bool operator>=(const T&, const T&); | |
| } | |
| template<class T> | |
| void | |
| swap(T& a, T& b) noexcept(is_nothrow_move_constructible<T>::value && | |
| is_nothrow_move_assignable<T>::value); | |
| template <class T, size_t N> | |
| void | |
| swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b))); | |
| template <class T> T&& forward(typename remove_reference<T>::type& t) noexcept; // constexpr in C++14 | |
| template <class T> T&& forward(typename remove_reference<T>::type&& t) noexcept; // constexpr in C++14 | |
| template <class T> typename remove_reference<T>::type&& move(T&&) noexcept; // constexpr in C++14 | |
| template <class T> | |
| typename conditional | |
| < | |
| !is_nothrow_move_constructible<T>::value && is_copy_constructible<T>::value, | |
| const T&, | |
| T&& | |
| >::type | |
| move_if_noexcept(T& x) noexcept; // constexpr in C++14 | |
| template <class T> constexpr add_const<T>_t& as_const(T& t) noexcept; // C++17 | |
| template <class T> void as_const(const T&&) = delete; // C++17 | |
| template <class T> typename add_rvalue_reference<T>::type declval() noexcept; | |
| template <class T1, class T2> | |
| struct pair | |
| { | |
| typedef T1 first_type; | |
| typedef T2 second_type; | |
| T1 first; | |
| T2 second; | |
| pair(const pair&) = default; | |
| pair(pair&&) = default; | |
| constexpr pair(); | |
| pair(const T1& x, const T2& y); // constexpr in C++14 | |
| template <class U, class V> pair(U&& x, V&& y); // constexpr in C++14 | |
| template <class U, class V> pair(const pair<U, V>& p); // constexpr in C++14 | |
| template <class U, class V> pair(pair<U, V>&& p); // constexpr in C++14 | |
| template <class... Args1, class... Args2> | |
| pair(piecewise_construct_t, tuple<Args1...> first_args, | |
| tuple<Args2...> second_args); | |
| template <class U, class V> pair& operator=(const pair<U, V>& p); | |
| pair& operator=(pair&& p) noexcept(is_nothrow_move_assignable<T1>::value && | |
| is_nothrow_move_assignable<T2>::value); | |
| template <class U, class V> pair& operator=(pair<U, V>&& p); | |
| void swap(pair& p) noexcept(is_nothrow_swappable_v<T1> && | |
| is_nothrow_swappable_v<T2>); | |
| }; | |
| template <class T1, class T2> bool operator==(const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14 | |
| template <class T1, class T2> bool operator!=(const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14 | |
| template <class T1, class T2> bool operator< (const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14 | |
| template <class T1, class T2> bool operator> (const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14 | |
| template <class T1, class T2> bool operator>=(const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14 | |
| template <class T1, class T2> bool operator<=(const pair<T1,T2>&, const pair<T1,T2>&); // constexpr in C++14 | |
| template <class T1, class T2> pair<V1, V2> make_pair(T1&&, T2&&); // constexpr in C++14 | |
| template <class T1, class T2> | |
| void | |
| swap(pair<T1, T2>& x, pair<T1, T2>& y) noexcept(noexcept(x.swap(y))); | |
| struct piecewise_construct_t { }; | |
| constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); | |
| template <class T> class tuple_size; | |
| template <size_t I, class T> class tuple_element; | |
| template <class T1, class T2> struct tuple_size<pair<T1, T2> >; | |
| template <class T1, class T2> struct tuple_element<0, pair<T1, T2> >; | |
| template <class T1, class T2> struct tuple_element<1, pair<T1, T2> >; | |
| template<size_t I, class T1, class T2> | |
| typename tuple_element<I, pair<T1, T2> >::type& | |
| get(pair<T1, T2>&) noexcept; // constexpr in C++14 | |
| template<size_t I, class T1, class T2> | |
| const typename tuple_element<I, pair<T1, T2> >::type& | |
| get(const pair<T1, T2>&) noexcept; // constexpr in C++14 | |
| template<size_t I, class T1, class T2> | |
| typename tuple_element<I, pair<T1, T2> >::type&& | |
| get(pair<T1, T2>&&) noexcept; // constexpr in C++14 | |
| template<size_t I, class T1, class T2> | |
| const typename tuple_element<I, pair<T1, T2> >::type&& | |
| get(const pair<T1, T2>&&) noexcept; // constexpr in C++14 | |
| template<class T1, class T2> | |
| constexpr T1& get(pair<T1, T2>&) noexcept; // C++14 | |
| template<class T1, class T2> | |
| constexpr const T1& get(const pair<T1, T2>&) noexcept; // C++14 | |
| template<class T1, class T2> | |
| constexpr T1&& get(pair<T1, T2>&&) noexcept; // C++14 | |
| template<class T1, class T2> | |
| constexpr const T1&& get(const pair<T1, T2>&&) noexcept; // C++14 | |
| template<class T1, class T2> | |
| constexpr T1& get(pair<T2, T1>&) noexcept; // C++14 | |
| template<class T1, class T2> | |
| constexpr const T1& get(const pair<T2, T1>&) noexcept; // C++14 | |
| template<class T1, class T2> | |
| constexpr T1&& get(pair<T2, T1>&&) noexcept; // C++14 | |
| template<class T1, class T2> | |
| constexpr const T1&& get(const pair<T2, T1>&&) noexcept; // C++14 | |
| // C++14 | |
| template<class T, T... I> | |
| struct integer_sequence | |
| { | |
| typedef T value_type; | |
| static constexpr size_t size() noexcept; | |
| }; | |
| template<size_t... I> | |
| using index_sequence = integer_sequence<size_t, I...>; | |
| template<class T, T N> | |
| using make_integer_sequence = integer_sequence<T, 0, 1, ..., N-1>; | |
| template<size_t N> | |
| using make_index_sequence = make_integer_sequence<size_t, N>; | |
| template<class... T> | |
| using index_sequence_for = make_index_sequence<sizeof...(T)>; | |
| template<class T, class U=T> | |
| T exchange(T& obj, U&& new_value); | |
| // 20.2.7, in-place construction // C++17 | |
| struct in_place_t { | |
| explicit in_place_t() = default; | |
| }; | |
| inline constexpr in_place_t in_place{}; | |
| template <class T> | |
| struct in_place_type_t { | |
| explicit in_place_type_t() = default; | |
| }; | |
| template <class T> | |
| inline constexpr in_place_type_t<T> in_place_type{}; | |
| template <size_t I> | |
| struct in_place_index_t { | |
| explicit in_place_index_t() = default; | |
| }; | |
| template <size_t I> | |
| inline constexpr in_place_index_t<I> in_place_index{}; | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 197 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 198 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__tuple> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 198 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/__tuple" 1 3 | |
| // -*- C++ -*- | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP___TUPLE | |
| #define _LIBCPP___TUPLE | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 14 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| # 15 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 15 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| # 16 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 16 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| # 17 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 20 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| #endif | |
| # 21 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size; | |
| #if !defined(_LIBCPP_CXX03_LANG) | |
| template <class _Tp, class...> | |
| using __enable_if_tuple_size_imp = _Tp; | |
| template <class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< | |
| const _Tp, | |
| typename enable_if<!is_volatile<_Tp>::value>::type, | |
| integral_constant<size_t, sizeof(tuple_size<_Tp>)>>> | |
| : public integral_constant<size_t, tuple_size<_Tp>::value> {}; | |
| template <class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< | |
| volatile _Tp, | |
| typename enable_if<!is_const<_Tp>::value>::type, | |
| integral_constant<size_t, sizeof(tuple_size<_Tp>)>>> | |
| : public integral_constant<size_t, tuple_size<_Tp>::value> {}; | |
| template <class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< | |
| const volatile _Tp, | |
| integral_constant<size_t, sizeof(tuple_size<_Tp>)>>> | |
| : public integral_constant<size_t, tuple_size<_Tp>::value> {}; | |
| #else | |
| # 52 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<const _Tp> : public tuple_size<_Tp> {}; | |
| template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<volatile _Tp> : public tuple_size<_Tp> {}; | |
| template <class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_size<const volatile _Tp> : public tuple_size<_Tp> {}; | |
| #endif | |
| # 56 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| template <size_t _Ip, class _Tp> class _LIBCPP_TEMPLATE_VIS tuple_element; | |
| template <size_t _Ip, class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const _Tp> | |
| { | |
| public: | |
| typedef typename add_const<typename tuple_element<_Ip, _Tp>::type>::type type; | |
| }; | |
| template <size_t _Ip, class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, volatile _Tp> | |
| { | |
| public: | |
| typedef typename add_volatile<typename tuple_element<_Ip, _Tp>::type>::type type; | |
| }; | |
| template <size_t _Ip, class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, const volatile _Tp> | |
| { | |
| public: | |
| typedef typename add_cv<typename tuple_element<_Ip, _Tp>::type>::type type; | |
| }; | |
| template <class _Tp> struct __tuple_like : false_type {}; | |
| template <class _Tp> struct __tuple_like<const _Tp> : public __tuple_like<_Tp> {}; | |
| template <class _Tp> struct __tuple_like<volatile _Tp> : public __tuple_like<_Tp> {}; | |
| template <class _Tp> struct __tuple_like<const volatile _Tp> : public __tuple_like<_Tp> {}; | |
| // tuple specializations | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <size_t...> struct __tuple_indices {}; | |
| template <class _IdxType, _IdxType... _Values> | |
| struct __integer_sequence { | |
| template <template <class _OIdxType, _OIdxType...> class _ToIndexSeq, class _ToIndexType> | |
| using __convert = _ToIndexSeq<_ToIndexType, _Values...>; | |
| template <size_t _Sp> | |
| using __to_tuple_indices = __tuple_indices<(_Values + _Sp)...>; | |
| }; | |
| #if !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE) | |
| namespace __detail { | |
| template<typename _Tp, size_t ..._Extra> struct __repeat; | |
| template<typename _Tp, _Tp ..._Np, size_t ..._Extra> struct __repeat<__integer_sequence<_Tp, _Np...>, _Extra...> { | |
| typedef __integer_sequence<_Tp, | |
| _Np..., | |
| sizeof...(_Np) + _Np..., | |
| 2 * sizeof...(_Np) + _Np..., | |
| 3 * sizeof...(_Np) + _Np..., | |
| 4 * sizeof...(_Np) + _Np..., | |
| 5 * sizeof...(_Np) + _Np..., | |
| 6 * sizeof...(_Np) + _Np..., | |
| 7 * sizeof...(_Np) + _Np..., | |
| _Extra...> type; | |
| }; | |
| template<size_t _Np> struct __parity; | |
| template<size_t _Np> struct __make : __parity<_Np % 8>::template __pmake<_Np> {}; | |
| template<> struct __make<0> { typedef __integer_sequence<size_t> type; }; | |
| template<> struct __make<1> { typedef __integer_sequence<size_t, 0> type; }; | |
| template<> struct __make<2> { typedef __integer_sequence<size_t, 0, 1> type; }; | |
| template<> struct __make<3> { typedef __integer_sequence<size_t, 0, 1, 2> type; }; | |
| template<> struct __make<4> { typedef __integer_sequence<size_t, 0, 1, 2, 3> type; }; | |
| template<> struct __make<5> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4> type; }; | |
| template<> struct __make<6> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4, 5> type; }; | |
| template<> struct __make<7> { typedef __integer_sequence<size_t, 0, 1, 2, 3, 4, 5, 6> type; }; | |
| template<> struct __parity<0> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type> {}; }; | |
| template<> struct __parity<1> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 1> {}; }; | |
| template<> struct __parity<2> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 2, _Np - 1> {}; }; | |
| template<> struct __parity<3> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 3, _Np - 2, _Np - 1> {}; }; | |
| template<> struct __parity<4> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; }; | |
| template<> struct __parity<5> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; }; | |
| template<> struct __parity<6> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 6, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; }; | |
| template<> struct __parity<7> { template<size_t _Np> struct __pmake : __repeat<typename __make<_Np / 8>::type, _Np - 7, _Np - 6, _Np - 5, _Np - 4, _Np - 3, _Np - 2, _Np - 1> {}; }; | |
| } // namespace detail | |
| #endif // !__has_builtin(__make_integer_seq) || defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE) | |
| # 142 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| #if __has_builtin(__make_integer_seq) | |
| template <size_t _Ep, size_t _Sp> | |
| using __make_indices_imp = | |
| typename __make_integer_seq<__integer_sequence, size_t, _Ep - _Sp>::template | |
| __to_tuple_indices<_Sp>; | |
| #else | |
| # 149 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| template <size_t _Ep, size_t _Sp> | |
| using __make_indices_imp = | |
| typename __detail::__make<_Ep - _Sp>::type::template __to_tuple_indices<_Sp>; | |
| #endif | |
| # 154 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| template <size_t _Ep, size_t _Sp = 0> | |
| struct __make_tuple_indices | |
| { | |
| static_assert(_Sp <= _Ep, "__make_tuple_indices input error"); | |
| typedef __make_indices_imp<_Ep, _Sp> type; | |
| }; | |
| template <class ..._Tp> class _LIBCPP_TEMPLATE_VIS tuple; | |
| template <class... _Tp> struct __tuple_like<tuple<_Tp...> > : true_type {}; | |
| template <class ..._Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_size<tuple<_Tp...> > | |
| : public integral_constant<size_t, sizeof...(_Tp)> | |
| { | |
| }; | |
| template <size_t _Ip, class ..._Tp> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| typename tuple_element<_Ip, tuple<_Tp...> >::type& | |
| get(tuple<_Tp...>&) _NOEXCEPT; | |
| template <size_t _Ip, class ..._Tp> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const typename tuple_element<_Ip, tuple<_Tp...> >::type& | |
| get(const tuple<_Tp...>&) _NOEXCEPT; | |
| template <size_t _Ip, class ..._Tp> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| typename tuple_element<_Ip, tuple<_Tp...> >::type&& | |
| get(tuple<_Tp...>&&) _NOEXCEPT; | |
| template <size_t _Ip, class ..._Tp> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const typename tuple_element<_Ip, tuple<_Tp...> >::type&& | |
| get(const tuple<_Tp...>&&) _NOEXCEPT; | |
| #endif // !defined(_LIBCPP_CXX03_LANG) | |
| # 194 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| // pair specializations | |
| template <class _T1, class _T2> struct __tuple_like<pair<_T1, _T2> > : true_type {}; | |
| template <size_t _Ip, class _T1, class _T2> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| typename tuple_element<_Ip, pair<_T1, _T2> >::type& | |
| get(pair<_T1, _T2>&) _NOEXCEPT; | |
| template <size_t _Ip, class _T1, class _T2> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const typename tuple_element<_Ip, pair<_T1, _T2> >::type& | |
| get(const pair<_T1, _T2>&) _NOEXCEPT; | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <size_t _Ip, class _T1, class _T2> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| typename tuple_element<_Ip, pair<_T1, _T2> >::type&& | |
| get(pair<_T1, _T2>&&) _NOEXCEPT; | |
| template <size_t _Ip, class _T1, class _T2> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const typename tuple_element<_Ip, pair<_T1, _T2> >::type&& | |
| get(const pair<_T1, _T2>&&) _NOEXCEPT; | |
| #endif | |
| # 220 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| // array specializations | |
| template <class _Tp, size_t _Size> struct _LIBCPP_TEMPLATE_VIS array; | |
| template <class _Tp, size_t _Size> struct __tuple_like<array<_Tp, _Size> > : true_type {}; | |
| template <size_t _Ip, class _Tp, size_t _Size> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| _Tp& | |
| get(array<_Tp, _Size>&) _NOEXCEPT; | |
| template <size_t _Ip, class _Tp, size_t _Size> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _Tp& | |
| get(const array<_Tp, _Size>&) _NOEXCEPT; | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <size_t _Ip, class _Tp, size_t _Size> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| _Tp&& | |
| get(array<_Tp, _Size>&&) _NOEXCEPT; | |
| template <size_t _Ip, class _Tp, size_t _Size> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _Tp&& | |
| get(const array<_Tp, _Size>&&) _NOEXCEPT; | |
| #endif | |
| # 248 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| #ifndef _LIBCPP_CXX03_LANG | |
| // __tuple_types | |
| template <class ..._Tp> struct __tuple_types {}; | |
| #if !__has_builtin(__type_pack_element) | |
| namespace __indexer_detail { | |
| template <size_t _Idx, class _Tp> | |
| struct __indexed { using type = _Tp; }; | |
| template <class _Types, class _Indexes> struct __indexer; | |
| template <class ..._Types, size_t ..._Idx> | |
| struct __indexer<__tuple_types<_Types...>, __tuple_indices<_Idx...>> | |
| : __indexed<_Idx, _Types>... | |
| {}; | |
| template <size_t _Idx, class _Tp> | |
| __indexed<_Idx, _Tp> __at_index(__indexed<_Idx, _Tp> const&); | |
| } // namespace __indexer_detail | |
| template <size_t _Idx, class ..._Types> | |
| using __type_pack_element = typename decltype( | |
| __indexer_detail::__at_index<_Idx>( | |
| __indexer_detail::__indexer< | |
| __tuple_types<_Types...>, | |
| typename __make_tuple_indices<sizeof...(_Types)>::type | |
| >{}) | |
| )::type; | |
| #endif | |
| # 283 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| template <size_t _Ip, class ..._Types> | |
| class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, __tuple_types<_Types...>> | |
| { | |
| public: | |
| static_assert(_Ip < sizeof...(_Types), "tuple_element index out of range"); | |
| typedef __type_pack_element<_Ip, _Types...> type; | |
| }; | |
| template <class ..._Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_size<__tuple_types<_Tp...> > | |
| : public integral_constant<size_t, sizeof...(_Tp)> | |
| { | |
| }; | |
| template <class... _Tp> struct __tuple_like<__tuple_types<_Tp...> > : true_type {}; | |
| template <bool _ApplyLV, bool _ApplyConst, bool _ApplyVolatile> | |
| struct __apply_cv_mf; | |
| template <> | |
| struct __apply_cv_mf<false, false, false> { | |
| template <class _Tp> using __apply = _Tp; | |
| }; | |
| template <> | |
| struct __apply_cv_mf<false, true, false> { | |
| template <class _Tp> using __apply = const _Tp; | |
| }; | |
| template <> | |
| struct __apply_cv_mf<false, false, true> { | |
| template <class _Tp> using __apply = volatile _Tp; | |
| }; | |
| template <> | |
| struct __apply_cv_mf<false, true, true> { | |
| template <class _Tp> using __apply = const volatile _Tp; | |
| }; | |
| template <> | |
| struct __apply_cv_mf<true, false, false> { | |
| template <class _Tp> using __apply = _Tp&; | |
| }; | |
| template <> | |
| struct __apply_cv_mf<true, true, false> { | |
| template <class _Tp> using __apply = const _Tp&; | |
| }; | |
| template <> | |
| struct __apply_cv_mf<true, false, true> { | |
| template <class _Tp> using __apply = volatile _Tp&; | |
| }; | |
| template <> | |
| struct __apply_cv_mf<true, true, true> { | |
| template <class _Tp> using __apply = const volatile _Tp&; | |
| }; | |
| template <class _Tp, class _RawTp = typename remove_reference<_Tp>::type> | |
| using __apply_cv_t = __apply_cv_mf< | |
| is_lvalue_reference<_Tp>::value, | |
| is_const<_RawTp>::value, | |
| is_volatile<_RawTp>::value>; | |
| // __make_tuple_types | |
| // __make_tuple_types<_Tuple<_Types...>, _Ep, _Sp>::type is a | |
| // __tuple_types<_Types...> using only those _Types in the range [_Sp, _Ep). | |
| // _Sp defaults to 0 and _Ep defaults to tuple_size<_Tuple>. If _Tuple is a | |
| // lvalue_reference type, then __tuple_types<_Types&...> is the result. | |
| template <class _TupleTypes, class _TupleIndices> | |
| struct __make_tuple_types_flat; | |
| template <template <class...> class _Tuple, class ..._Types, size_t ..._Idx> | |
| struct __make_tuple_types_flat<_Tuple<_Types...>, __tuple_indices<_Idx...>> { | |
| // Specialization for pair, tuple, and __tuple_types | |
| template <class _Tp, class _ApplyFn = __apply_cv_t<_Tp>> | |
| using __apply_quals = __tuple_types< | |
| typename _ApplyFn::template __apply<__type_pack_element<_Idx, _Types...>>... | |
| >; | |
| }; | |
| template <class _Vt, size_t _Np, size_t ..._Idx> | |
| struct __make_tuple_types_flat<array<_Vt, _Np>, __tuple_indices<_Idx...>> { | |
| template <size_t> | |
| using __value_type = _Vt; | |
| template <class _Tp, class _ApplyFn = __apply_cv_t<_Tp>> | |
| using __apply_quals = __tuple_types< | |
| typename _ApplyFn::template __apply<__value_type<_Idx>>... | |
| >; | |
| }; | |
| template <class _Tp, size_t _Ep = tuple_size<typename remove_reference<_Tp>::type>::value, | |
| size_t _Sp = 0, | |
| bool _SameSize = (_Ep == tuple_size<typename remove_reference<_Tp>::type>::value)> | |
| struct __make_tuple_types | |
| { | |
| static_assert(_Sp <= _Ep, "__make_tuple_types input error"); | |
| using _RawTp = typename remove_cv<typename remove_reference<_Tp>::type>::type; | |
| using _Maker = __make_tuple_types_flat<_RawTp, typename __make_tuple_indices<_Ep, _Sp>::type>; | |
| using type = typename _Maker::template __apply_quals<_Tp>; | |
| }; | |
| template <class ..._Types, size_t _Ep> | |
| struct __make_tuple_types<tuple<_Types...>, _Ep, 0, true> { | |
| typedef __tuple_types<_Types...> type; | |
| }; | |
| template <class ..._Types, size_t _Ep> | |
| struct __make_tuple_types<__tuple_types<_Types...>, _Ep, 0, true> { | |
| typedef __tuple_types<_Types...> type; | |
| }; | |
| template <bool ..._Preds> | |
| struct __all_dummy; | |
| template <bool ..._Pred> | |
| using __all = is_same<__all_dummy<_Pred...>, __all_dummy<((void)_Pred, true)...>>; | |
| struct __tuple_sfinae_base { | |
| template <template <class, class...> class _Trait, | |
| class ..._LArgs, class ..._RArgs> | |
| static auto __do_test(__tuple_types<_LArgs...>, __tuple_types<_RArgs...>) | |
| -> __all<typename enable_if<_Trait<_LArgs, _RArgs>::value, bool>::type{true}...>; | |
| template <template <class...> class> | |
| static auto __do_test(...) -> false_type; | |
| template <class _FromArgs, class _ToArgs> | |
| using __constructible = decltype(__do_test<is_constructible>(_ToArgs{}, _FromArgs{})); | |
| template <class _FromArgs, class _ToArgs> | |
| using __convertible = decltype(__do_test<is_convertible>(_FromArgs{}, _ToArgs{})); | |
| template <class _FromArgs, class _ToArgs> | |
| using __assignable = decltype(__do_test<is_assignable>(_ToArgs{}, _FromArgs{})); | |
| }; | |
| // __tuple_convertible | |
| template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value, | |
| bool = __tuple_like<_Up>::value> | |
| struct __tuple_convertible | |
| : public false_type {}; | |
| template <class _Tp, class _Up> | |
| struct __tuple_convertible<_Tp, _Up, true, true> | |
| : public __tuple_sfinae_base::__convertible< | |
| typename __make_tuple_types<_Tp>::type | |
| , typename __make_tuple_types<_Up>::type | |
| > | |
| {}; | |
| // __tuple_constructible | |
| template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value, | |
| bool = __tuple_like<_Up>::value> | |
| struct __tuple_constructible | |
| : public false_type {}; | |
| template <class _Tp, class _Up> | |
| struct __tuple_constructible<_Tp, _Up, true, true> | |
| : public __tuple_sfinae_base::__constructible< | |
| typename __make_tuple_types<_Tp>::type | |
| , typename __make_tuple_types<_Up>::type | |
| > | |
| {}; | |
| // __tuple_assignable | |
| template <class _Tp, class _Up, bool = __tuple_like<typename remove_reference<_Tp>::type>::value, | |
| bool = __tuple_like<_Up>::value> | |
| struct __tuple_assignable | |
| : public false_type {}; | |
| template <class _Tp, class _Up> | |
| struct __tuple_assignable<_Tp, _Up, true, true> | |
| : public __tuple_sfinae_base::__assignable< | |
| typename __make_tuple_types<_Tp>::type | |
| , typename __make_tuple_types<_Up&>::type | |
| > | |
| {}; | |
| template <size_t _Ip, class ..._Tp> | |
| class _LIBCPP_TEMPLATE_VIS tuple_element<_Ip, tuple<_Tp...> > | |
| { | |
| public: | |
| typedef typename tuple_element<_Ip, __tuple_types<_Tp...> >::type type; | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <size_t _Ip, class ..._Tp> | |
| using tuple_element_t = typename tuple_element <_Ip, _Tp...>::type; | |
| #endif | |
| # 470 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| template <bool _IsTuple, class _SizeTrait, size_t _Expected> | |
| struct __tuple_like_with_size_imp : false_type {}; | |
| template <class _SizeTrait, size_t _Expected> | |
| struct __tuple_like_with_size_imp<true, _SizeTrait, _Expected> | |
| : integral_constant<bool, _SizeTrait::value == _Expected> {}; | |
| template <class _Tuple, size_t _ExpectedSize, | |
| class _RawTuple = typename __uncvref<_Tuple>::type> | |
| using __tuple_like_with_size = __tuple_like_with_size_imp< | |
| __tuple_like<_RawTuple>::value, | |
| tuple_size<_RawTuple>, _ExpectedSize | |
| >; | |
| struct _LIBCPP_TYPE_VIS __check_tuple_constructor_fail { | |
| template <class ...> | |
| static constexpr bool __enable_default() { return false; } | |
| template <class ...> | |
| static constexpr bool __enable_explicit() { return false; } | |
| template <class ...> | |
| static constexpr bool __enable_implicit() { return false; } | |
| template <class ...> | |
| static constexpr bool __enable_assign() { return false; } | |
| }; | |
| #endif // !defined(_LIBCPP_CXX03_LANG) | |
| # 496 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| #if _LIBCPP_STD_VER > 14 | |
| template <bool _CanCopy, bool _CanMove> | |
| struct __sfinae_ctor_base {}; | |
| template <> | |
| struct __sfinae_ctor_base<false, false> { | |
| __sfinae_ctor_base() = default; | |
| __sfinae_ctor_base(__sfinae_ctor_base const&) = delete; | |
| __sfinae_ctor_base(__sfinae_ctor_base &&) = delete; | |
| __sfinae_ctor_base& operator=(__sfinae_ctor_base const&) = default; | |
| __sfinae_ctor_base& operator=(__sfinae_ctor_base&&) = default; | |
| }; | |
| template <> | |
| struct __sfinae_ctor_base<true, false> { | |
| __sfinae_ctor_base() = default; | |
| __sfinae_ctor_base(__sfinae_ctor_base const&) = default; | |
| __sfinae_ctor_base(__sfinae_ctor_base &&) = delete; | |
| __sfinae_ctor_base& operator=(__sfinae_ctor_base const&) = default; | |
| __sfinae_ctor_base& operator=(__sfinae_ctor_base&&) = default; | |
| }; | |
| template <> | |
| struct __sfinae_ctor_base<false, true> { | |
| __sfinae_ctor_base() = default; | |
| __sfinae_ctor_base(__sfinae_ctor_base const&) = delete; | |
| __sfinae_ctor_base(__sfinae_ctor_base &&) = default; | |
| __sfinae_ctor_base& operator=(__sfinae_ctor_base const&) = default; | |
| __sfinae_ctor_base& operator=(__sfinae_ctor_base&&) = default; | |
| }; | |
| template <bool _CanCopy, bool _CanMove> | |
| struct __sfinae_assign_base {}; | |
| template <> | |
| struct __sfinae_assign_base<false, false> { | |
| __sfinae_assign_base() = default; | |
| __sfinae_assign_base(__sfinae_assign_base const&) = default; | |
| __sfinae_assign_base(__sfinae_assign_base &&) = default; | |
| __sfinae_assign_base& operator=(__sfinae_assign_base const&) = delete; | |
| __sfinae_assign_base& operator=(__sfinae_assign_base&&) = delete; | |
| }; | |
| template <> | |
| struct __sfinae_assign_base<true, false> { | |
| __sfinae_assign_base() = default; | |
| __sfinae_assign_base(__sfinae_assign_base const&) = default; | |
| __sfinae_assign_base(__sfinae_assign_base &&) = default; | |
| __sfinae_assign_base& operator=(__sfinae_assign_base const&) = default; | |
| __sfinae_assign_base& operator=(__sfinae_assign_base&&) = delete; | |
| }; | |
| template <> | |
| struct __sfinae_assign_base<false, true> { | |
| __sfinae_assign_base() = default; | |
| __sfinae_assign_base(__sfinae_assign_base const&) = default; | |
| __sfinae_assign_base(__sfinae_assign_base &&) = default; | |
| __sfinae_assign_base& operator=(__sfinae_assign_base const&) = delete; | |
| __sfinae_assign_base& operator=(__sfinae_assign_base&&) = default; | |
| }; | |
| #endif // _LIBCPP_STD_VER > 14 | |
| # 553 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP___TUPLE | |
| # 557 "/usr/local/bin/../include/c++/v1/__tuple" 3 | |
| # 199 "/usr/local/bin/../include/c++/v1/utility" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 199 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 200 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <initializer_list> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 200 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/initializer_list" 1 3 | |
| // -*- C++ -*- | |
| //===----------------------- initializer_list -----------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_INITIALIZER_LIST | |
| #define _LIBCPP_INITIALIZER_LIST | |
| /* | |
| initializer_list synopsis | |
| namespace std | |
| { | |
| template<class E> | |
| class initializer_list | |
| { | |
| public: | |
| typedef E value_type; | |
| typedef const E& reference; | |
| typedef const E& const_reference; | |
| typedef size_t size_type; | |
| typedef const E* iterator; | |
| typedef const E* const_iterator; | |
| initializer_list() noexcept; // constexpr in C++14 | |
| size_t size() const noexcept; // constexpr in C++14 | |
| const E* begin() const noexcept; // constexpr in C++14 | |
| const E* end() const noexcept; // constexpr in C++14 | |
| }; | |
| template<class E> const E* begin(initializer_list<E> il) noexcept; // constexpr in C++14 | |
| template<class E> const E* end(initializer_list<E> il) noexcept; // constexpr in C++14 | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 46 "/usr/local/bin/../include/c++/v1/initializer_list" 3 | |
| # 47 "/usr/local/bin/../include/c++/v1/initializer_list" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 47 "/usr/local/bin/../include/c++/v1/initializer_list" 3 | |
| # 48 "/usr/local/bin/../include/c++/v1/initializer_list" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 51 "/usr/local/bin/../include/c++/v1/initializer_list" 3 | |
| #endif | |
| # 52 "/usr/local/bin/../include/c++/v1/initializer_list" 3 | |
| namespace std // purposefully not versioned | |
| { | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template<class _Ep> | |
| class _LIBCPP_TEMPLATE_VIS initializer_list | |
| { | |
| const _Ep* __begin_; | |
| size_t __size_; | |
| _LIBCPP_ALWAYS_INLINE | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| initializer_list(const _Ep* __b, size_t __s) _NOEXCEPT | |
| : __begin_(__b), | |
| __size_(__s) | |
| {} | |
| public: | |
| typedef _Ep value_type; | |
| typedef const _Ep& reference; | |
| typedef const _Ep& const_reference; | |
| typedef size_t size_type; | |
| typedef const _Ep* iterator; | |
| typedef const _Ep* const_iterator; | |
| _LIBCPP_ALWAYS_INLINE | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| initializer_list() _NOEXCEPT : __begin_(nullptr), __size_(0) {} | |
| _LIBCPP_ALWAYS_INLINE | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| size_t size() const _NOEXCEPT {return __size_;} | |
| _LIBCPP_ALWAYS_INLINE | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _Ep* begin() const _NOEXCEPT {return __begin_;} | |
| _LIBCPP_ALWAYS_INLINE | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _Ep* end() const _NOEXCEPT {return __begin_ + __size_;} | |
| }; | |
| template<class _Ep> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _Ep* | |
| begin(initializer_list<_Ep> __il) _NOEXCEPT | |
| { | |
| return __il.begin(); | |
| } | |
| template<class _Ep> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _Ep* | |
| end(initializer_list<_Ep> __il) _NOEXCEPT | |
| { | |
| return __il.end(); | |
| } | |
| #endif // !defined(_LIBCPP_CXX03_LANG) | |
| # 115 "/usr/local/bin/../include/c++/v1/initializer_list" 3 | |
| } // std | |
| #endif // _LIBCPP_INITIALIZER_LIST | |
| # 119 "/usr/local/bin/../include/c++/v1/initializer_list" 3 | |
| # 201 "/usr/local/bin/../include/c++/v1/utility" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 201 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 202 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstring> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 202 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/cstring" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- cstring ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_CSTRING | |
| #define _LIBCPP_CSTRING | |
| /* | |
| cstring synopsis | |
| Macros: | |
| NULL | |
| namespace std | |
| { | |
| Types: | |
| size_t | |
| void* memcpy(void* restrict s1, const void* restrict s2, size_t n); | |
| void* memmove(void* s1, const void* s2, size_t n); | |
| char* strcpy (char* restrict s1, const char* restrict s2); | |
| char* strncpy(char* restrict s1, const char* restrict s2, size_t n); | |
| char* strcat (char* restrict s1, const char* restrict s2); | |
| char* strncat(char* restrict s1, const char* restrict s2, size_t n); | |
| int memcmp(const void* s1, const void* s2, size_t n); | |
| int strcmp (const char* s1, const char* s2); | |
| int strncmp(const char* s1, const char* s2, size_t n); | |
| int strcoll(const char* s1, const char* s2); | |
| size_t strxfrm(char* restrict s1, const char* restrict s2, size_t n); | |
| const void* memchr(const void* s, int c, size_t n); | |
| void* memchr( void* s, int c, size_t n); | |
| const char* strchr(const char* s, int c); | |
| char* strchr( char* s, int c); | |
| size_t strcspn(const char* s1, const char* s2); | |
| const char* strpbrk(const char* s1, const char* s2); | |
| char* strpbrk( char* s1, const char* s2); | |
| const char* strrchr(const char* s, int c); | |
| char* strrchr( char* s, int c); | |
| size_t strspn(const char* s1, const char* s2); | |
| const char* strstr(const char* s1, const char* s2); | |
| char* strstr( char* s1, const char* s2); | |
| char* strtok(char* restrict s1, const char* restrict s2); | |
| void* memset(void* s, int c, size_t n); | |
| char* strerror(int errnum); | |
| size_t strlen(const char* s); | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 60 "/usr/local/bin/../include/c++/v1/cstring" 3 | |
| # 61 "/usr/local/bin/../include/c++/v1/cstring" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <string.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 61 "/usr/local/bin/../include/c++/v1/cstring" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/string.h" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- string.h ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_STRING_H | |
| #define _LIBCPP_STRING_H | |
| /* | |
| string.h synopsis | |
| Macros: | |
| NULL | |
| Types: | |
| size_t | |
| void* memcpy(void* restrict s1, const void* restrict s2, size_t n); | |
| void* memmove(void* s1, const void* s2, size_t n); | |
| char* strcpy (char* restrict s1, const char* restrict s2); | |
| char* strncpy(char* restrict s1, const char* restrict s2, size_t n); | |
| char* strcat (char* restrict s1, const char* restrict s2); | |
| char* strncat(char* restrict s1, const char* restrict s2, size_t n); | |
| int memcmp(const void* s1, const void* s2, size_t n); | |
| int strcmp (const char* s1, const char* s2); | |
| int strncmp(const char* s1, const char* s2, size_t n); | |
| int strcoll(const char* s1, const char* s2); | |
| size_t strxfrm(char* restrict s1, const char* restrict s2, size_t n); | |
| const void* memchr(const void* s, int c, size_t n); | |
| void* memchr( void* s, int c, size_t n); | |
| const char* strchr(const char* s, int c); | |
| char* strchr( char* s, int c); | |
| size_t strcspn(const char* s1, const char* s2); | |
| const char* strpbrk(const char* s1, const char* s2); | |
| char* strpbrk( char* s1, const char* s2); | |
| const char* strrchr(const char* s, int c); | |
| char* strrchr( char* s, int c); | |
| size_t strspn(const char* s1, const char* s2); | |
| const char* strstr(const char* s1, const char* s2); | |
| char* strstr( char* s1, const char* s2); | |
| char* strtok(char* restrict s1, const char* restrict s2); | |
| void* memset(void* s, int c, size_t n); | |
| char* strerror(int errnum); | |
| size_t strlen(const char* s); | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 55 "/usr/local/bin/../include/c++/v1/string.h" 3 | |
| # 56 "/usr/local/bin/../include/c++/v1/string.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 59 "/usr/local/bin/../include/c++/v1/string.h" 3 | |
| #endif | |
| # 60 "/usr/local/bin/../include/c++/v1/string.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <string.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 61 "/usr/local/bin/../include/c++/v1/string.h" 3 | |
| # 1 "/usr/include/string.h" 1 3 4 | |
| /* Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * ISO C99 Standard: 7.21 String handling <string.h> | |
| */ | |
| #ifndef _STRING_H | |
| #define _STRING_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 25 "/usr/include/string.h" 3 4 | |
| # 26 "/usr/include/string.h" 3 4 | |
| __BEGIN_DECLS | |
| /* Get size_t and NULL from <stddef.h>. */ | |
| #define __need_size_t | |
| #define __need_NULL | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 32 "/usr/include/string.h" 3 4 | |
| # 1 "/usr/local/bin/../include/c++/v1/stddef.h" 1 3 4 | |
| // -*- C++ -*- | |
| //===--------------------------- stddef.h ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if defined(__need_ptrdiff_t) || defined(__need_size_t) || \ | |
| defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 16 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 17 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/stddef.h" 1 3 | |
| /*===---- stddef.h - Basic type definitions --------------------------------=== | |
| * | |
| * Copyright (c) 2008 Eli Friedman | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| *===-----------------------------------------------------------------------=== | |
| */ | |
| #if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \ | |
| defined(__need_size_t) || defined(__need_wchar_t) || \ | |
| defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \ | |
| !defined(__need_wchar_t) && !defined(__need_NULL) && \ | |
| !defined(__need_wint_t) | |
| /* Always define miscellaneous pieces when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define __STDDEF_H | |
| #endif | |
| # 37 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define __need_ptrdiff_t | |
| #define __need_size_t | |
| #define __need_wchar_t | |
| #define __need_NULL | |
| #define __need_STDDEF_H_misc | |
| /* __need_wint_t is intentionally not defined here. */ | |
| #endif | |
| # 44 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_ptrdiff_t) | |
| #if !defined(_PTRDIFF_T) || __has_feature(modules) | |
| /* Always define ptrdiff_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _PTRDIFF_T | |
| #endif | |
| # 51 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
| #endif | |
| # 53 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_ptrdiff_t | |
| #endif /* defined(__need_ptrdiff_t) */ | |
| # 55 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_size_t) | |
| #if !defined(_SIZE_T) || __has_feature(modules) | |
| /* Always define size_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _SIZE_T | |
| #endif | |
| # 62 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ size_t; | |
| #endif | |
| # 64 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_size_t | |
| #endif /*defined(__need_size_t) */ | |
| # 66 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| /* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is | |
| * enabled. */ | |
| #if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \ | |
| !defined(_RSIZE_T)) || __has_feature(modules) | |
| /* Always define rsize_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _RSIZE_T | |
| #endif | |
| # 76 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ rsize_t; | |
| #endif | |
| # 78 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 79 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_wchar_t) | |
| #ifndef __cplusplus | |
| /* Always define wchar_t when modules are available. */ | |
| #if !defined(_WCHAR_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WCHAR_T | |
| #if defined(_MSC_EXTENSIONS) | |
| #define _WCHAR_T_DEFINED | |
| #endif | |
| # 89 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 90 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WCHAR_TYPE__ wchar_t; | |
| #endif | |
| # 92 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 93 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wchar_t | |
| #endif /* defined(__need_wchar_t) */ | |
| # 95 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_NULL) | |
| #undef NULL | |
| #ifdef __cplusplus | |
| # if !defined(__MINGW32__) && !defined(_MSC_VER) | |
| # define NULL __null | |
| # else | |
| # 102 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL 0 | |
| # endif | |
| # 104 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #else | |
| # 105 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL ((void*)0) | |
| #endif | |
| # 107 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #ifdef __cplusplus | |
| #if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) | |
| namespace std { typedef decltype(nullptr) nullptr_t; } | |
| using ::std::nullptr_t; | |
| #endif | |
| # 112 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 113 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_NULL | |
| #endif /* defined(__need_NULL) */ | |
| # 115 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| #if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include "__stddef_max_align_t.h" | |
| #endif /* expanded by -frewrite-includes */ | |
| # 118 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 119 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 120 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define offsetof(t, d) __builtin_offsetof(t, d) | |
| #undef __need_STDDEF_H_misc | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 123 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| /* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use | |
| __WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ | |
| #if defined(__need_wint_t) | |
| /* Always define wint_t when modules are available. */ | |
| #if !defined(_WINT_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WINT_T | |
| #endif | |
| # 132 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WINT_TYPE__ wint_t; | |
| #endif | |
| # 134 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wint_t | |
| #endif /* __need_wint_t */ | |
| # 136 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 138 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 19 "/usr/local/bin/../include/c++/v1/stddef.h" 2 3 | |
| #elif !defined(_LIBCPP_STDDEF_H) | |
| # 21 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #define _LIBCPP_STDDEF_H | |
| /* | |
| stddef.h synopsis | |
| Macros: | |
| offsetof(type,member-designator) | |
| NULL | |
| Types: | |
| ptrdiff_t | |
| size_t | |
| max_align_t | |
| nullptr_t | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 40 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 41 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 44 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 45 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 46 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 47 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #ifdef __cplusplus | |
| extern "C++" { | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__nullptr> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 51 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 52 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| using std::nullptr_t; | |
| } | |
| // Re-use the compiler's <stddef.h> max_align_t where possible. | |
| #if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \ | |
| !defined(__DEFINED_max_align_t) | |
| typedef long double max_align_t; | |
| #endif | |
| # 60 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 62 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif // _LIBCPP_STDDEF_H | |
| # 64 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 33 "/usr/include/string.h" 2 3 4 | |
| /* Tell the caller that we provide correct C++ prototypes. */ | |
| #if defined __cplusplus && __GNUC_PREREQ (4, 4) | |
| # define __CORRECT_ISO_CPP_STRING_H_PROTO | |
| #endif | |
| # 38 "/usr/include/string.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Copy N bytes of SRC to DEST. */ | |
| extern void *memcpy (void *__restrict __dest, const void *__restrict __src, | |
| size_t __n) __THROW __nonnull ((1, 2)); | |
| /* Copy N bytes of SRC to DEST, guaranteeing | |
| correct behavior for overlapping strings. */ | |
| extern void *memmove (void *__dest, const void *__src, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| __END_NAMESPACE_STD | |
| /* Copy no more than N bytes of SRC to DEST, stopping when C is found. | |
| Return the position in DEST one byte past where C was copied, | |
| or NULL if C was not found in the first N bytes of SRC. */ | |
| #if defined __USE_MISC || defined __USE_XOPEN | |
| extern void *memccpy (void *__restrict __dest, const void *__restrict __src, | |
| int __c, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| #endif /* Misc || X/Open. */ | |
| # 58 "/usr/include/string.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Set N bytes of S to C. */ | |
| extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1)); | |
| /* Compare N bytes of S1 and S2. */ | |
| extern int memcmp (const void *__s1, const void *__s2, size_t __n) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Search N bytes of S for C. */ | |
| #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" | |
| { | |
| extern void *memchr (void *__s, int __c, size_t __n) | |
| __THROW __asm ("memchr") __attribute_pure__ __nonnull ((1)); | |
| extern const void *memchr (const void *__s, int __c, size_t __n) | |
| __THROW __asm ("memchr") __attribute_pure__ __nonnull ((1)); | |
| # ifdef __OPTIMIZE__ | |
| __extern_always_inline void * | |
| memchr (void *__s, int __c, size_t __n) __THROW | |
| { | |
| return __builtin_memchr (__s, __c, __n); | |
| } | |
| __extern_always_inline const void * | |
| memchr (const void *__s, int __c, size_t __n) __THROW | |
| { | |
| return __builtin_memchr (__s, __c, __n); | |
| } | |
| # endif | |
| # 90 "/usr/include/string.h" 3 4 | |
| } | |
| #else | |
| # 92 "/usr/include/string.h" 3 4 | |
| extern void *memchr (const void *__s, int __c, size_t __n) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| #endif | |
| # 95 "/usr/include/string.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* Search in S for C. This is similar to `memchr' but there is no | |
| length limit. */ | |
| # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" void *rawmemchr (void *__s, int __c) | |
| __THROW __asm ("rawmemchr") __attribute_pure__ __nonnull ((1)); | |
| extern "C++" const void *rawmemchr (const void *__s, int __c) | |
| __THROW __asm ("rawmemchr") __attribute_pure__ __nonnull ((1)); | |
| # else | |
| # 106 "/usr/include/string.h" 3 4 | |
| extern void *rawmemchr (const void *__s, int __c) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| # endif | |
| # 109 "/usr/include/string.h" 3 4 | |
| /* Search N bytes of S for the final occurrence of C. */ | |
| # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" void *memrchr (void *__s, int __c, size_t __n) | |
| __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1)); | |
| extern "C++" const void *memrchr (const void *__s, int __c, size_t __n) | |
| __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1)); | |
| # else | |
| # 117 "/usr/include/string.h" 3 4 | |
| extern void *memrchr (const void *__s, int __c, size_t __n) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| # endif | |
| # 120 "/usr/include/string.h" 3 4 | |
| #endif | |
| # 121 "/usr/include/string.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Copy SRC to DEST. */ | |
| extern char *strcpy (char *__restrict __dest, const char *__restrict __src) | |
| __THROW __nonnull ((1, 2)); | |
| /* Copy no more than N characters of SRC to DEST. */ | |
| extern char *strncpy (char *__restrict __dest, | |
| const char *__restrict __src, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| /* Append SRC onto DEST. */ | |
| extern char *strcat (char *__restrict __dest, const char *__restrict __src) | |
| __THROW __nonnull ((1, 2)); | |
| /* Append no more than N characters from SRC onto DEST. */ | |
| extern char *strncat (char *__restrict __dest, const char *__restrict __src, | |
| size_t __n) __THROW __nonnull ((1, 2)); | |
| /* Compare S1 and S2. */ | |
| extern int strcmp (const char *__s1, const char *__s2) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Compare N characters of S1 and S2. */ | |
| extern int strncmp (const char *__s1, const char *__s2, size_t __n) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Compare the collated forms of S1 and S2. */ | |
| extern int strcoll (const char *__s1, const char *__s2) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Put a transformation of SRC into no more than N bytes of DEST. */ | |
| extern size_t strxfrm (char *__restrict __dest, | |
| const char *__restrict __src, size_t __n) | |
| __THROW __nonnull ((2)); | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_XOPEN2K8 | |
| /* The following functions are equivalent to the both above but they | |
| take the locale they use for the collation as an extra argument. | |
| This is not standardsized but something like will come. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <xlocale.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 159 "/usr/include/string.h" 3 4 | |
| # 160 "/usr/include/string.h" 3 4 | |
| /* Compare the collated forms of S1 and S2 using rules from L. */ | |
| extern int strcoll_l (const char *__s1, const char *__s2, __locale_t __l) | |
| __THROW __attribute_pure__ __nonnull ((1, 2, 3)); | |
| /* Put a transformation of SRC into no more than N bytes of DEST. */ | |
| extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n, | |
| __locale_t __l) __THROW __nonnull ((2, 4)); | |
| #endif | |
| # 168 "/usr/include/string.h" 3 4 | |
| #if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 | |
| /* Duplicate S, returning an identical malloc'd string. */ | |
| extern char *strdup (const char *__s) | |
| __THROW __attribute_malloc__ __nonnull ((1)); | |
| #endif | |
| # 174 "/usr/include/string.h" 3 4 | |
| /* Return a malloc'd copy of at most N bytes of STRING. The | |
| resultant string is terminated even if no null terminator | |
| appears before STRING[N]. */ | |
| #if defined __USE_XOPEN2K8 | |
| extern char *strndup (const char *__string, size_t __n) | |
| __THROW __attribute_malloc__ __nonnull ((1)); | |
| #endif | |
| # 182 "/usr/include/string.h" 3 4 | |
| #if defined __USE_GNU && defined __GNUC__ | |
| /* Duplicate S, returning an identical alloca'd string. */ | |
| # define strdupa(s) \ | |
| (__extension__ \ | |
| ({ \ | |
| const char *__old = (s); \ | |
| size_t __len = strlen (__old) + 1; \ | |
| char *__new = (char *) __builtin_alloca (__len); \ | |
| (char *) memcpy (__new, __old, __len); \ | |
| })) | |
| /* Return an alloca'd copy of at most N bytes of string. */ | |
| # define strndupa(s, n) \ | |
| (__extension__ \ | |
| ({ \ | |
| const char *__old = (s); \ | |
| size_t __len = strnlen (__old, (n)); \ | |
| char *__new = (char *) __builtin_alloca (__len + 1); \ | |
| __new[__len] = '\0'; \ | |
| (char *) memcpy (__new, __old, __len); \ | |
| })) | |
| #endif | |
| # 205 "/usr/include/string.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Find the first occurrence of C in S. */ | |
| #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" | |
| { | |
| extern char *strchr (char *__s, int __c) | |
| __THROW __asm ("strchr") __attribute_pure__ __nonnull ((1)); | |
| extern const char *strchr (const char *__s, int __c) | |
| __THROW __asm ("strchr") __attribute_pure__ __nonnull ((1)); | |
| # ifdef __OPTIMIZE__ | |
| __extern_always_inline char * | |
| strchr (char *__s, int __c) __THROW | |
| { | |
| return __builtin_strchr (__s, __c); | |
| } | |
| __extern_always_inline const char * | |
| strchr (const char *__s, int __c) __THROW | |
| { | |
| return __builtin_strchr (__s, __c); | |
| } | |
| # endif | |
| # 229 "/usr/include/string.h" 3 4 | |
| } | |
| #else | |
| # 231 "/usr/include/string.h" 3 4 | |
| extern char *strchr (const char *__s, int __c) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| #endif | |
| # 234 "/usr/include/string.h" 3 4 | |
| /* Find the last occurrence of C in S. */ | |
| #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" | |
| { | |
| extern char *strrchr (char *__s, int __c) | |
| __THROW __asm ("strrchr") __attribute_pure__ __nonnull ((1)); | |
| extern const char *strrchr (const char *__s, int __c) | |
| __THROW __asm ("strrchr") __attribute_pure__ __nonnull ((1)); | |
| # ifdef __OPTIMIZE__ | |
| __extern_always_inline char * | |
| strrchr (char *__s, int __c) __THROW | |
| { | |
| return __builtin_strrchr (__s, __c); | |
| } | |
| __extern_always_inline const char * | |
| strrchr (const char *__s, int __c) __THROW | |
| { | |
| return __builtin_strrchr (__s, __c); | |
| } | |
| # endif | |
| # 256 "/usr/include/string.h" 3 4 | |
| } | |
| #else | |
| # 258 "/usr/include/string.h" 3 4 | |
| extern char *strrchr (const char *__s, int __c) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| #endif | |
| # 261 "/usr/include/string.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* This function is similar to `strchr'. But it returns a pointer to | |
| the closing NUL byte in case C is not found in S. */ | |
| # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" char *strchrnul (char *__s, int __c) | |
| __THROW __asm ("strchrnul") __attribute_pure__ __nonnull ((1)); | |
| extern "C++" const char *strchrnul (const char *__s, int __c) | |
| __THROW __asm ("strchrnul") __attribute_pure__ __nonnull ((1)); | |
| # else | |
| # 272 "/usr/include/string.h" 3 4 | |
| extern char *strchrnul (const char *__s, int __c) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| # endif | |
| # 275 "/usr/include/string.h" 3 4 | |
| #endif | |
| # 276 "/usr/include/string.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return the length of the initial segment of S which | |
| consists entirely of characters not in REJECT. */ | |
| extern size_t strcspn (const char *__s, const char *__reject) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Return the length of the initial segment of S which | |
| consists entirely of characters in ACCEPT. */ | |
| extern size_t strspn (const char *__s, const char *__accept) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Find the first occurrence in S of any character in ACCEPT. */ | |
| #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" | |
| { | |
| extern char *strpbrk (char *__s, const char *__accept) | |
| __THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2)); | |
| extern const char *strpbrk (const char *__s, const char *__accept) | |
| __THROW __asm ("strpbrk") __attribute_pure__ __nonnull ((1, 2)); | |
| # ifdef __OPTIMIZE__ | |
| __extern_always_inline char * | |
| strpbrk (char *__s, const char *__accept) __THROW | |
| { | |
| return __builtin_strpbrk (__s, __accept); | |
| } | |
| __extern_always_inline const char * | |
| strpbrk (const char *__s, const char *__accept) __THROW | |
| { | |
| return __builtin_strpbrk (__s, __accept); | |
| } | |
| # endif | |
| # 308 "/usr/include/string.h" 3 4 | |
| } | |
| #else | |
| # 310 "/usr/include/string.h" 3 4 | |
| extern char *strpbrk (const char *__s, const char *__accept) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| #endif | |
| # 313 "/usr/include/string.h" 3 4 | |
| /* Find the first occurrence of NEEDLE in HAYSTACK. */ | |
| #ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" | |
| { | |
| extern char *strstr (char *__haystack, const char *__needle) | |
| __THROW __asm ("strstr") __attribute_pure__ __nonnull ((1, 2)); | |
| extern const char *strstr (const char *__haystack, const char *__needle) | |
| __THROW __asm ("strstr") __attribute_pure__ __nonnull ((1, 2)); | |
| # ifdef __OPTIMIZE__ | |
| __extern_always_inline char * | |
| strstr (char *__haystack, const char *__needle) __THROW | |
| { | |
| return __builtin_strstr (__haystack, __needle); | |
| } | |
| __extern_always_inline const char * | |
| strstr (const char *__haystack, const char *__needle) __THROW | |
| { | |
| return __builtin_strstr (__haystack, __needle); | |
| } | |
| # endif | |
| # 335 "/usr/include/string.h" 3 4 | |
| } | |
| #else | |
| # 337 "/usr/include/string.h" 3 4 | |
| extern char *strstr (const char *__haystack, const char *__needle) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| #endif | |
| # 340 "/usr/include/string.h" 3 4 | |
| /* Divide S into tokens separated by characters in DELIM. */ | |
| extern char *strtok (char *__restrict __s, const char *__restrict __delim) | |
| __THROW __nonnull ((2)); | |
| __END_NAMESPACE_STD | |
| /* Divide S into tokens separated by characters in DELIM. Information | |
| passed between calls are stored in SAVE_PTR. */ | |
| extern char *__strtok_r (char *__restrict __s, | |
| const char *__restrict __delim, | |
| char **__restrict __save_ptr) | |
| __THROW __nonnull ((2, 3)); | |
| #ifdef __USE_POSIX | |
| extern char *strtok_r (char *__restrict __s, const char *__restrict __delim, | |
| char **__restrict __save_ptr) | |
| __THROW __nonnull ((2, 3)); | |
| #endif | |
| # 358 "/usr/include/string.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Similar to `strstr' but this function ignores the case of both strings. */ | |
| # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" char *strcasestr (char *__haystack, const char *__needle) | |
| __THROW __asm ("strcasestr") __attribute_pure__ __nonnull ((1, 2)); | |
| extern "C++" const char *strcasestr (const char *__haystack, | |
| const char *__needle) | |
| __THROW __asm ("strcasestr") __attribute_pure__ __nonnull ((1, 2)); | |
| # else | |
| # 368 "/usr/include/string.h" 3 4 | |
| extern char *strcasestr (const char *__haystack, const char *__needle) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| # endif | |
| # 371 "/usr/include/string.h" 3 4 | |
| #endif | |
| # 372 "/usr/include/string.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Find the first occurrence of NEEDLE in HAYSTACK. | |
| NEEDLE is NEEDLELEN bytes long; | |
| HAYSTACK is HAYSTACKLEN bytes long. */ | |
| extern void *memmem (const void *__haystack, size_t __haystacklen, | |
| const void *__needle, size_t __needlelen) | |
| __THROW __attribute_pure__ __nonnull ((1, 3)); | |
| /* Copy N bytes of SRC to DEST, return pointer to bytes after the | |
| last written byte. */ | |
| extern void *__mempcpy (void *__restrict __dest, | |
| const void *__restrict __src, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| extern void *mempcpy (void *__restrict __dest, | |
| const void *__restrict __src, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| #endif | |
| # 390 "/usr/include/string.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return the length of S. */ | |
| extern size_t strlen (const char *__s) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_XOPEN2K8 | |
| /* Find the length of STRING, but scan at most MAXLEN characters. | |
| If no '\0' terminator is found in that many characters, return MAXLEN. */ | |
| extern size_t strnlen (const char *__string, size_t __maxlen) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| #endif | |
| # 404 "/usr/include/string.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return a string describing the meaning of the `errno' code in ERRNUM. */ | |
| extern char *strerror (int __errnum) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_XOPEN2K | |
| /* Reentrant version of `strerror'. | |
| There are 2 flavors of `strerror_r', GNU which returns the string | |
| and may or may not use the supplied temporary buffer and POSIX one | |
| which fills the string into the buffer. | |
| To use the POSIX version, -D_XOPEN_SOURCE=600 or -D_POSIX_C_SOURCE=200112L | |
| without -D_GNU_SOURCE is needed, otherwise the GNU version is | |
| preferred. */ | |
| # if defined __USE_XOPEN2K && !defined __USE_GNU | |
| /* Fill BUF with a string describing the meaning of the `errno' code in | |
| ERRNUM. */ | |
| # ifdef __REDIRECT_NTH | |
| extern int __REDIRECT_NTH (strerror_r, | |
| (int __errnum, char *__buf, size_t __buflen), | |
| __xpg_strerror_r) __nonnull ((2)); | |
| # else | |
| # 426 "/usr/include/string.h" 3 4 | |
| extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen) | |
| __THROW __nonnull ((2)); | |
| # define strerror_r __xpg_strerror_r | |
| # endif | |
| # 430 "/usr/include/string.h" 3 4 | |
| # else | |
| # 431 "/usr/include/string.h" 3 4 | |
| /* If a temporary buffer is required, at most BUFLEN bytes of BUF will be | |
| used. */ | |
| extern char *strerror_r (int __errnum, char *__buf, size_t __buflen) | |
| __THROW __nonnull ((2)) __wur; | |
| # endif | |
| # 436 "/usr/include/string.h" 3 4 | |
| #endif | |
| # 437 "/usr/include/string.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| /* Translate error number to string according to the locale L. */ | |
| extern char *strerror_l (int __errnum, __locale_t __l) __THROW; | |
| #endif | |
| # 442 "/usr/include/string.h" 3 4 | |
| /* We define this function always since `bzero' is sometimes needed when | |
| the namespace rules does not allow this. */ | |
| extern void __bzero (void *__s, size_t __n) __THROW __nonnull ((1)); | |
| #ifdef __USE_MISC | |
| /* Copy N bytes of SRC to DEST (like memmove, but args reversed). */ | |
| extern void bcopy (const void *__src, void *__dest, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| /* Set N bytes of S to 0. */ | |
| extern void bzero (void *__s, size_t __n) __THROW __nonnull ((1)); | |
| /* Compare N bytes of S1 and S2 (same as memcmp). */ | |
| extern int bcmp (const void *__s1, const void *__s2, size_t __n) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Find the first occurrence of C in S (same as strchr). */ | |
| # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" | |
| { | |
| extern char *index (char *__s, int __c) | |
| __THROW __asm ("index") __attribute_pure__ __nonnull ((1)); | |
| extern const char *index (const char *__s, int __c) | |
| __THROW __asm ("index") __attribute_pure__ __nonnull ((1)); | |
| # if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRINGS_H_PROTO | |
| __extern_always_inline char * | |
| index (char *__s, int __c) __THROW | |
| { | |
| return __builtin_index (__s, __c); | |
| } | |
| __extern_always_inline const char * | |
| index (const char *__s, int __c) __THROW | |
| { | |
| return __builtin_index (__s, __c); | |
| } | |
| # endif | |
| # 482 "/usr/include/string.h" 3 4 | |
| } | |
| # else | |
| # 484 "/usr/include/string.h" 3 4 | |
| extern char *index (const char *__s, int __c) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| # endif | |
| # 487 "/usr/include/string.h" 3 4 | |
| /* Find the last occurrence of C in S (same as strrchr). */ | |
| # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" | |
| { | |
| extern char *rindex (char *__s, int __c) | |
| __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1)); | |
| extern const char *rindex (const char *__s, int __c) | |
| __THROW __asm ("rindex") __attribute_pure__ __nonnull ((1)); | |
| # if defined __OPTIMIZE__ && !defined __CORRECT_ISO_CPP_STRINGS_H_PROTO | |
| __extern_always_inline char * | |
| rindex (char *__s, int __c) __THROW | |
| { | |
| return __builtin_rindex (__s, __c); | |
| } | |
| __extern_always_inline const char * | |
| rindex (const char *__s, int __c) __THROW | |
| { | |
| return __builtin_rindex (__s, __c); | |
| } | |
| #endif | |
| # 510 "/usr/include/string.h" 3 4 | |
| } | |
| # else | |
| # 512 "/usr/include/string.h" 3 4 | |
| extern char *rindex (const char *__s, int __c) | |
| __THROW __attribute_pure__ __nonnull ((1)); | |
| # endif | |
| # 515 "/usr/include/string.h" 3 4 | |
| /* Return the position of the first bit set in I, or 0 if none are set. | |
| The least-significant bit is position 1, the most-significant 32. */ | |
| extern int ffs (int __i) __THROW __attribute__ ((__const__)); | |
| /* The following two functions are non-standard but necessary for non-32 bit | |
| platforms. */ | |
| # ifdef __USE_GNU | |
| extern int ffsl (long int __l) __THROW __attribute__ ((__const__)); | |
| __extension__ extern int ffsll (long long int __ll) | |
| __THROW __attribute__ ((__const__)); | |
| # endif | |
| # 527 "/usr/include/string.h" 3 4 | |
| /* Compare S1 and S2, ignoring case. */ | |
| extern int strcasecmp (const char *__s1, const char *__s2) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Compare no more than N chars of S1 and S2, ignoring case. */ | |
| extern int strncasecmp (const char *__s1, const char *__s2, size_t __n) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| #endif /* Use misc. */ | |
| # 536 "/usr/include/string.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Again versions of a few functions which use the given locale instead | |
| of the global one. */ | |
| extern int strcasecmp_l (const char *__s1, const char *__s2, | |
| __locale_t __loc) | |
| __THROW __attribute_pure__ __nonnull ((1, 2, 3)); | |
| extern int strncasecmp_l (const char *__s1, const char *__s2, | |
| size_t __n, __locale_t __loc) | |
| __THROW __attribute_pure__ __nonnull ((1, 2, 4)); | |
| #endif | |
| # 548 "/usr/include/string.h" 3 4 | |
| #ifdef __USE_MISC | |
| /* Return the next DELIM-delimited token from *STRINGP, | |
| terminating it with a '\0', and update *STRINGP to point past it. */ | |
| extern char *strsep (char **__restrict __stringp, | |
| const char *__restrict __delim) | |
| __THROW __nonnull ((1, 2)); | |
| #endif | |
| # 556 "/usr/include/string.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| /* Return a string describing the meaning of the signal number in SIG. */ | |
| extern char *strsignal (int __sig) __THROW; | |
| /* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */ | |
| extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src) | |
| __THROW __nonnull ((1, 2)); | |
| extern char *stpcpy (char *__restrict __dest, const char *__restrict __src) | |
| __THROW __nonnull ((1, 2)); | |
| /* Copy no more than N characters of SRC to DEST, returning the address of | |
| the last character written into DEST. */ | |
| extern char *__stpncpy (char *__restrict __dest, | |
| const char *__restrict __src, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| extern char *stpncpy (char *__restrict __dest, | |
| const char *__restrict __src, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| #endif | |
| # 576 "/usr/include/string.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Compare S1 and S2 as strings holding name & indices/version numbers. */ | |
| extern int strverscmp (const char *__s1, const char *__s2) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Sautee STRING briskly. */ | |
| extern char *strfry (char *__string) __THROW __nonnull ((1)); | |
| /* Frobnicate N bytes of S. */ | |
| extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1)); | |
| # ifndef basename | |
| /* Return the file name within directory of FILENAME. We don't | |
| declare the function if the `basename' macro is available (defined | |
| in <libgen.h>) which makes the XPG version of this function | |
| available. */ | |
| # ifdef __CORRECT_ISO_CPP_STRING_H_PROTO | |
| extern "C++" char *basename (char *__filename) | |
| __THROW __asm ("basename") __nonnull ((1)); | |
| extern "C++" const char *basename (const char *__filename) | |
| __THROW __asm ("basename") __nonnull ((1)); | |
| # else | |
| # 599 "/usr/include/string.h" 3 4 | |
| extern char *basename (const char *__filename) __THROW __nonnull ((1)); | |
| # endif | |
| # 601 "/usr/include/string.h" 3 4 | |
| # endif | |
| # 602 "/usr/include/string.h" 3 4 | |
| #endif | |
| # 603 "/usr/include/string.h" 3 4 | |
| #if defined __GNUC__ && __GNUC__ >= 2 | |
| # if defined __OPTIMIZE__ && !defined __OPTIMIZE_SIZE__ \ | |
| && !defined __NO_INLINE__ && !defined __cplusplus | |
| /* When using GNU CC we provide some optimized versions of selected | |
| functions from this header. There are two kinds of optimizations: | |
| - machine-dependent optimizations, most probably using inline | |
| assembler code; these might be quite expensive since the code | |
| size can increase significantly. | |
| These optimizations are not used unless the symbol | |
| __USE_STRING_INLINES | |
| is defined before including this header. | |
| - machine-independent optimizations which do not increase the | |
| code size significantly and which optimize mainly situations | |
| where one or more arguments are compile-time constants. | |
| These optimizations are used always when the compiler is | |
| taught to optimize. | |
| One can inhibit all optimizations by defining __NO_STRING_INLINES. */ | |
| /* Get the machine-dependent optimizations (if any). */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/string.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 627 "/usr/include/string.h" 3 4 | |
| # 628 "/usr/include/string.h" 3 4 | |
| /* These are generic optimizations which do not add too much inline code. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/string2.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 630 "/usr/include/string.h" 3 4 | |
| # 631 "/usr/include/string.h" 3 4 | |
| # endif | |
| # 632 "/usr/include/string.h" 3 4 | |
| # if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function | |
| /* Functions with security checks. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/string3.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 635 "/usr/include/string.h" 3 4 | |
| # 636 "/usr/include/string.h" 3 4 | |
| # endif | |
| # 637 "/usr/include/string.h" 3 4 | |
| #endif | |
| # 638 "/usr/include/string.h" 3 4 | |
| #if defined __USE_GNU && defined __OPTIMIZE__ \ | |
| && defined __extern_always_inline && __GNUC_PREREQ (3,2) | |
| # if !defined _FORCE_INLINES && !defined _HAVE_STRING_ARCH_mempcpy | |
| #undef mempcpy | |
| #undef __mempcpy | |
| #define mempcpy(dest, src, n) __mempcpy_inline (dest, src, n) | |
| #define __mempcpy(dest, src, n) __mempcpy_inline (dest, src, n) | |
| __extern_always_inline void * | |
| __mempcpy_inline (void *__restrict __dest, | |
| const void *__restrict __src, size_t __n) | |
| { | |
| return (char *) memcpy (__dest, __src, __n) + __n; | |
| } | |
| # endif | |
| # 656 "/usr/include/string.h" 3 4 | |
| #endif | |
| # 657 "/usr/include/string.h" 3 4 | |
| __END_DECLS | |
| #endif /* string.h */ | |
| # 661 "/usr/include/string.h" 3 4 | |
| # 62 "/usr/local/bin/../include/c++/v1/string.h" 2 3 | |
| // MSVCRT, GNU libc and its derivates may already have the correct prototype in | |
| // <string.h>. This macro can be defined by users if their C library provides | |
| // the right signature. | |
| #if defined(__CORRECT_ISO_CPP_STRING_H_PROTO) || defined(_LIBCPP_MSVCRT) || \ | |
| defined(__sun__) || defined(_STRING_H_CPLUSPLUS_98_CONFORMANCE_) | |
| #define _LIBCPP_STRING_H_HAS_CONST_OVERLOADS | |
| #endif | |
| # 70 "/usr/local/bin/../include/c++/v1/string.h" 3 | |
| #if defined(__cplusplus) && !defined(_LIBCPP_STRING_H_HAS_CONST_OVERLOADS) && defined(_LIBCPP_PREFERRED_OVERLOAD) | |
| extern "C++" { | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| char* __libcpp_strchr(const char* __s, int __c) {return (char*)strchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const char* strchr(const char* __s, int __c) {return __libcpp_strchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| char* strchr( char* __s, int __c) {return __libcpp_strchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| char* __libcpp_strpbrk(const char* __s1, const char* __s2) {return (char*)strpbrk(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const char* strpbrk(const char* __s1, const char* __s2) {return __libcpp_strpbrk(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| char* strpbrk( char* __s1, const char* __s2) {return __libcpp_strpbrk(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| char* __libcpp_strrchr(const char* __s, int __c) {return (char*)strrchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const char* strrchr(const char* __s, int __c) {return __libcpp_strrchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| char* strrchr( char* __s, int __c) {return __libcpp_strrchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| void* __libcpp_memchr(const void* __s, int __c, size_t __n) {return (void*)memchr(__s, __c, __n);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const void* memchr(const void* __s, int __c, size_t __n) {return __libcpp_memchr(__s, __c, __n);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| void* memchr( void* __s, int __c, size_t __n) {return __libcpp_memchr(__s, __c, __n);} | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| char* __libcpp_strstr(const char* __s1, const char* __s2) {return (char*)strstr(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const char* strstr(const char* __s1, const char* __s2) {return __libcpp_strstr(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| char* strstr( char* __s1, const char* __s2) {return __libcpp_strstr(__s1, __s2);} | |
| } | |
| #endif | |
| # 109 "/usr/local/bin/../include/c++/v1/string.h" 3 | |
| #endif // _LIBCPP_STRING_H | |
| # 111 "/usr/local/bin/../include/c++/v1/string.h" 3 | |
| # 62 "/usr/local/bin/../include/c++/v1/cstring" 2 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 65 "/usr/local/bin/../include/c++/v1/cstring" 3 | |
| #endif | |
| # 66 "/usr/local/bin/../include/c++/v1/cstring" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| using ::size_t; | |
| using ::memcpy; | |
| using ::memmove; | |
| using ::strcpy; | |
| using ::strncpy; | |
| using ::strcat; | |
| using ::strncat; | |
| using ::memcmp; | |
| using ::strcmp; | |
| using ::strncmp; | |
| using ::strcoll; | |
| using ::strxfrm; | |
| using ::memchr; | |
| using ::strchr; | |
| using ::strcspn; | |
| using ::strpbrk; | |
| using ::strrchr; | |
| using ::strspn; | |
| using ::strstr; | |
| #ifndef _LIBCPP_HAS_NO_THREAD_UNSAFE_C_FUNCTIONS | |
| using ::strtok; | |
| #endif | |
| # 91 "/usr/local/bin/../include/c++/v1/cstring" 3 | |
| using ::memset; | |
| using ::strerror; | |
| using ::strlen; | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP_CSTRING | |
| # 98 "/usr/local/bin/../include/c++/v1/cstring" 3 | |
| # 203 "/usr/local/bin/../include/c++/v1/utility" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstdint> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 203 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 204 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__debug> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 204 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/__debug" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- __debug ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_DEBUG_H | |
| #define _LIBCPP_DEBUG_H | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 14 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| # 15 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #endif | |
| # 19 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if defined(_LIBCPP_HAS_NO_NULLPTR) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 21 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| # 22 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #endif | |
| # 23 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if _LIBCPP_DEBUG_LEVEL >= 1 || defined(_LIBCPP_BUILDING_LIBRARY) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <cstdlib> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 25 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| # 26 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <cstdio> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 26 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| # 27 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <cstddef> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| # 28 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <exception> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 28 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| # 29 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #endif | |
| # 30 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if _LIBCPP_DEBUG_LEVEL >= 1 && !defined(_LIBCPP_ASSERT) | |
| # define _LIBCPP_ASSERT(x, m) ((x) ? (void)0 : \ | |
| _VSTD::__libcpp_debug_function(_VSTD::__libcpp_debug_info(__FILE__, __LINE__, #x, m))) | |
| #endif | |
| # 35 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if _LIBCPP_DEBUG_LEVEL >= 2 | |
| #ifndef _LIBCPP_DEBUG_ASSERT | |
| #define _LIBCPP_DEBUG_ASSERT(x, m) _LIBCPP_ASSERT(x, m) | |
| #endif | |
| # 40 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #define _LIBCPP_DEBUG_MODE(...) __VA_ARGS__ | |
| #endif | |
| # 42 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #ifndef _LIBCPP_ASSERT | |
| # define _LIBCPP_ASSERT(x, m) ((void)0) | |
| #endif | |
| # 46 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #ifndef _LIBCPP_DEBUG_ASSERT | |
| # define _LIBCPP_DEBUG_ASSERT(x, m) ((void)0) | |
| #endif | |
| # 49 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #ifndef _LIBCPP_DEBUG_MODE | |
| #define _LIBCPP_DEBUG_MODE(...) ((void)0) | |
| #endif | |
| # 52 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if _LIBCPP_DEBUG_LEVEL < 1 | |
| class _LIBCPP_EXCEPTION_ABI __libcpp_debug_exception; | |
| #endif | |
| # 56 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| struct _LIBCPP_TEMPLATE_VIS __libcpp_debug_info { | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR | |
| __libcpp_debug_info() | |
| : __file_(nullptr), __line_(-1), __pred_(nullptr), __msg_(nullptr) {} | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR | |
| __libcpp_debug_info(const char* __f, int __l, const char* __p, const char* __m) | |
| : __file_(__f), __line_(__l), __pred_(__p), __msg_(__m) {} | |
| const char* __file_; | |
| int __line_; | |
| const char* __pred_; | |
| const char* __msg_; | |
| }; | |
| /// __libcpp_debug_function_type - The type of the assertion failure handler. | |
| typedef void(*__libcpp_debug_function_type)(__libcpp_debug_info const&); | |
| /// __libcpp_debug_function - The handler function called when a _LIBCPP_ASSERT | |
| /// fails. | |
| extern _LIBCPP_EXTERN_VIS __libcpp_debug_function_type __libcpp_debug_function; | |
| /// __libcpp_abort_debug_function - A debug handler that aborts when called. | |
| _LIBCPP_NORETURN _LIBCPP_FUNC_VIS | |
| void __libcpp_abort_debug_function(__libcpp_debug_info const&); | |
| /// __libcpp_throw_debug_function - A debug handler that throws | |
| /// an instance of __libcpp_debug_exception when called. | |
| _LIBCPP_NORETURN _LIBCPP_FUNC_VIS | |
| void __libcpp_throw_debug_function(__libcpp_debug_info const&); | |
| /// __libcpp_set_debug_function - Set the debug handler to the specified | |
| /// function. | |
| _LIBCPP_FUNC_VIS | |
| bool __libcpp_set_debug_function(__libcpp_debug_function_type __func); | |
| // Setup the throwing debug handler during dynamic initialization. | |
| #if _LIBCPP_DEBUG_LEVEL >= 1 && defined(_LIBCPP_DEBUG_USE_EXCEPTIONS) | |
| # if defined(_LIBCPP_NO_EXCEPTIONS) | |
| # error _LIBCPP_DEBUG_USE_EXCEPTIONS cannot be used when exceptions are disabled. | |
| # endif | |
| # 98 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| static bool __init_dummy = __libcpp_set_debug_function(__libcpp_throw_debug_function); | |
| #endif | |
| # 100 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if _LIBCPP_DEBUG_LEVEL >= 1 || defined(_LIBCPP_BUILDING_LIBRARY) | |
| class _LIBCPP_EXCEPTION_ABI __libcpp_debug_exception : public exception { | |
| public: | |
| __libcpp_debug_exception() _NOEXCEPT; | |
| explicit __libcpp_debug_exception(__libcpp_debug_info const& __i); | |
| __libcpp_debug_exception(__libcpp_debug_exception const&); | |
| ~__libcpp_debug_exception() _NOEXCEPT; | |
| const char* what() const _NOEXCEPT; | |
| private: | |
| struct __libcpp_debug_exception_imp; | |
| __libcpp_debug_exception_imp *__imp_; | |
| }; | |
| #endif | |
| # 114 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| #if _LIBCPP_DEBUG_LEVEL >= 2 || defined(_LIBCPP_BUILDING_LIBRARY) | |
| struct _LIBCPP_TYPE_VIS __c_node; | |
| struct _LIBCPP_TYPE_VIS __i_node | |
| { | |
| void* __i_; | |
| __i_node* __next_; | |
| __c_node* __c_; | |
| #ifndef _LIBCPP_CXX03_LANG | |
| __i_node(const __i_node&) = delete; | |
| __i_node& operator=(const __i_node&) = delete; | |
| #else | |
| # 129 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| private: | |
| __i_node(const __i_node&); | |
| __i_node& operator=(const __i_node&); | |
| public: | |
| #endif | |
| # 134 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| _LIBCPP_INLINE_VISIBILITY | |
| __i_node(void* __i, __i_node* __next, __c_node* __c) | |
| : __i_(__i), __next_(__next), __c_(__c) {} | |
| ~__i_node(); | |
| }; | |
| struct _LIBCPP_TYPE_VIS __c_node | |
| { | |
| void* __c_; | |
| __c_node* __next_; | |
| __i_node** beg_; | |
| __i_node** end_; | |
| __i_node** cap_; | |
| #ifndef _LIBCPP_CXX03_LANG | |
| __c_node(const __c_node&) = delete; | |
| __c_node& operator=(const __c_node&) = delete; | |
| #else | |
| # 152 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| private: | |
| __c_node(const __c_node&); | |
| __c_node& operator=(const __c_node&); | |
| public: | |
| #endif | |
| # 157 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| _LIBCPP_INLINE_VISIBILITY | |
| __c_node(void* __c, __c_node* __next) | |
| : __c_(__c), __next_(__next), beg_(nullptr), end_(nullptr), cap_(nullptr) {} | |
| virtual ~__c_node(); | |
| virtual bool __dereferenceable(const void*) const = 0; | |
| virtual bool __decrementable(const void*) const = 0; | |
| virtual bool __addable(const void*, ptrdiff_t) const = 0; | |
| virtual bool __subscriptable(const void*, ptrdiff_t) const = 0; | |
| void __add(__i_node* __i); | |
| _LIBCPP_HIDDEN void __remove(__i_node* __i); | |
| }; | |
| template <class _Cont> | |
| struct _C_node | |
| : public __c_node | |
| { | |
| _C_node(void* __c, __c_node* __n) | |
| : __c_node(__c, __n) {} | |
| virtual bool __dereferenceable(const void*) const; | |
| virtual bool __decrementable(const void*) const; | |
| virtual bool __addable(const void*, ptrdiff_t) const; | |
| virtual bool __subscriptable(const void*, ptrdiff_t) const; | |
| }; | |
| template <class _Cont> | |
| inline bool | |
| _C_node<_Cont>::__dereferenceable(const void* __i) const | |
| { | |
| typedef typename _Cont::const_iterator iterator; | |
| const iterator* __j = static_cast<const iterator*>(__i); | |
| _Cont* _Cp = static_cast<_Cont*>(__c_); | |
| return _Cp->__dereferenceable(__j); | |
| } | |
| template <class _Cont> | |
| inline bool | |
| _C_node<_Cont>::__decrementable(const void* __i) const | |
| { | |
| typedef typename _Cont::const_iterator iterator; | |
| const iterator* __j = static_cast<const iterator*>(__i); | |
| _Cont* _Cp = static_cast<_Cont*>(__c_); | |
| return _Cp->__decrementable(__j); | |
| } | |
| template <class _Cont> | |
| inline bool | |
| _C_node<_Cont>::__addable(const void* __i, ptrdiff_t __n) const | |
| { | |
| typedef typename _Cont::const_iterator iterator; | |
| const iterator* __j = static_cast<const iterator*>(__i); | |
| _Cont* _Cp = static_cast<_Cont*>(__c_); | |
| return _Cp->__addable(__j, __n); | |
| } | |
| template <class _Cont> | |
| inline bool | |
| _C_node<_Cont>::__subscriptable(const void* __i, ptrdiff_t __n) const | |
| { | |
| typedef typename _Cont::const_iterator iterator; | |
| const iterator* __j = static_cast<const iterator*>(__i); | |
| _Cont* _Cp = static_cast<_Cont*>(__c_); | |
| return _Cp->__subscriptable(__j, __n); | |
| } | |
| class _LIBCPP_TYPE_VIS __libcpp_db | |
| { | |
| __c_node** __cbeg_; | |
| __c_node** __cend_; | |
| size_t __csz_; | |
| __i_node** __ibeg_; | |
| __i_node** __iend_; | |
| size_t __isz_; | |
| __libcpp_db(); | |
| public: | |
| #ifndef _LIBCPP_CXX03_LANG | |
| __libcpp_db(const __libcpp_db&) = delete; | |
| __libcpp_db& operator=(const __libcpp_db&) = delete; | |
| #else | |
| # 239 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| private: | |
| __libcpp_db(const __libcpp_db&); | |
| __libcpp_db& operator=(const __libcpp_db&); | |
| public: | |
| #endif | |
| # 244 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| ~__libcpp_db(); | |
| class __db_c_iterator; | |
| class __db_c_const_iterator; | |
| class __db_i_iterator; | |
| class __db_i_const_iterator; | |
| __db_c_const_iterator __c_end() const; | |
| __db_i_const_iterator __i_end() const; | |
| template <class _Cont> | |
| _LIBCPP_INLINE_VISIBILITY | |
| void __insert_c(_Cont* __c) | |
| { | |
| __c_node* __n = __insert_c(static_cast<void*>(__c)); | |
| ::new(__n) _C_node<_Cont>(__n->__c_, __n->__next_); | |
| } | |
| void __insert_i(void* __i); | |
| __c_node* __insert_c(void* __c); | |
| void __erase_c(void* __c); | |
| void __insert_ic(void* __i, const void* __c); | |
| void __iterator_copy(void* __i, const void* __i0); | |
| void __erase_i(void* __i); | |
| void* __find_c_from_i(void* __i) const; | |
| void __invalidate_all(void* __c); | |
| __c_node* __find_c_and_lock(void* __c) const; | |
| __c_node* __find_c(void* __c) const; | |
| void unlock() const; | |
| void swap(void* __c1, void* __c2); | |
| bool __dereferenceable(const void* __i) const; | |
| bool __decrementable(const void* __i) const; | |
| bool __addable(const void* __i, ptrdiff_t __n) const; | |
| bool __subscriptable(const void* __i, ptrdiff_t __n) const; | |
| bool __less_than_comparable(const void* __i, const void* __j) const; | |
| private: | |
| _LIBCPP_HIDDEN | |
| __i_node* __insert_iterator(void* __i); | |
| _LIBCPP_HIDDEN | |
| __i_node* __find_iterator(const void* __i) const; | |
| friend _LIBCPP_FUNC_VIS __libcpp_db* __get_db(); | |
| }; | |
| _LIBCPP_FUNC_VIS __libcpp_db* __get_db(); | |
| _LIBCPP_FUNC_VIS const __libcpp_db* __get_const_db(); | |
| #endif // _LIBCPP_DEBUG_LEVEL >= 2 || defined(_LIBCPP_BUILDING_LIBRARY) | |
| # 298 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP_DEBUG_H | |
| # 302 "/usr/local/bin/../include/c++/v1/__debug" 3 | |
| # 205 "/usr/local/bin/../include/c++/v1/utility" 2 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 208 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #endif | |
| # 209 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| namespace rel_ops | |
| { | |
| template<class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| bool | |
| operator!=(const _Tp& __x, const _Tp& __y) | |
| { | |
| return !(__x == __y); | |
| } | |
| template<class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| bool | |
| operator> (const _Tp& __x, const _Tp& __y) | |
| { | |
| return __y < __x; | |
| } | |
| template<class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| bool | |
| operator<=(const _Tp& __x, const _Tp& __y) | |
| { | |
| return !(__y < __x); | |
| } | |
| template<class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| bool | |
| operator>=(const _Tp& __x, const _Tp& __y) | |
| { | |
| return !(__x < __y); | |
| } | |
| } // rel_ops | |
| // swap_ranges | |
| template <class _ForwardIterator1, class _ForwardIterator2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _ForwardIterator2 | |
| swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, _ForwardIterator2 __first2) | |
| { | |
| for(; __first1 != __last1; ++__first1, (void) ++__first2) | |
| swap(*__first1, *__first2); | |
| return __first2; | |
| } | |
| // forward declared in <type_traits> | |
| template<class _Tp, size_t _Np> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| typename enable_if< | |
| __is_swappable<_Tp>::value | |
| >::type | |
| swap(_Tp (&__a)[_Np], _Tp (&__b)[_Np]) _NOEXCEPT_(__is_nothrow_swappable<_Tp>::value) | |
| { | |
| _VSTD::swap_ranges(__a, __a + _Np, __b); | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| #ifndef _LIBCPP_CXX03_LANG | |
| typename conditional | |
| < | |
| !is_nothrow_move_constructible<_Tp>::value && is_copy_constructible<_Tp>::value, | |
| const _Tp&, | |
| _Tp&& | |
| >::type | |
| #else // _LIBCPP_CXX03_LANG | |
| # 283 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| const _Tp& | |
| #endif | |
| # 285 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| move_if_noexcept(_Tp& __x) _NOEXCEPT | |
| { | |
| return _VSTD::move(__x); | |
| } | |
| #if _LIBCPP_STD_VER > 14 | |
| template <class _Tp> constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { return __t; } | |
| template <class _Tp> void as_const(const _Tp&&) = delete; | |
| #endif | |
| # 294 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| struct _LIBCPP_TEMPLATE_VIS piecewise_construct_t { }; | |
| #if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_UTILITY) | |
| extern const piecewise_construct_t piecewise_construct;// = piecewise_construct_t(); | |
| #else | |
| # 299 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); | |
| #endif | |
| # 301 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) | |
| struct __non_trivially_copyable_base { | |
| _LIBCPP_CONSTEXPR _LIBCPP_INLINE_VISIBILITY | |
| __non_trivially_copyable_base() _NOEXCEPT {} | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY | |
| __non_trivially_copyable_base(__non_trivially_copyable_base const&) _NOEXCEPT {} | |
| }; | |
| #endif | |
| # 310 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template <class _T1, class _T2> | |
| struct _LIBCPP_TEMPLATE_VIS pair | |
| #if defined(_LIBCPP_DEPRECATED_ABI_DISABLE_PAIR_TRIVIAL_COPY_CTOR) | |
| : private __non_trivially_copyable_base | |
| #endif | |
| # 316 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| { | |
| typedef _T1 first_type; | |
| typedef _T2 second_type; | |
| _T1 first; | |
| _T2 second; | |
| #if !defined(_LIBCPP_CXX03_LANG) | |
| pair(pair const&) = default; | |
| pair(pair&&) = default; | |
| #else | |
| # 327 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| // Use the implicitly declared copy constructor in C++03 | |
| #endif | |
| # 329 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #ifdef _LIBCPP_CXX03_LANG | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair() : first(), second() {} | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair(_T1 const& __t1, _T2 const& __t2) : first(__t1), second(__t2) {} | |
| template <class _U1, class _U2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair(const pair<_U1, _U2>& __p) : first(__p.first), second(__p.second) {} | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair& operator=(pair const& __p) { | |
| first = __p.first; | |
| second = __p.second; | |
| return *this; | |
| } | |
| #else | |
| # 348 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template <bool _Val> | |
| using _EnableB = typename enable_if<_Val, bool>::type; | |
| struct _CheckArgs { | |
| template <class _U1, class _U2> | |
| static constexpr bool __enable_default() { | |
| return is_default_constructible<_U1>::value | |
| && is_default_constructible<_U2>::value; | |
| } | |
| template <class _U1, class _U2> | |
| static constexpr bool __enable_explicit() { | |
| return is_constructible<first_type, _U1>::value | |
| && is_constructible<second_type, _U2>::value | |
| && (!is_convertible<_U1, first_type>::value | |
| || !is_convertible<_U2, second_type>::value); | |
| } | |
| template <class _U1, class _U2> | |
| static constexpr bool __enable_implicit() { | |
| return is_constructible<first_type, _U1>::value | |
| && is_constructible<second_type, _U2>::value | |
| && is_convertible<_U1, first_type>::value | |
| && is_convertible<_U2, second_type>::value; | |
| } | |
| }; | |
| template <bool _MaybeEnable> | |
| using _CheckArgsDep = typename conditional< | |
| _MaybeEnable, _CheckArgs, __check_tuple_constructor_fail>::type; | |
| struct _CheckTupleLikeConstructor { | |
| template <class _Tuple> | |
| static constexpr bool __enable_implicit() { | |
| return __tuple_convertible<_Tuple, pair>::value; | |
| } | |
| template <class _Tuple> | |
| static constexpr bool __enable_explicit() { | |
| return __tuple_constructible<_Tuple, pair>::value | |
| && !__tuple_convertible<_Tuple, pair>::value; | |
| } | |
| template <class _Tuple> | |
| static constexpr bool __enable_assign() { | |
| return __tuple_assignable<_Tuple, pair>::value; | |
| } | |
| }; | |
| template <class _Tuple> | |
| using _CheckTLC = typename conditional< | |
| __tuple_like_with_size<_Tuple, 2>::value | |
| && !is_same<typename decay<_Tuple>::type, pair>::value, | |
| _CheckTupleLikeConstructor, | |
| __check_tuple_constructor_fail | |
| >::type; | |
| template<bool _Dummy = true, _EnableB< | |
| _CheckArgsDep<_Dummy>::template __enable_default<_T1, _T2>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR | |
| pair() : first(), second() {} | |
| template <bool _Dummy = true, _EnableB< | |
| _CheckArgsDep<_Dummy>::template __enable_explicit<_T1 const&, _T2 const&>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| explicit pair(_T1 const& __t1, _T2 const& __t2) | |
| : first(__t1), second(__t2) {} | |
| template<bool _Dummy = true, _EnableB< | |
| _CheckArgsDep<_Dummy>::template __enable_implicit<_T1 const&, _T2 const&>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| pair(_T1 const& __t1, _T2 const& __t2) | |
| : first(__t1), second(__t2) {} | |
| template<class _U1, class _U2, _EnableB< | |
| _CheckArgs::template __enable_explicit<_U1, _U2>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| explicit pair(_U1&& __u1, _U2&& __u2) | |
| : first(_VSTD::forward<_U1>(__u1)), second(_VSTD::forward<_U2>(__u2)) {} | |
| template<class _U1, class _U2, _EnableB< | |
| _CheckArgs::template __enable_implicit<_U1, _U2>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| pair(_U1&& __u1, _U2&& __u2) | |
| : first(_VSTD::forward<_U1>(__u1)), second(_VSTD::forward<_U2>(__u2)) {} | |
| template<class _U1, class _U2, _EnableB< | |
| _CheckArgs::template __enable_explicit<_U1 const&, _U2 const&>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| explicit pair(pair<_U1, _U2> const& __p) | |
| : first(__p.first), second(__p.second) {} | |
| template<class _U1, class _U2, _EnableB< | |
| _CheckArgs::template __enable_implicit<_U1 const&, _U2 const&>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| pair(pair<_U1, _U2> const& __p) | |
| : first(__p.first), second(__p.second) {} | |
| template<class _U1, class _U2, _EnableB< | |
| _CheckArgs::template __enable_explicit<_U1, _U2>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| explicit pair(pair<_U1, _U2>&&__p) | |
| : first(_VSTD::forward<_U1>(__p.first)), second(_VSTD::forward<_U2>(__p.second)) {} | |
| template<class _U1, class _U2, _EnableB< | |
| _CheckArgs::template __enable_implicit<_U1, _U2>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| pair(pair<_U1, _U2>&& __p) | |
| : first(_VSTD::forward<_U1>(__p.first)), second(_VSTD::forward<_U2>(__p.second)) {} | |
| template<class _Tuple, _EnableB< | |
| _CheckTLC<_Tuple>::template __enable_explicit<_Tuple>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| explicit pair(_Tuple&& __p) | |
| : first(_VSTD::get<0>(_VSTD::forward<_Tuple>(__p))), | |
| second(_VSTD::get<1>(_VSTD::forward<_Tuple>(__p))) {} | |
| template<class _Tuple, _EnableB< | |
| _CheckTLC<_Tuple>::template __enable_implicit<_Tuple>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| pair(_Tuple&& __p) | |
| : first(_VSTD::get<0>(_VSTD::forward<_Tuple>(__p))), | |
| second(_VSTD::get<1>(_VSTD::forward<_Tuple>(__p))) {} | |
| template <class... _Args1, class... _Args2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair(piecewise_construct_t __pc, | |
| tuple<_Args1...> __first_args, tuple<_Args2...> __second_args) | |
| : pair(__pc, __first_args, __second_args, | |
| typename __make_tuple_indices<sizeof...(_Args1)>::type(), | |
| typename __make_tuple_indices<sizeof...(_Args2) >::type()) {} | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair& operator=(typename conditional< | |
| is_copy_assignable<first_type>::value && | |
| is_copy_assignable<second_type>::value, | |
| pair, __nat>::type const& __p) | |
| _NOEXCEPT_(is_nothrow_copy_assignable<first_type>::value && | |
| is_nothrow_copy_assignable<second_type>::value) | |
| { | |
| first = __p.first; | |
| second = __p.second; | |
| return *this; | |
| } | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair& operator=(typename conditional< | |
| is_move_assignable<first_type>::value && | |
| is_move_assignable<second_type>::value, | |
| pair, __nat>::type&& __p) | |
| _NOEXCEPT_(is_nothrow_move_assignable<first_type>::value && | |
| is_nothrow_move_assignable<second_type>::value) | |
| { | |
| first = _VSTD::forward<first_type>(__p.first); | |
| second = _VSTD::forward<second_type>(__p.second); | |
| return *this; | |
| } | |
| template <class _Tuple, _EnableB< | |
| _CheckTLC<_Tuple>::template __enable_assign<_Tuple>() | |
| > = false> | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair& operator=(_Tuple&& __p) { | |
| first = _VSTD::get<0>(_VSTD::forward<_Tuple>(__p)); | |
| second = _VSTD::get<1>(_VSTD::forward<_Tuple>(__p)); | |
| return *this; | |
| } | |
| #endif | |
| # 527 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| _LIBCPP_INLINE_VISIBILITY | |
| void | |
| swap(pair& __p) _NOEXCEPT_(__is_nothrow_swappable<first_type>::value && | |
| __is_nothrow_swappable<second_type>::value) | |
| { | |
| using _VSTD::swap; | |
| swap(first, __p.first); | |
| swap(second, __p.second); | |
| } | |
| private: | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class... _Args1, class... _Args2, size_t... _I1, size_t... _I2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| pair(piecewise_construct_t, | |
| tuple<_Args1...>& __first_args, tuple<_Args2...>& __second_args, | |
| __tuple_indices<_I1...>, __tuple_indices<_I2...>); | |
| #endif | |
| # 546 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| }; | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| bool | |
| operator==(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
| { | |
| return __x.first == __y.first && __x.second == __y.second; | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| bool | |
| operator!=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
| { | |
| return !(__x == __y); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| bool | |
| operator< (const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
| { | |
| return __x.first < __y.first || (!(__y.first < __x.first) && __x.second < __y.second); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| bool | |
| operator> (const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
| { | |
| return __y < __x; | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| bool | |
| operator>=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
| { | |
| return !(__x < __y); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| bool | |
| operator<=(const pair<_T1,_T2>& __x, const pair<_T1,_T2>& __y) | |
| { | |
| return !(__y < __x); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| typename enable_if | |
| < | |
| __is_swappable<_T1>::value && | |
| __is_swappable<_T2>::value, | |
| void | |
| >::type | |
| swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) | |
| _NOEXCEPT_((__is_nothrow_swappable<_T1>::value && | |
| __is_nothrow_swappable<_T2>::value)) | |
| { | |
| __x.swap(__y); | |
| } | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class _Tp> | |
| struct __make_pair_return_impl | |
| { | |
| typedef _Tp type; | |
| }; | |
| template <class _Tp> | |
| struct __make_pair_return_impl<reference_wrapper<_Tp>> | |
| { | |
| typedef _Tp& type; | |
| }; | |
| template <class _Tp> | |
| struct __make_pair_return | |
| { | |
| typedef typename __make_pair_return_impl<typename decay<_Tp>::type>::type type; | |
| }; | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| pair<typename __make_pair_return<_T1>::type, typename __make_pair_return<_T2>::type> | |
| make_pair(_T1&& __t1, _T2&& __t2) | |
| { | |
| return pair<typename __make_pair_return<_T1>::type, typename __make_pair_return<_T2>::type> | |
| (_VSTD::forward<_T1>(__t1), _VSTD::forward<_T2>(__t2)); | |
| } | |
| #else // _LIBCPP_CXX03_LANG | |
| # 641 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| pair<_T1,_T2> | |
| make_pair(_T1 __x, _T2 __y) | |
| { | |
| return pair<_T1, _T2>(__x, __y); | |
| } | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 651 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template <class _T1, class _T2> | |
| class _LIBCPP_TEMPLATE_VIS tuple_size<pair<_T1, _T2> > | |
| : public integral_constant<size_t, 2> {}; | |
| template <class _T1, class _T2> | |
| class _LIBCPP_TEMPLATE_VIS tuple_element<0, pair<_T1, _T2> > | |
| { | |
| public: | |
| typedef _T1 type; | |
| }; | |
| template <class _T1, class _T2> | |
| class _LIBCPP_TEMPLATE_VIS tuple_element<1, pair<_T1, _T2> > | |
| { | |
| public: | |
| typedef _T2 type; | |
| }; | |
| template <size_t _Ip> struct __get_pair; | |
| template <> | |
| struct __get_pair<0> | |
| { | |
| template <class _T1, class _T2> | |
| static | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| _T1& | |
| get(pair<_T1, _T2>& __p) _NOEXCEPT {return __p.first;} | |
| template <class _T1, class _T2> | |
| static | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _T1& | |
| get(const pair<_T1, _T2>& __p) _NOEXCEPT {return __p.first;} | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class _T1, class _T2> | |
| static | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| _T1&& | |
| get(pair<_T1, _T2>&& __p) _NOEXCEPT {return _VSTD::forward<_T1>(__p.first);} | |
| template <class _T1, class _T2> | |
| static | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _T1&& | |
| get(const pair<_T1, _T2>&& __p) _NOEXCEPT {return _VSTD::forward<const _T1>(__p.first);} | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 700 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| }; | |
| template <> | |
| struct __get_pair<1> | |
| { | |
| template <class _T1, class _T2> | |
| static | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| _T2& | |
| get(pair<_T1, _T2>& __p) _NOEXCEPT {return __p.second;} | |
| template <class _T1, class _T2> | |
| static | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _T2& | |
| get(const pair<_T1, _T2>& __p) _NOEXCEPT {return __p.second;} | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class _T1, class _T2> | |
| static | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| _T2&& | |
| get(pair<_T1, _T2>&& __p) _NOEXCEPT {return _VSTD::forward<_T2>(__p.second);} | |
| template <class _T1, class _T2> | |
| static | |
| _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const _T2&& | |
| get(const pair<_T1, _T2>&& __p) _NOEXCEPT {return _VSTD::forward<const _T2>(__p.second);} | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 730 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| }; | |
| template <size_t _Ip, class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| typename tuple_element<_Ip, pair<_T1, _T2> >::type& | |
| get(pair<_T1, _T2>& __p) _NOEXCEPT | |
| { | |
| return __get_pair<_Ip>::get(__p); | |
| } | |
| template <size_t _Ip, class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const typename tuple_element<_Ip, pair<_T1, _T2> >::type& | |
| get(const pair<_T1, _T2>& __p) _NOEXCEPT | |
| { | |
| return __get_pair<_Ip>::get(__p); | |
| } | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <size_t _Ip, class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| typename tuple_element<_Ip, pair<_T1, _T2> >::type&& | |
| get(pair<_T1, _T2>&& __p) _NOEXCEPT | |
| { | |
| return __get_pair<_Ip>::get(_VSTD::move(__p)); | |
| } | |
| template <size_t _Ip, class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR_AFTER_CXX11 | |
| const typename tuple_element<_Ip, pair<_T1, _T2> >::type&& | |
| get(const pair<_T1, _T2>&& __p) _NOEXCEPT | |
| { | |
| return __get_pair<_Ip>::get(_VSTD::move(__p)); | |
| } | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 765 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| constexpr _T1 & get(pair<_T1, _T2>& __p) _NOEXCEPT | |
| { | |
| return __get_pair<0>::get(__p); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| constexpr _T1 const & get(pair<_T1, _T2> const& __p) _NOEXCEPT | |
| { | |
| return __get_pair<0>::get(__p); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| constexpr _T1 && get(pair<_T1, _T2>&& __p) _NOEXCEPT | |
| { | |
| return __get_pair<0>::get(_VSTD::move(__p)); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| constexpr _T1 const && get(pair<_T1, _T2> const&& __p) _NOEXCEPT | |
| { | |
| return __get_pair<0>::get(_VSTD::move(__p)); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| constexpr _T1 & get(pair<_T2, _T1>& __p) _NOEXCEPT | |
| { | |
| return __get_pair<1>::get(__p); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| constexpr _T1 const & get(pair<_T2, _T1> const& __p) _NOEXCEPT | |
| { | |
| return __get_pair<1>::get(__p); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| constexpr _T1 && get(pair<_T2, _T1>&& __p) _NOEXCEPT | |
| { | |
| return __get_pair<1>::get(_VSTD::move(__p)); | |
| } | |
| template <class _T1, class _T2> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| constexpr _T1 const && get(pair<_T2, _T1> const&& __p) _NOEXCEPT | |
| { | |
| return __get_pair<1>::get(_VSTD::move(__p)); | |
| } | |
| #endif | |
| # 824 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if _LIBCPP_STD_VER > 11 | |
| template<class _Tp, _Tp... _Ip> | |
| struct _LIBCPP_TEMPLATE_VIS integer_sequence | |
| { | |
| typedef _Tp value_type; | |
| static_assert( is_integral<_Tp>::value, | |
| "std::integer_sequence can only be instantiated with an integral type" ); | |
| static | |
| _LIBCPP_INLINE_VISIBILITY | |
| constexpr | |
| size_t | |
| size() noexcept { return sizeof...(_Ip); } | |
| }; | |
| template<size_t... _Ip> | |
| using index_sequence = integer_sequence<size_t, _Ip...>; | |
| #if __has_builtin(__make_integer_seq) && !defined(_LIBCPP_TESTING_FALLBACK_MAKE_INTEGER_SEQUENCE) | |
| template <class _Tp, _Tp _Ep> | |
| using __make_integer_sequence = __make_integer_seq<integer_sequence, _Tp, _Ep>; | |
| #else | |
| # 849 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template<typename _Tp, _Tp _Np> using __make_integer_sequence_unchecked = | |
| typename __detail::__make<_Np>::type::template __convert<integer_sequence, _Tp>; | |
| template <class _Tp, _Tp _Ep> | |
| struct __make_integer_sequence_checked | |
| { | |
| static_assert(is_integral<_Tp>::value, | |
| "std::make_integer_sequence can only be instantiated with an integral type" ); | |
| static_assert(0 <= _Ep, "std::make_integer_sequence must have a non-negative sequence length"); | |
| // Workaround GCC bug by preventing bad installations when 0 <= _Ep | |
| // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68929 | |
| typedef __make_integer_sequence_unchecked<_Tp, 0 <= _Ep ? _Ep : 0> type; | |
| }; | |
| template <class _Tp, _Tp _Ep> | |
| using __make_integer_sequence = typename __make_integer_sequence_checked<_Tp, _Ep>::type; | |
| #endif | |
| # 868 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template<class _Tp, _Tp _Np> | |
| using make_integer_sequence = __make_integer_sequence<_Tp, _Np>; | |
| template<size_t _Np> | |
| using make_index_sequence = make_integer_sequence<size_t, _Np>; | |
| template<class... _Tp> | |
| using index_sequence_for = make_index_sequence<sizeof...(_Tp)>; | |
| #endif // _LIBCPP_STD_VER > 11 | |
| # 879 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if _LIBCPP_STD_VER > 11 | |
| template<class _T1, class _T2 = _T1> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _T1 exchange(_T1& __obj, _T2 && __new_value) | |
| { | |
| _T1 __old_value = _VSTD::move(__obj); | |
| __obj = _VSTD::forward<_T2>(__new_value); | |
| return __old_value; | |
| } | |
| #endif // _LIBCPP_STD_VER > 11 | |
| # 890 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if _LIBCPP_STD_VER > 14 | |
| struct _LIBCPP_TYPE_VIS in_place_t { | |
| explicit in_place_t() = default; | |
| }; | |
| #ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES | |
| inline | |
| #endif | |
| # 899 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| constexpr in_place_t in_place{}; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS in_place_type_t { | |
| explicit in_place_type_t() = default; | |
| }; | |
| template <class _Tp> | |
| #ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES | |
| inline | |
| #endif | |
| # 909 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| constexpr in_place_type_t<_Tp> in_place_type{}; | |
| template <size_t _Idx> | |
| struct _LIBCPP_TYPE_VIS in_place_index_t { | |
| explicit in_place_index_t() = default; | |
| }; | |
| template <size_t _Idx> | |
| #ifndef _LIBCPP_HAS_NO_INLINE_VARIABLES | |
| inline | |
| #endif | |
| # 919 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| constexpr in_place_index_t<_Idx> in_place_index{}; | |
| template <class _Tp> struct __is_inplace_type_imp : false_type {}; | |
| template <class _Tp> struct __is_inplace_type_imp<in_place_type_t<_Tp>> : true_type {}; | |
| template <class _Tp> | |
| using __is_inplace_type = __is_inplace_type_imp<__uncvref_t<_Tp>>; | |
| #endif // _LIBCPP_STD_VER > 14 | |
| # 928 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template <class _Arg, class _Result> | |
| struct _LIBCPP_TEMPLATE_VIS unary_function | |
| { | |
| typedef _Arg argument_type; | |
| typedef _Result result_type; | |
| }; | |
| template <class _Size> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| _Size | |
| __loadword(const void* __p) | |
| { | |
| _Size __r; | |
| std::memcpy(&__r, __p, sizeof(__r)); | |
| return __r; | |
| } | |
| // We use murmur2 when size_t is 32 bits, and cityhash64 when size_t | |
| // is 64 bits. This is because cityhash64 uses 64bit x 64bit | |
| // multiplication, which can be very slow on 32-bit systems. | |
| template <class _Size, size_t = sizeof(_Size)*__CHAR_BIT__> | |
| struct __murmur2_or_cityhash; | |
| template <class _Size> | |
| struct __murmur2_or_cityhash<_Size, 32> | |
| { | |
| inline _Size operator()(const void* __key, _Size __len) | |
| _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK; | |
| }; | |
| // murmur2 | |
| template <class _Size> | |
| _Size | |
| __murmur2_or_cityhash<_Size, 32>::operator()(const void* __key, _Size __len) | |
| { | |
| const _Size __m = 0x5bd1e995; | |
| const _Size __r = 24; | |
| _Size __h = __len; | |
| const unsigned char* __data = static_cast<const unsigned char*>(__key); | |
| for (; __len >= 4; __data += 4, __len -= 4) | |
| { | |
| _Size __k = __loadword<_Size>(__data); | |
| __k *= __m; | |
| __k ^= __k >> __r; | |
| __k *= __m; | |
| __h *= __m; | |
| __h ^= __k; | |
| } | |
| switch (__len) | |
| { | |
| case 3: | |
| __h ^= __data[2] << 16; | |
| case 2: | |
| __h ^= __data[1] << 8; | |
| case 1: | |
| __h ^= __data[0]; | |
| __h *= __m; | |
| } | |
| __h ^= __h >> 13; | |
| __h *= __m; | |
| __h ^= __h >> 15; | |
| return __h; | |
| } | |
| template <class _Size> | |
| struct __murmur2_or_cityhash<_Size, 64> | |
| { | |
| inline _Size operator()(const void* __key, _Size __len) _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK; | |
| private: | |
| // Some primes between 2^63 and 2^64. | |
| static const _Size __k0 = 0xc3a5c85c97cb3127ULL; | |
| static const _Size __k1 = 0xb492b66fbe98f273ULL; | |
| static const _Size __k2 = 0x9ae16a3b2f90404fULL; | |
| static const _Size __k3 = 0xc949d7c7509e6557ULL; | |
| static _Size __rotate(_Size __val, int __shift) { | |
| return __shift == 0 ? __val : ((__val >> __shift) | (__val << (64 - __shift))); | |
| } | |
| static _Size __rotate_by_at_least_1(_Size __val, int __shift) { | |
| return (__val >> __shift) | (__val << (64 - __shift)); | |
| } | |
| static _Size __shift_mix(_Size __val) { | |
| return __val ^ (__val >> 47); | |
| } | |
| static _Size __hash_len_16(_Size __u, _Size __v) | |
| _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK | |
| { | |
| const _Size __mul = 0x9ddfea08eb382d69ULL; | |
| _Size __a = (__u ^ __v) * __mul; | |
| __a ^= (__a >> 47); | |
| _Size __b = (__v ^ __a) * __mul; | |
| __b ^= (__b >> 47); | |
| __b *= __mul; | |
| return __b; | |
| } | |
| static _Size __hash_len_0_to_16(const char* __s, _Size __len) | |
| _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK | |
| { | |
| if (__len > 8) { | |
| const _Size __a = __loadword<_Size>(__s); | |
| const _Size __b = __loadword<_Size>(__s + __len - 8); | |
| return __hash_len_16(__a, __rotate_by_at_least_1(__b + __len, __len)) ^ __b; | |
| } | |
| if (__len >= 4) { | |
| const uint32_t __a = __loadword<uint32_t>(__s); | |
| const uint32_t __b = __loadword<uint32_t>(__s + __len - 4); | |
| return __hash_len_16(__len + (__a << 3), __b); | |
| } | |
| if (__len > 0) { | |
| const unsigned char __a = __s[0]; | |
| const unsigned char __b = __s[__len >> 1]; | |
| const unsigned char __c = __s[__len - 1]; | |
| const uint32_t __y = static_cast<uint32_t>(__a) + | |
| (static_cast<uint32_t>(__b) << 8); | |
| const uint32_t __z = __len + (static_cast<uint32_t>(__c) << 2); | |
| return __shift_mix(__y * __k2 ^ __z * __k3) * __k2; | |
| } | |
| return __k2; | |
| } | |
| static _Size __hash_len_17_to_32(const char *__s, _Size __len) | |
| _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK | |
| { | |
| const _Size __a = __loadword<_Size>(__s) * __k1; | |
| const _Size __b = __loadword<_Size>(__s + 8); | |
| const _Size __c = __loadword<_Size>(__s + __len - 8) * __k2; | |
| const _Size __d = __loadword<_Size>(__s + __len - 16) * __k0; | |
| return __hash_len_16(__rotate(__a - __b, 43) + __rotate(__c, 30) + __d, | |
| __a + __rotate(__b ^ __k3, 20) - __c + __len); | |
| } | |
| // Return a 16-byte hash for 48 bytes. Quick and dirty. | |
| // Callers do best to use "random-looking" values for a and b. | |
| static pair<_Size, _Size> __weak_hash_len_32_with_seeds( | |
| _Size __w, _Size __x, _Size __y, _Size __z, _Size __a, _Size __b) | |
| _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK | |
| { | |
| __a += __w; | |
| __b = __rotate(__b + __a + __z, 21); | |
| const _Size __c = __a; | |
| __a += __x; | |
| __a += __y; | |
| __b += __rotate(__a, 44); | |
| return pair<_Size, _Size>(__a + __z, __b + __c); | |
| } | |
| // Return a 16-byte hash for s[0] ... s[31], a, and b. Quick and dirty. | |
| static pair<_Size, _Size> __weak_hash_len_32_with_seeds( | |
| const char* __s, _Size __a, _Size __b) | |
| _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK | |
| { | |
| return __weak_hash_len_32_with_seeds(__loadword<_Size>(__s), | |
| __loadword<_Size>(__s + 8), | |
| __loadword<_Size>(__s + 16), | |
| __loadword<_Size>(__s + 24), | |
| __a, | |
| __b); | |
| } | |
| // Return an 8-byte hash for 33 to 64 bytes. | |
| static _Size __hash_len_33_to_64(const char *__s, size_t __len) | |
| _LIBCPP_DISABLE_UBSAN_UNSIGNED_INTEGER_CHECK | |
| { | |
| _Size __z = __loadword<_Size>(__s + 24); | |
| _Size __a = __loadword<_Size>(__s) + | |
| (__len + __loadword<_Size>(__s + __len - 16)) * __k0; | |
| _Size __b = __rotate(__a + __z, 52); | |
| _Size __c = __rotate(__a, 37); | |
| __a += __loadword<_Size>(__s + 8); | |
| __c += __rotate(__a, 7); | |
| __a += __loadword<_Size>(__s + 16); | |
| _Size __vf = __a + __z; | |
| _Size __vs = __b + __rotate(__a, 31) + __c; | |
| __a = __loadword<_Size>(__s + 16) + __loadword<_Size>(__s + __len - 32); | |
| __z += __loadword<_Size>(__s + __len - 8); | |
| __b = __rotate(__a + __z, 52); | |
| __c = __rotate(__a, 37); | |
| __a += __loadword<_Size>(__s + __len - 24); | |
| __c += __rotate(__a, 7); | |
| __a += __loadword<_Size>(__s + __len - 16); | |
| _Size __wf = __a + __z; | |
| _Size __ws = __b + __rotate(__a, 31) + __c; | |
| _Size __r = __shift_mix((__vf + __ws) * __k2 + (__wf + __vs) * __k0); | |
| return __shift_mix(__r * __k0 + __vs) * __k2; | |
| } | |
| }; | |
| // cityhash64 | |
| template <class _Size> | |
| _Size | |
| __murmur2_or_cityhash<_Size, 64>::operator()(const void* __key, _Size __len) | |
| { | |
| const char* __s = static_cast<const char*>(__key); | |
| if (__len <= 32) { | |
| if (__len <= 16) { | |
| return __hash_len_0_to_16(__s, __len); | |
| } else { | |
| return __hash_len_17_to_32(__s, __len); | |
| } | |
| } else if (__len <= 64) { | |
| return __hash_len_33_to_64(__s, __len); | |
| } | |
| // For strings over 64 bytes we hash the end first, and then as we | |
| // loop we keep 56 bytes of state: v, w, x, y, and z. | |
| _Size __x = __loadword<_Size>(__s + __len - 40); | |
| _Size __y = __loadword<_Size>(__s + __len - 16) + | |
| __loadword<_Size>(__s + __len - 56); | |
| _Size __z = __hash_len_16(__loadword<_Size>(__s + __len - 48) + __len, | |
| __loadword<_Size>(__s + __len - 24)); | |
| pair<_Size, _Size> __v = __weak_hash_len_32_with_seeds(__s + __len - 64, __len, __z); | |
| pair<_Size, _Size> __w = __weak_hash_len_32_with_seeds(__s + __len - 32, __y + __k1, __x); | |
| __x = __x * __k1 + __loadword<_Size>(__s); | |
| // Decrease len to the nearest multiple of 64, and operate on 64-byte chunks. | |
| __len = (__len - 1) & ~static_cast<_Size>(63); | |
| do { | |
| __x = __rotate(__x + __y + __v.first + __loadword<_Size>(__s + 8), 37) * __k1; | |
| __y = __rotate(__y + __v.second + __loadword<_Size>(__s + 48), 42) * __k1; | |
| __x ^= __w.second; | |
| __y += __v.first + __loadword<_Size>(__s + 40); | |
| __z = __rotate(__z + __w.first, 33) * __k1; | |
| __v = __weak_hash_len_32_with_seeds(__s, __v.second * __k1, __x + __w.first); | |
| __w = __weak_hash_len_32_with_seeds(__s + 32, __z + __w.second, | |
| __y + __loadword<_Size>(__s + 16)); | |
| std::swap(__z, __x); | |
| __s += 64; | |
| __len -= 64; | |
| } while (__len != 0); | |
| return __hash_len_16( | |
| __hash_len_16(__v.first, __w.first) + __shift_mix(__y) * __k1 + __z, | |
| __hash_len_16(__v.second, __w.second) + __x); | |
| } | |
| template <class _Tp, size_t = sizeof(_Tp) / sizeof(size_t)> | |
| struct __scalar_hash; | |
| template <class _Tp> | |
| struct __scalar_hash<_Tp, 0> | |
| : public unary_function<_Tp, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(_Tp __v) const _NOEXCEPT | |
| { | |
| union | |
| { | |
| _Tp __t; | |
| size_t __a; | |
| } __u; | |
| __u.__a = 0; | |
| __u.__t = __v; | |
| return __u.__a; | |
| } | |
| }; | |
| template <class _Tp> | |
| struct __scalar_hash<_Tp, 1> | |
| : public unary_function<_Tp, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(_Tp __v) const _NOEXCEPT | |
| { | |
| union | |
| { | |
| _Tp __t; | |
| size_t __a; | |
| } __u; | |
| __u.__t = __v; | |
| return __u.__a; | |
| } | |
| }; | |
| template <class _Tp> | |
| struct __scalar_hash<_Tp, 2> | |
| : public unary_function<_Tp, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(_Tp __v) const _NOEXCEPT | |
| { | |
| union | |
| { | |
| _Tp __t; | |
| struct | |
| { | |
| size_t __a; | |
| size_t __b; | |
| } __s; | |
| } __u; | |
| __u.__t = __v; | |
| return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); | |
| } | |
| }; | |
| template <class _Tp> | |
| struct __scalar_hash<_Tp, 3> | |
| : public unary_function<_Tp, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(_Tp __v) const _NOEXCEPT | |
| { | |
| union | |
| { | |
| _Tp __t; | |
| struct | |
| { | |
| size_t __a; | |
| size_t __b; | |
| size_t __c; | |
| } __s; | |
| } __u; | |
| __u.__t = __v; | |
| return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); | |
| } | |
| }; | |
| template <class _Tp> | |
| struct __scalar_hash<_Tp, 4> | |
| : public unary_function<_Tp, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(_Tp __v) const _NOEXCEPT | |
| { | |
| union | |
| { | |
| _Tp __t; | |
| struct | |
| { | |
| size_t __a; | |
| size_t __b; | |
| size_t __c; | |
| size_t __d; | |
| } __s; | |
| } __u; | |
| __u.__t = __v; | |
| return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); | |
| } | |
| }; | |
| struct _PairT { | |
| size_t first; | |
| size_t second; | |
| }; | |
| _LIBCPP_INLINE_VISIBILITY | |
| inline size_t __hash_combine(size_t __lhs, size_t __rhs) _NOEXCEPT { | |
| typedef __scalar_hash<_PairT> _HashT; | |
| const _PairT __p = {__lhs, __rhs}; | |
| return _HashT()(__p); | |
| } | |
| template<class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS hash<_Tp*> | |
| : public unary_function<_Tp*, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(_Tp* __v) const _NOEXCEPT | |
| { | |
| union | |
| { | |
| _Tp* __t; | |
| size_t __a; | |
| } __u; | |
| __u.__t = __v; | |
| return __murmur2_or_cityhash<size_t>()(&__u, sizeof(__u)); | |
| } | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<bool> | |
| : public unary_function<bool, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(bool __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<char> | |
| : public unary_function<char, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(char __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<signed char> | |
| : public unary_function<signed char, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(signed char __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<unsigned char> | |
| : public unary_function<unsigned char, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(unsigned char __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<char16_t> | |
| : public unary_function<char16_t, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(char16_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<char32_t> | |
| : public unary_function<char32_t, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(char32_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| #endif // _LIBCPP_HAS_NO_UNICODE_CHARS | |
| # 1353 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<wchar_t> | |
| : public unary_function<wchar_t, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(wchar_t __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<short> | |
| : public unary_function<short, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(short __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<unsigned short> | |
| : public unary_function<unsigned short, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(unsigned short __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<int> | |
| : public unary_function<int, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(int __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<unsigned int> | |
| : public unary_function<unsigned int, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(unsigned int __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<long> | |
| : public unary_function<long, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(long __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<unsigned long> | |
| : public unary_function<unsigned long, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(unsigned long __v) const _NOEXCEPT {return static_cast<size_t>(__v);} | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<long long> | |
| : public __scalar_hash<long long> | |
| { | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<unsigned long long> | |
| : public __scalar_hash<unsigned long long> | |
| { | |
| }; | |
| #ifndef _LIBCPP_HAS_NO_INT128 | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<__int128_t> | |
| : public __scalar_hash<__int128_t> | |
| { | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<__uint128_t> | |
| : public __scalar_hash<__uint128_t> | |
| { | |
| }; | |
| #endif | |
| # 1437 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<float> | |
| : public __scalar_hash<float> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(float __v) const _NOEXCEPT | |
| { | |
| // -0.0 and 0.0 should return same hash | |
| if (__v == 0) | |
| return 0; | |
| return __scalar_hash<float>::operator()(__v); | |
| } | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<double> | |
| : public __scalar_hash<double> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(double __v) const _NOEXCEPT | |
| { | |
| // -0.0 and 0.0 should return same hash | |
| if (__v == 0) | |
| return 0; | |
| return __scalar_hash<double>::operator()(__v); | |
| } | |
| }; | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<long double> | |
| : public __scalar_hash<long double> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(long double __v) const _NOEXCEPT | |
| { | |
| // -0.0 and 0.0 should return same hash | |
| if (__v == 0) | |
| return 0; | |
| #if defined(__i386__) | |
| // Zero out padding bits | |
| union | |
| { | |
| long double __t; | |
| struct | |
| { | |
| size_t __a; | |
| size_t __b; | |
| size_t __c; | |
| size_t __d; | |
| } __s; | |
| } __u; | |
| __u.__s.__a = 0; | |
| __u.__s.__b = 0; | |
| __u.__s.__c = 0; | |
| __u.__s.__d = 0; | |
| __u.__t = __v; | |
| return __u.__s.__a ^ __u.__s.__b ^ __u.__s.__c ^ __u.__s.__d; | |
| #elif defined(__x86_64__) | |
| # 1496 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| // Zero out padding bits | |
| union | |
| { | |
| long double __t; | |
| struct | |
| { | |
| size_t __a; | |
| size_t __b; | |
| } __s; | |
| } __u; | |
| __u.__s.__a = 0; | |
| __u.__s.__b = 0; | |
| __u.__t = __v; | |
| return __u.__s.__a ^ __u.__s.__b; | |
| #else | |
| # 1511 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| return __scalar_hash<long double>::operator()(__v); | |
| #endif | |
| # 1513 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| } | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp, bool = is_enum<_Tp>::value> | |
| struct _LIBCPP_TEMPLATE_VIS __enum_hash | |
| : public unary_function<_Tp, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(_Tp __v) const _NOEXCEPT | |
| { | |
| typedef typename underlying_type<_Tp>::type type; | |
| return hash<type>{}(static_cast<type>(__v)); | |
| } | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS __enum_hash<_Tp, false> { | |
| __enum_hash() = delete; | |
| __enum_hash(__enum_hash const&) = delete; | |
| __enum_hash& operator=(__enum_hash const&) = delete; | |
| }; | |
| template <class _Tp> | |
| struct _LIBCPP_TEMPLATE_VIS hash : public __enum_hash<_Tp> | |
| { | |
| }; | |
| #endif | |
| # 1541 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #if _LIBCPP_STD_VER > 14 | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS hash<nullptr_t> | |
| : public unary_function<nullptr_t, size_t> | |
| { | |
| _LIBCPP_INLINE_VISIBILITY | |
| size_t operator()(nullptr_t) const _NOEXCEPT { | |
| return 662607004ull; | |
| } | |
| }; | |
| #endif | |
| # 1554 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class _Key, class _Hash> | |
| using __check_hash_requirements = integral_constant<bool, | |
| is_copy_constructible<_Hash>::value && | |
| is_move_constructible<_Hash>::value && | |
| __invokable_r<size_t, _Hash, _Key const&>::value | |
| >; | |
| template <class _Key, class _Hash = std::hash<_Key> > | |
| using __has_enabled_hash = integral_constant<bool, | |
| __check_hash_requirements<_Key, _Hash>::value && | |
| is_default_constructible<_Hash>::value | |
| >; | |
| #if _LIBCPP_STD_VER > 14 | |
| template <class _Type, class> | |
| using __enable_hash_helper_imp = _Type; | |
| template <class _Type, class ..._Keys> | |
| using __enable_hash_helper = __enable_hash_helper_imp<_Type, | |
| typename enable_if<__all<__has_enabled_hash<_Keys>::value...>::value>::type | |
| >; | |
| #else | |
| # 1578 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| template <class _Type, class ...> | |
| using __enable_hash_helper = _Type; | |
| #endif | |
| # 1581 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| #endif // !_LIBCPP_CXX03_LANG | |
| # 1583 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP_UTILITY | |
| # 1587 "/usr/local/bin/../include/c++/v1/utility" 3 | |
| # 649 "/usr/local/bin/../include/c++/v1/memory" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <limits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 649 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/limits" 1 3 | |
| // -*- C++ -*- | |
| //===---------------------------- limits ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_LIMITS | |
| #define _LIBCPP_LIMITS | |
| /* | |
| limits synopsis | |
| namespace std | |
| { | |
| template<class T> | |
| class numeric_limits | |
| { | |
| public: | |
| static constexpr bool is_specialized = false; | |
| static constexpr T min() noexcept; | |
| static constexpr T max() noexcept; | |
| static constexpr T lowest() noexcept; | |
| static constexpr int digits = 0; | |
| static constexpr int digits10 = 0; | |
| static constexpr int max_digits10 = 0; | |
| static constexpr bool is_signed = false; | |
| static constexpr bool is_integer = false; | |
| static constexpr bool is_exact = false; | |
| static constexpr int radix = 0; | |
| static constexpr T epsilon() noexcept; | |
| static constexpr T round_error() noexcept; | |
| static constexpr int min_exponent = 0; | |
| static constexpr int min_exponent10 = 0; | |
| static constexpr int max_exponent = 0; | |
| static constexpr int max_exponent10 = 0; | |
| static constexpr bool has_infinity = false; | |
| static constexpr bool has_quiet_NaN = false; | |
| static constexpr bool has_signaling_NaN = false; | |
| static constexpr float_denorm_style has_denorm = denorm_absent; | |
| static constexpr bool has_denorm_loss = false; | |
| static constexpr T infinity() noexcept; | |
| static constexpr T quiet_NaN() noexcept; | |
| static constexpr T signaling_NaN() noexcept; | |
| static constexpr T denorm_min() noexcept; | |
| static constexpr bool is_iec559 = false; | |
| static constexpr bool is_bounded = false; | |
| static constexpr bool is_modulo = false; | |
| static constexpr bool traps = false; | |
| static constexpr bool tinyness_before = false; | |
| static constexpr float_round_style round_style = round_toward_zero; | |
| }; | |
| enum float_round_style | |
| { | |
| round_indeterminate = -1, | |
| round_toward_zero = 0, | |
| round_to_nearest = 1, | |
| round_toward_infinity = 2, | |
| round_toward_neg_infinity = 3 | |
| }; | |
| enum float_denorm_style | |
| { | |
| denorm_indeterminate = -1, | |
| denorm_absent = 0, | |
| denorm_present = 1 | |
| }; | |
| template<> class numeric_limits<cv bool>; | |
| template<> class numeric_limits<cv char>; | |
| template<> class numeric_limits<cv signed char>; | |
| template<> class numeric_limits<cv unsigned char>; | |
| template<> class numeric_limits<cv wchar_t>; | |
| template<> class numeric_limits<cv char16_t>; | |
| template<> class numeric_limits<cv char32_t>; | |
| template<> class numeric_limits<cv short>; | |
| template<> class numeric_limits<cv int>; | |
| template<> class numeric_limits<cv long>; | |
| template<> class numeric_limits<cv long long>; | |
| template<> class numeric_limits<cv unsigned short>; | |
| template<> class numeric_limits<cv unsigned int>; | |
| template<> class numeric_limits<cv unsigned long>; | |
| template<> class numeric_limits<cv unsigned long long>; | |
| template<> class numeric_limits<cv float>; | |
| template<> class numeric_limits<cv double>; | |
| template<> class numeric_limits<cv long double>; | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 104 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| # 105 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 105 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| # 106 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| #if defined(_LIBCPP_COMPILER_MSVC) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include "support/win32/limits_msvc_win32.h" | |
| #endif /* expanded by -frewrite-includes */ | |
| # 108 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| # 109 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| #endif // _LIBCPP_MSVCRT | |
| # 110 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| #if defined(__IBMCPP__) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include "support/ibm/limits.h" | |
| #endif /* expanded by -frewrite-includes */ | |
| # 112 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| # 113 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| #endif // __IBMCPP__ | |
| # 114 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 117 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| #endif | |
| # 118 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| _LIBCPP_PUSH_MACROS | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__undef_macros> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 120 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/__undef_macros" 1 3 | |
| // -*- C++ -*- | |
| //===------------------------ __undef_macros ------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is distributed under the University of Illinois Open Source | |
| // License. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifdef min | |
| #if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS) | |
| #if defined(_LIBCPP_WARNING) | |
| _LIBCPP_WARNING("macro min is incompatible with C++. Try #define NOMINMAX " | |
| "before any Windows header. #undefing min") | |
| #else | |
| # 18 "/usr/local/bin/../include/c++/v1/__undef_macros" 3 | |
| #warning: macro min is incompatible with C++. #undefing min | |
| #endif | |
| # 20 "/usr/local/bin/../include/c++/v1/__undef_macros" 3 | |
| #endif | |
| # 21 "/usr/local/bin/../include/c++/v1/__undef_macros" 3 | |
| #undef min | |
| #endif | |
| # 23 "/usr/local/bin/../include/c++/v1/__undef_macros" 3 | |
| #ifdef max | |
| #if !defined(_LIBCPP_DISABLE_MACRO_CONFLICT_WARNINGS) | |
| #if defined(_LIBCPP_WARNING) | |
| _LIBCPP_WARNING("macro max is incompatible with C++. Try #define NOMINMAX " | |
| "before any Windows header. #undefing max") | |
| #else | |
| # 30 "/usr/local/bin/../include/c++/v1/__undef_macros" 3 | |
| #warning: macro max is incompatible with C++. #undefing max | |
| #endif | |
| # 32 "/usr/local/bin/../include/c++/v1/__undef_macros" 3 | |
| #endif | |
| # 33 "/usr/local/bin/../include/c++/v1/__undef_macros" 3 | |
| #undef max | |
| #endif | |
| # 35 "/usr/local/bin/../include/c++/v1/__undef_macros" 3 | |
| # 121 "/usr/local/bin/../include/c++/v1/limits" 2 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| enum float_round_style | |
| { | |
| round_indeterminate = -1, | |
| round_toward_zero = 0, | |
| round_to_nearest = 1, | |
| round_toward_infinity = 2, | |
| round_toward_neg_infinity = 3 | |
| }; | |
| enum float_denorm_style | |
| { | |
| denorm_indeterminate = -1, | |
| denorm_absent = 0, | |
| denorm_present = 1 | |
| }; | |
| template <class _Tp, bool = is_arithmetic<_Tp>::value> | |
| class __libcpp_numeric_limits | |
| { | |
| protected: | |
| typedef _Tp type; | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = false; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return type();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return type();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return type();} | |
| static _LIBCPP_CONSTEXPR const int digits = 0; | |
| static _LIBCPP_CONSTEXPR const int digits10 = 0; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = 0; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = false; | |
| static _LIBCPP_CONSTEXPR const bool is_integer = false; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = false; | |
| static _LIBCPP_CONSTEXPR const int radix = 0; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type();} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = 0; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = 0; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = false; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type();} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = false; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = false; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = false; | |
| static _LIBCPP_CONSTEXPR const bool traps = false; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = false; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; | |
| }; | |
| template <class _Tp, int __digits, bool _IsSigned> | |
| struct __libcpp_compute_min | |
| { | |
| static _LIBCPP_CONSTEXPR const _Tp value = _Tp(_Tp(1) << __digits); | |
| }; | |
| template <class _Tp, int __digits> | |
| struct __libcpp_compute_min<_Tp, __digits, false> | |
| { | |
| static _LIBCPP_CONSTEXPR const _Tp value = _Tp(0); | |
| }; | |
| template <class _Tp> | |
| class __libcpp_numeric_limits<_Tp, true> | |
| { | |
| protected: | |
| typedef _Tp type; | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = true; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = type(-1) < type(0); | |
| static _LIBCPP_CONSTEXPR const int digits = static_cast<int>(sizeof(type) * __CHAR_BIT__ - is_signed); | |
| static _LIBCPP_CONSTEXPR const int digits10 = digits * 3 / 10; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = 0; | |
| static _LIBCPP_CONSTEXPR const type __min = __libcpp_compute_min<type, digits, is_signed>::value; | |
| static _LIBCPP_CONSTEXPR const type __max = is_signed ? type(type(~0) ^ __min) : type(~0); | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();} | |
| static _LIBCPP_CONSTEXPR const bool is_integer = true; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = true; | |
| static _LIBCPP_CONSTEXPR const int radix = 2; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = 0; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = 0; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = false; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = false; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = true; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = !_VSTD::is_signed<_Tp>::value; | |
| #if defined(__i386__) || defined(__x86_64__) || defined(__pnacl__) || \ | |
| defined(__wasm__) | |
| static _LIBCPP_CONSTEXPR const bool traps = true; | |
| #else | |
| # 245 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| static _LIBCPP_CONSTEXPR const bool traps = false; | |
| #endif | |
| # 247 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = false; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; | |
| }; | |
| template <> | |
| class __libcpp_numeric_limits<bool, true> | |
| { | |
| protected: | |
| typedef bool type; | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = true; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = false; | |
| static _LIBCPP_CONSTEXPR const int digits = 1; | |
| static _LIBCPP_CONSTEXPR const int digits10 = 0; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = 0; | |
| static _LIBCPP_CONSTEXPR const type __min = false; | |
| static _LIBCPP_CONSTEXPR const type __max = true; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __min;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __max;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return min();} | |
| static _LIBCPP_CONSTEXPR const bool is_integer = true; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = true; | |
| static _LIBCPP_CONSTEXPR const int radix = 2; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return type(0);} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return type(0);} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = 0; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = 0; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = 0; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = 0; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = false; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = false; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = false; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_absent; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return type(0);} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return type(0);} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return type(0);} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return type(0);} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = false; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = true; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = false; | |
| static _LIBCPP_CONSTEXPR const bool traps = false; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = false; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = round_toward_zero; | |
| }; | |
| template <> | |
| class __libcpp_numeric_limits<float, true> | |
| { | |
| protected: | |
| typedef float type; | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = true; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = true; | |
| static _LIBCPP_CONSTEXPR const int digits = __FLT_MANT_DIG__; | |
| static _LIBCPP_CONSTEXPR const int digits10 = __FLT_DIG__; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103l)/100000l; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __FLT_MIN__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __FLT_MAX__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} | |
| static _LIBCPP_CONSTEXPR const bool is_integer = false; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = false; | |
| static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __FLT_EPSILON__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5F;} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = __FLT_MIN_EXP__; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = __FLT_MIN_10_EXP__; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = __FLT_MAX_EXP__; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = __FLT_MAX_10_EXP__; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = true; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_valf();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanf("");} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansf("");} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __FLT_DENORM_MIN__;} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = true; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = true; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = false; | |
| static _LIBCPP_CONSTEXPR const bool traps = false; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = false; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; | |
| }; | |
| template <> | |
| class __libcpp_numeric_limits<double, true> | |
| { | |
| protected: | |
| typedef double type; | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = true; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = true; | |
| static _LIBCPP_CONSTEXPR const int digits = __DBL_MANT_DIG__; | |
| static _LIBCPP_CONSTEXPR const int digits10 = __DBL_DIG__; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103l)/100000l; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __DBL_MIN__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __DBL_MAX__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} | |
| static _LIBCPP_CONSTEXPR const bool is_integer = false; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = false; | |
| static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __DBL_EPSILON__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = __DBL_MIN_EXP__; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = __DBL_MIN_10_EXP__; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = __DBL_MAX_EXP__; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = __DBL_MAX_10_EXP__; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = true; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_val();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nan("");} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nans("");} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __DBL_DENORM_MIN__;} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = true; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = true; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = false; | |
| static _LIBCPP_CONSTEXPR const bool traps = false; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = false; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; | |
| }; | |
| template <> | |
| class __libcpp_numeric_limits<long double, true> | |
| { | |
| protected: | |
| typedef long double type; | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = true; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = true; | |
| static _LIBCPP_CONSTEXPR const int digits = __LDBL_MANT_DIG__; | |
| static _LIBCPP_CONSTEXPR const int digits10 = __LDBL_DIG__; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = 2+(digits * 30103l)/100000l; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __LDBL_MIN__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __LDBL_MAX__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return -max();} | |
| static _LIBCPP_CONSTEXPR const bool is_integer = false; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = false; | |
| static _LIBCPP_CONSTEXPR const int radix = __FLT_RADIX__; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __LDBL_EPSILON__;} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return 0.5;} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = __LDBL_MIN_EXP__; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = __LDBL_MIN_10_EXP__; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = __LDBL_MAX_EXP__; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = __LDBL_MAX_10_EXP__; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = true; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = true; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = true; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = denorm_present; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = false; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __builtin_huge_vall();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __builtin_nanl("");} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __builtin_nansl("");} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __LDBL_DENORM_MIN__;} | |
| #if (defined(__ppc__) || defined(__ppc64__)) | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = false; | |
| #else | |
| # 431 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = true; | |
| #endif | |
| # 433 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = true; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = false; | |
| static _LIBCPP_CONSTEXPR const bool traps = false; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = false; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = round_to_nearest; | |
| }; | |
| template <class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS numeric_limits | |
| : private __libcpp_numeric_limits<typename remove_cv<_Tp>::type> | |
| { | |
| typedef __libcpp_numeric_limits<typename remove_cv<_Tp>::type> __base; | |
| typedef typename __base::type type; | |
| public: | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} | |
| static _LIBCPP_CONSTEXPR const int digits = __base::digits; | |
| static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; | |
| static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; | |
| static _LIBCPP_CONSTEXPR const int radix = __base::radix; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; | |
| static _LIBCPP_CONSTEXPR const bool traps = __base::traps; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; | |
| }; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_specialized; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::digits10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_digits10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_signed; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_integer; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_exact; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::radix; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::min_exponent10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<_Tp>::max_exponent10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_infinity; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_quiet_NaN; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_signaling_NaN; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<_Tp>::has_denorm; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::has_denorm_loss; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_iec559; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_bounded; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::is_modulo; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::traps; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<_Tp>::tinyness_before; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const float_round_style numeric_limits<_Tp>::round_style; | |
| template <class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS numeric_limits<const _Tp> | |
| : private numeric_limits<_Tp> | |
| { | |
| typedef numeric_limits<_Tp> __base; | |
| typedef _Tp type; | |
| public: | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} | |
| static _LIBCPP_CONSTEXPR const int digits = __base::digits; | |
| static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; | |
| static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; | |
| static _LIBCPP_CONSTEXPR const int radix = __base::radix; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; | |
| static _LIBCPP_CONSTEXPR const bool traps = __base::traps; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; | |
| }; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_specialized; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::digits10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_digits10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_signed; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_integer; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_exact; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::radix; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::min_exponent10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const _Tp>::max_exponent10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_infinity; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_quiet_NaN; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_signaling_NaN; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const _Tp>::has_denorm; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::has_denorm_loss; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_iec559; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_bounded; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::is_modulo; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::traps; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const _Tp>::tinyness_before; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const _Tp>::round_style; | |
| template <class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS numeric_limits<volatile _Tp> | |
| : private numeric_limits<_Tp> | |
| { | |
| typedef numeric_limits<_Tp> __base; | |
| typedef _Tp type; | |
| public: | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} | |
| static _LIBCPP_CONSTEXPR const int digits = __base::digits; | |
| static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; | |
| static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; | |
| static _LIBCPP_CONSTEXPR const int radix = __base::radix; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; | |
| static _LIBCPP_CONSTEXPR const bool traps = __base::traps; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; | |
| }; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_specialized; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::digits10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_digits10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_signed; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_integer; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_exact; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::radix; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::min_exponent10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<volatile _Tp>::max_exponent10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_infinity; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_quiet_NaN; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_signaling_NaN; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<volatile _Tp>::has_denorm; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::has_denorm_loss; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_iec559; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_bounded; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::is_modulo; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::traps; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<volatile _Tp>::tinyness_before; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const float_round_style numeric_limits<volatile _Tp>::round_style; | |
| template <class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS numeric_limits<const volatile _Tp> | |
| : private numeric_limits<_Tp> | |
| { | |
| typedef numeric_limits<_Tp> __base; | |
| typedef _Tp type; | |
| public: | |
| static _LIBCPP_CONSTEXPR const bool is_specialized = __base::is_specialized; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type min() _NOEXCEPT {return __base::min();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type max() _NOEXCEPT {return __base::max();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type lowest() _NOEXCEPT {return __base::lowest();} | |
| static _LIBCPP_CONSTEXPR const int digits = __base::digits; | |
| static _LIBCPP_CONSTEXPR const int digits10 = __base::digits10; | |
| static _LIBCPP_CONSTEXPR const int max_digits10 = __base::max_digits10; | |
| static _LIBCPP_CONSTEXPR const bool is_signed = __base::is_signed; | |
| static _LIBCPP_CONSTEXPR const bool is_integer = __base::is_integer; | |
| static _LIBCPP_CONSTEXPR const bool is_exact = __base::is_exact; | |
| static _LIBCPP_CONSTEXPR const int radix = __base::radix; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type epsilon() _NOEXCEPT {return __base::epsilon();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type round_error() _NOEXCEPT {return __base::round_error();} | |
| static _LIBCPP_CONSTEXPR const int min_exponent = __base::min_exponent; | |
| static _LIBCPP_CONSTEXPR const int min_exponent10 = __base::min_exponent10; | |
| static _LIBCPP_CONSTEXPR const int max_exponent = __base::max_exponent; | |
| static _LIBCPP_CONSTEXPR const int max_exponent10 = __base::max_exponent10; | |
| static _LIBCPP_CONSTEXPR const bool has_infinity = __base::has_infinity; | |
| static _LIBCPP_CONSTEXPR const bool has_quiet_NaN = __base::has_quiet_NaN; | |
| static _LIBCPP_CONSTEXPR const bool has_signaling_NaN = __base::has_signaling_NaN; | |
| static _LIBCPP_CONSTEXPR const float_denorm_style has_denorm = __base::has_denorm; | |
| static _LIBCPP_CONSTEXPR const bool has_denorm_loss = __base::has_denorm_loss; | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type infinity() _NOEXCEPT {return __base::infinity();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type quiet_NaN() _NOEXCEPT {return __base::quiet_NaN();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type signaling_NaN() _NOEXCEPT {return __base::signaling_NaN();} | |
| _LIBCPP_INLINE_VISIBILITY static _LIBCPP_CONSTEXPR type denorm_min() _NOEXCEPT {return __base::denorm_min();} | |
| static _LIBCPP_CONSTEXPR const bool is_iec559 = __base::is_iec559; | |
| static _LIBCPP_CONSTEXPR const bool is_bounded = __base::is_bounded; | |
| static _LIBCPP_CONSTEXPR const bool is_modulo = __base::is_modulo; | |
| static _LIBCPP_CONSTEXPR const bool traps = __base::traps; | |
| static _LIBCPP_CONSTEXPR const bool tinyness_before = __base::tinyness_before; | |
| static _LIBCPP_CONSTEXPR const float_round_style round_style = __base::round_style; | |
| }; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_specialized; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::digits10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_digits10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_signed; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_integer; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_exact; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::radix; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::min_exponent10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const int numeric_limits<const volatile _Tp>::max_exponent10; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_infinity; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_quiet_NaN; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_signaling_NaN; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const float_denorm_style numeric_limits<const volatile _Tp>::has_denorm; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::has_denorm_loss; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_iec559; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_bounded; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::is_modulo; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::traps; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const bool numeric_limits<const volatile _Tp>::tinyness_before; | |
| template <class _Tp> | |
| _LIBCPP_CONSTEXPR const float_round_style numeric_limits<const volatile _Tp>::round_style; | |
| _LIBCPP_END_NAMESPACE_STD | |
| _LIBCPP_POP_MACROS | |
| #endif // _LIBCPP_LIMITS | |
| # 818 "/usr/local/bin/../include/c++/v1/limits" 3 | |
| # 650 "/usr/local/bin/../include/c++/v1/memory" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <iterator> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 650 "/usr/local/bin/../include/c++/v1/memory" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/iterator" 1 3 | |
| // -*- C++ -*- | |
| //===-------------------------- iterator ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_ITERATOR | |
| #define _LIBCPP_ITERATOR | |
| /* | |
| iterator synopsis | |
| namespace std | |
| { | |
| template<class Iterator> | |
| struct iterator_traits | |
| { | |
| typedef typename Iterator::difference_type difference_type; | |
| typedef typename Iterator::value_type value_type; | |
| typedef typename Iterator::pointer pointer; | |
| typedef typename Iterator::reference reference; | |
| typedef typename Iterator::iterator_category iterator_category; | |
| }; | |
| template<class T> | |
| struct iterator_traits<T*> | |
| { | |
| typedef ptrdiff_t difference_type; | |
| typedef T value_type; | |
| typedef T* pointer; | |
| typedef T& reference; | |
| typedef random_access_iterator_tag iterator_category; | |
| }; | |
| template<class T> | |
| struct iterator_traits<const T*> | |
| { | |
| typedef ptrdiff_t difference_type; | |
| typedef T value_type; | |
| typedef const T* pointer; | |
| typedef const T& reference; | |
| typedef random_access_iterator_tag iterator_category; | |
| }; | |
| template<class Category, class T, class Distance = ptrdiff_t, | |
| class Pointer = T*, class Reference = T&> | |
| struct iterator | |
| { | |
| typedef T value_type; | |
| typedef Distance difference_type; | |
| typedef Pointer pointer; | |
| typedef Reference reference; | |
| typedef Category iterator_category; | |
| }; | |
| struct input_iterator_tag {}; | |
| struct output_iterator_tag {}; | |
| struct forward_iterator_tag : public input_iterator_tag {}; | |
| struct bidirectional_iterator_tag : public forward_iterator_tag {}; | |
| struct random_access_iterator_tag : public bidirectional_iterator_tag {}; | |
| // 27.4.3, iterator operations | |
| // extension: second argument not conforming to C++03 | |
| template <class InputIterator> // constexpr in C++17 | |
| constexpr void advance(InputIterator& i, | |
| typename iterator_traits<InputIterator>::difference_type n); | |
| template <class InputIterator> // constexpr in C++17 | |
| constexpr typename iterator_traits<InputIterator>::difference_type | |
| distance(InputIterator first, InputIterator last); | |
| template <class InputIterator> // constexpr in C++17 | |
| constexpr InputIterator next(InputIterator x, | |
| typename iterator_traits<InputIterator>::difference_type n = 1); | |
| template <class BidirectionalIterator> // constexpr in C++17 | |
| constexpr BidirectionalIterator prev(BidirectionalIterator x, | |
| typename iterator_traits<BidirectionalIterator>::difference_type n = 1); | |
| template <class Iterator> | |
| class reverse_iterator | |
| : public iterator<typename iterator_traits<Iterator>::iterator_category, | |
| typename iterator_traits<Iterator>::value_type, | |
| typename iterator_traits<Iterator>::difference_type, | |
| typename iterator_traits<Iterator>::pointer, | |
| typename iterator_traits<Iterator>::reference> | |
| { | |
| protected: | |
| Iterator current; | |
| public: | |
| typedef Iterator iterator_type; | |
| typedef typename iterator_traits<Iterator>::difference_type difference_type; | |
| typedef typename iterator_traits<Iterator>::reference reference; | |
| typedef typename iterator_traits<Iterator>::pointer pointer; | |
| constexpr reverse_iterator(); | |
| constexpr explicit reverse_iterator(Iterator x); | |
| template <class U> constexpr reverse_iterator(const reverse_iterator<U>& u); | |
| template <class U> constexpr reverse_iterator& operator=(const reverse_iterator<U>& u); | |
| constexpr Iterator base() const; | |
| constexpr reference operator*() const; | |
| constexpr pointer operator->() const; | |
| constexpr reverse_iterator& operator++(); | |
| constexpr reverse_iterator operator++(int); | |
| constexpr reverse_iterator& operator--(); | |
| constexpr reverse_iterator operator--(int); | |
| constexpr reverse_iterator operator+ (difference_type n) const; | |
| constexpr reverse_iterator& operator+=(difference_type n); | |
| constexpr reverse_iterator operator- (difference_type n) const; | |
| constexpr reverse_iterator& operator-=(difference_type n); | |
| constexpr reference operator[](difference_type n) const; | |
| }; | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator==(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator<(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator!=(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator>(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator>=(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator<=(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr auto | |
| operator-(const reverse_iterator<Iterator1>& x, const reverse_iterator<Iterator2>& y) | |
| -> decltype(__y.base() - __x.base()); // constexpr in C++17 | |
| template <class Iterator> | |
| constexpr reverse_iterator<Iterator> | |
| operator+(typename reverse_iterator<Iterator>::difference_type n, | |
| const reverse_iterator<Iterator>& x); // constexpr in C++17 | |
| template <class Iterator> | |
| constexpr reverse_iterator<Iterator> make_reverse_iterator(Iterator i); // C++14, constexpr in C++17 | |
| template <class Container> | |
| class back_insert_iterator | |
| { | |
| protected: | |
| Container* container; | |
| public: | |
| typedef Container container_type; | |
| typedef void value_type; | |
| typedef void difference_type; | |
| typedef void reference; | |
| typedef void pointer; | |
| explicit back_insert_iterator(Container& x); | |
| back_insert_iterator& operator=(const typename Container::value_type& value); | |
| back_insert_iterator& operator*(); | |
| back_insert_iterator& operator++(); | |
| back_insert_iterator operator++(int); | |
| }; | |
| template <class Container> back_insert_iterator<Container> back_inserter(Container& x); | |
| template <class Container> | |
| class front_insert_iterator | |
| { | |
| protected: | |
| Container* container; | |
| public: | |
| typedef Container container_type; | |
| typedef void value_type; | |
| typedef void difference_type; | |
| typedef void reference; | |
| typedef void pointer; | |
| explicit front_insert_iterator(Container& x); | |
| front_insert_iterator& operator=(const typename Container::value_type& value); | |
| front_insert_iterator& operator*(); | |
| front_insert_iterator& operator++(); | |
| front_insert_iterator operator++(int); | |
| }; | |
| template <class Container> front_insert_iterator<Container> front_inserter(Container& x); | |
| template <class Container> | |
| class insert_iterator | |
| { | |
| protected: | |
| Container* container; | |
| typename Container::iterator iter; | |
| public: | |
| typedef Container container_type; | |
| typedef void value_type; | |
| typedef void difference_type; | |
| typedef void reference; | |
| typedef void pointer; | |
| insert_iterator(Container& x, typename Container::iterator i); | |
| insert_iterator& operator=(const typename Container::value_type& value); | |
| insert_iterator& operator*(); | |
| insert_iterator& operator++(); | |
| insert_iterator& operator++(int); | |
| }; | |
| template <class Container, class Iterator> | |
| insert_iterator<Container> inserter(Container& x, Iterator i); | |
| template <class Iterator> | |
| class move_iterator { | |
| public: | |
| typedef Iterator iterator_type; | |
| typedef typename iterator_traits<Iterator>::difference_type difference_type; | |
| typedef Iterator pointer; | |
| typedef typename iterator_traits<Iterator>::value_type value_type; | |
| typedef typename iterator_traits<Iterator>::iterator_category iterator_category; | |
| typedef value_type&& reference; | |
| constexpr move_iterator(); // all the constexprs are in C++17 | |
| constexpr explicit move_iterator(Iterator i); | |
| template <class U> | |
| constexpr move_iterator(const move_iterator<U>& u); | |
| template <class U> | |
| constexpr move_iterator& operator=(const move_iterator<U>& u); | |
| constexpr iterator_type base() const; | |
| constexpr reference operator*() const; | |
| constexpr pointer operator->() const; | |
| constexpr move_iterator& operator++(); | |
| constexpr move_iterator operator++(int); | |
| constexpr move_iterator& operator--(); | |
| constexpr move_iterator operator--(int); | |
| constexpr move_iterator operator+(difference_type n) const; | |
| constexpr move_iterator& operator+=(difference_type n); | |
| constexpr move_iterator operator-(difference_type n) const; | |
| constexpr move_iterator& operator-=(difference_type n); | |
| constexpr unspecified operator[](difference_type n) const; | |
| private: | |
| Iterator current; // exposition only | |
| }; | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator==(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator!=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator<(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator<=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator>(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr bool // constexpr in C++17 | |
| operator>=(const move_iterator<Iterator1>& x, const move_iterator<Iterator2>& y); | |
| template <class Iterator1, class Iterator2> | |
| constexpr auto // constexpr in C++17 | |
| operator-(const move_iterator<Iterator1>& x, | |
| const move_iterator<Iterator2>& y) -> decltype(x.base() - y.base()); | |
| template <class Iterator> | |
| constexpr move_iterator<Iterator> operator+( // constexpr in C++17 | |
| typename move_iterator<Iterator>::difference_type n, | |
| const move_iterator<Iterator>& x); | |
| template <class Iterator> // constexpr in C++17 | |
| constexpr move_iterator<Iterator> make_move_iterator(const Iterator& i); | |
| template <class T, class charT = char, class traits = char_traits<charT>, class Distance = ptrdiff_t> | |
| class istream_iterator | |
| : public iterator<input_iterator_tag, T, Distance, const T*, const T&> | |
| { | |
| public: | |
| typedef charT char_type; | |
| typedef traits traits_type; | |
| typedef basic_istream<charT,traits> istream_type; | |
| constexpr istream_iterator(); | |
| istream_iterator(istream_type& s); | |
| istream_iterator(const istream_iterator& x); | |
| ~istream_iterator(); | |
| const T& operator*() const; | |
| const T* operator->() const; | |
| istream_iterator& operator++(); | |
| istream_iterator operator++(int); | |
| }; | |
| template <class T, class charT, class traits, class Distance> | |
| bool operator==(const istream_iterator<T,charT,traits,Distance>& x, | |
| const istream_iterator<T,charT,traits,Distance>& y); | |
| template <class T, class charT, class traits, class Distance> | |
| bool operator!=(const istream_iterator<T,charT,traits,Distance>& x, | |
| const istream_iterator<T,charT,traits,Distance>& y); | |
| template <class T, class charT = char, class traits = char_traits<charT> > | |
| class ostream_iterator | |
| : public iterator<output_iterator_tag, void, void, void ,void> | |
| { | |
| public: | |
| typedef charT char_type; | |
| typedef traits traits_type; | |
| typedef basic_ostream<charT,traits> ostream_type; | |
| ostream_iterator(ostream_type& s); | |
| ostream_iterator(ostream_type& s, const charT* delimiter); | |
| ostream_iterator(const ostream_iterator& x); | |
| ~ostream_iterator(); | |
| ostream_iterator& operator=(const T& value); | |
| ostream_iterator& operator*(); | |
| ostream_iterator& operator++(); | |
| ostream_iterator& operator++(int); | |
| }; | |
| template<class charT, class traits = char_traits<charT> > | |
| class istreambuf_iterator | |
| : public iterator<input_iterator_tag, charT, | |
| typename traits::off_type, unspecified, | |
| charT> | |
| { | |
| public: | |
| typedef charT char_type; | |
| typedef traits traits_type; | |
| typedef typename traits::int_type int_type; | |
| typedef basic_streambuf<charT,traits> streambuf_type; | |
| typedef basic_istream<charT,traits> istream_type; | |
| istreambuf_iterator() noexcept; | |
| istreambuf_iterator(istream_type& s) noexcept; | |
| istreambuf_iterator(streambuf_type* s) noexcept; | |
| istreambuf_iterator(a-private-type) noexcept; | |
| charT operator*() const; | |
| pointer operator->() const; | |
| istreambuf_iterator& operator++(); | |
| a-private-type operator++(int); | |
| bool equal(const istreambuf_iterator& b) const; | |
| }; | |
| template <class charT, class traits> | |
| bool operator==(const istreambuf_iterator<charT,traits>& a, | |
| const istreambuf_iterator<charT,traits>& b); | |
| template <class charT, class traits> | |
| bool operator!=(const istreambuf_iterator<charT,traits>& a, | |
| const istreambuf_iterator<charT,traits>& b); | |
| template <class charT, class traits = char_traits<charT> > | |
| class ostreambuf_iterator | |
| : public iterator<output_iterator_tag, void, void, void, void> | |
| { | |
| public: | |
| typedef charT char_type; | |
| typedef traits traits_type; | |
| typedef basic_streambuf<charT,traits> streambuf_type; | |
| typedef basic_ostream<charT,traits> ostream_type; | |
| ostreambuf_iterator(ostream_type& s) noexcept; | |
| ostreambuf_iterator(streambuf_type* s) noexcept; | |
| ostreambuf_iterator& operator=(charT c); | |
| ostreambuf_iterator& operator*(); | |
| ostreambuf_iterator& operator++(); | |
| ostreambuf_iterator& operator++(int); | |
| bool failed() const noexcept; | |
| }; | |
| template <class C> constexpr auto begin(C& c) -> decltype(c.begin()); | |
| template <class C> constexpr auto begin(const C& c) -> decltype(c.begin()); | |
| template <class C> constexpr auto end(C& c) -> decltype(c.end()); | |
| template <class C> constexpr auto end(const C& c) -> decltype(c.end()); | |
| template <class T, size_t N> constexpr T* begin(T (&array)[N]); | |
| template <class T, size_t N> constexpr T* end(T (&array)[N]); | |
| template <class C> auto constexpr cbegin(const C& c) -> decltype(std::begin(c)); // C++14 | |
| template <class C> auto constexpr cend(const C& c) -> decltype(std::end(c)); // C++14 | |
| template <class C> auto constexpr rbegin(C& c) -> decltype(c.rbegin()); // C++14 | |
| template <class C> auto constexpr rbegin(const C& c) -> decltype(c.rbegin()); // C++14 | |
| template <class C> auto constexpr rend(C& c) -> decltype(c.rend()); // C++14 | |
| template <class C> constexpr auto rend(const C& c) -> decltype(c.rend()); // C++14 | |
| template <class E> reverse_iterator<const E*> constexpr rbegin(initializer_list<E> il); // C++14 | |
| template <class E> reverse_iterator<const E*> constexpr rend(initializer_list<E> il); // C++14 | |
| template <class T, size_t N> reverse_iterator<T*> constexpr rbegin(T (&array)[N]); // C++14 | |
| template <class T, size_t N> reverse_iterator<T*> constexpr rend(T (&array)[N]); // C++14 | |
| template <class C> constexpr auto crbegin(const C& c) -> decltype(std::rbegin(c)); // C++14 | |
| template <class C> constexpr auto crend(const C& c) -> decltype(std::rend(c)); // C++14 | |
| // 24.8, container access: | |
| template <class C> constexpr auto size(const C& c) -> decltype(c.size()); // C++17 | |
| template <class T, size_t N> constexpr size_t size(const T (&array)[N]) noexcept; // C++17 | |
| template <class C> constexpr auto empty(const C& c) -> decltype(c.empty()); // C++17 | |
| template <class T, size_t N> constexpr bool empty(const T (&array)[N]) noexcept; // C++17 | |
| template <class E> constexpr bool empty(initializer_list<E> il) noexcept; // C++17 | |
| template <class C> constexpr auto data(C& c) -> decltype(c.data()); // C++17 | |
| template <class C> constexpr auto data(const C& c) -> decltype(c.data()); // C++17 | |
| template <class T, size_t N> constexpr T* data(T (&array)[N]) noexcept; // C++17 | |
| template <class E> constexpr const E* data(initializer_list<E> il) noexcept; // C++17 | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 425 "/usr/local/bin/../include/c++/v1/iterator" 3 | |
| # 426 "/usr/local/bin/../include/c++/v1/iterator" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <iosfwd> // for forward declarations of vector and string. | |
| #endif /* expanded by -frewrite-includes */ | |
| # 426 "/usr/local/bin/../include/c++/v1/iterator" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/iosfwd" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- iosfwd -----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_IOSFWD | |
| #define _LIBCPP_IOSFWD | |
| /* | |
| iosfwd synopsis | |
| namespace std | |
| { | |
| template<class charT> struct char_traits; | |
| template<class T> class allocator; | |
| class ios_base; | |
| template <class charT, class traits = char_traits<charT> > class basic_ios; | |
| template <class charT, class traits = char_traits<charT> > class basic_streambuf; | |
| template <class charT, class traits = char_traits<charT> > class basic_istream; | |
| template <class charT, class traits = char_traits<charT> > class basic_ostream; | |
| template <class charT, class traits = char_traits<charT> > class basic_iostream; | |
| template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > | |
| class basic_stringbuf; | |
| template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > | |
| class basic_istringstream; | |
| template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > | |
| class basic_ostringstream; | |
| template <class charT, class traits = char_traits<charT>, class Allocator = allocator<charT> > | |
| class basic_stringstream; | |
| template <class charT, class traits = char_traits<charT> > class basic_filebuf; | |
| template <class charT, class traits = char_traits<charT> > class basic_ifstream; | |
| template <class charT, class traits = char_traits<charT> > class basic_ofstream; | |
| template <class charT, class traits = char_traits<charT> > class basic_fstream; | |
| template <class charT, class traits = char_traits<charT> > class istreambuf_iterator; | |
| template <class charT, class traits = char_traits<charT> > class ostreambuf_iterator; | |
| typedef basic_ios<char> ios; | |
| typedef basic_ios<wchar_t> wios; | |
| typedef basic_streambuf<char> streambuf; | |
| typedef basic_istream<char> istream; | |
| typedef basic_ostream<char> ostream; | |
| typedef basic_iostream<char> iostream; | |
| typedef basic_stringbuf<char> stringbuf; | |
| typedef basic_istringstream<char> istringstream; | |
| typedef basic_ostringstream<char> ostringstream; | |
| typedef basic_stringstream<char> stringstream; | |
| typedef basic_filebuf<char> filebuf; | |
| typedef basic_ifstream<char> ifstream; | |
| typedef basic_ofstream<char> ofstream; | |
| typedef basic_fstream<char> fstream; | |
| typedef basic_streambuf<wchar_t> wstreambuf; | |
| typedef basic_istream<wchar_t> wistream; | |
| typedef basic_ostream<wchar_t> wostream; | |
| typedef basic_iostream<wchar_t> wiostream; | |
| typedef basic_stringbuf<wchar_t> wstringbuf; | |
| typedef basic_istringstream<wchar_t> wistringstream; | |
| typedef basic_ostringstream<wchar_t> wostringstream; | |
| typedef basic_stringstream<wchar_t> wstringstream; | |
| typedef basic_filebuf<wchar_t> wfilebuf; | |
| typedef basic_ifstream<wchar_t> wifstream; | |
| typedef basic_ofstream<wchar_t> wofstream; | |
| typedef basic_fstream<wchar_t> wfstream; | |
| template <class state> class fpos; | |
| typedef fpos<char_traits<char>::state_type> streampos; | |
| typedef fpos<char_traits<wchar_t>::state_type> wstreampos; | |
| } // std | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 89 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| # 90 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <wchar.h> // for mbstate_t | |
| #endif /* expanded by -frewrite-includes */ | |
| # 90 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/wchar.h" 1 3 | |
| // -*- C++ -*- | |
| //===--------------------------- wchar.h ----------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if defined(__need_wint_t) || defined(__need_mbstate_t) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 15 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #endif | |
| # 16 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <wchar.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 17 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| # 18 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #elif !defined(_LIBCPP_WCHAR_H) | |
| # 20 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #define _LIBCPP_WCHAR_H | |
| /* | |
| wchar.h synopsis | |
| Macros: | |
| NULL | |
| WCHAR_MAX | |
| WCHAR_MIN | |
| WEOF | |
| Types: | |
| mbstate_t | |
| size_t | |
| tm | |
| wint_t | |
| int fwprintf(FILE* restrict stream, const wchar_t* restrict format, ...); | |
| int fwscanf(FILE* restrict stream, const wchar_t* restrict format, ...); | |
| int swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, ...); | |
| int swscanf(const wchar_t* restrict s, const wchar_t* restrict format, ...); | |
| int vfwprintf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); | |
| int vfwscanf(FILE* restrict stream, const wchar_t* restrict format, va_list arg); // C99 | |
| int vswprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict format, va_list arg); | |
| int vswscanf(const wchar_t* restrict s, const wchar_t* restrict format, va_list arg); // C99 | |
| int vwprintf(const wchar_t* restrict format, va_list arg); | |
| int vwscanf(const wchar_t* restrict format, va_list arg); // C99 | |
| int wprintf(const wchar_t* restrict format, ...); | |
| int wscanf(const wchar_t* restrict format, ...); | |
| wint_t fgetwc(FILE* stream); | |
| wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict stream); | |
| wint_t fputwc(wchar_t c, FILE* stream); | |
| int fputws(const wchar_t* restrict s, FILE* restrict stream); | |
| int fwide(FILE* stream, int mode); | |
| wint_t getwc(FILE* stream); | |
| wint_t getwchar(); | |
| wint_t putwc(wchar_t c, FILE* stream); | |
| wint_t putwchar(wchar_t c); | |
| wint_t ungetwc(wint_t c, FILE* stream); | |
| double wcstod(const wchar_t* restrict nptr, wchar_t** restrict endptr); | |
| float wcstof(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99 | |
| long double wcstold(const wchar_t* restrict nptr, wchar_t** restrict endptr); // C99 | |
| long wcstol(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); | |
| long long wcstoll(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99 | |
| unsigned long wcstoul(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); | |
| unsigned long long wcstoull(const wchar_t* restrict nptr, wchar_t** restrict endptr, int base); // C99 | |
| wchar_t* wcscpy(wchar_t* restrict s1, const wchar_t* restrict s2); | |
| wchar_t* wcsncpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); | |
| wchar_t* wcscat(wchar_t* restrict s1, const wchar_t* restrict s2); | |
| wchar_t* wcsncat(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); | |
| int wcscmp(const wchar_t* s1, const wchar_t* s2); | |
| int wcscoll(const wchar_t* s1, const wchar_t* s2); | |
| int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n); | |
| size_t wcsxfrm(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); | |
| const wchar_t* wcschr(const wchar_t* s, wchar_t c); | |
| wchar_t* wcschr( wchar_t* s, wchar_t c); | |
| size_t wcscspn(const wchar_t* s1, const wchar_t* s2); | |
| size_t wcslen(const wchar_t* s); | |
| const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2); | |
| wchar_t* wcspbrk( wchar_t* s1, const wchar_t* s2); | |
| const wchar_t* wcsrchr(const wchar_t* s, wchar_t c); | |
| wchar_t* wcsrchr( wchar_t* s, wchar_t c); | |
| size_t wcsspn(const wchar_t* s1, const wchar_t* s2); | |
| const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2); | |
| wchar_t* wcsstr( wchar_t* s1, const wchar_t* s2); | |
| wchar_t* wcstok(wchar_t* restrict s1, const wchar_t* restrict s2, wchar_t** restrict ptr); | |
| const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); | |
| wchar_t* wmemchr( wchar_t* s, wchar_t c, size_t n); | |
| int wmemcmp(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); | |
| wchar_t* wmemcpy(wchar_t* restrict s1, const wchar_t* restrict s2, size_t n); | |
| wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n); | |
| wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n); | |
| size_t wcsftime(wchar_t* restrict s, size_t maxsize, const wchar_t* restrict format, | |
| const tm* restrict timeptr); | |
| wint_t btowc(int c); | |
| int wctob(wint_t c); | |
| int mbsinit(const mbstate_t* ps); | |
| size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict ps); | |
| size_t mbrtowc(wchar_t* restrict pwc, const char* restrict s, size_t n, mbstate_t* restrict ps); | |
| size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict ps); | |
| size_t mbsrtowcs(wchar_t* restrict dst, const char** restrict src, size_t len, | |
| mbstate_t* restrict ps); | |
| size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len, | |
| mbstate_t* restrict ps); | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 109 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| # 110 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 113 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #endif | |
| # 114 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #ifdef __cplusplus | |
| #define __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
| #endif | |
| # 118 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <wchar.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 119 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| # 1 "/usr/include/wchar.h" 1 3 4 | |
| /* Copyright (C) 1995-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * ISO C99 Standard: 7.24 | |
| * Extended multibyte and wide character utilities <wchar.h> | |
| */ | |
| #ifndef _WCHAR_H | |
| #if !defined __need_mbstate_t && !defined __need_wint_t | |
| # define _WCHAR_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/include/wchar.h" 3 4 | |
| # 28 "/usr/include/wchar.h" 3 4 | |
| #endif | |
| # 29 "/usr/include/wchar.h" 3 4 | |
| #ifdef _WCHAR_H | |
| /* Get FILE definition. */ | |
| # define __need___FILE | |
| # if defined __USE_UNIX98 || defined __USE_XOPEN2K | |
| # define __need_FILE | |
| # endif | |
| # 36 "/usr/include/wchar.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <stdio.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 36 "/usr/include/wchar.h" 3 4 | |
| # 1 "/usr/local/bin/../include/c++/v1/stdio.h" 1 3 4 | |
| // -*- C++ -*- | |
| //===---------------------------- stdio.h ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if defined(__need_FILE) || defined(__need___FILE) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 15 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #endif | |
| # 16 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stdio.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 17 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| # 1 "/usr/include/stdio.h" 1 3 4 | |
| /* Define ISO C stdio on top of C++ iostreams. | |
| Copyright (C) 1991-2016 Free Software Foundation, Inc. | |
| This file is part of the GNU C Library. | |
| The GNU C Library is free software; you can redistribute it and/or | |
| modify it under the terms of the GNU Lesser General Public | |
| License as published by the Free Software Foundation; either | |
| version 2.1 of the License, or (at your option) any later version. | |
| The GNU C Library is distributed in the hope that it will be useful, | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
| Lesser General Public License for more details. | |
| You should have received a copy of the GNU Lesser General Public | |
| License along with the GNU C Library; if not, see | |
| <http://www.gnu.org/licenses/>. */ | |
| /* | |
| * ISO C99 Standard: 7.19 Input/output <stdio.h> | |
| */ | |
| #ifndef _STDIO_H | |
| #if !defined __need_FILE && !defined __need___FILE | |
| # define _STDIO_H 1 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <features.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 27 "/usr/include/stdio.h" 3 4 | |
| # 28 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_DECLS | |
| # define __need_size_t | |
| # define __need_NULL | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 33 "/usr/include/stdio.h" 3 4 | |
| # 34 "/usr/include/stdio.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/types.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 35 "/usr/include/stdio.h" 3 4 | |
| # 36 "/usr/include/stdio.h" 3 4 | |
| # define __need_FILE | |
| # define __need___FILE | |
| #endif /* Don't need FILE. */ | |
| # 39 "/usr/include/stdio.h" 3 4 | |
| #if !defined __FILE_defined && defined __need_FILE | |
| /* Define outside of namespace so the C++ is happy. */ | |
| struct _IO_FILE; | |
| __BEGIN_NAMESPACE_STD | |
| /* The opaque type of streams. This is the definition used elsewhere. */ | |
| typedef struct _IO_FILE FILE; | |
| __END_NAMESPACE_STD | |
| #if defined __USE_LARGEFILE64 || defined __USE_POSIX \ | |
| || defined __USE_ISOC99 || defined __USE_XOPEN \ | |
| || defined __USE_POSIX2 | |
| __USING_NAMESPACE_STD(FILE) | |
| #endif | |
| # 55 "/usr/include/stdio.h" 3 4 | |
| # define __FILE_defined 1 | |
| #endif /* FILE not defined. */ | |
| # 58 "/usr/include/stdio.h" 3 4 | |
| #undef __need_FILE | |
| #if !defined ____FILE_defined && defined __need___FILE | |
| /* The opaque type of streams. This is the definition used elsewhere. */ | |
| typedef struct _IO_FILE __FILE; | |
| # define ____FILE_defined 1 | |
| #endif /* __FILE not defined. */ | |
| # 68 "/usr/include/stdio.h" 3 4 | |
| #undef __need___FILE | |
| #ifdef _STDIO_H | |
| #define _STDIO_USES_IOSTREAM | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <libio.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 74 "/usr/include/stdio.h" 3 4 | |
| # 75 "/usr/include/stdio.h" 3 4 | |
| #if defined __USE_XOPEN || defined __USE_XOPEN2K8 | |
| # ifdef __GNUC__ | |
| # ifndef _VA_LIST_DEFINED | |
| typedef _G_va_list va_list; | |
| # define _VA_LIST_DEFINED | |
| # endif | |
| # 82 "/usr/include/stdio.h" 3 4 | |
| # else | |
| # 83 "/usr/include/stdio.h" 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <stdarg.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 83 "/usr/include/stdio.h" 3 4 | |
| # 84 "/usr/include/stdio.h" 3 4 | |
| # endif | |
| # 85 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 86 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| # ifndef __off_t_defined | |
| # ifndef __USE_FILE_OFFSET64 | |
| typedef __off_t off_t; | |
| # else | |
| # 92 "/usr/include/stdio.h" 3 4 | |
| typedef __off64_t off_t; | |
| # endif | |
| # 94 "/usr/include/stdio.h" 3 4 | |
| # define __off_t_defined | |
| # endif | |
| # 96 "/usr/include/stdio.h" 3 4 | |
| # if defined __USE_LARGEFILE64 && !defined __off64_t_defined | |
| typedef __off64_t off64_t; | |
| # define __off64_t_defined | |
| # endif | |
| # 100 "/usr/include/stdio.h" 3 4 | |
| # ifndef __ssize_t_defined | |
| typedef __ssize_t ssize_t; | |
| # define __ssize_t_defined | |
| # endif | |
| # 105 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 106 "/usr/include/stdio.h" 3 4 | |
| /* The type of the second argument to `fgetpos' and `fsetpos'. */ | |
| __BEGIN_NAMESPACE_STD | |
| #ifndef __USE_FILE_OFFSET64 | |
| typedef _G_fpos_t fpos_t; | |
| #else | |
| # 112 "/usr/include/stdio.h" 3 4 | |
| typedef _G_fpos64_t fpos_t; | |
| #endif | |
| # 114 "/usr/include/stdio.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_LARGEFILE64 | |
| typedef _G_fpos64_t fpos64_t; | |
| #endif | |
| # 118 "/usr/include/stdio.h" 3 4 | |
| /* The possibilities for the third argument to `setvbuf'. */ | |
| #define _IOFBF 0 /* Fully buffered. */ | |
| #define _IOLBF 1 /* Line buffered. */ | |
| #define _IONBF 2 /* No buffering. */ | |
| /* Default buffer size. */ | |
| #ifndef BUFSIZ | |
| # define BUFSIZ _IO_BUFSIZ | |
| #endif | |
| # 129 "/usr/include/stdio.h" 3 4 | |
| /* End of file character. | |
| Some things throughout the library rely on this being -1. */ | |
| #ifndef EOF | |
| # define EOF (-1) | |
| #endif | |
| # 136 "/usr/include/stdio.h" 3 4 | |
| /* The possibilities for the third argument to `fseek'. | |
| These values should not be changed. */ | |
| #define SEEK_SET 0 /* Seek from beginning of file. */ | |
| #define SEEK_CUR 1 /* Seek from current position. */ | |
| #define SEEK_END 2 /* Seek from end of file. */ | |
| #ifdef __USE_GNU | |
| # define SEEK_DATA 3 /* Seek to next data. */ | |
| # define SEEK_HOLE 4 /* Seek to next hole. */ | |
| #endif | |
| # 147 "/usr/include/stdio.h" 3 4 | |
| #if defined __USE_MISC || defined __USE_XOPEN | |
| /* Default path prefix for `tempnam' and `tmpnam'. */ | |
| # define P_tmpdir "/tmp" | |
| #endif | |
| # 153 "/usr/include/stdio.h" 3 4 | |
| /* Get the values: | |
| L_tmpnam How long an array of chars must be to be passed to `tmpnam'. | |
| TMP_MAX The minimum number of unique filenames generated by tmpnam | |
| (and tempnam when it uses tmpnam's name space), | |
| or tempnam (the two are separate). | |
| L_ctermid How long an array to pass to `ctermid'. | |
| L_cuserid How long an array to pass to `cuserid'. | |
| FOPEN_MAX Minimum number of files that can be open at once. | |
| FILENAME_MAX Maximum length of a filename. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/stdio_lim.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 164 "/usr/include/stdio.h" 3 4 | |
| # 165 "/usr/include/stdio.h" 3 4 | |
| /* Standard streams. */ | |
| extern struct _IO_FILE *stdin; /* Standard input stream. */ | |
| extern struct _IO_FILE *stdout; /* Standard output stream. */ | |
| extern struct _IO_FILE *stderr; /* Standard error output stream. */ | |
| /* C89/C99 say they're macros. Make them happy. */ | |
| #define stdin stdin | |
| #define stdout stdout | |
| #define stderr stderr | |
| __BEGIN_NAMESPACE_STD | |
| /* Remove file FILENAME. */ | |
| extern int remove (const char *__filename) __THROW; | |
| /* Rename file OLD to NEW. */ | |
| extern int rename (const char *__old, const char *__new) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ATFILE | |
| /* Rename file OLD relative to OLDFD to NEW relative to NEWFD. */ | |
| extern int renameat (int __oldfd, const char *__old, int __newfd, | |
| const char *__new) __THROW; | |
| #endif | |
| # 188 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Create a temporary file and open it read/write. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| #ifndef __USE_FILE_OFFSET64 | |
| extern FILE *tmpfile (void) __wur; | |
| #else | |
| # 197 "/usr/include/stdio.h" 3 4 | |
| # ifdef __REDIRECT | |
| extern FILE *__REDIRECT (tmpfile, (void), tmpfile64) __wur; | |
| # else | |
| # 200 "/usr/include/stdio.h" 3 4 | |
| # define tmpfile tmpfile64 | |
| # endif | |
| # 202 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 203 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_LARGEFILE64 | |
| extern FILE *tmpfile64 (void) __wur; | |
| #endif | |
| # 207 "/usr/include/stdio.h" 3 4 | |
| /* Generate a temporary filename. */ | |
| extern char *tmpnam (char *__s) __THROW __wur; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_MISC | |
| /* This is the reentrant variant of `tmpnam'. The only difference is | |
| that it does not allow S to be NULL. */ | |
| extern char *tmpnam_r (char *__s) __THROW __wur; | |
| #endif | |
| # 217 "/usr/include/stdio.h" 3 4 | |
| #if defined __USE_MISC || defined __USE_XOPEN | |
| /* Generate a unique temporary filename using up to five characters of PFX | |
| if it is not NULL. The directory to put this file in is searched for | |
| as follows: First the environment variable "TMPDIR" is checked. | |
| If it contains the name of a writable directory, that directory is used. | |
| If not and if DIR is not NULL, that value is checked. If that fails, | |
| P_tmpdir is tried and finally "/tmp". The storage for the filename | |
| is allocated by `malloc'. */ | |
| extern char *tempnam (const char *__dir, const char *__pfx) | |
| __THROW __attribute_malloc__ __wur; | |
| #endif | |
| # 230 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Close STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fclose (FILE *__stream); | |
| /* Flush STREAM, or all streams if STREAM is NULL. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fflush (FILE *__stream); | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_MISC | |
| /* Faster versions when locking is not required. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern int fflush_unlocked (FILE *__stream); | |
| #endif | |
| # 254 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Close all streams. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern int fcloseall (void); | |
| #endif | |
| # 264 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| #ifndef __USE_FILE_OFFSET64 | |
| /* Open a file and create a new stream for it. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern FILE *fopen (const char *__restrict __filename, | |
| const char *__restrict __modes) __wur; | |
| /* Open a file, replacing an existing stream with it. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern FILE *freopen (const char *__restrict __filename, | |
| const char *__restrict __modes, | |
| FILE *__restrict __stream) __wur; | |
| #else | |
| # 282 "/usr/include/stdio.h" 3 4 | |
| # ifdef __REDIRECT | |
| extern FILE *__REDIRECT (fopen, (const char *__restrict __filename, | |
| const char *__restrict __modes), fopen64) | |
| __wur; | |
| extern FILE *__REDIRECT (freopen, (const char *__restrict __filename, | |
| const char *__restrict __modes, | |
| FILE *__restrict __stream), freopen64) | |
| __wur; | |
| # else | |
| # 291 "/usr/include/stdio.h" 3 4 | |
| # define fopen fopen64 | |
| # define freopen freopen64 | |
| # endif | |
| # 294 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 295 "/usr/include/stdio.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_LARGEFILE64 | |
| extern FILE *fopen64 (const char *__restrict __filename, | |
| const char *__restrict __modes) __wur; | |
| extern FILE *freopen64 (const char *__restrict __filename, | |
| const char *__restrict __modes, | |
| FILE *__restrict __stream) __wur; | |
| #endif | |
| # 303 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_POSIX | |
| /* Create a new stream that refers to an existing system file descriptor. */ | |
| extern FILE *fdopen (int __fd, const char *__modes) __THROW __wur; | |
| #endif | |
| # 308 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Create a new stream that refers to the given magic cookie, | |
| and uses the given functions for input and output. */ | |
| extern FILE *fopencookie (void *__restrict __magic_cookie, | |
| const char *__restrict __modes, | |
| _IO_cookie_io_functions_t __io_funcs) __THROW __wur; | |
| #endif | |
| # 316 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| /* Create a new stream that refers to a memory buffer. */ | |
| extern FILE *fmemopen (void *__s, size_t __len, const char *__modes) | |
| __THROW __wur; | |
| /* Open a stream that writes into a malloc'd buffer that is expanded as | |
| necessary. *BUFLOC and *SIZELOC are updated with the buffer's location | |
| and the number of characters written on fflush or fclose. */ | |
| extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) __THROW __wur; | |
| #endif | |
| # 327 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* If BUF is NULL, make STREAM unbuffered. | |
| Else make it use buffer BUF, of size BUFSIZ. */ | |
| extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) __THROW; | |
| /* Make STREAM use buffering mode MODE. | |
| If BUF is not NULL, use N bytes of it for buffering; | |
| else allocate an internal buffer N bytes long. */ | |
| extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf, | |
| int __modes, size_t __n) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_MISC | |
| /* If BUF is NULL, make STREAM unbuffered. | |
| Else make it use SIZE bytes of BUF for buffering. */ | |
| extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf, | |
| size_t __size) __THROW; | |
| /* Make STREAM line-buffered. */ | |
| extern void setlinebuf (FILE *__stream) __THROW; | |
| #endif | |
| # 349 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Write formatted output to STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fprintf (FILE *__restrict __stream, | |
| const char *__restrict __format, ...); | |
| /* Write formatted output to stdout. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int printf (const char *__restrict __format, ...); | |
| /* Write formatted output to S. */ | |
| extern int sprintf (char *__restrict __s, | |
| const char *__restrict __format, ...) __THROWNL; | |
| /* Write formatted output to S from argument list ARG. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int vfprintf (FILE *__restrict __s, const char *__restrict __format, | |
| _G_va_list __arg); | |
| /* Write formatted output to stdout from argument list ARG. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int vprintf (const char *__restrict __format, _G_va_list __arg); | |
| /* Write formatted output to S from argument list ARG. */ | |
| extern int vsprintf (char *__restrict __s, const char *__restrict __format, | |
| _G_va_list __arg) __THROWNL; | |
| __END_NAMESPACE_STD | |
| #if defined __USE_ISOC99 || defined __USE_UNIX98 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Maximum chars of output to write in MAXLEN. */ | |
| extern int snprintf (char *__restrict __s, size_t __maxlen, | |
| const char *__restrict __format, ...) | |
| __THROWNL __attribute__ ((__format__ (__printf__, 3, 4))); | |
| extern int vsnprintf (char *__restrict __s, size_t __maxlen, | |
| const char *__restrict __format, _G_va_list __arg) | |
| __THROWNL __attribute__ ((__format__ (__printf__, 3, 0))); | |
| __END_NAMESPACE_C99 | |
| #endif | |
| # 395 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Write formatted output to a string dynamically allocated with `malloc'. | |
| Store the address of the string in *PTR. */ | |
| extern int vasprintf (char **__restrict __ptr, const char *__restrict __f, | |
| _G_va_list __arg) | |
| __THROWNL __attribute__ ((__format__ (__printf__, 2, 0))) __wur; | |
| extern int __asprintf (char **__restrict __ptr, | |
| const char *__restrict __fmt, ...) | |
| __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))) __wur; | |
| extern int asprintf (char **__restrict __ptr, | |
| const char *__restrict __fmt, ...) | |
| __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))) __wur; | |
| #endif | |
| # 409 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| /* Write formatted output to a file descriptor. */ | |
| extern int vdprintf (int __fd, const char *__restrict __fmt, | |
| _G_va_list __arg) | |
| __attribute__ ((__format__ (__printf__, 2, 0))); | |
| extern int dprintf (int __fd, const char *__restrict __fmt, ...) | |
| __attribute__ ((__format__ (__printf__, 2, 3))); | |
| #endif | |
| # 418 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Read formatted input from STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fscanf (FILE *__restrict __stream, | |
| const char *__restrict __format, ...) __wur; | |
| /* Read formatted input from stdin. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int scanf (const char *__restrict __format, ...) __wur; | |
| /* Read formatted input from S. */ | |
| extern int sscanf (const char *__restrict __s, | |
| const char *__restrict __format, ...) __THROW; | |
| #if defined __USE_ISOC99 && !defined __USE_GNU \ | |
| && (!defined __LDBL_COMPAT || !defined __REDIRECT) \ | |
| && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) | |
| # ifdef __REDIRECT | |
| /* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[ | |
| GNU extension which conflicts with valid %a followed by letter | |
| s, S or [. */ | |
| extern int __REDIRECT (fscanf, (FILE *__restrict __stream, | |
| const char *__restrict __format, ...), | |
| __isoc99_fscanf) __wur; | |
| extern int __REDIRECT (scanf, (const char *__restrict __format, ...), | |
| __isoc99_scanf) __wur; | |
| extern int __REDIRECT_NTH (sscanf, (const char *__restrict __s, | |
| const char *__restrict __format, ...), | |
| __isoc99_sscanf); | |
| # else | |
| # 452 "/usr/include/stdio.h" 3 4 | |
| extern int __isoc99_fscanf (FILE *__restrict __stream, | |
| const char *__restrict __format, ...) __wur; | |
| extern int __isoc99_scanf (const char *__restrict __format, ...) __wur; | |
| extern int __isoc99_sscanf (const char *__restrict __s, | |
| const char *__restrict __format, ...) __THROW; | |
| # define fscanf __isoc99_fscanf | |
| # define scanf __isoc99_scanf | |
| # define sscanf __isoc99_sscanf | |
| # endif | |
| # 461 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 462 "/usr/include/stdio.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Read formatted input from S into argument list ARG. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int vfscanf (FILE *__restrict __s, const char *__restrict __format, | |
| _G_va_list __arg) | |
| __attribute__ ((__format__ (__scanf__, 2, 0))) __wur; | |
| /* Read formatted input from stdin into argument list ARG. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int vscanf (const char *__restrict __format, _G_va_list __arg) | |
| __attribute__ ((__format__ (__scanf__, 1, 0))) __wur; | |
| /* Read formatted input from S into argument list ARG. */ | |
| extern int vsscanf (const char *__restrict __s, | |
| const char *__restrict __format, _G_va_list __arg) | |
| __THROW __attribute__ ((__format__ (__scanf__, 2, 0))); | |
| # if !defined __USE_GNU \ | |
| && (!defined __LDBL_COMPAT || !defined __REDIRECT) \ | |
| && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) | |
| # ifdef __REDIRECT | |
| /* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[ | |
| GNU extension which conflicts with valid %a followed by letter | |
| s, S or [. */ | |
| extern int __REDIRECT (vfscanf, | |
| (FILE *__restrict __s, | |
| const char *__restrict __format, _G_va_list __arg), | |
| __isoc99_vfscanf) | |
| __attribute__ ((__format__ (__scanf__, 2, 0))) __wur; | |
| extern int __REDIRECT (vscanf, (const char *__restrict __format, | |
| _G_va_list __arg), __isoc99_vscanf) | |
| __attribute__ ((__format__ (__scanf__, 1, 0))) __wur; | |
| extern int __REDIRECT_NTH (vsscanf, | |
| (const char *__restrict __s, | |
| const char *__restrict __format, | |
| _G_va_list __arg), __isoc99_vsscanf) | |
| __attribute__ ((__format__ (__scanf__, 2, 0))); | |
| # else | |
| # 508 "/usr/include/stdio.h" 3 4 | |
| extern int __isoc99_vfscanf (FILE *__restrict __s, | |
| const char *__restrict __format, | |
| _G_va_list __arg) __wur; | |
| extern int __isoc99_vscanf (const char *__restrict __format, | |
| _G_va_list __arg) __wur; | |
| extern int __isoc99_vsscanf (const char *__restrict __s, | |
| const char *__restrict __format, | |
| _G_va_list __arg) __THROW; | |
| # define vfscanf __isoc99_vfscanf | |
| # define vscanf __isoc99_vscanf | |
| # define vsscanf __isoc99_vsscanf | |
| # endif | |
| # 520 "/usr/include/stdio.h" 3 4 | |
| # endif | |
| # 521 "/usr/include/stdio.h" 3 4 | |
| __END_NAMESPACE_C99 | |
| #endif /* Use ISO C9x. */ | |
| # 524 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Read a character from STREAM. | |
| These functions are possible cancellation points and therefore not | |
| marked with __THROW. */ | |
| extern int fgetc (FILE *__stream); | |
| extern int getc (FILE *__stream); | |
| /* Read a character from stdin. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int getchar (void); | |
| __END_NAMESPACE_STD | |
| /* The C standard explicitly says this is a macro, so we always do the | |
| optimization for it. */ | |
| #define getc(_fp) _IO_getc (_fp) | |
| #ifdef __USE_POSIX | |
| /* These are defined in POSIX.1:1996. | |
| These functions are possible cancellation points and therefore not | |
| marked with __THROW. */ | |
| extern int getc_unlocked (FILE *__stream); | |
| extern int getchar_unlocked (void); | |
| #endif /* Use POSIX. */ | |
| # 553 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_MISC | |
| /* Faster version when locking is not necessary. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern int fgetc_unlocked (FILE *__stream); | |
| #endif /* Use MISC. */ | |
| # 563 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Write a character to STREAM. | |
| These functions are possible cancellation points and therefore not | |
| marked with __THROW. | |
| These functions is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fputc (int __c, FILE *__stream); | |
| extern int putc (int __c, FILE *__stream); | |
| /* Write a character to stdout. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int putchar (int __c); | |
| __END_NAMESPACE_STD | |
| /* The C standard explicitly says this can be a macro, | |
| so we always do the optimization for it. */ | |
| #define putc(_ch, _fp) _IO_putc (_ch, _fp) | |
| #ifdef __USE_MISC | |
| /* Faster version when locking is not necessary. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern int fputc_unlocked (int __c, FILE *__stream); | |
| #endif /* Use MISC. */ | |
| # 596 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_POSIX | |
| /* These are defined in POSIX.1:1996. | |
| These functions are possible cancellation points and therefore not | |
| marked with __THROW. */ | |
| extern int putc_unlocked (int __c, FILE *__stream); | |
| extern int putchar_unlocked (int __c); | |
| #endif /* Use POSIX. */ | |
| # 605 "/usr/include/stdio.h" 3 4 | |
| #if defined __USE_MISC \ | |
| || (defined __USE_XOPEN && !defined __USE_XOPEN2K) | |
| /* Get a word (int) from STREAM. */ | |
| extern int getw (FILE *__stream); | |
| /* Write a word (int) to STREAM. */ | |
| extern int putw (int __w, FILE *__stream); | |
| #endif | |
| # 615 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Get a newline-terminated string of finite length from STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream) | |
| __wur; | |
| #if !defined __USE_ISOC11 \ | |
| || (defined __cplusplus && __cplusplus <= 201103L) | |
| /* Get a newline-terminated string from stdin, removing the newline. | |
| DO NOT USE THIS FUNCTION!! There is no limit on how much it will read. | |
| The function has been officially removed in ISO C11. This opportunity | |
| is used to also remove it from the GNU feature list. It is now only | |
| available when explicitly using an old ISO C, Unix, or POSIX standard. | |
| GCC defines _GNU_SOURCE when building C++ code and the function is still | |
| in C++11, so it is also available for C++. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern char *gets (char *__s) __wur __attribute_deprecated__; | |
| #endif | |
| # 640 "/usr/include/stdio.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* This function does the same as `fgets' but does not lock the stream. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern char *fgets_unlocked (char *__restrict __s, int __n, | |
| FILE *__restrict __stream) __wur; | |
| #endif | |
| # 652 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| /* Read up to (and including) a DELIMITER from STREAM into *LINEPTR | |
| (and null-terminate it). *LINEPTR is a pointer returned from malloc (or | |
| NULL), pointing to *N characters of space. It is realloc'd as | |
| necessary. Returns the number of characters read (not including the | |
| null terminator), or -1 on error or EOF. | |
| These functions are not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation they are cancellation points and | |
| therefore not marked with __THROW. */ | |
| extern _IO_ssize_t __getdelim (char **__restrict __lineptr, | |
| size_t *__restrict __n, int __delimiter, | |
| FILE *__restrict __stream) __wur; | |
| extern _IO_ssize_t getdelim (char **__restrict __lineptr, | |
| size_t *__restrict __n, int __delimiter, | |
| FILE *__restrict __stream) __wur; | |
| /* Like `getdelim', but reads up to a newline. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern _IO_ssize_t getline (char **__restrict __lineptr, | |
| size_t *__restrict __n, | |
| FILE *__restrict __stream) __wur; | |
| #endif | |
| # 682 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Write a string to STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fputs (const char *__restrict __s, FILE *__restrict __stream); | |
| /* Write a string, followed by a newline, to stdout. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int puts (const char *__s); | |
| /* Push a character back onto the input buffer of STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int ungetc (int __c, FILE *__stream); | |
| /* Read chunks of generic data from STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern size_t fread (void *__restrict __ptr, size_t __size, | |
| size_t __n, FILE *__restrict __stream) __wur; | |
| /* Write chunks of generic data to STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern size_t fwrite (const void *__restrict __ptr, size_t __size, | |
| size_t __n, FILE *__restrict __s); | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* This function does the same as `fputs' but does not lock the stream. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern int fputs_unlocked (const char *__restrict __s, | |
| FILE *__restrict __stream); | |
| #endif | |
| # 729 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_MISC | |
| /* Faster versions when locking is not necessary. | |
| These functions are not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation they are cancellation points and | |
| therefore not marked with __THROW. */ | |
| extern size_t fread_unlocked (void *__restrict __ptr, size_t __size, | |
| size_t __n, FILE *__restrict __stream) __wur; | |
| extern size_t fwrite_unlocked (const void *__restrict __ptr, size_t __size, | |
| size_t __n, FILE *__restrict __stream); | |
| #endif | |
| # 742 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Seek to a certain position on STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fseek (FILE *__stream, long int __off, int __whence); | |
| /* Return the current position of STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern long int ftell (FILE *__stream) __wur; | |
| /* Rewind to the beginning of STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern void rewind (FILE *__stream); | |
| __END_NAMESPACE_STD | |
| /* The Single Unix Specification, Version 2, specifies an alternative, | |
| more adequate interface for the two functions above which deal with | |
| file offset. `long int' is not the right type. These definitions | |
| are originally defined in the Large File Support API. */ | |
| #if defined __USE_LARGEFILE || defined __USE_XOPEN2K | |
| # ifndef __USE_FILE_OFFSET64 | |
| /* Seek to a certain position on STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fseeko (FILE *__stream, __off_t __off, int __whence); | |
| /* Return the current position of STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern __off_t ftello (FILE *__stream) __wur; | |
| # else | |
| # 780 "/usr/include/stdio.h" 3 4 | |
| # ifdef __REDIRECT | |
| extern int __REDIRECT (fseeko, | |
| (FILE *__stream, __off64_t __off, int __whence), | |
| fseeko64); | |
| extern __off64_t __REDIRECT (ftello, (FILE *__stream), ftello64); | |
| # else | |
| # 786 "/usr/include/stdio.h" 3 4 | |
| # define fseeko fseeko64 | |
| # define ftello ftello64 | |
| # endif | |
| # 789 "/usr/include/stdio.h" 3 4 | |
| # endif | |
| # 790 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 791 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| #ifndef __USE_FILE_OFFSET64 | |
| /* Get STREAM's position. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos); | |
| /* Set STREAM's position. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fsetpos (FILE *__stream, const fpos_t *__pos); | |
| #else | |
| # 805 "/usr/include/stdio.h" 3 4 | |
| # ifdef __REDIRECT | |
| extern int __REDIRECT (fgetpos, (FILE *__restrict __stream, | |
| fpos_t *__restrict __pos), fgetpos64); | |
| extern int __REDIRECT (fsetpos, | |
| (FILE *__stream, const fpos_t *__pos), fsetpos64); | |
| # else | |
| # 811 "/usr/include/stdio.h" 3 4 | |
| # define fgetpos fgetpos64 | |
| # define fsetpos fsetpos64 | |
| # endif | |
| # 814 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 815 "/usr/include/stdio.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_LARGEFILE64 | |
| extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); | |
| extern __off64_t ftello64 (FILE *__stream) __wur; | |
| extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); | |
| extern int fsetpos64 (FILE *__stream, const fpos64_t *__pos); | |
| #endif | |
| # 823 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Clear the error and EOF indicators for STREAM. */ | |
| extern void clearerr (FILE *__stream) __THROW; | |
| /* Return the EOF indicator for STREAM. */ | |
| extern int feof (FILE *__stream) __THROW __wur; | |
| /* Return the error indicator for STREAM. */ | |
| extern int ferror (FILE *__stream) __THROW __wur; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_MISC | |
| /* Faster versions when locking is not required. */ | |
| extern void clearerr_unlocked (FILE *__stream) __THROW; | |
| extern int feof_unlocked (FILE *__stream) __THROW __wur; | |
| extern int ferror_unlocked (FILE *__stream) __THROW __wur; | |
| #endif | |
| # 839 "/usr/include/stdio.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Print a message describing the meaning of the value of errno. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern void perror (const char *__s); | |
| __END_NAMESPACE_STD | |
| /* Provide the declarations for `sys_errlist' and `sys_nerr' if they | |
| are available on this system. Even if available, these variables | |
| should not be used directly. The `strerror' function provides | |
| all the necessary functionality. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <bits/sys_errlist.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 853 "/usr/include/stdio.h" 3 4 | |
| # 854 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_POSIX | |
| /* Return the system file descriptor for STREAM. */ | |
| extern int fileno (FILE *__stream) __THROW __wur; | |
| #endif /* Use POSIX. */ | |
| # 860 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_MISC | |
| /* Faster version when locking is not required. */ | |
| extern int fileno_unlocked (FILE *__stream) __THROW __wur; | |
| #endif | |
| # 865 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_POSIX2 | |
| /* Create a new stream connected to a pipe running the given command. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern FILE *popen (const char *__command, const char *__modes) __wur; | |
| /* Close a stream opened by popen and return the status of its child. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int pclose (FILE *__stream); | |
| #endif | |
| # 880 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_POSIX | |
| /* Return the name of the controlling terminal. */ | |
| extern char *ctermid (char *__s) __THROW; | |
| #endif /* Use POSIX. */ | |
| # 886 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_XOPEN | |
| /* Return the name of the current user. */ | |
| extern char *cuserid (char *__s); | |
| #endif /* Use X/Open, but not issue 6. */ | |
| # 892 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_GNU | |
| struct obstack; /* See <obstack.h>. */ | |
| /* Write formatted output to an obstack. */ | |
| extern int obstack_printf (struct obstack *__restrict __obstack, | |
| const char *__restrict __format, ...) | |
| __THROWNL __attribute__ ((__format__ (__printf__, 2, 3))); | |
| extern int obstack_vprintf (struct obstack *__restrict __obstack, | |
| const char *__restrict __format, | |
| _G_va_list __args) | |
| __THROWNL __attribute__ ((__format__ (__printf__, 2, 0))); | |
| #endif /* Use GNU. */ | |
| # 906 "/usr/include/stdio.h" 3 4 | |
| #ifdef __USE_POSIX | |
| /* These are defined in POSIX.1:1996. */ | |
| /* Acquire ownership of STREAM. */ | |
| extern void flockfile (FILE *__stream) __THROW; | |
| /* Try to acquire ownership of STREAM but do not block if it is not | |
| possible. */ | |
| extern int ftrylockfile (FILE *__stream) __THROW __wur; | |
| /* Relinquish the ownership granted for STREAM. */ | |
| extern void funlockfile (FILE *__stream) __THROW; | |
| #endif /* POSIX */ | |
| # 921 "/usr/include/stdio.h" 3 4 | |
| #if defined __USE_XOPEN && !defined __USE_XOPEN2K && !defined __USE_GNU | |
| /* The X/Open standard requires some functions and variables to be | |
| declared here which do not belong into this header. But we have to | |
| follow. In GNU mode we don't do this nonsense. */ | |
| # define __need_getopt | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <getopt.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 927 "/usr/include/stdio.h" 3 4 | |
| # 928 "/usr/include/stdio.h" 3 4 | |
| #endif /* X/Open, but not issue 6 and not for GNU. */ | |
| # 929 "/usr/include/stdio.h" 3 4 | |
| /* If we are compiling with optimizing read this file. It contains | |
| several optimizing inline functions and macros. */ | |
| #ifdef __USE_EXTERN_INLINES | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/stdio.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 933 "/usr/include/stdio.h" 3 4 | |
| # 934 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 935 "/usr/include/stdio.h" 3 4 | |
| #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/stdio2.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 936 "/usr/include/stdio.h" 3 4 | |
| # 937 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 938 "/usr/include/stdio.h" 3 4 | |
| #ifdef __LDBL_COMPAT | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/stdio-ldbl.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 939 "/usr/include/stdio.h" 3 4 | |
| # 940 "/usr/include/stdio.h" 3 4 | |
| #endif | |
| # 941 "/usr/include/stdio.h" 3 4 | |
| __END_DECLS | |
| #endif /* <stdio.h> included. */ | |
| # 945 "/usr/include/stdio.h" 3 4 | |
| #endif /* !_STDIO_H */ | |
| # 947 "/usr/include/stdio.h" 3 4 | |
| # 18 "/usr/local/bin/../include/c++/v1/stdio.h" 2 3 | |
| #elif !defined(_LIBCPP_STDIO_H) | |
| # 20 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #define _LIBCPP_STDIO_H | |
| /* | |
| stdio.h synopsis | |
| Macros: | |
| BUFSIZ | |
| EOF | |
| FILENAME_MAX | |
| FOPEN_MAX | |
| L_tmpnam | |
| NULL | |
| SEEK_CUR | |
| SEEK_END | |
| SEEK_SET | |
| TMP_MAX | |
| _IOFBF | |
| _IOLBF | |
| _IONBF | |
| stderr | |
| stdin | |
| stdout | |
| Types: | |
| FILE | |
| fpos_t | |
| size_t | |
| int remove(const char* filename); | |
| int rename(const char* old, const char* new); | |
| FILE* tmpfile(void); | |
| char* tmpnam(char* s); | |
| int fclose(FILE* stream); | |
| int fflush(FILE* stream); | |
| FILE* fopen(const char* restrict filename, const char* restrict mode); | |
| FILE* freopen(const char* restrict filename, const char * restrict mode, | |
| FILE * restrict stream); | |
| void setbuf(FILE* restrict stream, char* restrict buf); | |
| int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size); | |
| int fprintf(FILE* restrict stream, const char* restrict format, ...); | |
| int fscanf(FILE* restrict stream, const char * restrict format, ...); | |
| int printf(const char* restrict format, ...); | |
| int scanf(const char* restrict format, ...); | |
| int snprintf(char* restrict s, size_t n, const char* restrict format, ...); // C99 | |
| int sprintf(char* restrict s, const char* restrict format, ...); | |
| int sscanf(const char* restrict s, const char* restrict format, ...); | |
| int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg); | |
| int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg); // C99 | |
| int vprintf(const char* restrict format, va_list arg); | |
| int vscanf(const char* restrict format, va_list arg); // C99 | |
| int vsnprintf(char* restrict s, size_t n, const char* restrict format, // C99 | |
| va_list arg); | |
| int vsprintf(char* restrict s, const char* restrict format, va_list arg); | |
| int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99 | |
| int fgetc(FILE* stream); | |
| char* fgets(char* restrict s, int n, FILE* restrict stream); | |
| int fputc(int c, FILE* stream); | |
| int fputs(const char* restrict s, FILE* restrict stream); | |
| int getc(FILE* stream); | |
| int getchar(void); | |
| char* gets(char* s); // removed in C++14 | |
| int putc(int c, FILE* stream); | |
| int putchar(int c); | |
| int puts(const char* s); | |
| int ungetc(int c, FILE* stream); | |
| size_t fread(void* restrict ptr, size_t size, size_t nmemb, | |
| FILE* restrict stream); | |
| size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb, | |
| FILE* restrict stream); | |
| int fgetpos(FILE* restrict stream, fpos_t* restrict pos); | |
| int fseek(FILE* stream, long offset, int whence); | |
| int fsetpos(FILE*stream, const fpos_t* pos); | |
| long ftell(FILE* stream); | |
| void rewind(FILE* stream); | |
| void clearerr(FILE* stream); | |
| int feof(FILE* stream); | |
| int ferror(FILE* stream); | |
| void perror(const char* s); | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 102 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| # 103 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 106 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #endif | |
| # 107 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stdio.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 108 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| # 109 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #ifdef __cplusplus | |
| // snprintf | |
| #if defined(_LIBCPP_MSVCRT_LIKE) | |
| extern "C" { | |
| int vasprintf(char **sptr, const char *__restrict fmt, va_list ap); | |
| } | |
| #endif | |
| # 118 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #undef getc | |
| #undef putc | |
| #undef clearerr | |
| #undef feof | |
| #undef ferror | |
| #endif | |
| # 126 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| #endif // _LIBCPP_STDIO_H | |
| # 128 "/usr/local/bin/../include/c++/v1/stdio.h" 3 | |
| # 37 "/usr/include/wchar.h" 2 3 4 | |
| /* Get va_list definition. */ | |
| # define __need___va_list | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <stdarg.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 39 "/usr/include/wchar.h" 3 4 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/stdarg.h" 1 3 4 | |
| /*===---- stdarg.h - Variable argument handling ----------------------------=== | |
| * | |
| * Copyright (c) 2008 Eli Friedman | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| *===-----------------------------------------------------------------------=== | |
| */ | |
| #ifndef __STDARG_H | |
| #define __STDARG_H | |
| #ifndef _VA_LIST | |
| typedef __builtin_va_list va_list; | |
| #define _VA_LIST | |
| #endif | |
| # 33 "/usr/local/lib/clang/5.0.0/include/stdarg.h" 3 4 | |
| #define va_start(ap, param) __builtin_va_start(ap, param) | |
| #define va_end(ap) __builtin_va_end(ap) | |
| #define va_arg(ap, type) __builtin_va_arg(ap, type) | |
| /* GCC always defines __va_copy, but does not define va_copy unless in c99 mode | |
| * or -ansi is not specified, since it was not part of C90. | |
| */ | |
| #define __va_copy(d,s) __builtin_va_copy(d,s) | |
| #if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__) | |
| #define va_copy(dest, src) __builtin_va_copy(dest, src) | |
| #endif | |
| # 45 "/usr/local/lib/clang/5.0.0/include/stdarg.h" 3 4 | |
| #ifndef __GNUC_VA_LIST | |
| #define __GNUC_VA_LIST 1 | |
| typedef __builtin_va_list __gnuc_va_list; | |
| #endif | |
| # 50 "/usr/local/lib/clang/5.0.0/include/stdarg.h" 3 4 | |
| #endif /* __STDARG_H */ | |
| # 52 "/usr/local/lib/clang/5.0.0/include/stdarg.h" 3 4 | |
| # 40 "/usr/include/wchar.h" 2 3 4 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/wchar.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 41 "/usr/include/wchar.h" 3 4 | |
| # 42 "/usr/include/wchar.h" 3 4 | |
| /* Get size_t, wchar_t, wint_t and NULL from <stddef.h>. */ | |
| # define __need_size_t | |
| # define __need_wchar_t | |
| # define __need_NULL | |
| #endif | |
| # 48 "/usr/include/wchar.h" 3 4 | |
| #if defined _WCHAR_H || defined __need_wint_t || !defined __WINT_TYPE__ | |
| # undef __need_wint_t | |
| # define __need_wint_t | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 51 "/usr/include/wchar.h" 3 4 | |
| # 1 "/usr/local/bin/../include/c++/v1/stddef.h" 1 3 4 | |
| // -*- C++ -*- | |
| //===--------------------------- stddef.h ---------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #if defined(__need_ptrdiff_t) || defined(__need_size_t) || \ | |
| defined(__need_wchar_t) || defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 16 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 17 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 1 "/usr/local/lib/clang/5.0.0/include/stddef.h" 1 3 | |
| /*===---- stddef.h - Basic type definitions --------------------------------=== | |
| * | |
| * Copyright (c) 2008 Eli Friedman | |
| * | |
| * Permission is hereby granted, free of charge, to any person obtaining a copy | |
| * of this software and associated documentation files (the "Software"), to deal | |
| * in the Software without restriction, including without limitation the rights | |
| * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| * copies of the Software, and to permit persons to whom the Software is | |
| * furnished to do so, subject to the following conditions: | |
| * | |
| * The above copyright notice and this permission notice shall be included in | |
| * all copies or substantial portions of the Software. | |
| * | |
| * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | |
| * THE SOFTWARE. | |
| * | |
| *===-----------------------------------------------------------------------=== | |
| */ | |
| #if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \ | |
| defined(__need_size_t) || defined(__need_wchar_t) || \ | |
| defined(__need_NULL) || defined(__need_wint_t) | |
| #if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \ | |
| !defined(__need_wchar_t) && !defined(__need_NULL) && \ | |
| !defined(__need_wint_t) | |
| /* Always define miscellaneous pieces when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define __STDDEF_H | |
| #endif | |
| # 37 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define __need_ptrdiff_t | |
| #define __need_size_t | |
| #define __need_wchar_t | |
| #define __need_NULL | |
| #define __need_STDDEF_H_misc | |
| /* __need_wint_t is intentionally not defined here. */ | |
| #endif | |
| # 44 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_ptrdiff_t) | |
| #if !defined(_PTRDIFF_T) || __has_feature(modules) | |
| /* Always define ptrdiff_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _PTRDIFF_T | |
| #endif | |
| # 51 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
| #endif | |
| # 53 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_ptrdiff_t | |
| #endif /* defined(__need_ptrdiff_t) */ | |
| # 55 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_size_t) | |
| #if !defined(_SIZE_T) || __has_feature(modules) | |
| /* Always define size_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _SIZE_T | |
| #endif | |
| # 62 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ size_t; | |
| #endif | |
| # 64 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_size_t | |
| #endif /*defined(__need_size_t) */ | |
| # 66 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| /* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is | |
| * enabled. */ | |
| #if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \ | |
| !defined(_RSIZE_T)) || __has_feature(modules) | |
| /* Always define rsize_t when modules are available. */ | |
| #if !__has_feature(modules) | |
| #define _RSIZE_T | |
| #endif | |
| # 76 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __SIZE_TYPE__ rsize_t; | |
| #endif | |
| # 78 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 79 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_wchar_t) | |
| #ifndef __cplusplus | |
| /* Always define wchar_t when modules are available. */ | |
| #if !defined(_WCHAR_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WCHAR_T | |
| #if defined(_MSC_EXTENSIONS) | |
| #define _WCHAR_T_DEFINED | |
| #endif | |
| # 89 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 90 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WCHAR_TYPE__ wchar_t; | |
| #endif | |
| # 92 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 93 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wchar_t | |
| #endif /* defined(__need_wchar_t) */ | |
| # 95 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_NULL) | |
| #undef NULL | |
| #ifdef __cplusplus | |
| # if !defined(__MINGW32__) && !defined(_MSC_VER) | |
| # define NULL __null | |
| # else | |
| # 102 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL 0 | |
| # endif | |
| # 104 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #else | |
| # 105 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # define NULL ((void*)0) | |
| #endif | |
| # 107 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #ifdef __cplusplus | |
| #if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED) | |
| namespace std { typedef decltype(nullptr) nullptr_t; } | |
| using ::std::nullptr_t; | |
| #endif | |
| # 112 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 113 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_NULL | |
| #endif /* defined(__need_NULL) */ | |
| # 115 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #if defined(__need_STDDEF_H_misc) | |
| #if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include "__stddef_max_align_t.h" | |
| #endif /* expanded by -frewrite-includes */ | |
| # 118 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 119 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 120 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #define offsetof(t, d) __builtin_offsetof(t, d) | |
| #undef __need_STDDEF_H_misc | |
| #endif /* defined(__need_STDDEF_H_misc) */ | |
| # 123 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| /* Some C libraries expect to see a wint_t here. Others (notably MinGW) will use | |
| __WINT_TYPE__ directly; accommodate both by requiring __need_wint_t */ | |
| #if defined(__need_wint_t) | |
| /* Always define wint_t when modules are available. */ | |
| #if !defined(_WINT_T) || __has_feature(modules) | |
| #if !__has_feature(modules) | |
| #define _WINT_T | |
| #endif | |
| # 132 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| typedef __WINT_TYPE__ wint_t; | |
| #endif | |
| # 134 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #undef __need_wint_t | |
| #endif /* __need_wint_t */ | |
| # 136 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| #endif | |
| # 138 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 | |
| # 19 "/usr/local/bin/../include/c++/v1/stddef.h" 2 3 | |
| #elif !defined(_LIBCPP_STDDEF_H) | |
| # 21 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #define _LIBCPP_STDDEF_H | |
| /* | |
| stddef.h synopsis | |
| Macros: | |
| offsetof(type,member-designator) | |
| NULL | |
| Types: | |
| ptrdiff_t | |
| size_t | |
| max_align_t | |
| nullptr_t | |
| */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 40 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 41 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 44 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 45 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include_next <stddef.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 46 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 47 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #ifdef __cplusplus | |
| extern "C++" { | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__nullptr> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 51 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 52 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| using std::nullptr_t; | |
| } | |
| // Re-use the compiler's <stddef.h> max_align_t where possible. | |
| #if !defined(__CLANG_MAX_ALIGN_T_DEFINED) && !defined(_GCC_MAX_ALIGN_T) && \ | |
| !defined(__DEFINED_max_align_t) | |
| typedef long double max_align_t; | |
| #endif | |
| # 60 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif | |
| # 62 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| #endif // _LIBCPP_STDDEF_H | |
| # 64 "/usr/local/bin/../include/c++/v1/stddef.h" 3 | |
| # 52 "/usr/include/wchar.h" 2 3 4 | |
| /* We try to get wint_t from <stddef.h>, but not all GCC versions define it | |
| there. So define it ourselves if it remains undefined. */ | |
| # ifndef _WINT_T | |
| /* Integral type unchanged by default argument promotions that can | |
| hold any value corresponding to members of the extended character | |
| set, as well as at least one value that does not correspond to any | |
| member of the extended character set. */ | |
| # define _WINT_T | |
| typedef unsigned int wint_t; | |
| # else | |
| # 63 "/usr/include/wchar.h" 3 4 | |
| /* Work around problems with the <stddef.h> file which doesn't put | |
| wint_t in the std namespace. */ | |
| # if defined __cplusplus && defined _GLIBCPP_USE_NAMESPACES \ | |
| && defined __WINT_TYPE__ | |
| __BEGIN_NAMESPACE_STD | |
| typedef __WINT_TYPE__ wint_t; | |
| __END_NAMESPACE_STD | |
| # endif | |
| # 71 "/usr/include/wchar.h" 3 4 | |
| # endif | |
| # 72 "/usr/include/wchar.h" 3 4 | |
| /* Tell the caller that we provide correct C++ prototypes. */ | |
| # if defined __cplusplus && __GNUC_PREREQ (4, 4) | |
| # define __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
| # endif | |
| # 77 "/usr/include/wchar.h" 3 4 | |
| #endif | |
| # 78 "/usr/include/wchar.h" 3 4 | |
| #if (defined _WCHAR_H || defined __need_mbstate_t) && !defined ____mbstate_t_defined | |
| # define ____mbstate_t_defined 1 | |
| /* Conversion state information. */ | |
| typedef struct | |
| { | |
| int __count; | |
| union | |
| { | |
| # ifdef __WINT_TYPE__ | |
| __WINT_TYPE__ __wch; | |
| # else | |
| # 90 "/usr/include/wchar.h" 3 4 | |
| wint_t __wch; | |
| # endif | |
| # 92 "/usr/include/wchar.h" 3 4 | |
| char __wchb[4]; | |
| } __value; /* Value so far. */ | |
| } __mbstate_t; | |
| #endif | |
| # 96 "/usr/include/wchar.h" 3 4 | |
| #undef __need_mbstate_t | |
| /* The rest of the file is only used if used if __need_mbstate_t is not | |
| defined. */ | |
| #ifdef _WCHAR_H | |
| # ifndef __mbstate_t_defined | |
| __BEGIN_NAMESPACE_C99 | |
| /* Public type. */ | |
| typedef __mbstate_t mbstate_t; | |
| __END_NAMESPACE_C99 | |
| # define __mbstate_t_defined 1 | |
| # endif | |
| # 110 "/usr/include/wchar.h" 3 4 | |
| #ifdef __USE_GNU | |
| __USING_NAMESPACE_C99(mbstate_t) | |
| #endif | |
| # 114 "/usr/include/wchar.h" 3 4 | |
| #ifndef WCHAR_MIN | |
| /* These constants might also be defined in <inttypes.h>. */ | |
| # define WCHAR_MIN __WCHAR_MIN | |
| # define WCHAR_MAX __WCHAR_MAX | |
| #endif | |
| # 120 "/usr/include/wchar.h" 3 4 | |
| #ifndef WEOF | |
| # define WEOF (0xffffffffu) | |
| #endif | |
| # 124 "/usr/include/wchar.h" 3 4 | |
| /* For XPG4 compliance we have to define the stuff from <wctype.h> here | |
| as well. */ | |
| #if defined __USE_XOPEN && !defined __USE_UNIX98 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <wctype.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 128 "/usr/include/wchar.h" 3 4 | |
| # 129 "/usr/include/wchar.h" 3 4 | |
| #endif | |
| # 130 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_DECLS | |
| __BEGIN_NAMESPACE_STD | |
| /* This incomplete type is defined in <time.h> but needed here because | |
| of `wcsftime'. */ | |
| struct tm; | |
| __END_NAMESPACE_STD | |
| /* XXX We have to clean this up at some point. Since tm is in the std | |
| namespace but wcsftime is in __c99 the type wouldn't be found | |
| without inserting it in the global namespace. */ | |
| __USING_NAMESPACE_STD(tm) | |
| __BEGIN_NAMESPACE_STD | |
| /* Copy SRC to DEST. */ | |
| extern wchar_t *wcscpy (wchar_t *__restrict __dest, | |
| const wchar_t *__restrict __src) | |
| __THROW __nonnull ((1, 2)); | |
| /* Copy no more than N wide-characters of SRC to DEST. */ | |
| extern wchar_t *wcsncpy (wchar_t *__restrict __dest, | |
| const wchar_t *__restrict __src, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| /* Append SRC onto DEST. */ | |
| extern wchar_t *wcscat (wchar_t *__restrict __dest, | |
| const wchar_t *__restrict __src) | |
| __THROW __nonnull ((1, 2)); | |
| /* Append no more than N wide-characters of SRC onto DEST. */ | |
| extern wchar_t *wcsncat (wchar_t *__restrict __dest, | |
| const wchar_t *__restrict __src, size_t __n) | |
| __THROW __nonnull ((1, 2)); | |
| /* Compare S1 and S2. */ | |
| extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| /* Compare N wide-characters of S1 and S2. */ | |
| extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) | |
| __THROW __attribute_pure__ __nonnull ((1, 2)); | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_XOPEN2K8 | |
| /* Compare S1 and S2, ignoring case. */ | |
| extern int wcscasecmp (const wchar_t *__s1, const wchar_t *__s2) __THROW; | |
| /* Compare no more than N chars of S1 and S2, ignoring case. */ | |
| extern int wcsncasecmp (const wchar_t *__s1, const wchar_t *__s2, | |
| size_t __n) __THROW; | |
| /* Similar to the two functions above but take the information from | |
| the provided locale and not the global locale. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <xlocale.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 183 "/usr/include/wchar.h" 3 4 | |
| # 184 "/usr/include/wchar.h" 3 4 | |
| extern int wcscasecmp_l (const wchar_t *__s1, const wchar_t *__s2, | |
| __locale_t __loc) __THROW; | |
| extern int wcsncasecmp_l (const wchar_t *__s1, const wchar_t *__s2, | |
| size_t __n, __locale_t __loc) __THROW; | |
| #endif | |
| # 191 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Compare S1 and S2, both interpreted as appropriate to the | |
| LC_COLLATE category of the current locale. */ | |
| extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) __THROW; | |
| /* Transform S2 into array pointed to by S1 such that if wcscmp is | |
| applied to two transformed strings the result is the as applying | |
| `wcscoll' to the original strings. */ | |
| extern size_t wcsxfrm (wchar_t *__restrict __s1, | |
| const wchar_t *__restrict __s2, size_t __n) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_XOPEN2K8 | |
| /* Similar to the two functions above but take the information from | |
| the provided locale and not the global locale. */ | |
| /* Compare S1 and S2, both interpreted as appropriate to the | |
| LC_COLLATE category of the given locale. */ | |
| extern int wcscoll_l (const wchar_t *__s1, const wchar_t *__s2, | |
| __locale_t __loc) __THROW; | |
| /* Transform S2 into array pointed to by S1 such that if wcscmp is | |
| applied to two transformed strings the result is the as applying | |
| `wcscoll' to the original strings. */ | |
| extern size_t wcsxfrm_l (wchar_t *__s1, const wchar_t *__s2, | |
| size_t __n, __locale_t __loc) __THROW; | |
| /* Duplicate S, returning an identical malloc'd string. */ | |
| extern wchar_t *wcsdup (const wchar_t *__s) __THROW __attribute_malloc__; | |
| #endif | |
| # 221 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Find the first occurrence of WC in WCS. */ | |
| #ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
| extern "C++" wchar_t *wcschr (wchar_t *__wcs, wchar_t __wc) | |
| __THROW __asm ("wcschr") __attribute_pure__; | |
| extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) | |
| __THROW __asm ("wcschr") __attribute_pure__; | |
| #else | |
| # 230 "/usr/include/wchar.h" 3 4 | |
| extern wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc) | |
| __THROW __attribute_pure__; | |
| #endif | |
| # 233 "/usr/include/wchar.h" 3 4 | |
| /* Find the last occurrence of WC in WCS. */ | |
| #ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
| extern "C++" wchar_t *wcsrchr (wchar_t *__wcs, wchar_t __wc) | |
| __THROW __asm ("wcsrchr") __attribute_pure__; | |
| extern "C++" const wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) | |
| __THROW __asm ("wcsrchr") __attribute_pure__; | |
| #else | |
| # 240 "/usr/include/wchar.h" 3 4 | |
| extern wchar_t *wcsrchr (const wchar_t *__wcs, wchar_t __wc) | |
| __THROW __attribute_pure__; | |
| #endif | |
| # 243 "/usr/include/wchar.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* This function is similar to `wcschr'. But it returns a pointer to | |
| the closing NUL wide character in case C is not found in S. */ | |
| extern wchar_t *wcschrnul (const wchar_t *__s, wchar_t __wc) | |
| __THROW __attribute_pure__; | |
| #endif | |
| # 251 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Return the length of the initial segmet of WCS which | |
| consists entirely of wide characters not in REJECT. */ | |
| extern size_t wcscspn (const wchar_t *__wcs, const wchar_t *__reject) | |
| __THROW __attribute_pure__; | |
| /* Return the length of the initial segmet of WCS which | |
| consists entirely of wide characters in ACCEPT. */ | |
| extern size_t wcsspn (const wchar_t *__wcs, const wchar_t *__accept) | |
| __THROW __attribute_pure__; | |
| /* Find the first occurrence in WCS of any character in ACCEPT. */ | |
| #ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
| extern "C++" wchar_t *wcspbrk (wchar_t *__wcs, const wchar_t *__accept) | |
| __THROW __asm ("wcspbrk") __attribute_pure__; | |
| extern "C++" const wchar_t *wcspbrk (const wchar_t *__wcs, | |
| const wchar_t *__accept) | |
| __THROW __asm ("wcspbrk") __attribute_pure__; | |
| #else | |
| # 269 "/usr/include/wchar.h" 3 4 | |
| extern wchar_t *wcspbrk (const wchar_t *__wcs, const wchar_t *__accept) | |
| __THROW __attribute_pure__; | |
| #endif | |
| # 272 "/usr/include/wchar.h" 3 4 | |
| /* Find the first occurrence of NEEDLE in HAYSTACK. */ | |
| #ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
| extern "C++" wchar_t *wcsstr (wchar_t *__haystack, const wchar_t *__needle) | |
| __THROW __asm ("wcsstr") __attribute_pure__; | |
| extern "C++" const wchar_t *wcsstr (const wchar_t *__haystack, | |
| const wchar_t *__needle) | |
| __THROW __asm ("wcsstr") __attribute_pure__; | |
| #else | |
| # 280 "/usr/include/wchar.h" 3 4 | |
| extern wchar_t *wcsstr (const wchar_t *__haystack, const wchar_t *__needle) | |
| __THROW __attribute_pure__; | |
| #endif | |
| # 283 "/usr/include/wchar.h" 3 4 | |
| /* Divide WCS into tokens separated by characters in DELIM. */ | |
| extern wchar_t *wcstok (wchar_t *__restrict __s, | |
| const wchar_t *__restrict __delim, | |
| wchar_t **__restrict __ptr) __THROW; | |
| /* Return the number of wide characters in S. */ | |
| extern size_t wcslen (const wchar_t *__s) __THROW __attribute_pure__; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_XOPEN | |
| /* Another name for `wcsstr' from XPG4. */ | |
| # ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
| extern "C++" wchar_t *wcswcs (wchar_t *__haystack, const wchar_t *__needle) | |
| __THROW __asm ("wcswcs") __attribute_pure__; | |
| extern "C++" const wchar_t *wcswcs (const wchar_t *__haystack, | |
| const wchar_t *__needle) | |
| __THROW __asm ("wcswcs") __attribute_pure__; | |
| # else | |
| # 302 "/usr/include/wchar.h" 3 4 | |
| extern wchar_t *wcswcs (const wchar_t *__haystack, const wchar_t *__needle) | |
| __THROW __attribute_pure__; | |
| # endif | |
| # 305 "/usr/include/wchar.h" 3 4 | |
| #endif | |
| # 306 "/usr/include/wchar.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| /* Return the number of wide characters in S, but at most MAXLEN. */ | |
| extern size_t wcsnlen (const wchar_t *__s, size_t __maxlen) | |
| __THROW __attribute_pure__; | |
| #endif | |
| # 312 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Search N wide characters of S for C. */ | |
| #ifdef __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
| extern "C++" wchar_t *wmemchr (wchar_t *__s, wchar_t __c, size_t __n) | |
| __THROW __asm ("wmemchr") __attribute_pure__; | |
| extern "C++" const wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, | |
| size_t __n) | |
| __THROW __asm ("wmemchr") __attribute_pure__; | |
| #else | |
| # 323 "/usr/include/wchar.h" 3 4 | |
| extern wchar_t *wmemchr (const wchar_t *__s, wchar_t __c, size_t __n) | |
| __THROW __attribute_pure__; | |
| #endif | |
| # 326 "/usr/include/wchar.h" 3 4 | |
| /* Compare N wide characters of S1 and S2. */ | |
| extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n) | |
| __THROW __attribute_pure__; | |
| /* Copy N wide characters of SRC to DEST. */ | |
| extern wchar_t *wmemcpy (wchar_t *__restrict __s1, | |
| const wchar_t *__restrict __s2, size_t __n) __THROW; | |
| /* Copy N wide characters of SRC to DEST, guaranteeing | |
| correct behavior for overlapping strings. */ | |
| extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n) | |
| __THROW; | |
| /* Set N wide characters of S to C. */ | |
| extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* Copy N wide characters of SRC to DEST and return pointer to following | |
| wide character. */ | |
| extern wchar_t *wmempcpy (wchar_t *__restrict __s1, | |
| const wchar_t *__restrict __s2, size_t __n) | |
| __THROW; | |
| #endif | |
| # 351 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Determine whether C constitutes a valid (one-byte) multibyte | |
| character. */ | |
| extern wint_t btowc (int __c) __THROW; | |
| /* Determine whether C corresponds to a member of the extended | |
| character set whose multibyte representation is a single byte. */ | |
| extern int wctob (wint_t __c) __THROW; | |
| /* Determine whether PS points to an object representing the initial | |
| state. */ | |
| extern int mbsinit (const mbstate_t *__ps) __THROW __attribute_pure__; | |
| /* Write wide character representation of multibyte character pointed | |
| to by S to PWC. */ | |
| extern size_t mbrtowc (wchar_t *__restrict __pwc, | |
| const char *__restrict __s, size_t __n, | |
| mbstate_t *__restrict __p) __THROW; | |
| /* Write multibyte representation of wide character WC to S. */ | |
| extern size_t wcrtomb (char *__restrict __s, wchar_t __wc, | |
| mbstate_t *__restrict __ps) __THROW; | |
| /* Return number of bytes in multibyte character pointed to by S. */ | |
| extern size_t __mbrlen (const char *__restrict __s, size_t __n, | |
| mbstate_t *__restrict __ps) __THROW; | |
| extern size_t mbrlen (const char *__restrict __s, size_t __n, | |
| mbstate_t *__restrict __ps) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_EXTERN_INLINES | |
| /* Define inline function as optimization. */ | |
| /* We can use the BTOWC and WCTOB optimizations since we know that all | |
| locales must use ASCII encoding for the values in the ASCII range | |
| and because the wchar_t encoding is always ISO 10646. */ | |
| extern wint_t __btowc_alias (int __c) __asm ("btowc"); | |
| __extern_inline wint_t | |
| __NTH (btowc (int __c)) | |
| { return (__builtin_constant_p (__c) && __c >= '\0' && __c <= '\x7f' | |
| ? (wint_t) __c : __btowc_alias (__c)); } | |
| extern int __wctob_alias (wint_t __c) __asm ("wctob"); | |
| __extern_inline int | |
| __NTH (wctob (wint_t __wc)) | |
| { return (__builtin_constant_p (__wc) && __wc >= L'\0' && __wc <= L'\x7f' | |
| ? (int) __wc : __wctob_alias (__wc)); } | |
| __extern_inline size_t | |
| __NTH (mbrlen (const char *__restrict __s, size_t __n, | |
| mbstate_t *__restrict __ps)) | |
| { return (__ps != NULL | |
| ? mbrtowc (NULL, __s, __n, __ps) : __mbrlen (__s, __n, NULL)); } | |
| #endif | |
| # 407 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Write wide character representation of multibyte character string | |
| SRC to DST. */ | |
| extern size_t mbsrtowcs (wchar_t *__restrict __dst, | |
| const char **__restrict __src, size_t __len, | |
| mbstate_t *__restrict __ps) __THROW; | |
| /* Write multibyte character representation of wide character string | |
| SRC to DST. */ | |
| extern size_t wcsrtombs (char *__restrict __dst, | |
| const wchar_t **__restrict __src, size_t __len, | |
| mbstate_t *__restrict __ps) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_XOPEN2K8 | |
| /* Write wide character representation of at most NMC bytes of the | |
| multibyte character string SRC to DST. */ | |
| extern size_t mbsnrtowcs (wchar_t *__restrict __dst, | |
| const char **__restrict __src, size_t __nmc, | |
| size_t __len, mbstate_t *__restrict __ps) __THROW; | |
| /* Write multibyte character representation of at most NWC characters | |
| from the wide character string SRC to DST. */ | |
| extern size_t wcsnrtombs (char *__restrict __dst, | |
| const wchar_t **__restrict __src, | |
| size_t __nwc, size_t __len, | |
| mbstate_t *__restrict __ps) __THROW; | |
| #endif /* use POSIX 2008 */ | |
| # 437 "/usr/include/wchar.h" 3 4 | |
| /* The following functions are extensions found in X/Open CAE. */ | |
| #ifdef __USE_XOPEN | |
| /* Determine number of column positions required for C. */ | |
| extern int wcwidth (wchar_t __c) __THROW; | |
| /* Determine number of column positions required for first N wide | |
| characters (or fewer if S ends before this) in S. */ | |
| extern int wcswidth (const wchar_t *__s, size_t __n) __THROW; | |
| #endif /* Use X/Open. */ | |
| # 448 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Convert initial portion of the wide string NPTR to `double' | |
| representation. */ | |
| extern double wcstod (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr) __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Likewise for `float' and `long double' sizes of floating-point numbers. */ | |
| extern float wcstof (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr) __THROW; | |
| extern long double wcstold (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr) __THROW; | |
| __END_NAMESPACE_C99 | |
| #endif /* C99 */ | |
| # 466 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Convert initial portion of wide string NPTR to `long int' | |
| representation. */ | |
| extern long int wcstol (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, int __base) __THROW; | |
| /* Convert initial portion of wide string NPTR to `unsigned long int' | |
| representation. */ | |
| extern unsigned long int wcstoul (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, int __base) | |
| __THROW; | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Convert initial portion of wide string NPTR to `long long int' | |
| representation. */ | |
| __extension__ | |
| extern long long int wcstoll (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, int __base) | |
| __THROW; | |
| /* Convert initial portion of wide string NPTR to `unsigned long long int' | |
| representation. */ | |
| __extension__ | |
| extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, | |
| int __base) __THROW; | |
| __END_NAMESPACE_C99 | |
| #endif /* ISO C99. */ | |
| # 498 "/usr/include/wchar.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* Convert initial portion of wide string NPTR to `long long int' | |
| representation. */ | |
| __extension__ | |
| extern long long int wcstoq (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, int __base) | |
| __THROW; | |
| /* Convert initial portion of wide string NPTR to `unsigned long long int' | |
| representation. */ | |
| __extension__ | |
| extern unsigned long long int wcstouq (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, | |
| int __base) __THROW; | |
| #endif /* Use GNU. */ | |
| # 514 "/usr/include/wchar.h" 3 4 | |
| #ifdef __USE_GNU | |
| /* The concept of one static locale per category is not very well | |
| thought out. Many applications will need to process its data using | |
| information from several different locales. Another application is | |
| the implementation of the internationalization handling in the | |
| upcoming ISO C++ standard library. To support this another set of | |
| the functions using locale data exist which have an additional | |
| argument. | |
| Attention: all these functions are *not* standardized in any form. | |
| This is a proof-of-concept implementation. */ | |
| /* Structure for reentrant locale using functions. This is an | |
| (almost) opaque type for the user level programs. */ | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <xlocale.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 529 "/usr/include/wchar.h" 3 4 | |
| # 530 "/usr/include/wchar.h" 3 4 | |
| /* Special versions of the functions above which take the locale to | |
| use as an additional parameter. */ | |
| extern long int wcstol_l (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, int __base, | |
| __locale_t __loc) __THROW; | |
| extern unsigned long int wcstoul_l (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, | |
| int __base, __locale_t __loc) __THROW; | |
| __extension__ | |
| extern long long int wcstoll_l (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, | |
| int __base, __locale_t __loc) __THROW; | |
| __extension__ | |
| extern unsigned long long int wcstoull_l (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, | |
| int __base, __locale_t __loc) | |
| __THROW; | |
| extern double wcstod_l (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, __locale_t __loc) | |
| __THROW; | |
| extern float wcstof_l (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, __locale_t __loc) | |
| __THROW; | |
| extern long double wcstold_l (const wchar_t *__restrict __nptr, | |
| wchar_t **__restrict __endptr, | |
| __locale_t __loc) __THROW; | |
| #endif /* use GNU */ | |
| # 564 "/usr/include/wchar.h" 3 4 | |
| #ifdef __USE_XOPEN2K8 | |
| /* Copy SRC to DEST, returning the address of the terminating L'\0' in | |
| DEST. */ | |
| extern wchar_t *wcpcpy (wchar_t *__restrict __dest, | |
| const wchar_t *__restrict __src) __THROW; | |
| /* Copy no more than N characters of SRC to DEST, returning the address of | |
| the last character written into DEST. */ | |
| extern wchar_t *wcpncpy (wchar_t *__restrict __dest, | |
| const wchar_t *__restrict __src, size_t __n) | |
| __THROW; | |
| /* Wide character I/O functions. */ | |
| /* Like OPEN_MEMSTREAM, but the stream is wide oriented and produces | |
| a wide character string. */ | |
| extern __FILE *open_wmemstream (wchar_t **__bufloc, size_t *__sizeloc) __THROW; | |
| #endif | |
| # 585 "/usr/include/wchar.h" 3 4 | |
| #if defined __USE_ISOC95 || defined __USE_UNIX98 | |
| __BEGIN_NAMESPACE_STD | |
| /* Select orientation for stream. */ | |
| extern int fwide (__FILE *__fp, int __mode) __THROW; | |
| /* Write formatted output to STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fwprintf (__FILE *__restrict __stream, | |
| const wchar_t *__restrict __format, ...) | |
| /* __attribute__ ((__format__ (__wprintf__, 2, 3))) */; | |
| /* Write formatted output to stdout. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int wprintf (const wchar_t *__restrict __format, ...) | |
| /* __attribute__ ((__format__ (__wprintf__, 1, 2))) */; | |
| /* Write formatted output of at most N characters to S. */ | |
| extern int swprintf (wchar_t *__restrict __s, size_t __n, | |
| const wchar_t *__restrict __format, ...) | |
| __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 4))) */; | |
| /* Write formatted output to S from argument list ARG. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int vfwprintf (__FILE *__restrict __s, | |
| const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg) | |
| /* __attribute__ ((__format__ (__wprintf__, 2, 0))) */; | |
| /* Write formatted output to stdout from argument list ARG. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int vwprintf (const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg) | |
| /* __attribute__ ((__format__ (__wprintf__, 1, 0))) */; | |
| /* Write formatted output of at most N character to S from argument | |
| list ARG. */ | |
| extern int vswprintf (wchar_t *__restrict __s, size_t __n, | |
| const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg) | |
| __THROW /* __attribute__ ((__format__ (__wprintf__, 3, 0))) */; | |
| /* Read formatted input from STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fwscanf (__FILE *__restrict __stream, | |
| const wchar_t *__restrict __format, ...) | |
| /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; | |
| /* Read formatted input from stdin. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int wscanf (const wchar_t *__restrict __format, ...) | |
| /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */; | |
| /* Read formatted input from S. */ | |
| extern int swscanf (const wchar_t *__restrict __s, | |
| const wchar_t *__restrict __format, ...) | |
| __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; | |
| # if defined __USE_ISOC99 && !defined __USE_GNU \ | |
| && (!defined __LDBL_COMPAT || !defined __REDIRECT) \ | |
| && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) | |
| # ifdef __REDIRECT | |
| /* For strict ISO C99 or POSIX compliance disallow %as, %aS and %a[ | |
| GNU extension which conflicts with valid %a followed by letter | |
| s, S or [. */ | |
| extern int __REDIRECT (fwscanf, (__FILE *__restrict __stream, | |
| const wchar_t *__restrict __format, ...), | |
| __isoc99_fwscanf) | |
| /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; | |
| extern int __REDIRECT (wscanf, (const wchar_t *__restrict __format, ...), | |
| __isoc99_wscanf) | |
| /* __attribute__ ((__format__ (__wscanf__, 1, 2))) */; | |
| extern int __REDIRECT_NTH (swscanf, (const wchar_t *__restrict __s, | |
| const wchar_t *__restrict __format, | |
| ...), __isoc99_swscanf) | |
| /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */; | |
| # else | |
| # 671 "/usr/include/wchar.h" 3 4 | |
| extern int __isoc99_fwscanf (__FILE *__restrict __stream, | |
| const wchar_t *__restrict __format, ...); | |
| extern int __isoc99_wscanf (const wchar_t *__restrict __format, ...); | |
| extern int __isoc99_swscanf (const wchar_t *__restrict __s, | |
| const wchar_t *__restrict __format, ...) | |
| __THROW; | |
| # define fwscanf __isoc99_fwscanf | |
| # define wscanf __isoc99_wscanf | |
| # define swscanf __isoc99_swscanf | |
| # endif | |
| # 681 "/usr/include/wchar.h" 3 4 | |
| # endif | |
| # 682 "/usr/include/wchar.h" 3 4 | |
| __END_NAMESPACE_STD | |
| #endif /* Use ISO C95, C99 and Unix98. */ | |
| # 685 "/usr/include/wchar.h" 3 4 | |
| #ifdef __USE_ISOC99 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Read formatted input from S into argument list ARG. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int vfwscanf (__FILE *__restrict __s, | |
| const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg) | |
| /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; | |
| /* Read formatted input from stdin into argument list ARG. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int vwscanf (const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg) | |
| /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */; | |
| /* Read formatted input from S into argument list ARG. */ | |
| extern int vswscanf (const wchar_t *__restrict __s, | |
| const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg) | |
| __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; | |
| # if !defined __USE_GNU \ | |
| && (!defined __LDBL_COMPAT || !defined __REDIRECT) \ | |
| && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) | |
| # ifdef __REDIRECT | |
| extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s, | |
| const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg), __isoc99_vfwscanf) | |
| /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; | |
| extern int __REDIRECT (vwscanf, (const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg), __isoc99_vwscanf) | |
| /* __attribute__ ((__format__ (__wscanf__, 1, 0))) */; | |
| extern int __REDIRECT_NTH (vswscanf, (const wchar_t *__restrict __s, | |
| const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg), __isoc99_vswscanf) | |
| /* __attribute__ ((__format__ (__wscanf__, 2, 0))) */; | |
| # else | |
| # 725 "/usr/include/wchar.h" 3 4 | |
| extern int __isoc99_vfwscanf (__FILE *__restrict __s, | |
| const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg); | |
| extern int __isoc99_vwscanf (const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg); | |
| extern int __isoc99_vswscanf (const wchar_t *__restrict __s, | |
| const wchar_t *__restrict __format, | |
| __gnuc_va_list __arg) __THROW; | |
| # define vfwscanf __isoc99_vfwscanf | |
| # define vwscanf __isoc99_vwscanf | |
| # define vswscanf __isoc99_vswscanf | |
| # endif | |
| # 737 "/usr/include/wchar.h" 3 4 | |
| # endif | |
| # 738 "/usr/include/wchar.h" 3 4 | |
| __END_NAMESPACE_C99 | |
| #endif /* Use ISO C99. */ | |
| # 741 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_STD | |
| /* Read a character from STREAM. | |
| These functions are possible cancellation points and therefore not | |
| marked with __THROW. */ | |
| extern wint_t fgetwc (__FILE *__stream); | |
| extern wint_t getwc (__FILE *__stream); | |
| /* Read a character from stdin. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern wint_t getwchar (void); | |
| /* Write a character to STREAM. | |
| These functions are possible cancellation points and therefore not | |
| marked with __THROW. */ | |
| extern wint_t fputwc (wchar_t __wc, __FILE *__stream); | |
| extern wint_t putwc (wchar_t __wc, __FILE *__stream); | |
| /* Write a character to stdout. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern wint_t putwchar (wchar_t __wc); | |
| /* Get a newline-terminated wide character string of finite length | |
| from STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n, | |
| __FILE *__restrict __stream); | |
| /* Write a string to STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern int fputws (const wchar_t *__restrict __ws, | |
| __FILE *__restrict __stream); | |
| /* Push a character back onto the input buffer of STREAM. | |
| This function is a possible cancellation point and therefore not | |
| marked with __THROW. */ | |
| extern wint_t ungetwc (wint_t __wc, __FILE *__stream); | |
| __END_NAMESPACE_STD | |
| #ifdef __USE_GNU | |
| /* These are defined to be equivalent to the `char' functions defined | |
| in POSIX.1:1996. | |
| These functions are not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation they are cancellation points and | |
| therefore not marked with __THROW. */ | |
| extern wint_t getwc_unlocked (__FILE *__stream); | |
| extern wint_t getwchar_unlocked (void); | |
| /* This is the wide character version of a GNU extension. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern wint_t fgetwc_unlocked (__FILE *__stream); | |
| /* Faster version when locking is not necessary. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern wint_t fputwc_unlocked (wchar_t __wc, __FILE *__stream); | |
| /* These are defined to be equivalent to the `char' functions defined | |
| in POSIX.1:1996. | |
| These functions are not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation they are cancellation points and | |
| therefore not marked with __THROW. */ | |
| extern wint_t putwc_unlocked (wchar_t __wc, __FILE *__stream); | |
| extern wint_t putwchar_unlocked (wchar_t __wc); | |
| /* This function does the same as `fgetws' but does not lock the stream. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern wchar_t *fgetws_unlocked (wchar_t *__restrict __ws, int __n, | |
| __FILE *__restrict __stream); | |
| /* This function does the same as `fputws' but does not lock the stream. | |
| This function is not part of POSIX and therefore no official | |
| cancellation point. But due to similarity with an POSIX interface | |
| or due to the implementation it is a cancellation point and | |
| therefore not marked with __THROW. */ | |
| extern int fputws_unlocked (const wchar_t *__restrict __ws, | |
| __FILE *__restrict __stream); | |
| #endif | |
| # 852 "/usr/include/wchar.h" 3 4 | |
| __BEGIN_NAMESPACE_C99 | |
| /* Format TP into S according to FORMAT. | |
| Write no more than MAXSIZE wide characters and return the number | |
| of wide characters written, or 0 if it would exceed MAXSIZE. */ | |
| extern size_t wcsftime (wchar_t *__restrict __s, size_t __maxsize, | |
| const wchar_t *__restrict __format, | |
| const struct tm *__restrict __tp) __THROW; | |
| __END_NAMESPACE_C99 | |
| # ifdef __USE_GNU | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <xlocale.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 864 "/usr/include/wchar.h" 3 4 | |
| # 865 "/usr/include/wchar.h" 3 4 | |
| /* Similar to `wcsftime' but takes the information from | |
| the provided locale and not the global locale. */ | |
| extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize, | |
| const wchar_t *__restrict __format, | |
| const struct tm *__restrict __tp, | |
| __locale_t __loc) __THROW; | |
| # endif | |
| # 873 "/usr/include/wchar.h" 3 4 | |
| /* The X/Open standard demands that most of the functions defined in | |
| the <wctype.h> header must also appear here. This is probably | |
| because some X/Open members wrote their implementation before the | |
| ISO C standard was published and introduced the better solution. | |
| We have to provide these definitions for compliance reasons but we | |
| do this nonsense only if really necessary. */ | |
| #if defined __USE_UNIX98 && !defined __USE_GNU | |
| # define __need_iswxxx | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <wctype.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 882 "/usr/include/wchar.h" 3 4 | |
| # 883 "/usr/include/wchar.h" 3 4 | |
| #endif | |
| # 884 "/usr/include/wchar.h" 3 4 | |
| /* Define some macros helping to catch buffer overflows. */ | |
| #if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/wchar2.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 887 "/usr/include/wchar.h" 3 4 | |
| # 888 "/usr/include/wchar.h" 3 4 | |
| #endif | |
| # 889 "/usr/include/wchar.h" 3 4 | |
| #ifdef __LDBL_COMPAT | |
| #if 0 /* expanded by -frewrite-includes */ | |
| # include <bits/wchar-ldbl.h> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 891 "/usr/include/wchar.h" 3 4 | |
| # 892 "/usr/include/wchar.h" 3 4 | |
| #endif | |
| # 893 "/usr/include/wchar.h" 3 4 | |
| __END_DECLS | |
| #endif /* _WCHAR_H defined */ | |
| # 897 "/usr/include/wchar.h" 3 4 | |
| #endif /* wchar.h */ | |
| # 899 "/usr/include/wchar.h" 3 4 | |
| /* Undefine all __need_* constants in case we are included to get those | |
| constants but the whole file was already read. */ | |
| #undef __need_mbstate_t | |
| #undef __need_wint_t | |
| # 120 "/usr/local/bin/../include/c++/v1/wchar.h" 2 3 | |
| // Determine whether we have const-correct overloads for wcschr and friends. | |
| #if defined(_WCHAR_H_CPLUSPLUS_98_CONFORMANCE_) | |
| # define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS 1 | |
| #elif defined(__GLIBC_PREREQ) | |
| # 125 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| # if __GLIBC_PREREQ(2, 10) | |
| # define _LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS 1 | |
| # endif | |
| # 128 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #endif | |
| # 129 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #if defined(__cplusplus) && !defined(_LIBCPP_WCHAR_H_HAS_CONST_OVERLOADS) && defined(_LIBCPP_PREFERRED_OVERLOAD) | |
| extern "C++" { | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| wchar_t* __libcpp_wcschr(const wchar_t* __s, wchar_t __c) {return (wchar_t*)wcschr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const wchar_t* wcschr(const wchar_t* __s, wchar_t __c) {return __libcpp_wcschr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| wchar_t* wcschr( wchar_t* __s, wchar_t __c) {return __libcpp_wcschr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| wchar_t* __libcpp_wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return (wchar_t*)wcspbrk(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const wchar_t* wcspbrk(const wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcspbrk(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| wchar_t* wcspbrk( wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcspbrk(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| wchar_t* __libcpp_wcsrchr(const wchar_t* __s, wchar_t __c) {return (wchar_t*)wcsrchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const wchar_t* wcsrchr(const wchar_t* __s, wchar_t __c) {return __libcpp_wcsrchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| wchar_t* wcsrchr( wchar_t* __s, wchar_t __c) {return __libcpp_wcsrchr(__s, __c);} | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| wchar_t* __libcpp_wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return (wchar_t*)wcsstr(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const wchar_t* wcsstr(const wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcsstr(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| wchar_t* wcsstr( wchar_t* __s1, const wchar_t* __s2) {return __libcpp_wcsstr(__s1, __s2);} | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| wchar_t* __libcpp_wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return (wchar_t*)wmemchr(__s, __c, __n);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return __libcpp_wmemchr(__s, __c, __n);} | |
| inline _LIBCPP_INLINE_VISIBILITY _LIBCPP_PREFERRED_OVERLOAD | |
| wchar_t* wmemchr( wchar_t* __s, wchar_t __c, size_t __n) {return __libcpp_wmemchr(__s, __c, __n);} | |
| } | |
| #endif | |
| # 168 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #if defined(__cplusplus) && defined(_LIBCPP_MSVCRT_LIKE) | |
| extern "C" { | |
| size_t mbsnrtowcs(wchar_t *__restrict dst, const char **__restrict src, | |
| size_t nmc, size_t len, mbstate_t *__restrict ps); | |
| size_t wcsnrtombs(char *__restrict dst, const wchar_t **__restrict src, | |
| size_t nwc, size_t len, mbstate_t *__restrict ps); | |
| } // extern "C++" | |
| #endif // __cplusplus && _LIBCPP_MSVCRT | |
| # 177 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| #endif // _LIBCPP_WCHAR_H | |
| # 179 "/usr/local/bin/../include/c++/v1/wchar.h" 3 | |
| # 91 "/usr/local/bin/../include/c++/v1/iosfwd" 2 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 94 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| #endif | |
| # 95 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| class _LIBCPP_TYPE_VIS ios_base; | |
| template<class _CharT> struct _LIBCPP_TEMPLATE_VIS char_traits; | |
| template<class _Tp> class _LIBCPP_TEMPLATE_VIS allocator; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_ios; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_streambuf; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_istream; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_ostream; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_iostream; | |
| template <class _CharT, class _Traits = char_traits<_CharT>, | |
| class _Allocator = allocator<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_stringbuf; | |
| template <class _CharT, class _Traits = char_traits<_CharT>, | |
| class _Allocator = allocator<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_istringstream; | |
| template <class _CharT, class _Traits = char_traits<_CharT>, | |
| class _Allocator = allocator<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_ostringstream; | |
| template <class _CharT, class _Traits = char_traits<_CharT>, | |
| class _Allocator = allocator<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_stringstream; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_filebuf; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_ifstream; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_ofstream; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_fstream; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS istreambuf_iterator; | |
| template <class _CharT, class _Traits = char_traits<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS ostreambuf_iterator; | |
| typedef basic_ios<char> ios; | |
| typedef basic_ios<wchar_t> wios; | |
| typedef basic_streambuf<char> streambuf; | |
| typedef basic_istream<char> istream; | |
| typedef basic_ostream<char> ostream; | |
| typedef basic_iostream<char> iostream; | |
| typedef basic_stringbuf<char> stringbuf; | |
| typedef basic_istringstream<char> istringstream; | |
| typedef basic_ostringstream<char> ostringstream; | |
| typedef basic_stringstream<char> stringstream; | |
| typedef basic_filebuf<char> filebuf; | |
| typedef basic_ifstream<char> ifstream; | |
| typedef basic_ofstream<char> ofstream; | |
| typedef basic_fstream<char> fstream; | |
| typedef basic_streambuf<wchar_t> wstreambuf; | |
| typedef basic_istream<wchar_t> wistream; | |
| typedef basic_ostream<wchar_t> wostream; | |
| typedef basic_iostream<wchar_t> wiostream; | |
| typedef basic_stringbuf<wchar_t> wstringbuf; | |
| typedef basic_istringstream<wchar_t> wistringstream; | |
| typedef basic_ostringstream<wchar_t> wostringstream; | |
| typedef basic_stringstream<wchar_t> wstringstream; | |
| typedef basic_filebuf<wchar_t> wfilebuf; | |
| typedef basic_ifstream<wchar_t> wifstream; | |
| typedef basic_ofstream<wchar_t> wofstream; | |
| typedef basic_fstream<wchar_t> wfstream; | |
| template <class _State> class _LIBCPP_TEMPLATE_VIS fpos; | |
| typedef fpos<mbstate_t> streampos; | |
| typedef fpos<mbstate_t> wstreampos; | |
| #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS | |
| typedef fpos<mbstate_t> u16streampos; | |
| typedef fpos<mbstate_t> u32streampos; | |
| #endif // _LIBCPP_HAS_NO_UNICODE_CHARS | |
| # 182 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| #if defined(_NEWLIB_VERSION) | |
| // On newlib, off_t is 'long int' | |
| typedef long int streamoff; // for char_traits in <string> | |
| #else | |
| # 187 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| typedef long long streamoff; // for char_traits in <string> | |
| #endif | |
| # 189 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| template <class _CharT, // for <stdexcept> | |
| class _Traits = char_traits<_CharT>, | |
| class _Allocator = allocator<_CharT> > | |
| class _LIBCPP_TEMPLATE_VIS basic_string; | |
| typedef basic_string<char, char_traits<char>, allocator<char> > string; | |
| typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> > wstring; | |
| // Include other forward declarations here | |
| template <class _Tp, class _Alloc = allocator<_Tp> > | |
| class _LIBCPP_TEMPLATE_VIS vector; | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP_IOSFWD | |
| # 205 "/usr/local/bin/../include/c++/v1/iosfwd" 3 | |
| # 427 "/usr/local/bin/../include/c++/v1/iterator" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__functional_base> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 427 "/usr/local/bin/../include/c++/v1/iterator" 3 | |
| # 1 "/usr/local/bin/../include/c++/v1/__functional_base" 1 3 | |
| // -*- C++ -*- | |
| //===----------------------------------------------------------------------===// | |
| // | |
| // The LLVM Compiler Infrastructure | |
| // | |
| // This file is dual licensed under the MIT and the University of Illinois Open | |
| // Source Licenses. See LICENSE.TXT for details. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef _LIBCPP_FUNCTIONAL_BASE | |
| #define _LIBCPP_FUNCTIONAL_BASE | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__config> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 14 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| # 15 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 15 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| # 16 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <typeinfo> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 16 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| # 17 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <exception> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 17 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| # 18 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <new> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 18 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| # 19 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <utility> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 19 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| # 20 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #pragma GCC system_header | |
| #endif /* expanded by -frewrite-includes */ | |
| # 23 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #endif | |
| # 24 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| _LIBCPP_BEGIN_NAMESPACE_STD | |
| template <class _Arg1, class _Arg2, class _Result> | |
| struct _LIBCPP_TEMPLATE_VIS binary_function | |
| { | |
| typedef _Arg1 first_argument_type; | |
| typedef _Arg2 second_argument_type; | |
| typedef _Result result_type; | |
| }; | |
| template <class _Tp> | |
| struct __has_result_type | |
| { | |
| private: | |
| struct __two {char __lx; char __lxx;}; | |
| template <class _Up> static __two __test(...); | |
| template <class _Up> static char __test(typename _Up::result_type* = 0); | |
| public: | |
| static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp = void> | |
| #else | |
| # 49 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| template <class _Tp> | |
| #endif | |
| # 51 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| struct _LIBCPP_TEMPLATE_VIS less : binary_function<_Tp, _Tp, bool> | |
| { | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY | |
| bool operator()(const _Tp& __x, const _Tp& __y) const | |
| {return __x < __y;} | |
| }; | |
| #if _LIBCPP_STD_VER > 11 | |
| template <> | |
| struct _LIBCPP_TEMPLATE_VIS less<void> | |
| { | |
| template <class _T1, class _T2> | |
| _LIBCPP_CONSTEXPR_AFTER_CXX11 _LIBCPP_INLINE_VISIBILITY | |
| auto operator()(_T1&& __t, _T2&& __u) const | |
| _NOEXCEPT_(noexcept(_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u))) | |
| -> decltype (_VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u)) | |
| { return _VSTD::forward<_T1>(__t) < _VSTD::forward<_T2>(__u); } | |
| typedef void is_transparent; | |
| }; | |
| #endif | |
| # 71 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| // __weak_result_type | |
| template <class _Tp> | |
| struct __derives_from_unary_function | |
| { | |
| private: | |
| struct __two {char __lx; char __lxx;}; | |
| static __two __test(...); | |
| template <class _Ap, class _Rp> | |
| static unary_function<_Ap, _Rp> | |
| __test(const volatile unary_function<_Ap, _Rp>*); | |
| public: | |
| static const bool value = !is_same<decltype(__test((_Tp*)0)), __two>::value; | |
| typedef decltype(__test((_Tp*)0)) type; | |
| }; | |
| template <class _Tp> | |
| struct __derives_from_binary_function | |
| { | |
| private: | |
| struct __two {char __lx; char __lxx;}; | |
| static __two __test(...); | |
| template <class _A1, class _A2, class _Rp> | |
| static binary_function<_A1, _A2, _Rp> | |
| __test(const volatile binary_function<_A1, _A2, _Rp>*); | |
| public: | |
| static const bool value = !is_same<decltype(__test((_Tp*)0)), __two>::value; | |
| typedef decltype(__test((_Tp*)0)) type; | |
| }; | |
| template <class _Tp, bool = __derives_from_unary_function<_Tp>::value> | |
| struct __maybe_derive_from_unary_function // bool is true | |
| : public __derives_from_unary_function<_Tp>::type | |
| { | |
| }; | |
| template <class _Tp> | |
| struct __maybe_derive_from_unary_function<_Tp, false> | |
| { | |
| }; | |
| template <class _Tp, bool = __derives_from_binary_function<_Tp>::value> | |
| struct __maybe_derive_from_binary_function // bool is true | |
| : public __derives_from_binary_function<_Tp>::type | |
| { | |
| }; | |
| template <class _Tp> | |
| struct __maybe_derive_from_binary_function<_Tp, false> | |
| { | |
| }; | |
| template <class _Tp, bool = __has_result_type<_Tp>::value> | |
| struct __weak_result_type_imp // bool is true | |
| : public __maybe_derive_from_unary_function<_Tp>, | |
| public __maybe_derive_from_binary_function<_Tp> | |
| { | |
| typedef typename _Tp::result_type result_type; | |
| }; | |
| template <class _Tp> | |
| struct __weak_result_type_imp<_Tp, false> | |
| : public __maybe_derive_from_unary_function<_Tp>, | |
| public __maybe_derive_from_binary_function<_Tp> | |
| { | |
| }; | |
| template <class _Tp> | |
| struct __weak_result_type | |
| : public __weak_result_type_imp<_Tp> | |
| { | |
| }; | |
| // 0 argument case | |
| template <class _Rp> | |
| struct __weak_result_type<_Rp ()> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Rp> | |
| struct __weak_result_type<_Rp (&)()> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Rp> | |
| struct __weak_result_type<_Rp (*)()> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| // 1 argument case | |
| template <class _Rp, class _A1> | |
| struct __weak_result_type<_Rp (_A1)> | |
| : public unary_function<_A1, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _A1> | |
| struct __weak_result_type<_Rp (&)(_A1)> | |
| : public unary_function<_A1, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _A1> | |
| struct __weak_result_type<_Rp (*)(_A1)> | |
| : public unary_function<_A1, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _Cp> | |
| struct __weak_result_type<_Rp (_Cp::*)()> | |
| : public unary_function<_Cp*, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _Cp> | |
| struct __weak_result_type<_Rp (_Cp::*)() const> | |
| : public unary_function<const _Cp*, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _Cp> | |
| struct __weak_result_type<_Rp (_Cp::*)() volatile> | |
| : public unary_function<volatile _Cp*, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _Cp> | |
| struct __weak_result_type<_Rp (_Cp::*)() const volatile> | |
| : public unary_function<const volatile _Cp*, _Rp> | |
| { | |
| }; | |
| // 2 argument case | |
| template <class _Rp, class _A1, class _A2> | |
| struct __weak_result_type<_Rp (_A1, _A2)> | |
| : public binary_function<_A1, _A2, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _A1, class _A2> | |
| struct __weak_result_type<_Rp (*)(_A1, _A2)> | |
| : public binary_function<_A1, _A2, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _A1, class _A2> | |
| struct __weak_result_type<_Rp (&)(_A1, _A2)> | |
| : public binary_function<_A1, _A2, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _Cp, class _A1> | |
| struct __weak_result_type<_Rp (_Cp::*)(_A1)> | |
| : public binary_function<_Cp*, _A1, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _Cp, class _A1> | |
| struct __weak_result_type<_Rp (_Cp::*)(_A1) const> | |
| : public binary_function<const _Cp*, _A1, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _Cp, class _A1> | |
| struct __weak_result_type<_Rp (_Cp::*)(_A1) volatile> | |
| : public binary_function<volatile _Cp*, _A1, _Rp> | |
| { | |
| }; | |
| template <class _Rp, class _Cp, class _A1> | |
| struct __weak_result_type<_Rp (_Cp::*)(_A1) const volatile> | |
| : public binary_function<const volatile _Cp*, _A1, _Rp> | |
| { | |
| }; | |
| #ifndef _LIBCPP_CXX03_LANG | |
| // 3 or more arguments | |
| template <class _Rp, class _A1, class _A2, class _A3, class ..._A4> | |
| struct __weak_result_type<_Rp (_A1, _A2, _A3, _A4...)> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Rp, class _A1, class _A2, class _A3, class ..._A4> | |
| struct __weak_result_type<_Rp (&)(_A1, _A2, _A3, _A4...)> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Rp, class _A1, class _A2, class _A3, class ..._A4> | |
| struct __weak_result_type<_Rp (*)(_A1, _A2, _A3, _A4...)> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3> | |
| struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...)> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3> | |
| struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3> | |
| struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) volatile> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Rp, class _Cp, class _A1, class _A2, class ..._A3> | |
| struct __weak_result_type<_Rp (_Cp::*)(_A1, _A2, _A3...) const volatile> | |
| { | |
| typedef _Rp result_type; | |
| }; | |
| template <class _Tp, class ..._Args> | |
| struct __invoke_return | |
| { | |
| typedef decltype(__invoke(_VSTD::declval<_Tp>(), _VSTD::declval<_Args>()...)) type; | |
| }; | |
| #else // defined(_LIBCPP_CXX03_LANG) | |
| # 306 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <__functional_base_03> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 307 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| # 308 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #endif // !defined(_LIBCPP_CXX03_LANG) | |
| # 310 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| template <class _Ret> | |
| struct __invoke_void_return_wrapper | |
| { | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class ..._Args> | |
| static _Ret __call(_Args&&... __args) { | |
| return __invoke(_VSTD::forward<_Args>(__args)...); | |
| } | |
| #else | |
| # 321 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| template <class _Fn> | |
| static _Ret __call(_Fn __f) { | |
| return __invoke(__f); | |
| } | |
| template <class _Fn, class _A0> | |
| static _Ret __call(_Fn __f, _A0& __a0) { | |
| return __invoke(__f, __a0); | |
| } | |
| template <class _Fn, class _A0, class _A1> | |
| static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1) { | |
| return __invoke(__f, __a0, __a1); | |
| } | |
| template <class _Fn, class _A0, class _A1, class _A2> | |
| static _Ret __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2){ | |
| return __invoke(__f, __a0, __a1, __a2); | |
| } | |
| #endif | |
| # 341 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| }; | |
| template <> | |
| struct __invoke_void_return_wrapper<void> | |
| { | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class ..._Args> | |
| static void __call(_Args&&... __args) { | |
| __invoke(_VSTD::forward<_Args>(__args)...); | |
| } | |
| #else | |
| # 352 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| template <class _Fn> | |
| static void __call(_Fn __f) { | |
| __invoke(__f); | |
| } | |
| template <class _Fn, class _A0> | |
| static void __call(_Fn __f, _A0& __a0) { | |
| __invoke(__f, __a0); | |
| } | |
| template <class _Fn, class _A0, class _A1> | |
| static void __call(_Fn __f, _A0& __a0, _A1& __a1) { | |
| __invoke(__f, __a0, __a1); | |
| } | |
| template <class _Fn, class _A0, class _A1, class _A2> | |
| static void __call(_Fn __f, _A0& __a0, _A1& __a1, _A2& __a2) { | |
| __invoke(__f, __a0, __a1, __a2); | |
| } | |
| #endif | |
| # 372 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| }; | |
| template <class _Tp> | |
| class _LIBCPP_TEMPLATE_VIS reference_wrapper | |
| : public __weak_result_type<_Tp> | |
| { | |
| public: | |
| // types | |
| typedef _Tp type; | |
| private: | |
| type* __f_; | |
| public: | |
| // construct/copy/destroy | |
| _LIBCPP_INLINE_VISIBILITY reference_wrapper(type& __f) _NOEXCEPT | |
| : __f_(_VSTD::addressof(__f)) {} | |
| #ifndef _LIBCPP_CXX03_LANG | |
| private: reference_wrapper(type&&); public: // = delete; // do not bind to temps | |
| #endif | |
| # 391 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| // access | |
| _LIBCPP_INLINE_VISIBILITY operator type& () const _NOEXCEPT {return *__f_;} | |
| _LIBCPP_INLINE_VISIBILITY type& get() const _NOEXCEPT {return *__f_;} | |
| #ifndef _LIBCPP_CXX03_LANG | |
| // invoke | |
| template <class... _ArgTypes> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_of<type&, _ArgTypes...>::type | |
| operator() (_ArgTypes&&... __args) const { | |
| return __invoke(get(), _VSTD::forward<_ArgTypes>(__args)...); | |
| } | |
| #else | |
| # 405 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return<type>::type | |
| operator() () const { | |
| return __invoke(get()); | |
| } | |
| template <class _A0> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return0<type, _A0>::type | |
| operator() (_A0& __a0) const { | |
| return __invoke(get(), __a0); | |
| } | |
| template <class _A0> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return0<type, _A0 const>::type | |
| operator() (_A0 const& __a0) const { | |
| return __invoke(get(), __a0); | |
| } | |
| template <class _A0, class _A1> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return1<type, _A0, _A1>::type | |
| operator() (_A0& __a0, _A1& __a1) const { | |
| return __invoke(get(), __a0, __a1); | |
| } | |
| template <class _A0, class _A1> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return1<type, _A0 const, _A1>::type | |
| operator() (_A0 const& __a0, _A1& __a1) const { | |
| return __invoke(get(), __a0, __a1); | |
| } | |
| template <class _A0, class _A1> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return1<type, _A0, _A1 const>::type | |
| operator() (_A0& __a0, _A1 const& __a1) const { | |
| return __invoke(get(), __a0, __a1); | |
| } | |
| template <class _A0, class _A1> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return1<type, _A0 const, _A1 const>::type | |
| operator() (_A0 const& __a0, _A1 const& __a1) const { | |
| return __invoke(get(), __a0, __a1); | |
| } | |
| template <class _A0, class _A1, class _A2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return2<type, _A0, _A1, _A2>::type | |
| operator() (_A0& __a0, _A1& __a1, _A2& __a2) const { | |
| return __invoke(get(), __a0, __a1, __a2); | |
| } | |
| template <class _A0, class _A1, class _A2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return2<type, _A0 const, _A1, _A2>::type | |
| operator() (_A0 const& __a0, _A1& __a1, _A2& __a2) const { | |
| return __invoke(get(), __a0, __a1, __a2); | |
| } | |
| template <class _A0, class _A1, class _A2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return2<type, _A0, _A1 const, _A2>::type | |
| operator() (_A0& __a0, _A1 const& __a1, _A2& __a2) const { | |
| return __invoke(get(), __a0, __a1, __a2); | |
| } | |
| template <class _A0, class _A1, class _A2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return2<type, _A0, _A1, _A2 const>::type | |
| operator() (_A0& __a0, _A1& __a1, _A2 const& __a2) const { | |
| return __invoke(get(), __a0, __a1, __a2); | |
| } | |
| template <class _A0, class _A1, class _A2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return2<type, _A0 const, _A1 const, _A2>::type | |
| operator() (_A0 const& __a0, _A1 const& __a1, _A2& __a2) const { | |
| return __invoke(get(), __a0, __a1, __a2); | |
| } | |
| template <class _A0, class _A1, class _A2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return2<type, _A0 const, _A1, _A2 const>::type | |
| operator() (_A0 const& __a0, _A1& __a1, _A2 const& __a2) const { | |
| return __invoke(get(), __a0, __a1, __a2); | |
| } | |
| template <class _A0, class _A1, class _A2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return2<type, _A0, _A1 const, _A2 const>::type | |
| operator() (_A0& __a0, _A1 const& __a1, _A2 const& __a2) const { | |
| return __invoke(get(), __a0, __a1, __a2); | |
| } | |
| template <class _A0, class _A1, class _A2> | |
| _LIBCPP_INLINE_VISIBILITY | |
| typename __invoke_return2<type, _A0 const, _A1 const, _A2 const>::type | |
| operator() (_A0 const& __a0, _A1 const& __a1, _A2 const& __a2) const { | |
| return __invoke(get(), __a0, __a1, __a2); | |
| } | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 510 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| }; | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| reference_wrapper<_Tp> | |
| ref(_Tp& __t) _NOEXCEPT | |
| { | |
| return reference_wrapper<_Tp>(__t); | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| reference_wrapper<_Tp> | |
| ref(reference_wrapper<_Tp> __t) _NOEXCEPT | |
| { | |
| return ref(__t.get()); | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| reference_wrapper<const _Tp> | |
| cref(const _Tp& __t) _NOEXCEPT | |
| { | |
| return reference_wrapper<const _Tp>(__t); | |
| } | |
| template <class _Tp> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| reference_wrapper<const _Tp> | |
| cref(reference_wrapper<_Tp> __t) _NOEXCEPT | |
| { | |
| return cref(__t.get()); | |
| } | |
| #ifndef _LIBCPP_CXX03_LANG | |
| template <class _Tp> void ref(const _Tp&&) = delete; | |
| template <class _Tp> void cref(const _Tp&&) = delete; | |
| #endif | |
| # 549 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #if _LIBCPP_STD_VER > 11 | |
| template <class _Tp1, class _Tp2 = void> | |
| struct __is_transparent | |
| { | |
| private: | |
| struct __two {char __lx; char __lxx;}; | |
| template <class _Up> static __two __test(...); | |
| template <class _Up> static char __test(typename _Up::is_transparent* = 0); | |
| public: | |
| static const bool value = sizeof(__test<_Tp1>(0)) == 1; | |
| }; | |
| #endif | |
| # 562 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| // allocator_arg_t | |
| struct _LIBCPP_TEMPLATE_VIS allocator_arg_t { }; | |
| #if defined(_LIBCPP_CXX03_LANG) || defined(_LIBCPP_BUILDING_MEMORY) | |
| extern const allocator_arg_t allocator_arg; | |
| #else | |
| # 570 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| constexpr allocator_arg_t allocator_arg = allocator_arg_t(); | |
| #endif | |
| # 572 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| // uses_allocator | |
| template <class _Tp> | |
| struct __has_allocator_type | |
| { | |
| private: | |
| struct __two {char __lx; char __lxx;}; | |
| template <class _Up> static __two __test(...); | |
| template <class _Up> static char __test(typename _Up::allocator_type* = 0); | |
| public: | |
| static const bool value = sizeof(__test<_Tp>(0)) == 1; | |
| }; | |
| template <class _Tp, class _Alloc, bool = __has_allocator_type<_Tp>::value> | |
| struct __uses_allocator | |
| : public integral_constant<bool, | |
| is_convertible<_Alloc, typename _Tp::allocator_type>::value> | |
| { | |
| }; | |
| template <class _Tp, class _Alloc> | |
| struct __uses_allocator<_Tp, _Alloc, false> | |
| : public false_type | |
| { | |
| }; | |
| template <class _Tp, class _Alloc> | |
| struct _LIBCPP_TEMPLATE_VIS uses_allocator | |
| : public __uses_allocator<_Tp, _Alloc> | |
| { | |
| }; | |
| #if _LIBCPP_STD_VER > 14 | |
| template <class _Tp, class _Alloc> | |
| constexpr size_t uses_allocator_v = uses_allocator<_Tp, _Alloc>::value; | |
| #endif | |
| # 609 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| #ifndef _LIBCPP_CXX03_LANG | |
| // allocator construction | |
| template <class _Tp, class _Alloc, class ..._Args> | |
| struct __uses_alloc_ctor_imp | |
| { | |
| typedef typename __uncvref<_Alloc>::type _RawAlloc; | |
| static const bool __ua = uses_allocator<_Tp, _RawAlloc>::value; | |
| static const bool __ic = | |
| is_constructible<_Tp, allocator_arg_t, _Alloc, _Args...>::value; | |
| static const int value = __ua ? 2 - __ic : 0; | |
| }; | |
| template <class _Tp, class _Alloc, class ..._Args> | |
| struct __uses_alloc_ctor | |
| : integral_constant<int, __uses_alloc_ctor_imp<_Tp, _Alloc, _Args...>::value> | |
| {}; | |
| template <class _Tp, class _Allocator, class... _Args> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| void __user_alloc_construct_impl (integral_constant<int, 0>, _Tp *__storage, const _Allocator &, _Args &&... __args ) | |
| { | |
| new (__storage) _Tp (_VSTD::forward<_Args>(__args)...); | |
| } | |
| // FIXME: This should have a version which takes a non-const alloc. | |
| template <class _Tp, class _Allocator, class... _Args> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| void __user_alloc_construct_impl (integral_constant<int, 1>, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) | |
| { | |
| new (__storage) _Tp (allocator_arg, __a, _VSTD::forward<_Args>(__args)...); | |
| } | |
| // FIXME: This should have a version which takes a non-const alloc. | |
| template <class _Tp, class _Allocator, class... _Args> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| void __user_alloc_construct_impl (integral_constant<int, 2>, _Tp *__storage, const _Allocator &__a, _Args &&... __args ) | |
| { | |
| new (__storage) _Tp (_VSTD::forward<_Args>(__args)..., __a); | |
| } | |
| // FIXME: Theis should have a version which takes a non-const alloc. | |
| template <class _Tp, class _Allocator, class... _Args> | |
| inline _LIBCPP_INLINE_VISIBILITY | |
| void __user_alloc_construct (_Tp *__storage, const _Allocator &__a, _Args &&... __args) | |
| { | |
| __user_alloc_construct_impl( | |
| __uses_alloc_ctor<_Tp, _Allocator>(), | |
| __storage, __a, _VSTD::forward<_Args>(__args)... | |
| ); | |
| } | |
| #endif // _LIBCPP_CXX03_LANG | |
| # 663 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| _LIBCPP_END_NAMESPACE_STD | |
| #endif // _LIBCPP_FUNCTIONAL_BASE | |
| # 667 "/usr/local/bin/../include/c++/v1/__functional_base" 3 | |
| # 428 "/usr/local/bin/../include/c++/v1/iterator" 2 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <type_traits> | |
| #endif /* expanded by -frewrite-includes */ | |
| # 428 "/usr/local/bin/../include/c++/v1/iterator" 3 | |
| # 429 "/usr/local/bin/../include/c++/v1/iterator" 3 | |
| #if 0 /* expanded by -frewrite-includes */ | |
| #include <cstddef> | |
| #endif /* expanded |
View raw
(Sorry about that, but we can’t show files that are this big right now.)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment