Created
May 25, 2017 21:04
-
-
Save jacquelinekay/9ea63b2c7a2550566f43fe4a4f45dcaa to your computer and use it in GitHub Desktop.
preprocessed source of clang return type error
This file has been truncated, but you can view the full file.
This file contains 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 "crash.cpp" | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <tuple> | |
#endif /* expanded by -frewrite-includes */ | |
# 1 "crash.cpp" | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/tuple" 1 3 | |
// <tuple> -*- C++ -*- | |
// Copyright (C) 2007-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/tuple | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef _GLIBCXX_TUPLE | |
#define _GLIBCXX_TUPLE 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/tuple" 3 | |
#if __cplusplus < 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <bits/c++0x_warning.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/tuple" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/tuple" 3 | |
#else | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/tuple" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <utility> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/tuple" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 1 3 | |
// <utility> -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* | |
* Copyright (c) 1996,1997 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file include/utility | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef _GLIBCXX_UTILITY | |
#define _GLIBCXX_UTILITY 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 59 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
/** | |
* @defgroup utilities Utilities | |
* | |
* Components deemed generally useful. Includes pair, tuple, | |
* forward/move helpers, ratio, function object, metaprogramming and | |
* type traits, time, date, and memory functions. | |
*/ | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 68 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 1 3 | |
// Predefined symbols and macros -*- C++ -*- | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/c++config.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iosfwd} | |
*/ | |
#ifndef _GLIBCXX_CXX_CONFIG_H | |
#define _GLIBCXX_CXX_CONFIG_H 1 | |
// The major release number for the GCC release the C++ library belongs to. | |
#define _GLIBCXX_RELEASE 7 | |
// The datestamp of the C++ library in compressed ISO date format. | |
#define __GLIBCXX__ 20170201 | |
// Macros for various attributes. | |
// _GLIBCXX_PURE | |
// _GLIBCXX_CONST | |
// _GLIBCXX_NORETURN | |
// _GLIBCXX_NOTHROW | |
// _GLIBCXX_VISIBILITY | |
#ifndef _GLIBCXX_PURE | |
# define _GLIBCXX_PURE __attribute__ ((__pure__)) | |
#endif | |
# 48 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifndef _GLIBCXX_CONST | |
# define _GLIBCXX_CONST __attribute__ ((__const__)) | |
#endif | |
# 52 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifndef _GLIBCXX_NORETURN | |
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__)) | |
#endif | |
# 56 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// See below for C++ | |
#ifndef _GLIBCXX_NOTHROW | |
# ifndef __cplusplus | |
# define _GLIBCXX_NOTHROW __attribute__((__nothrow__)) | |
# endif | |
# 62 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif | |
# 63 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Macros for visibility attributes. | |
// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY | |
// _GLIBCXX_VISIBILITY | |
# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1 | |
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY | |
# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V))) | |
#else | |
# 72 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// If this is not supplied by the OS-specific or CPU-specific | |
// headers included below, it will be defined to an empty default. | |
# define _GLIBCXX_VISIBILITY(V) _GLIBCXX_PSEUDO_VISIBILITY(V) | |
#endif | |
# 76 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Macros for deprecated attributes. | |
// _GLIBCXX_USE_DEPRECATED | |
// _GLIBCXX_DEPRECATED | |
#ifndef _GLIBCXX_USE_DEPRECATED | |
# define _GLIBCXX_USE_DEPRECATED 1 | |
#endif | |
# 83 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined(__DEPRECATED) && (__cplusplus >= 201103L) | |
# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__)) | |
#else | |
# 87 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_DEPRECATED | |
#endif | |
# 89 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Macros for ABI tag attributes. | |
#ifndef _GLIBCXX_ABI_TAG_CXX11 | |
# define _GLIBCXX_ABI_TAG_CXX11 __attribute ((__abi_tag__ ("cxx11"))) | |
#endif | |
# 94 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if __cplusplus | |
// Macro for constexpr, to support in mixed 03/0x mode. | |
#ifndef _GLIBCXX_CONSTEXPR | |
# if __cplusplus >= 201103L | |
# define _GLIBCXX_CONSTEXPR constexpr | |
# define _GLIBCXX_USE_CONSTEXPR constexpr | |
# else | |
# 104 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_CONSTEXPR | |
# define _GLIBCXX_USE_CONSTEXPR const | |
# endif | |
# 107 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif | |
# 108 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifndef _GLIBCXX14_CONSTEXPR | |
# if __cplusplus >= 201402L | |
# define _GLIBCXX14_CONSTEXPR constexpr | |
# else | |
# 113 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX14_CONSTEXPR | |
# endif | |
# 115 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif | |
# 116 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifndef _GLIBCXX17_CONSTEXPR | |
# if __cplusplus > 201402L | |
# define _GLIBCXX17_CONSTEXPR constexpr | |
# else | |
# 121 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX17_CONSTEXPR | |
# endif | |
# 123 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif | |
# 124 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Macro for noexcept, to support in mixed 03/0x mode. | |
#ifndef _GLIBCXX_NOEXCEPT | |
# if __cplusplus >= 201103L | |
# define _GLIBCXX_NOEXCEPT noexcept | |
# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND) | |
# define _GLIBCXX_USE_NOEXCEPT noexcept | |
# define _GLIBCXX_THROW(_EXC) | |
# else | |
# 133 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_NOEXCEPT | |
# define _GLIBCXX_NOEXCEPT_IF(_COND) | |
# define _GLIBCXX_USE_NOEXCEPT throw() | |
# define _GLIBCXX_THROW(_EXC) throw(_EXC) | |
# endif | |
# 138 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif | |
# 139 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifndef _GLIBCXX_NOTHROW | |
# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT | |
#endif | |
# 143 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifndef _GLIBCXX_THROW_OR_ABORT | |
# if __cpp_exceptions | |
# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC)) | |
# else | |
# 148 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort()) | |
# endif | |
# 150 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif | |
# 151 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if __cpp_noexcept_function_type | |
#define _GLIBCXX_NOEXCEPT_PARM , bool _NE | |
#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE) | |
#else | |
# 156 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#define _GLIBCXX_NOEXCEPT_PARM | |
#define _GLIBCXX_NOEXCEPT_QUAL | |
#endif | |
# 159 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Macro for extern template, ie controlling template linkage via use | |
// of extern keyword on template declaration. As documented in the g++ | |
// manual, it inhibits all implicit instantiations and is used | |
// throughout the library to avoid multiple weak definitions for | |
// required types that are already explicitly instantiated in the | |
// library binary. This substantially reduces the binary size of | |
// resulting executables. | |
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern | |
// templates only in basic_string, thus activating its debug-mode | |
// checks even at -O0. | |
# define _GLIBCXX_EXTERN_TEMPLATE 1 | |
/* | |
Outline of libstdc++ namespaces. | |
namespace std | |
{ | |
namespace __debug { } | |
namespace __parallel { } | |
namespace __profile { } | |
namespace __cxx1998 { } | |
namespace __detail { | |
namespace __variant { } // C++17 | |
} | |
namespace rel_ops { } | |
namespace tr1 | |
{ | |
namespace placeholders { } | |
namespace regex_constants { } | |
namespace __detail { } | |
} | |
namespace tr2 { } | |
namespace decimal { } | |
namespace chrono { } // C++11 | |
namespace placeholders { } // C++11 | |
namespace regex_constants { } // C++11 | |
namespace this_thread { } // C++11 | |
inline namespace literals { // C++14 | |
inline namespace chrono_literals { } // C++14 | |
inline namespace complex_literals { } // C++14 | |
inline namespace string_literals { } // C++14 | |
inline namespace string_view_literals { } // C++17 | |
} | |
} | |
namespace abi { } | |
namespace __gnu_cxx | |
{ | |
namespace __detail { } | |
} | |
For full details see: | |
http://gcc.gnu.org/onlinedocs/libstdc++/latest-doxygen/namespaces.html | |
*/ | |
namespace std | |
{ | |
typedef __SIZE_TYPE__ size_t; | |
typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
#if __cplusplus >= 201103L | |
typedef decltype(nullptr) nullptr_t; | |
#endif | |
# 229 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
} | |
# define _GLIBCXX_USE_DUAL_ABI 1 | |
#if ! _GLIBCXX_USE_DUAL_ABI | |
// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI | |
# undef _GLIBCXX_USE_CXX11_ABI | |
#endif | |
# 237 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifndef _GLIBCXX_USE_CXX11_ABI | |
# define _GLIBCXX_USE_CXX11_ABI 1 | |
#endif | |
# 241 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if _GLIBCXX_USE_CXX11_ABI | |
namespace std | |
{ | |
inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } | |
} | |
namespace __gnu_cxx | |
{ | |
inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } | |
} | |
# define _GLIBCXX_NAMESPACE_CXX11 __cxx11:: | |
# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 namespace __cxx11 { | |
# define _GLIBCXX_END_NAMESPACE_CXX11 } | |
# define _GLIBCXX_DEFAULT_ABI_TAG _GLIBCXX_ABI_TAG_CXX11 | |
#else | |
# 256 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_NAMESPACE_CXX11 | |
# define _GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
# define _GLIBCXX_END_NAMESPACE_CXX11 | |
# define _GLIBCXX_DEFAULT_ABI_TAG | |
#endif | |
# 261 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Defined if inline namespaces are used for versioning. | |
# define _GLIBCXX_INLINE_VERSION 0 | |
// Inline namespace for symbol versioning. | |
#if _GLIBCXX_INLINE_VERSION | |
namespace std | |
{ | |
inline namespace __7 { } | |
namespace rel_ops { inline namespace __7 { } } | |
namespace tr1 | |
{ | |
inline namespace __7 { } | |
namespace placeholders { inline namespace __7 { } } | |
namespace regex_constants { inline namespace __7 { } } | |
namespace __detail { inline namespace __7 { } } | |
} | |
namespace tr2 | |
{ inline namespace __7 { } } | |
namespace decimal { inline namespace __7 { } } | |
#if __cplusplus >= 201103L | |
namespace chrono { inline namespace __7 { } } | |
namespace placeholders { inline namespace __7 { } } | |
namespace regex_constants { inline namespace __7 { } } | |
namespace this_thread { inline namespace __7 { } } | |
#if __cplusplus >= 201402L | |
inline namespace literals { | |
inline namespace chrono_literals { inline namespace __7 { } } | |
inline namespace complex_literals { inline namespace __7 { } } | |
inline namespace string_literals { inline namespace __7 { } } | |
#if __cplusplus > 201402L | |
inline namespace string_view_literals { inline namespace __7 { } } | |
#endif // C++17 | |
# 302 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
} | |
#endif // C++14 | |
# 304 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif // C++11 | |
# 305 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
namespace __detail { | |
inline namespace __7 { } | |
#if __cplusplus > 201402L | |
namespace __variant { inline namespace __7 { } } | |
#endif | |
# 311 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
} | |
} | |
namespace __gnu_cxx | |
{ | |
inline namespace __7 { } | |
namespace __detail { inline namespace __7 { } } | |
} | |
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __7 { | |
# define _GLIBCXX_END_NAMESPACE_VERSION } | |
#else | |
# 322 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION | |
# define _GLIBCXX_END_NAMESPACE_VERSION | |
#endif | |
# 325 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Inline namespaces for special modes: debug, parallel, profile. | |
#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \ | |
|| defined(_GLIBCXX_PROFILE) | |
namespace std | |
{ | |
// Non-inline namespace for components replaced by alternates in active mode. | |
namespace __cxx1998 | |
{ | |
# if _GLIBCXX_INLINE_VERSION | |
inline namespace __7 { } | |
# endif | |
# 338 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# if _GLIBCXX_USE_CXX11_ABI | |
inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { } | |
# endif | |
# 342 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
} | |
// Inline namespace for debug mode. | |
# ifdef _GLIBCXX_DEBUG | |
inline namespace __debug { } | |
# endif | |
# 348 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Inline namespaces for parallel mode. | |
# ifdef _GLIBCXX_PARALLEL | |
inline namespace __parallel { } | |
# endif | |
# 353 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Inline namespaces for profile mode | |
# ifdef _GLIBCXX_PROFILE | |
inline namespace __profile { } | |
# endif | |
# 358 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
} | |
// Check for invalid usage and unsupported mixed-mode use. | |
# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL) | |
# error illegal use of multiple inlined namespaces | |
# endif | |
# 364 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG) | |
# error illegal use of multiple inlined namespaces | |
# endif | |
# 367 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL) | |
# error illegal use of multiple inlined namespaces | |
# endif | |
# 370 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Check for invalid use due to lack for weak symbols. | |
# if __NO_INLINE__ && !__GXX_WEAK__ | |
# warning currently using inlined namespace mode which may fail \ | |
without inlining due to lack of weak symbols | |
# endif | |
# 376 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif | |
# 377 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Macros for namespace scope. Either namespace std:: or the name | |
// of some nested namespace within it corresponding to the active mode. | |
// _GLIBCXX_STD_A | |
// _GLIBCXX_STD_C | |
// | |
// Macros for opening/closing conditional namespaces. | |
// _GLIBCXX_BEGIN_NAMESPACE_ALGO | |
// _GLIBCXX_END_NAMESPACE_ALGO | |
// _GLIBCXX_BEGIN_NAMESPACE_CONTAINER | |
// _GLIBCXX_END_NAMESPACE_CONTAINER | |
#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE) | |
# define _GLIBCXX_STD_C __cxx1998 | |
# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \ | |
namespace _GLIBCXX_STD_C { _GLIBCXX_BEGIN_NAMESPACE_VERSION | |
# define _GLIBCXX_END_NAMESPACE_CONTAINER \ | |
_GLIBCXX_END_NAMESPACE_VERSION } | |
#else | |
# 395 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_STD_C std | |
# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER _GLIBCXX_BEGIN_NAMESPACE_VERSION | |
# define _GLIBCXX_END_NAMESPACE_CONTAINER _GLIBCXX_END_NAMESPACE_VERSION | |
#endif | |
# 399 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifdef _GLIBCXX_PARALLEL | |
# define _GLIBCXX_STD_A __cxx1998 | |
# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \ | |
namespace _GLIBCXX_STD_A { _GLIBCXX_BEGIN_NAMESPACE_VERSION | |
# define _GLIBCXX_END_NAMESPACE_ALGO \ | |
_GLIBCXX_END_NAMESPACE_VERSION } | |
#else | |
# 407 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_STD_A std | |
# define _GLIBCXX_BEGIN_NAMESPACE_ALGO _GLIBCXX_BEGIN_NAMESPACE_VERSION | |
# define _GLIBCXX_END_NAMESPACE_ALGO _GLIBCXX_END_NAMESPACE_VERSION | |
#endif | |
# 411 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// GLIBCXX_ABI Deprecated | |
// Define if compatibility should be provided for -mlong-double-64. | |
#undef _GLIBCXX_LONG_DOUBLE_COMPAT | |
// Inline namespace for long double 128 mode. | |
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__ | |
namespace std | |
{ | |
inline namespace __gnu_cxx_ldbl128 { } | |
} | |
# define _GLIBCXX_NAMESPACE_LDBL __gnu_cxx_ldbl128:: | |
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL namespace __gnu_cxx_ldbl128 { | |
# define _GLIBCXX_END_NAMESPACE_LDBL } | |
#else | |
# 426 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_NAMESPACE_LDBL | |
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL | |
# define _GLIBCXX_END_NAMESPACE_LDBL | |
#endif | |
# 430 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if _GLIBCXX_USE_CXX11_ABI | |
# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_CXX11 | |
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_CXX11 | |
#else | |
# 435 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_NAMESPACE_LDBL | |
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_BEGIN_NAMESPACE_LDBL | |
# define _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 _GLIBCXX_END_NAMESPACE_LDBL | |
#endif | |
# 439 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Debug Mode implies checking assertions. | |
#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS) | |
# define _GLIBCXX_ASSERTIONS 1 | |
#endif | |
# 444 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Disable std::string explicit instantiation declarations in order to assert. | |
#ifdef _GLIBCXX_ASSERTIONS | |
# undef _GLIBCXX_EXTERN_TEMPLATE | |
# define _GLIBCXX_EXTERN_TEMPLATE -1 | |
#endif | |
# 450 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Assert. | |
#if defined(_GLIBCXX_ASSERTIONS) \ | |
|| defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS) | |
namespace std | |
{ | |
// Avoid the use of assert, because we're trying to keep the <cassert> | |
// include out of the mix. | |
inline void | |
__replacement_assert(const char* __file, int __line, | |
const char* __function, const char* __condition) | |
{ | |
__builtin_printf("%s:%d: %s: Assertion '%s' failed.\n", __file, __line, | |
__function, __condition); | |
__builtin_abort(); | |
} | |
} | |
#define __glibcxx_assert_impl(_Condition) \ | |
do \ | |
{ \ | |
if (! (_Condition)) \ | |
std::__replacement_assert(__FILE__, __LINE__, __PRETTY_FUNCTION__, \ | |
#_Condition); \ | |
} while (false) | |
#endif | |
# 475 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined(_GLIBCXX_ASSERTIONS) | |
# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition) | |
#else | |
# 479 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define __glibcxx_assert(_Condition) | |
#endif | |
# 481 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Macros for race detectors. | |
// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) and | |
// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) should be used to explain | |
// atomic (lock-free) synchronization to race detectors: | |
// the race detector will infer a happens-before arc from the former to the | |
// latter when they share the same argument pointer. | |
// | |
// The most frequent use case for these macros (and the only case in the | |
// current implementation of the library) is atomic reference counting: | |
// void _M_remove_reference() | |
// { | |
// _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(&this->_M_refcount); | |
// if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount, -1) <= 0) | |
// { | |
// _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(&this->_M_refcount); | |
// _M_destroy(__a); | |
// } | |
// } | |
// The annotations in this example tell the race detector that all memory | |
// accesses occurred when the refcount was positive do not race with | |
// memory accesses which occurred after the refcount became zero. | |
#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE | |
# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_BEFORE(A) | |
#endif | |
# 506 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER | |
# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A) | |
#endif | |
# 509 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Macros for C linkage: define extern "C" linkage only when using C++. | |
# define _GLIBCXX_BEGIN_EXTERN_C extern "C" { | |
# define _GLIBCXX_END_EXTERN_C } | |
# define _GLIBCXX_USE_ALLOCATOR_NEW 1 | |
#else // !__cplusplus | |
# 517 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_BEGIN_EXTERN_C | |
# define _GLIBCXX_END_EXTERN_C | |
#endif | |
# 520 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// First includes. | |
// Pick up any OS-specific definitions. | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/os_defines.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 525 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/os_defines.h" 1 3 | |
// Specific definitions for GNU/Linux -*- C++ -*- | |
// Copyright (C) 2000-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/os_defines.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iosfwd} | |
*/ | |
#ifndef _GLIBCXX_OS_DEFINES | |
#define _GLIBCXX_OS_DEFINES 1 | |
// System-specific #define, typedefs, corrections, etc, go here. This | |
// file will come before all others. | |
// This keeps isanum, et al from being propagated as macros. | |
#define __NO_CTYPE 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <features.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/os_defines.h" 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 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/os_defines.h" 2 3 | |
// Provide a declaration for the possibly deprecated gets function, as | |
// glibc 2.15 and later does not declare gets for ISO C11 when | |
// __GNU_SOURCE is defined. | |
#if __GLIBC_PREREQ(2,15) && defined(_GNU_SOURCE) | |
# undef _GLIBCXX_HAVE_GETS | |
#endif | |
# 47 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/os_defines.h" 3 | |
// Glibc 2.23 removed the obsolete isinf and isnan declarations. Check the | |
// version dynamically in case it has changed since libstdc++ was configured. | |
#define _GLIBCXX_NO_OBSOLETE_ISINF_ISNAN_DYNAMIC __GLIBC_PREREQ(2,23) | |
#endif | |
# 53 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/os_defines.h" 3 | |
# 526 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 | |
// Pick up any CPU-specific definitions. | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/cpu_defines.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 528 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/cpu_defines.h" 1 3 | |
// Specific definitions for generic platforms -*- C++ -*- | |
// Copyright (C) 2005-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/cpu_defines.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iosfwd} | |
*/ | |
#ifndef _GLIBCXX_CPU_DEFINES | |
#define _GLIBCXX_CPU_DEFINES 1 | |
#endif | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/cpu_defines.h" 3 | |
# 529 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 2 3 | |
// If platform uses neither visibility nor psuedo-visibility, | |
// specify empty default for namespace annotation macros. | |
#ifndef _GLIBCXX_PSEUDO_VISIBILITY | |
# define _GLIBCXX_PSEUDO_VISIBILITY(V) | |
#endif | |
# 535 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Certain function definitions that are meant to be overridable from | |
// user code are decorated with this macro. For some targets, this | |
// macro causes these definitions to be weak. | |
#ifndef _GLIBCXX_WEAK_DEFINITION | |
# define _GLIBCXX_WEAK_DEFINITION | |
#endif | |
# 542 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// By default, we assume that __GXX_WEAK__ also means that there is support | |
// for declaring functions as weak while not defining such functions. This | |
// allows for referring to functions provided by other libraries (e.g., | |
// libitm) without depending on them if the respective features are not used. | |
#ifndef _GLIBCXX_USE_WEAK_REF | |
# define _GLIBCXX_USE_WEAK_REF __GXX_WEAK__ | |
#endif | |
# 550 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// Conditionally enable annotations for the Transactional Memory TS on C++11. | |
// Most of the following conditions are due to limitations in the current | |
// implementation. | |
#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \ | |
&& _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201505L \ | |
&& !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \ | |
&& _GLIBCXX_USE_ALLOCATOR_NEW | |
#define _GLIBCXX_TXN_SAFE transaction_safe | |
#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic | |
#else | |
# 561 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#define _GLIBCXX_TXN_SAFE | |
#define _GLIBCXX_TXN_SAFE_DYN | |
#endif | |
# 564 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if __cplusplus > 201402L | |
// In C++17 mathematical special functions are in namespace std. | |
# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 | |
#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0 | |
# 569 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// For C++11 and C++14 they are in namespace std when requested. | |
# define _GLIBCXX_USE_STD_SPEC_FUNCS 1 | |
#endif | |
# 572 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// The remainder of the prewritten config is automatic; all the | |
// user hooks are listed above. | |
// Create a boolean flag to be used to determine if --fast-math is set. | |
#ifdef __FAST_MATH__ | |
# define _GLIBCXX_FAST_MATH 1 | |
#else | |
# 580 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# define _GLIBCXX_FAST_MATH 0 | |
#endif | |
# 582 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// This marks string literals in header files to be extracted for eventual | |
// translation. It is primarily used for messages in thrown exceptions; see | |
// src/functexcept.cc. We use __N because the more traditional _N is used | |
// for something else under certain OSes (see BADNAMES). | |
#define __N(msgid) (msgid) | |
// For example, <windows.h> is known to #define min and max as macros... | |
#undef min | |
#undef max | |
// N.B. these _GLIBCXX_USE_C99_XXX macros are defined unconditionally | |
// so they should be tested with #if not with #ifdef. | |
#if __cplusplus >= 201103L | |
# ifndef _GLIBCXX_USE_C99_MATH | |
# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH | |
# endif | |
# 599 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_COMPLEX | |
# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX | |
# endif | |
# 602 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_STDIO | |
# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO | |
# endif | |
# 605 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_STDLIB | |
# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB | |
# endif | |
# 608 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_WCHAR | |
# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR | |
# endif | |
# 611 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#else | |
# 612 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_MATH | |
# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH | |
# endif | |
# 615 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_COMPLEX | |
# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX | |
# endif | |
# 618 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_STDIO | |
# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO | |
# endif | |
# 621 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_STDLIB | |
# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB | |
# endif | |
# 624 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# ifndef _GLIBCXX_USE_C99_WCHAR | |
# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR | |
# endif | |
# 627 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif | |
# 628 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
// End of prewritten config; the settings discovered at configure time follow. | |
/* config.h. Generated from config.h.in by configure. */ | |
/* config.h.in. Generated from configure.ac by autoheader. */ | |
/* Define to 1 if you have the `acosf' function. */ | |
#define _GLIBCXX_HAVE_ACOSF 1 | |
/* Define to 1 if you have the `acosl' function. */ | |
#define _GLIBCXX_HAVE_ACOSL 1 | |
/* Define to 1 if you have the `aligned_alloc' function. */ | |
#define _GLIBCXX_HAVE_ALIGNED_ALLOC 1 | |
/* Define to 1 if you have the `asinf' function. */ | |
#define _GLIBCXX_HAVE_ASINF 1 | |
/* Define to 1 if you have the `asinl' function. */ | |
#define _GLIBCXX_HAVE_ASINL 1 | |
/* Define to 1 if the target assembler supports .symver directive. */ | |
#define _GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE 1 | |
/* Define to 1 if you have the `atan2f' function. */ | |
#define _GLIBCXX_HAVE_ATAN2F 1 | |
/* Define to 1 if you have the `atan2l' function. */ | |
#define _GLIBCXX_HAVE_ATAN2L 1 | |
/* Define to 1 if you have the `atanf' function. */ | |
#define _GLIBCXX_HAVE_ATANF 1 | |
/* Define to 1 if you have the `atanl' function. */ | |
#define _GLIBCXX_HAVE_ATANL 1 | |
/* Define to 1 if you have the `at_quick_exit' function. */ | |
#define _GLIBCXX_HAVE_AT_QUICK_EXIT 1 | |
/* Define to 1 if the target assembler supports thread-local storage. */ | |
/* #undef _GLIBCXX_HAVE_CC_TLS */ | |
/* Define to 1 if you have the `ceilf' function. */ | |
#define _GLIBCXX_HAVE_CEILF 1 | |
/* Define to 1 if you have the `ceill' function. */ | |
#define _GLIBCXX_HAVE_CEILL 1 | |
/* Define to 1 if you have the <complex.h> header file. */ | |
#define _GLIBCXX_HAVE_COMPLEX_H 1 | |
/* Define to 1 if you have the `cosf' function. */ | |
#define _GLIBCXX_HAVE_COSF 1 | |
/* Define to 1 if you have the `coshf' function. */ | |
#define _GLIBCXX_HAVE_COSHF 1 | |
/* Define to 1 if you have the `coshl' function. */ | |
#define _GLIBCXX_HAVE_COSHL 1 | |
/* Define to 1 if you have the `cosl' function. */ | |
#define _GLIBCXX_HAVE_COSL 1 | |
/* Define to 1 if you have the <dirent.h> header file. */ | |
#define _GLIBCXX_HAVE_DIRENT_H 1 | |
/* Define to 1 if you have the <dlfcn.h> header file. */ | |
#define _GLIBCXX_HAVE_DLFCN_H 1 | |
/* Define if EBADMSG exists. */ | |
#define _GLIBCXX_HAVE_EBADMSG 1 | |
/* Define if ECANCELED exists. */ | |
#define _GLIBCXX_HAVE_ECANCELED 1 | |
/* Define if ECHILD exists. */ | |
#define _GLIBCXX_HAVE_ECHILD 1 | |
/* Define if EIDRM exists. */ | |
#define _GLIBCXX_HAVE_EIDRM 1 | |
/* Define to 1 if you have the <endian.h> header file. */ | |
#define _GLIBCXX_HAVE_ENDIAN_H 1 | |
/* Define if ENODATA exists. */ | |
#define _GLIBCXX_HAVE_ENODATA 1 | |
/* Define if ENOLINK exists. */ | |
#define _GLIBCXX_HAVE_ENOLINK 1 | |
/* Define if ENOSPC exists. */ | |
#define _GLIBCXX_HAVE_ENOSPC 1 | |
/* Define if ENOSR exists. */ | |
#define _GLIBCXX_HAVE_ENOSR 1 | |
/* Define if ENOSTR exists. */ | |
#define _GLIBCXX_HAVE_ENOSTR 1 | |
/* Define if ENOTRECOVERABLE exists. */ | |
#define _GLIBCXX_HAVE_ENOTRECOVERABLE 1 | |
/* Define if ENOTSUP exists. */ | |
#define _GLIBCXX_HAVE_ENOTSUP 1 | |
/* Define if EOVERFLOW exists. */ | |
#define _GLIBCXX_HAVE_EOVERFLOW 1 | |
/* Define if EOWNERDEAD exists. */ | |
#define _GLIBCXX_HAVE_EOWNERDEAD 1 | |
/* Define if EPERM exists. */ | |
#define _GLIBCXX_HAVE_EPERM 1 | |
/* Define if EPROTO exists. */ | |
#define _GLIBCXX_HAVE_EPROTO 1 | |
/* Define if ETIME exists. */ | |
#define _GLIBCXX_HAVE_ETIME 1 | |
/* Define if ETIMEDOUT exists. */ | |
#define _GLIBCXX_HAVE_ETIMEDOUT 1 | |
/* Define if ETXTBSY exists. */ | |
#define _GLIBCXX_HAVE_ETXTBSY 1 | |
/* Define if EWOULDBLOCK exists. */ | |
#define _GLIBCXX_HAVE_EWOULDBLOCK 1 | |
/* Define to 1 if GCC 4.6 supported std::exception_ptr for the target */ | |
#define _GLIBCXX_HAVE_EXCEPTION_PTR_SINCE_GCC46 1 | |
/* Define to 1 if you have the <execinfo.h> header file. */ | |
#define _GLIBCXX_HAVE_EXECINFO_H 1 | |
/* Define to 1 if you have the `expf' function. */ | |
#define _GLIBCXX_HAVE_EXPF 1 | |
/* Define to 1 if you have the `expl' function. */ | |
#define _GLIBCXX_HAVE_EXPL 1 | |
/* Define to 1 if you have the `fabsf' function. */ | |
#define _GLIBCXX_HAVE_FABSF 1 | |
/* Define to 1 if you have the `fabsl' function. */ | |
#define _GLIBCXX_HAVE_FABSL 1 | |
/* Define to 1 if you have the <fcntl.h> header file. */ | |
#define _GLIBCXX_HAVE_FCNTL_H 1 | |
/* Define to 1 if you have the <fenv.h> header file. */ | |
#define _GLIBCXX_HAVE_FENV_H 1 | |
/* Define to 1 if you have the `finite' function. */ | |
#define _GLIBCXX_HAVE_FINITE 1 | |
/* Define to 1 if you have the `finitef' function. */ | |
#define _GLIBCXX_HAVE_FINITEF 1 | |
/* Define to 1 if you have the `finitel' function. */ | |
#define _GLIBCXX_HAVE_FINITEL 1 | |
/* Define to 1 if you have the <float.h> header file. */ | |
#define _GLIBCXX_HAVE_FLOAT_H 1 | |
/* Define to 1 if you have the `floorf' function. */ | |
#define _GLIBCXX_HAVE_FLOORF 1 | |
/* Define to 1 if you have the `floorl' function. */ | |
#define _GLIBCXX_HAVE_FLOORL 1 | |
/* Define to 1 if you have the `fmodf' function. */ | |
#define _GLIBCXX_HAVE_FMODF 1 | |
/* Define to 1 if you have the `fmodl' function. */ | |
#define _GLIBCXX_HAVE_FMODL 1 | |
/* Define to 1 if you have the `fpclass' function. */ | |
/* #undef _GLIBCXX_HAVE_FPCLASS */ | |
/* Define to 1 if you have the <fp.h> header file. */ | |
/* #undef _GLIBCXX_HAVE_FP_H */ | |
/* Define to 1 if you have the `frexpf' function. */ | |
#define _GLIBCXX_HAVE_FREXPF 1 | |
/* Define to 1 if you have the `frexpl' function. */ | |
#define _GLIBCXX_HAVE_FREXPL 1 | |
/* Define if _Unwind_GetIPInfo is available. */ | |
#define _GLIBCXX_HAVE_GETIPINFO 1 | |
/* Define if gets is available in <stdio.h> before C++14. */ | |
#define _GLIBCXX_HAVE_GETS 1 | |
/* Define to 1 if you have the `hypot' function. */ | |
#define _GLIBCXX_HAVE_HYPOT 1 | |
/* Define to 1 if you have the `hypotf' function. */ | |
#define _GLIBCXX_HAVE_HYPOTF 1 | |
/* Define to 1 if you have the `hypotl' function. */ | |
#define _GLIBCXX_HAVE_HYPOTL 1 | |
/* Define if you have the iconv() function. */ | |
#define _GLIBCXX_HAVE_ICONV 1 | |
/* Define to 1 if you have the <ieeefp.h> header file. */ | |
/* #undef _GLIBCXX_HAVE_IEEEFP_H */ | |
/* Define if int64_t is available in <stdint.h>. */ | |
#define _GLIBCXX_HAVE_INT64_T 1 | |
/* Define if int64_t is a long. */ | |
#define _GLIBCXX_HAVE_INT64_T_LONG 1 | |
/* Define if int64_t is a long long. */ | |
/* #undef _GLIBCXX_HAVE_INT64_T_LONG_LONG */ | |
/* Define to 1 if you have the <inttypes.h> header file. */ | |
#define _GLIBCXX_HAVE_INTTYPES_H 1 | |
/* Define to 1 if you have the `isinf' function. */ | |
/* #undef _GLIBCXX_HAVE_ISINF */ | |
/* Define to 1 if you have the `isinff' function. */ | |
#define _GLIBCXX_HAVE_ISINFF 1 | |
/* Define to 1 if you have the `isinfl' function. */ | |
#define _GLIBCXX_HAVE_ISINFL 1 | |
/* Define to 1 if you have the `isnan' function. */ | |
/* #undef _GLIBCXX_HAVE_ISNAN */ | |
/* Define to 1 if you have the `isnanf' function. */ | |
#define _GLIBCXX_HAVE_ISNANF 1 | |
/* Define to 1 if you have the `isnanl' function. */ | |
#define _GLIBCXX_HAVE_ISNANL 1 | |
/* Defined if iswblank exists. */ | |
#define _GLIBCXX_HAVE_ISWBLANK 1 | |
/* Define if LC_MESSAGES is available in <locale.h>. */ | |
#define _GLIBCXX_HAVE_LC_MESSAGES 1 | |
/* Define to 1 if you have the `ldexpf' function. */ | |
#define _GLIBCXX_HAVE_LDEXPF 1 | |
/* Define to 1 if you have the `ldexpl' function. */ | |
#define _GLIBCXX_HAVE_LDEXPL 1 | |
/* Define to 1 if you have the <libintl.h> header file. */ | |
#define _GLIBCXX_HAVE_LIBINTL_H 1 | |
/* Only used in build directory testsuite_hooks.h. */ | |
#define _GLIBCXX_HAVE_LIMIT_AS 1 | |
/* Only used in build directory testsuite_hooks.h. */ | |
#define _GLIBCXX_HAVE_LIMIT_DATA 1 | |
/* Only used in build directory testsuite_hooks.h. */ | |
#define _GLIBCXX_HAVE_LIMIT_FSIZE 1 | |
/* Only used in build directory testsuite_hooks.h. */ | |
#define _GLIBCXX_HAVE_LIMIT_RSS 1 | |
/* Only used in build directory testsuite_hooks.h. */ | |
#define _GLIBCXX_HAVE_LIMIT_VMEM 0 | |
/* Define if futex syscall is available. */ | |
#define _GLIBCXX_HAVE_LINUX_FUTEX 1 | |
/* Define to 1 if you have the <locale.h> header file. */ | |
#define _GLIBCXX_HAVE_LOCALE_H 1 | |
/* Define to 1 if you have the `log10f' function. */ | |
#define _GLIBCXX_HAVE_LOG10F 1 | |
/* Define to 1 if you have the `log10l' function. */ | |
#define _GLIBCXX_HAVE_LOG10L 1 | |
/* Define to 1 if you have the `logf' function. */ | |
#define _GLIBCXX_HAVE_LOGF 1 | |
/* Define to 1 if you have the `logl' function. */ | |
#define _GLIBCXX_HAVE_LOGL 1 | |
/* Define to 1 if you have the <machine/endian.h> header file. */ | |
/* #undef _GLIBCXX_HAVE_MACHINE_ENDIAN_H */ | |
/* Define to 1 if you have the <machine/param.h> header file. */ | |
/* #undef _GLIBCXX_HAVE_MACHINE_PARAM_H */ | |
/* Define if mbstate_t exists in wchar.h. */ | |
#define _GLIBCXX_HAVE_MBSTATE_T 1 | |
/* Define to 1 if you have the `memalign' function. */ | |
#define _GLIBCXX_HAVE_MEMALIGN 1 | |
/* Define to 1 if you have the <memory.h> header file. */ | |
#define _GLIBCXX_HAVE_MEMORY_H 1 | |
/* Define to 1 if you have the `modf' function. */ | |
#define _GLIBCXX_HAVE_MODF 1 | |
/* Define to 1 if you have the `modff' function. */ | |
#define _GLIBCXX_HAVE_MODFF 1 | |
/* Define to 1 if you have the `modfl' function. */ | |
#define _GLIBCXX_HAVE_MODFL 1 | |
/* Define to 1 if you have the <nan.h> header file. */ | |
/* #undef _GLIBCXX_HAVE_NAN_H */ | |
/* Define if <math.h> defines obsolete isinf function. */ | |
/* #undef _GLIBCXX_HAVE_OBSOLETE_ISINF */ | |
/* Define if <math.h> defines obsolete isnan function. */ | |
/* #undef _GLIBCXX_HAVE_OBSOLETE_ISNAN */ | |
/* Define if poll is available in <poll.h>. */ | |
#define _GLIBCXX_HAVE_POLL 1 | |
/* Define to 1 if you have the `posix_memalign' function. */ | |
#define _GLIBCXX_HAVE_POSIX_MEMALIGN 1 | |
/* Define to 1 if you have the `powf' function. */ | |
#define _GLIBCXX_HAVE_POWF 1 | |
/* Define to 1 if you have the `powl' function. */ | |
#define _GLIBCXX_HAVE_POWL 1 | |
/* Define to 1 if you have the `qfpclass' function. */ | |
/* #undef _GLIBCXX_HAVE_QFPCLASS */ | |
/* Define to 1 if you have the `quick_exit' function. */ | |
#define _GLIBCXX_HAVE_QUICK_EXIT 1 | |
/* Define to 1 if you have the `setenv' function. */ | |
#define _GLIBCXX_HAVE_SETENV 1 | |
/* Define to 1 if you have the `sincos' function. */ | |
#define _GLIBCXX_HAVE_SINCOS 1 | |
/* Define to 1 if you have the `sincosf' function. */ | |
#define _GLIBCXX_HAVE_SINCOSF 1 | |
/* Define to 1 if you have the `sincosl' function. */ | |
#define _GLIBCXX_HAVE_SINCOSL 1 | |
/* Define to 1 if you have the `sinf' function. */ | |
#define _GLIBCXX_HAVE_SINF 1 | |
/* Define to 1 if you have the `sinhf' function. */ | |
#define _GLIBCXX_HAVE_SINHF 1 | |
/* Define to 1 if you have the `sinhl' function. */ | |
#define _GLIBCXX_HAVE_SINHL 1 | |
/* Define to 1 if you have the `sinl' function. */ | |
#define _GLIBCXX_HAVE_SINL 1 | |
/* Defined if sleep exists. */ | |
/* #undef _GLIBCXX_HAVE_SLEEP */ | |
/* Define to 1 if you have the `sqrtf' function. */ | |
#define _GLIBCXX_HAVE_SQRTF 1 | |
/* Define to 1 if you have the `sqrtl' function. */ | |
#define _GLIBCXX_HAVE_SQRTL 1 | |
/* Define to 1 if you have the <stdalign.h> header file. */ | |
#define _GLIBCXX_HAVE_STDALIGN_H 1 | |
/* Define to 1 if you have the <stdbool.h> header file. */ | |
#define _GLIBCXX_HAVE_STDBOOL_H 1 | |
/* Define to 1 if you have the <stdint.h> header file. */ | |
#define _GLIBCXX_HAVE_STDINT_H 1 | |
/* Define to 1 if you have the <stdlib.h> header file. */ | |
#define _GLIBCXX_HAVE_STDLIB_H 1 | |
/* Define if strerror_l is available in <string.h>. */ | |
#define _GLIBCXX_HAVE_STRERROR_L 1 | |
/* Define if strerror_r is available in <string.h>. */ | |
#define _GLIBCXX_HAVE_STRERROR_R 1 | |
/* Define to 1 if you have the <strings.h> header file. */ | |
#define _GLIBCXX_HAVE_STRINGS_H 1 | |
/* Define to 1 if you have the <string.h> header file. */ | |
#define _GLIBCXX_HAVE_STRING_H 1 | |
/* Define to 1 if you have the `strtof' function. */ | |
#define _GLIBCXX_HAVE_STRTOF 1 | |
/* Define to 1 if you have the `strtold' function. */ | |
#define _GLIBCXX_HAVE_STRTOLD 1 | |
/* Define to 1 if `d_type' is a member of `struct dirent'. */ | |
#define _GLIBCXX_HAVE_STRUCT_DIRENT_D_TYPE 1 | |
/* Define if strxfrm_l is available in <string.h>. */ | |
#define _GLIBCXX_HAVE_STRXFRM_L 1 | |
/* Define to 1 if the target runtime linker supports binding the same symbol | |
to different versions. */ | |
#define _GLIBCXX_HAVE_SYMVER_SYMBOL_RENAMING_RUNTIME_SUPPORT 1 | |
/* Define to 1 if you have the <sys/filio.h> header file. */ | |
/* #undef _GLIBCXX_HAVE_SYS_FILIO_H */ | |
/* Define to 1 if you have the <sys/ioctl.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_IOCTL_H 1 | |
/* Define to 1 if you have the <sys/ipc.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_IPC_H 1 | |
/* Define to 1 if you have the <sys/isa_defs.h> header file. */ | |
/* #undef _GLIBCXX_HAVE_SYS_ISA_DEFS_H */ | |
/* Define to 1 if you have the <sys/machine.h> header file. */ | |
/* #undef _GLIBCXX_HAVE_SYS_MACHINE_H */ | |
/* Define to 1 if you have the <sys/param.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_PARAM_H 1 | |
/* Define to 1 if you have the <sys/resource.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_RESOURCE_H 1 | |
/* Define to 1 if you have a suitable <sys/sdt.h> header file */ | |
/* #undef _GLIBCXX_HAVE_SYS_SDT_H */ | |
/* Define to 1 if you have the <sys/sem.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_SEM_H 1 | |
/* Define to 1 if you have the <sys/statvfs.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_STATVFS_H 1 | |
/* Define to 1 if you have the <sys/stat.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_STAT_H 1 | |
/* Define to 1 if you have the <sys/sysinfo.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_SYSINFO_H 1 | |
/* Define to 1 if you have the <sys/time.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_TIME_H 1 | |
/* Define to 1 if you have the <sys/types.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_TYPES_H 1 | |
/* Define to 1 if you have the <sys/uio.h> header file. */ | |
#define _GLIBCXX_HAVE_SYS_UIO_H 1 | |
/* Define if S_IFREG is available in <sys/stat.h>. */ | |
/* #undef _GLIBCXX_HAVE_S_IFREG */ | |
/* Define if S_IFREG is available in <sys/stat.h>. */ | |
#define _GLIBCXX_HAVE_S_ISREG 1 | |
/* Define to 1 if you have the `tanf' function. */ | |
#define _GLIBCXX_HAVE_TANF 1 | |
/* Define to 1 if you have the `tanhf' function. */ | |
#define _GLIBCXX_HAVE_TANHF 1 | |
/* Define to 1 if you have the `tanhl' function. */ | |
#define _GLIBCXX_HAVE_TANHL 1 | |
/* Define to 1 if you have the `tanl' function. */ | |
#define _GLIBCXX_HAVE_TANL 1 | |
/* Define to 1 if you have the <tgmath.h> header file. */ | |
#define _GLIBCXX_HAVE_TGMATH_H 1 | |
/* Define to 1 if the target supports thread-local storage. */ | |
#define _GLIBCXX_HAVE_TLS 1 | |
/* Define to 1 if you have the <uchar.h> header file. */ | |
#define _GLIBCXX_HAVE_UCHAR_H 1 | |
/* Define to 1 if you have the <unistd.h> header file. */ | |
#define _GLIBCXX_HAVE_UNISTD_H 1 | |
/* Defined if usleep exists. */ | |
/* #undef _GLIBCXX_HAVE_USLEEP */ | |
/* Define to 1 if you have the <utime.h> header file. */ | |
#define _GLIBCXX_HAVE_UTIME_H 1 | |
/* Defined if vfwscanf exists. */ | |
#define _GLIBCXX_HAVE_VFWSCANF 1 | |
/* Defined if vswscanf exists. */ | |
#define _GLIBCXX_HAVE_VSWSCANF 1 | |
/* Defined if vwscanf exists. */ | |
#define _GLIBCXX_HAVE_VWSCANF 1 | |
/* Define to 1 if you have the <wchar.h> header file. */ | |
#define _GLIBCXX_HAVE_WCHAR_H 1 | |
/* Defined if wcstof exists. */ | |
#define _GLIBCXX_HAVE_WCSTOF 1 | |
/* Define to 1 if you have the <wctype.h> header file. */ | |
#define _GLIBCXX_HAVE_WCTYPE_H 1 | |
/* Defined if Sleep exists. */ | |
/* #undef _GLIBCXX_HAVE_WIN32_SLEEP */ | |
/* Define if writev is available in <sys/uio.h>. */ | |
#define _GLIBCXX_HAVE_WRITEV 1 | |
/* Define to 1 if you have the `_acosf' function. */ | |
/* #undef _GLIBCXX_HAVE__ACOSF */ | |
/* Define to 1 if you have the `_acosl' function. */ | |
/* #undef _GLIBCXX_HAVE__ACOSL */ | |
/* Define to 1 if you have the `_aligned_malloc' function. */ | |
/* #undef _GLIBCXX_HAVE__ALIGNED_MALLOC */ | |
/* Define to 1 if you have the `_asinf' function. */ | |
/* #undef _GLIBCXX_HAVE__ASINF */ | |
/* Define to 1 if you have the `_asinl' function. */ | |
/* #undef _GLIBCXX_HAVE__ASINL */ | |
/* Define to 1 if you have the `_atan2f' function. */ | |
/* #undef _GLIBCXX_HAVE__ATAN2F */ | |
/* Define to 1 if you have the `_atan2l' function. */ | |
/* #undef _GLIBCXX_HAVE__ATAN2L */ | |
/* Define to 1 if you have the `_atanf' function. */ | |
/* #undef _GLIBCXX_HAVE__ATANF */ | |
/* Define to 1 if you have the `_atanl' function. */ | |
/* #undef _GLIBCXX_HAVE__ATANL */ | |
/* Define to 1 if you have the `_ceilf' function. */ | |
/* #undef _GLIBCXX_HAVE__CEILF */ | |
/* Define to 1 if you have the `_ceill' function. */ | |
/* #undef _GLIBCXX_HAVE__CEILL */ | |
/* Define to 1 if you have the `_cosf' function. */ | |
/* #undef _GLIBCXX_HAVE__COSF */ | |
/* Define to 1 if you have the `_coshf' function. */ | |
/* #undef _GLIBCXX_HAVE__COSHF */ | |
/* Define to 1 if you have the `_coshl' function. */ | |
/* #undef _GLIBCXX_HAVE__COSHL */ | |
/* Define to 1 if you have the `_cosl' function. */ | |
/* #undef _GLIBCXX_HAVE__COSL */ | |
/* Define to 1 if you have the `_expf' function. */ | |
/* #undef _GLIBCXX_HAVE__EXPF */ | |
/* Define to 1 if you have the `_expl' function. */ | |
/* #undef _GLIBCXX_HAVE__EXPL */ | |
/* Define to 1 if you have the `_fabsf' function. */ | |
/* #undef _GLIBCXX_HAVE__FABSF */ | |
/* Define to 1 if you have the `_fabsl' function. */ | |
/* #undef _GLIBCXX_HAVE__FABSL */ | |
/* Define to 1 if you have the `_finite' function. */ | |
/* #undef _GLIBCXX_HAVE__FINITE */ | |
/* Define to 1 if you have the `_finitef' function. */ | |
/* #undef _GLIBCXX_HAVE__FINITEF */ | |
/* Define to 1 if you have the `_finitel' function. */ | |
/* #undef _GLIBCXX_HAVE__FINITEL */ | |
/* Define to 1 if you have the `_floorf' function. */ | |
/* #undef _GLIBCXX_HAVE__FLOORF */ | |
/* Define to 1 if you have the `_floorl' function. */ | |
/* #undef _GLIBCXX_HAVE__FLOORL */ | |
/* Define to 1 if you have the `_fmodf' function. */ | |
/* #undef _GLIBCXX_HAVE__FMODF */ | |
/* Define to 1 if you have the `_fmodl' function. */ | |
/* #undef _GLIBCXX_HAVE__FMODL */ | |
/* Define to 1 if you have the `_fpclass' function. */ | |
/* #undef _GLIBCXX_HAVE__FPCLASS */ | |
/* Define to 1 if you have the `_frexpf' function. */ | |
/* #undef _GLIBCXX_HAVE__FREXPF */ | |
/* Define to 1 if you have the `_frexpl' function. */ | |
/* #undef _GLIBCXX_HAVE__FREXPL */ | |
/* Define to 1 if you have the `_hypot' function. */ | |
/* #undef _GLIBCXX_HAVE__HYPOT */ | |
/* Define to 1 if you have the `_hypotf' function. */ | |
/* #undef _GLIBCXX_HAVE__HYPOTF */ | |
/* Define to 1 if you have the `_hypotl' function. */ | |
/* #undef _GLIBCXX_HAVE__HYPOTL */ | |
/* Define to 1 if you have the `_isinf' function. */ | |
/* #undef _GLIBCXX_HAVE__ISINF */ | |
/* Define to 1 if you have the `_isinff' function. */ | |
/* #undef _GLIBCXX_HAVE__ISINFF */ | |
/* Define to 1 if you have the `_isinfl' function. */ | |
/* #undef _GLIBCXX_HAVE__ISINFL */ | |
/* Define to 1 if you have the `_isnan' function. */ | |
/* #undef _GLIBCXX_HAVE__ISNAN */ | |
/* Define to 1 if you have the `_isnanf' function. */ | |
/* #undef _GLIBCXX_HAVE__ISNANF */ | |
/* Define to 1 if you have the `_isnanl' function. */ | |
/* #undef _GLIBCXX_HAVE__ISNANL */ | |
/* Define to 1 if you have the `_ldexpf' function. */ | |
/* #undef _GLIBCXX_HAVE__LDEXPF */ | |
/* Define to 1 if you have the `_ldexpl' function. */ | |
/* #undef _GLIBCXX_HAVE__LDEXPL */ | |
/* Define to 1 if you have the `_log10f' function. */ | |
/* #undef _GLIBCXX_HAVE__LOG10F */ | |
/* Define to 1 if you have the `_log10l' function. */ | |
/* #undef _GLIBCXX_HAVE__LOG10L */ | |
/* Define to 1 if you have the `_logf' function. */ | |
/* #undef _GLIBCXX_HAVE__LOGF */ | |
/* Define to 1 if you have the `_logl' function. */ | |
/* #undef _GLIBCXX_HAVE__LOGL */ | |
/* Define to 1 if you have the `_modf' function. */ | |
/* #undef _GLIBCXX_HAVE__MODF */ | |
/* Define to 1 if you have the `_modff' function. */ | |
/* #undef _GLIBCXX_HAVE__MODFF */ | |
/* Define to 1 if you have the `_modfl' function. */ | |
/* #undef _GLIBCXX_HAVE__MODFL */ | |
/* Define to 1 if you have the `_powf' function. */ | |
/* #undef _GLIBCXX_HAVE__POWF */ | |
/* Define to 1 if you have the `_powl' function. */ | |
/* #undef _GLIBCXX_HAVE__POWL */ | |
/* Define to 1 if you have the `_qfpclass' function. */ | |
/* #undef _GLIBCXX_HAVE__QFPCLASS */ | |
/* Define to 1 if you have the `_sincos' function. */ | |
/* #undef _GLIBCXX_HAVE__SINCOS */ | |
/* Define to 1 if you have the `_sincosf' function. */ | |
/* #undef _GLIBCXX_HAVE__SINCOSF */ | |
/* Define to 1 if you have the `_sincosl' function. */ | |
/* #undef _GLIBCXX_HAVE__SINCOSL */ | |
/* Define to 1 if you have the `_sinf' function. */ | |
/* #undef _GLIBCXX_HAVE__SINF */ | |
/* Define to 1 if you have the `_sinhf' function. */ | |
/* #undef _GLIBCXX_HAVE__SINHF */ | |
/* Define to 1 if you have the `_sinhl' function. */ | |
/* #undef _GLIBCXX_HAVE__SINHL */ | |
/* Define to 1 if you have the `_sinl' function. */ | |
/* #undef _GLIBCXX_HAVE__SINL */ | |
/* Define to 1 if you have the `_sqrtf' function. */ | |
/* #undef _GLIBCXX_HAVE__SQRTF */ | |
/* Define to 1 if you have the `_sqrtl' function. */ | |
/* #undef _GLIBCXX_HAVE__SQRTL */ | |
/* Define to 1 if you have the `_tanf' function. */ | |
/* #undef _GLIBCXX_HAVE__TANF */ | |
/* Define to 1 if you have the `_tanhf' function. */ | |
/* #undef _GLIBCXX_HAVE__TANHF */ | |
/* Define to 1 if you have the `_tanhl' function. */ | |
/* #undef _GLIBCXX_HAVE__TANHL */ | |
/* Define to 1 if you have the `_tanl' function. */ | |
/* #undef _GLIBCXX_HAVE__TANL */ | |
/* Define to 1 if you have the `__cxa_thread_atexit' function. */ | |
/* #undef _GLIBCXX_HAVE___CXA_THREAD_ATEXIT */ | |
/* Define to 1 if you have the `__cxa_thread_atexit_impl' function. */ | |
#define _GLIBCXX_HAVE___CXA_THREAD_ATEXIT_IMPL 1 | |
/* Define as const if the declaration of iconv() needs const. */ | |
#define _GLIBCXX_ICONV_CONST | |
/* Define to the sub-directory in which libtool stores uninstalled libraries. | |
*/ | |
#define LT_OBJDIR ".libs/" | |
/* Name of package */ | |
/* #undef _GLIBCXX_PACKAGE */ | |
/* Define to the address where bug reports for this package should be sent. */ | |
#define _GLIBCXX_PACKAGE_BUGREPORT "" | |
/* Define to the full name of this package. */ | |
#define _GLIBCXX_PACKAGE_NAME "package-unused" | |
/* Define to the full name and version of this package. */ | |
#define _GLIBCXX_PACKAGE_STRING "package-unused version-unused" | |
/* Define to the one symbol short name of this package. */ | |
#define _GLIBCXX_PACKAGE_TARNAME "libstdc++" | |
/* Define to the home page for this package. */ | |
#define _GLIBCXX_PACKAGE_URL "" | |
/* Define to the version of this package. */ | |
#define _GLIBCXX_PACKAGE__GLIBCXX_VERSION "version-unused" | |
/* The size of `char', as computed by sizeof. */ | |
/* #undef SIZEOF_CHAR */ | |
/* The size of `int', as computed by sizeof. */ | |
/* #undef SIZEOF_INT */ | |
/* The size of `long', as computed by sizeof. */ | |
/* #undef SIZEOF_LONG */ | |
/* The size of `short', as computed by sizeof. */ | |
/* #undef SIZEOF_SHORT */ | |
/* The size of `void *', as computed by sizeof. */ | |
/* #undef SIZEOF_VOID_P */ | |
/* Define to 1 if you have the ANSI C header files. */ | |
#define STDC_HEADERS 1 | |
/* Version number of package */ | |
/* #undef _GLIBCXX_VERSION */ | |
/* Define if C99 functions in <complex.h> should be used in <complex> for | |
C++11. Using compiler builtins for these functions requires corresponding | |
C99 library functions to be present. */ | |
#define _GLIBCXX11_USE_C99_COMPLEX 1 | |
/* Define if C99 functions or macros in <math.h> should be imported in <cmath> | |
in namespace std for C++11. */ | |
#define _GLIBCXX11_USE_C99_MATH 1 | |
/* Define if C99 functions or macros in <stdio.h> should be imported in | |
<cstdio> in namespace std for C++11. */ | |
#define _GLIBCXX11_USE_C99_STDIO 1 | |
/* Define if C99 functions or macros in <stdlib.h> should be imported in | |
<cstdlib> in namespace std for C++11. */ | |
#define _GLIBCXX11_USE_C99_STDLIB 1 | |
/* Define if C99 functions or macros in <wchar.h> should be imported in | |
<cwchar> in namespace std for C++11. */ | |
#define _GLIBCXX11_USE_C99_WCHAR 1 | |
/* Define if C99 functions in <complex.h> should be used in <complex> for | |
C++98. Using compiler builtins for these functions requires corresponding | |
C99 library functions to be present. */ | |
#define _GLIBCXX98_USE_C99_COMPLEX 1 | |
/* Define if C99 functions or macros in <math.h> should be imported in <cmath> | |
in namespace std for C++98. */ | |
#define _GLIBCXX98_USE_C99_MATH 1 | |
/* Define if C99 functions or macros in <stdio.h> should be imported in | |
<cstdio> in namespace std for C++98. */ | |
#define _GLIBCXX98_USE_C99_STDIO 1 | |
/* Define if C99 functions or macros in <stdlib.h> should be imported in | |
<cstdlib> in namespace std for C++98. */ | |
#define _GLIBCXX98_USE_C99_STDLIB 1 | |
/* Define if C99 functions or macros in <wchar.h> should be imported in | |
<cwchar> in namespace std for C++98. */ | |
#define _GLIBCXX98_USE_C99_WCHAR 1 | |
/* Define if the compiler supports C++11 atomics. */ | |
#define _GLIBCXX_ATOMIC_BUILTINS 1 | |
/* Define to use concept checking code from the boost libraries. */ | |
/* #undef _GLIBCXX_CONCEPT_CHECKS */ | |
/* Define to 1 if a fully dynamic basic_string is wanted, 0 to disable, | |
undefined for platform defaults */ | |
#define _GLIBCXX_FULLY_DYNAMIC_STRING 0 | |
/* Define if gthreads library is available. */ | |
#define _GLIBCXX_HAS_GTHREADS 1 | |
/* Define to 1 if a full hosted library is built, or 0 if freestanding. */ | |
#define _GLIBCXX_HOSTED 1 | |
/* Define if compatibility should be provided for -mlong-double-64. */ | |
/* Define to the letter to which size_t is mangled. */ | |
#define _GLIBCXX_MANGLE_SIZE_T m | |
/* Define if C99 llrint and llround functions are missing from <math.h>. */ | |
/* #undef _GLIBCXX_NO_C99_ROUNDING_FUNCS */ | |
/* Define if ptrdiff_t is int. */ | |
/* #undef _GLIBCXX_PTRDIFF_T_IS_INT */ | |
/* Define if using setrlimit to set resource limits during "make check" */ | |
#define _GLIBCXX_RES_LIMITS 1 | |
/* Define if size_t is unsigned int. */ | |
/* #undef _GLIBCXX_SIZE_T_IS_UINT */ | |
/* Define to the value of the EOF integer constant. */ | |
#define _GLIBCXX_STDIO_EOF -1 | |
/* Define to the value of the SEEK_CUR integer constant. */ | |
#define _GLIBCXX_STDIO_SEEK_CUR 1 | |
/* Define to the value of the SEEK_END integer constant. */ | |
#define _GLIBCXX_STDIO_SEEK_END 2 | |
/* Define to use symbol versioning in the shared library. */ | |
#define _GLIBCXX_SYMVER 1 | |
/* Define to use darwin versioning in the shared library. */ | |
/* #undef _GLIBCXX_SYMVER_DARWIN */ | |
/* Define to use GNU versioning in the shared library. */ | |
#define _GLIBCXX_SYMVER_GNU 1 | |
/* Define to use GNU namespace versioning in the shared library. */ | |
/* #undef _GLIBCXX_SYMVER_GNU_NAMESPACE */ | |
/* Define to use Sun versioning in the shared library. */ | |
/* #undef _GLIBCXX_SYMVER_SUN */ | |
/* Define if C11 functions in <uchar.h> should be imported into namespace std | |
in <cuchar>. */ | |
#define _GLIBCXX_USE_C11_UCHAR_CXX11 1 | |
/* Define if C99 functions or macros from <wchar.h>, <math.h>, <complex.h>, | |
<stdio.h>, and <stdlib.h> can be used or exposed. */ | |
#define _GLIBCXX_USE_C99 1 | |
/* Define if C99 functions in <complex.h> should be used in <tr1/complex>. | |
Using compiler builtins for these functions requires corresponding C99 | |
library functions to be present. */ | |
#define _GLIBCXX_USE_C99_COMPLEX_TR1 1 | |
/* Define if C99 functions in <ctype.h> should be imported in <tr1/cctype> in | |
namespace std::tr1. */ | |
#define _GLIBCXX_USE_C99_CTYPE_TR1 1 | |
/* Define if C99 functions in <fenv.h> should be imported in <tr1/cfenv> in | |
namespace std::tr1. */ | |
#define _GLIBCXX_USE_C99_FENV_TR1 1 | |
/* Define if C99 functions in <inttypes.h> should be imported in | |
<tr1/cinttypes> in namespace std::tr1. */ | |
#define _GLIBCXX_USE_C99_INTTYPES_TR1 1 | |
/* Define if wchar_t C99 functions in <inttypes.h> should be imported in | |
<tr1/cinttypes> in namespace std::tr1. */ | |
#define _GLIBCXX_USE_C99_INTTYPES_WCHAR_T_TR1 1 | |
/* Define if C99 functions or macros in <math.h> should be imported in | |
<tr1/cmath> in namespace std::tr1. */ | |
#define _GLIBCXX_USE_C99_MATH_TR1 1 | |
/* Define if C99 types in <stdint.h> should be imported in <tr1/cstdint> in | |
namespace std::tr1. */ | |
#define _GLIBCXX_USE_C99_STDINT_TR1 1 | |
/* Defined if clock_gettime syscall has monotonic and realtime clock support. | |
*/ | |
/* #undef _GLIBCXX_USE_CLOCK_GETTIME_SYSCALL */ | |
/* Defined if clock_gettime has monotonic clock support. */ | |
#define _GLIBCXX_USE_CLOCK_MONOTONIC 1 | |
/* Defined if clock_gettime has realtime clock support. */ | |
#define _GLIBCXX_USE_CLOCK_REALTIME 1 | |
/* Define if ISO/IEC TR 24733 decimal floating point types are supported on | |
this host. */ | |
#define _GLIBCXX_USE_DECIMAL_FLOAT 1 | |
/* Define if fchmod is available in <sys/stat.h>. */ | |
#define _GLIBCXX_USE_FCHMOD 1 | |
/* Define if fchmodat is available in <sys/stat.h>. */ | |
#define _GLIBCXX_USE_FCHMODAT 1 | |
/* Define if __float128 is supported on this host. */ | |
#define _GLIBCXX_USE_FLOAT128 1 | |
/* Defined if gettimeofday is available. */ | |
#define _GLIBCXX_USE_GETTIMEOFDAY 1 | |
/* Define if get_nprocs is available in <sys/sysinfo.h>. */ | |
#define _GLIBCXX_USE_GET_NPROCS 1 | |
/* Define if __int128 is supported on this host. */ | |
#define _GLIBCXX_USE_INT128 1 | |
/* Define if LFS support is available. */ | |
#define _GLIBCXX_USE_LFS 1 | |
/* Define if code specialized for long long should be used. */ | |
#define _GLIBCXX_USE_LONG_LONG 1 | |
/* Defined if nanosleep is available. */ | |
#define _GLIBCXX_USE_NANOSLEEP 1 | |
/* Define if NLS translations are to be used. */ | |
#define _GLIBCXX_USE_NLS 1 | |
/* Define if pthreads_num_processors_np is available in <pthread.h>. */ | |
/* #undef _GLIBCXX_USE_PTHREADS_NUM_PROCESSORS_NP */ | |
/* Define if POSIX read/write locks are available in <gthr.h>. */ | |
#define _GLIBCXX_USE_PTHREAD_RWLOCK_T 1 | |
/* Define if /dev/random and /dev/urandom are available for the random_device | |
of TR1 (Chapter 5.1). */ | |
#define _GLIBCXX_USE_RANDOM_TR1 1 | |
/* Define if usable realpath is available in <stdlib.h>. */ | |
#define _GLIBCXX_USE_REALPATH 1 | |
/* Defined if sched_yield is available. */ | |
#define _GLIBCXX_USE_SCHED_YIELD 1 | |
/* Define if _SC_NPROCESSORS_ONLN is available in <unistd.h>. */ | |
#define _GLIBCXX_USE_SC_NPROCESSORS_ONLN 1 | |
/* Define if _SC_NPROC_ONLN is available in <unistd.h>. */ | |
/* #undef _GLIBCXX_USE_SC_NPROC_ONLN */ | |
/* Define if sendfile is available in <sys/sendfile.h>. */ | |
#define _GLIBCXX_USE_SENDFILE 1 | |
/* Define if struct stat has timespec members. */ | |
#define _GLIBCXX_USE_ST_MTIM 1 | |
/* Define if sysctl(), CTL_HW and HW_NCPU are available in <sys/sysctl.h>. */ | |
/* #undef _GLIBCXX_USE_SYSCTL_HW_NCPU */ | |
/* Define if obsolescent tmpnam is available in <stdio.h>. */ | |
#define _GLIBCXX_USE_TMPNAM 1 | |
/* Define if utimensat and UTIME_OMIT are available in <sys/stat.h> and | |
AT_FDCWD in <fcntl.h>. */ | |
#define _GLIBCXX_USE_UTIMENSAT 1 | |
/* Define if code specialized for wchar_t should be used. */ | |
#define _GLIBCXX_USE_WCHAR_T 1 | |
/* Define to 1 if a verbose library is built, or 0 otherwise. */ | |
#define _GLIBCXX_VERBOSE 1 | |
/* Defined if as can handle rdrand. */ | |
#define _GLIBCXX_X86_RDRAND 1 | |
/* Define to 1 if mutex_timedlock is available. */ | |
#define _GTHREAD_USE_MUTEX_TIMEDLOCK 1 | |
/* Define if all C++11 floating point overloads are available in <math.h>. */ | |
#if __cplusplus >= 201103L | |
/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */ | |
#endif | |
# 1622 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
/* Define if all C++11 integral type overloads are available in <math.h>. */ | |
#if __cplusplus >= 201103L | |
/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */ | |
#endif | |
# 1627 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF) | |
# define _GLIBCXX_HAVE_ACOSF 1 | |
# define acosf _acosf | |
#endif | |
# 1632 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL) | |
# define _GLIBCXX_HAVE_ACOSL 1 | |
# define acosl _acosl | |
#endif | |
# 1637 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF) | |
# define _GLIBCXX_HAVE_ASINF 1 | |
# define asinf _asinf | |
#endif | |
# 1642 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL) | |
# define _GLIBCXX_HAVE_ASINL 1 | |
# define asinl _asinl | |
#endif | |
# 1647 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F) | |
# define _GLIBCXX_HAVE_ATAN2F 1 | |
# define atan2f _atan2f | |
#endif | |
# 1652 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L) | |
# define _GLIBCXX_HAVE_ATAN2L 1 | |
# define atan2l _atan2l | |
#endif | |
# 1657 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF) | |
# define _GLIBCXX_HAVE_ATANF 1 | |
# define atanf _atanf | |
#endif | |
# 1662 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL) | |
# define _GLIBCXX_HAVE_ATANL 1 | |
# define atanl _atanl | |
#endif | |
# 1667 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF) | |
# define _GLIBCXX_HAVE_CEILF 1 | |
# define ceilf _ceilf | |
#endif | |
# 1672 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL) | |
# define _GLIBCXX_HAVE_CEILL 1 | |
# define ceill _ceill | |
#endif | |
# 1677 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF) | |
# define _GLIBCXX_HAVE_COSF 1 | |
# define cosf _cosf | |
#endif | |
# 1682 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF) | |
# define _GLIBCXX_HAVE_COSHF 1 | |
# define coshf _coshf | |
#endif | |
# 1687 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL) | |
# define _GLIBCXX_HAVE_COSHL 1 | |
# define coshl _coshl | |
#endif | |
# 1692 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL) | |
# define _GLIBCXX_HAVE_COSL 1 | |
# define cosl _cosl | |
#endif | |
# 1697 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF) | |
# define _GLIBCXX_HAVE_EXPF 1 | |
# define expf _expf | |
#endif | |
# 1702 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL) | |
# define _GLIBCXX_HAVE_EXPL 1 | |
# define expl _expl | |
#endif | |
# 1707 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF) | |
# define _GLIBCXX_HAVE_FABSF 1 | |
# define fabsf _fabsf | |
#endif | |
# 1712 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL) | |
# define _GLIBCXX_HAVE_FABSL 1 | |
# define fabsl _fabsl | |
#endif | |
# 1717 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE) | |
# define _GLIBCXX_HAVE_FINITE 1 | |
# define finite _finite | |
#endif | |
# 1722 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF) | |
# define _GLIBCXX_HAVE_FINITEF 1 | |
# define finitef _finitef | |
#endif | |
# 1727 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL) | |
# define _GLIBCXX_HAVE_FINITEL 1 | |
# define finitel _finitel | |
#endif | |
# 1732 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF) | |
# define _GLIBCXX_HAVE_FLOORF 1 | |
# define floorf _floorf | |
#endif | |
# 1737 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL) | |
# define _GLIBCXX_HAVE_FLOORL 1 | |
# define floorl _floorl | |
#endif | |
# 1742 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF) | |
# define _GLIBCXX_HAVE_FMODF 1 | |
# define fmodf _fmodf | |
#endif | |
# 1747 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL) | |
# define _GLIBCXX_HAVE_FMODL 1 | |
# define fmodl _fmodl | |
#endif | |
# 1752 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS) | |
# define _GLIBCXX_HAVE_FPCLASS 1 | |
# define fpclass _fpclass | |
#endif | |
# 1757 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF) | |
# define _GLIBCXX_HAVE_FREXPF 1 | |
# define frexpf _frexpf | |
#endif | |
# 1762 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL) | |
# define _GLIBCXX_HAVE_FREXPL 1 | |
# define frexpl _frexpl | |
#endif | |
# 1767 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT) | |
# define _GLIBCXX_HAVE_HYPOT 1 | |
# define hypot _hypot | |
#endif | |
# 1772 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF) | |
# define _GLIBCXX_HAVE_HYPOTF 1 | |
# define hypotf _hypotf | |
#endif | |
# 1777 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL) | |
# define _GLIBCXX_HAVE_HYPOTL 1 | |
# define hypotl _hypotl | |
#endif | |
# 1782 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF) | |
# define _GLIBCXX_HAVE_ISINF 1 | |
# define isinf _isinf | |
#endif | |
# 1787 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF) | |
# define _GLIBCXX_HAVE_ISINFF 1 | |
# define isinff _isinff | |
#endif | |
# 1792 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL) | |
# define _GLIBCXX_HAVE_ISINFL 1 | |
# define isinfl _isinfl | |
#endif | |
# 1797 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN) | |
# define _GLIBCXX_HAVE_ISNAN 1 | |
# define isnan _isnan | |
#endif | |
# 1802 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF) | |
# define _GLIBCXX_HAVE_ISNANF 1 | |
# define isnanf _isnanf | |
#endif | |
# 1807 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL) | |
# define _GLIBCXX_HAVE_ISNANL 1 | |
# define isnanl _isnanl | |
#endif | |
# 1812 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF) | |
# define _GLIBCXX_HAVE_LDEXPF 1 | |
# define ldexpf _ldexpf | |
#endif | |
# 1817 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL) | |
# define _GLIBCXX_HAVE_LDEXPL 1 | |
# define ldexpl _ldexpl | |
#endif | |
# 1822 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F) | |
# define _GLIBCXX_HAVE_LOG10F 1 | |
# define log10f _log10f | |
#endif | |
# 1827 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L) | |
# define _GLIBCXX_HAVE_LOG10L 1 | |
# define log10l _log10l | |
#endif | |
# 1832 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF) | |
# define _GLIBCXX_HAVE_LOGF 1 | |
# define logf _logf | |
#endif | |
# 1837 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL) | |
# define _GLIBCXX_HAVE_LOGL 1 | |
# define logl _logl | |
#endif | |
# 1842 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF) | |
# define _GLIBCXX_HAVE_MODF 1 | |
# define modf _modf | |
#endif | |
# 1847 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF) | |
# define _GLIBCXX_HAVE_MODFF 1 | |
# define modff _modff | |
#endif | |
# 1852 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL) | |
# define _GLIBCXX_HAVE_MODFL 1 | |
# define modfl _modfl | |
#endif | |
# 1857 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF) | |
# define _GLIBCXX_HAVE_POWF 1 | |
# define powf _powf | |
#endif | |
# 1862 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL) | |
# define _GLIBCXX_HAVE_POWL 1 | |
# define powl _powl | |
#endif | |
# 1867 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS) | |
# define _GLIBCXX_HAVE_QFPCLASS 1 | |
# define qfpclass _qfpclass | |
#endif | |
# 1872 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS) | |
# define _GLIBCXX_HAVE_SINCOS 1 | |
# define sincos _sincos | |
#endif | |
# 1877 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF) | |
# define _GLIBCXX_HAVE_SINCOSF 1 | |
# define sincosf _sincosf | |
#endif | |
# 1882 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL) | |
# define _GLIBCXX_HAVE_SINCOSL 1 | |
# define sincosl _sincosl | |
#endif | |
# 1887 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF) | |
# define _GLIBCXX_HAVE_SINF 1 | |
# define sinf _sinf | |
#endif | |
# 1892 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF) | |
# define _GLIBCXX_HAVE_SINHF 1 | |
# define sinhf _sinhf | |
#endif | |
# 1897 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL) | |
# define _GLIBCXX_HAVE_SINHL 1 | |
# define sinhl _sinhl | |
#endif | |
# 1902 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL) | |
# define _GLIBCXX_HAVE_SINL 1 | |
# define sinl _sinl | |
#endif | |
# 1907 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF) | |
# define _GLIBCXX_HAVE_SQRTF 1 | |
# define sqrtf _sqrtf | |
#endif | |
# 1912 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL) | |
# define _GLIBCXX_HAVE_SQRTL 1 | |
# define sqrtl _sqrtl | |
#endif | |
# 1917 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF) | |
# define _GLIBCXX_HAVE_STRTOF 1 | |
# define strtof _strtof | |
#endif | |
# 1922 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD) | |
# define _GLIBCXX_HAVE_STRTOLD 1 | |
# define strtold _strtold | |
#endif | |
# 1927 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF) | |
# define _GLIBCXX_HAVE_TANF 1 | |
# define tanf _tanf | |
#endif | |
# 1932 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF) | |
# define _GLIBCXX_HAVE_TANHF 1 | |
# define tanhf _tanhf | |
#endif | |
# 1937 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL) | |
# define _GLIBCXX_HAVE_TANHL 1 | |
# define tanhl _tanhl | |
#endif | |
# 1942 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL) | |
# define _GLIBCXX_HAVE_TANL 1 | |
# define tanl _tanl | |
#endif | |
# 1947 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
#endif // _GLIBCXX_CXX_CONFIG_H | |
# 1949 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++config.h" 3 | |
# 69 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_relops.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 69 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_relops.h" 1 3 | |
// std::rel_ops implementation -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the, 2009 Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* Copyright (c) 1996,1997 | |
* Silicon Graphics | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
*/ | |
/** @file bits/stl_relops.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{utility} | |
* | |
* Inclusion of this file has been removed from | |
* all of the other STL headers for safety reasons, except std_utility.h. | |
* For more information, see the thread of about twenty messages starting | |
* with http://gcc.gnu.org/ml/libstdc++/2001-01/msg00223.html, or | |
* http://gcc.gnu.org/onlinedocs/libstdc++/faq.html#faq.ambiguous_overloads | |
* | |
* Short summary: the rel_ops operators should be avoided for the present. | |
*/ | |
#ifndef _STL_RELOPS_H | |
#define _STL_RELOPS_H 1 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
namespace rel_ops | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** @namespace std::rel_ops | |
* @brief The generated relational operators are sequestered here. | |
*/ | |
/** | |
* @brief Defines @c != for arbitrary types, in terms of @c ==. | |
* @param __x A thing. | |
* @param __y Another thing. | |
* @return __x != __y | |
* | |
* This function uses @c == to determine its result. | |
*/ | |
template <class _Tp> | |
inline bool | |
operator!=(const _Tp& __x, const _Tp& __y) | |
{ return !(__x == __y); } | |
/** | |
* @brief Defines @c > for arbitrary types, in terms of @c <. | |
* @param __x A thing. | |
* @param __y Another thing. | |
* @return __x > __y | |
* | |
* This function uses @c < to determine its result. | |
*/ | |
template <class _Tp> | |
inline bool | |
operator>(const _Tp& __x, const _Tp& __y) | |
{ return __y < __x; } | |
/** | |
* @brief Defines @c <= for arbitrary types, in terms of @c <. | |
* @param __x A thing. | |
* @param __y Another thing. | |
* @return __x <= __y | |
* | |
* This function uses @c < to determine its result. | |
*/ | |
template <class _Tp> | |
inline bool | |
operator<=(const _Tp& __x, const _Tp& __y) | |
{ return !(__y < __x); } | |
/** | |
* @brief Defines @c >= for arbitrary types, in terms of @c <. | |
* @param __x A thing. | |
* @param __y Another thing. | |
* @return __x >= __y | |
* | |
* This function uses @c < to determine its result. | |
*/ | |
template <class _Tp> | |
inline bool | |
operator>=(const _Tp& __x, const _Tp& __y) | |
{ return !(__x < __y); } | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace rel_ops | |
} // namespace std | |
#endif /* _STL_RELOPS_H */ | |
# 135 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_relops.h" 3 | |
# 70 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_pair.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 70 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 1 3 | |
// Pair implementation -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* | |
* Copyright (c) 1996,1997 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file bits/stl_pair.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{utility} | |
*/ | |
#ifndef _STL_PAIR_H | |
#define _STL_PAIR_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/move.h> // for std::move / std::forward, and std::swap | |
#endif /* expanded by -frewrite-includes */ | |
# 59 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 1 3 | |
// Move, forward and identity for C++11 + swap -*- C++ -*- | |
// Copyright (C) 2007-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/move.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{utility} | |
*/ | |
#ifndef _MOVE_H | |
#define _MOVE_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/concept_check.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 1 3 | |
// Concept-checking control -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/concept_check.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iterator} | |
*/ | |
#ifndef _CONCEPT_CHECK_H | |
#define _CONCEPT_CHECK_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 3 | |
// All places in libstdc++-v3 where these are used, or /might/ be used, or | |
// don't need to be used, or perhaps /should/ be used, are commented with | |
// "concept requirements" (and maybe some more text). So grep like crazy | |
// if you're looking for additional places to use these. | |
// Concept-checking code is off by default unless users turn it on via | |
// configure options or editing c++config.h. | |
// It is not supported for freestanding implementations. | |
#if !defined(_GLIBCXX_CONCEPT_CHECKS) || !_GLIBCXX_HOSTED | |
#define __glibcxx_function_requires(...) | |
#define __glibcxx_class_requires(_a,_b) | |
#define __glibcxx_class_requires2(_a,_b,_c) | |
#define __glibcxx_class_requires3(_a,_b,_c,_d) | |
#define __glibcxx_class_requires4(_a,_b,_c,_d,_e) | |
#else // the checks are on | |
# 55 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/boost_concept_check.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 56 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 3 | |
# 57 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 3 | |
// Note that the obvious and elegant approach of | |
// | |
//#define glibcxx_function_requires(C) debug::function_requires< debug::C >() | |
// | |
// won't work due to concept templates with more than one parameter, e.g., | |
// BinaryPredicateConcept. The preprocessor tries to split things up on | |
// the commas in the template argument list. We can't use an inner pair of | |
// parenthesis to hide the commas, because "debug::(Temp<Foo,Bar>)" isn't | |
// a valid instantiation pattern. Thus, we steal a feature from C99. | |
#define __glibcxx_function_requires(...) \ | |
__gnu_cxx::__function_requires< __gnu_cxx::__VA_ARGS__ >(); | |
#define __glibcxx_class_requires(_a,_C) \ | |
_GLIBCXX_CLASS_REQUIRES(_a, __gnu_cxx, _C); | |
#define __glibcxx_class_requires2(_a,_b,_C) \ | |
_GLIBCXX_CLASS_REQUIRES2(_a, _b, __gnu_cxx, _C); | |
#define __glibcxx_class_requires3(_a,_b,_c,_C) \ | |
_GLIBCXX_CLASS_REQUIRES3(_a, _b, _c, __gnu_cxx, _C); | |
#define __glibcxx_class_requires4(_a,_b,_c,_d,_C) \ | |
_GLIBCXX_CLASS_REQUIRES4(_a, _b, _c, _d, __gnu_cxx, _C); | |
#endif // enable/disable | |
# 80 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 3 | |
#endif // _GLIBCXX_CONCEPT_CHECK | |
# 82 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/concept_check.h" 3 | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 2 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// Used, in C++03 mode too, by allocators, etc. | |
/** | |
* @brief Same as C++11 std::addressof | |
* @ingroup utilities | |
*/ | |
template<typename _Tp> | |
inline _GLIBCXX_CONSTEXPR _Tp* | |
__addressof(_Tp& __r) _GLIBCXX_NOEXCEPT | |
{ return __builtin_addressof(__r); } | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <type_traits> // Brings in std::declval too. | |
#endif /* expanded by -frewrite-includes */ | |
# 54 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 1 3 | |
// C++11 <type_traits> -*- C++ -*- | |
// Copyright (C) 2007-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/type_traits | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef _GLIBCXX_TYPE_TRAITS | |
#define _GLIBCXX_TYPE_TRAITS 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if __cplusplus < 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <bits/c++0x_warning.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#else | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#ifdef _GLIBCXX_USE_C99_STDINT_TR1 | |
# if defined (__UINT_LEAST16_TYPE__) && defined(__UINT_LEAST32_TYPE__) | |
namespace std | |
{ | |
typedef __UINT_LEAST16_TYPE__ uint_least16_t; | |
typedef __UINT_LEAST32_TYPE__ uint_least32_t; | |
} | |
# else | |
# 48 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <cstdint> | |
#endif /* expanded by -frewrite-includes */ | |
# 48 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
# 49 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
# endif | |
# 50 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#endif | |
# 51 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @defgroup metaprogramming Metaprogramming | |
* @ingroup utilities | |
* | |
* Template utilities for compile-time introspection and modification, | |
* including type classification traits, type property inspection traits | |
* and type transformation traits. | |
* | |
* @{ | |
*/ | |
/// integral_constant | |
template<typename _Tp, _Tp __v> | |
struct integral_constant | |
{ | |
static constexpr _Tp value = __v; | |
typedef _Tp value_type; | |
typedef integral_constant<_Tp, __v> type; | |
constexpr operator value_type() const { return value; } | |
#if __cplusplus > 201103L | |
#define __cpp_lib_integral_constant_callable 201304 | |
constexpr value_type operator()() const { return value; } | |
#endif | |
# 81 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
}; | |
template<typename _Tp, _Tp __v> | |
constexpr _Tp integral_constant<_Tp, __v>::value; | |
/// The type used as a compile-time boolean with true value. | |
typedef integral_constant<bool, true> true_type; | |
/// The type used as a compile-time boolean with false value. | |
typedef integral_constant<bool, false> false_type; | |
template<bool __v> | |
using __bool_constant = integral_constant<bool, __v>; | |
#if __cplusplus > 201402L | |
# define __cpp_lib_bool_constant 201505 | |
template<bool __v> | |
using bool_constant = integral_constant<bool, __v>; | |
#endif | |
# 100 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// Meta programming helper types. | |
template<bool, typename, typename> | |
struct conditional; | |
template<typename...> | |
struct __or_; | |
template<> | |
struct __or_<> | |
: public false_type | |
{ }; | |
template<typename _B1> | |
struct __or_<_B1> | |
: public _B1 | |
{ }; | |
template<typename _B1, typename _B2> | |
struct __or_<_B1, _B2> | |
: public conditional<_B1::value, _B1, _B2>::type | |
{ }; | |
template<typename _B1, typename _B2, typename _B3, typename... _Bn> | |
struct __or_<_B1, _B2, _B3, _Bn...> | |
: public conditional<_B1::value, _B1, __or_<_B2, _B3, _Bn...>>::type | |
{ }; | |
template<typename...> | |
struct __and_; | |
template<> | |
struct __and_<> | |
: public true_type | |
{ }; | |
template<typename _B1> | |
struct __and_<_B1> | |
: public _B1 | |
{ }; | |
template<typename _B1, typename _B2> | |
struct __and_<_B1, _B2> | |
: public conditional<_B1::value, _B2, _B1>::type | |
{ }; | |
template<typename _B1, typename _B2, typename _B3, typename... _Bn> | |
struct __and_<_B1, _B2, _B3, _Bn...> | |
: public conditional<_B1::value, __and_<_B2, _B3, _Bn...>, _B1>::type | |
{ }; | |
template<typename _Pp> | |
struct __not_ | |
: public integral_constant<bool, !_Pp::value> | |
{ }; | |
#if __cplusplus > 201402L | |
#define __cpp_lib_logical_traits 201510 | |
template<typename... _Bn> | |
struct conjunction | |
: __and_<_Bn...> | |
{ }; | |
template<typename... _Bn> | |
struct disjunction | |
: __or_<_Bn...> | |
{ }; | |
template<typename _Pp> | |
struct negation | |
: __not_<_Pp> | |
{ }; | |
template<typename... _Bn> | |
constexpr bool conjunction_v | |
= conjunction<_Bn...>::value; | |
template<typename... _Bn> | |
constexpr bool disjunction_v | |
= disjunction<_Bn...>::value; | |
template<typename _Pp> | |
constexpr bool negation_v | |
= negation<_Pp>::value; | |
#endif | |
# 189 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// For several sfinae-friendly trait implementations we transport both the | |
// result information (as the member type) and the failure information (no | |
// member type). This is very similar to std::enable_if, but we cannot use | |
// them, because we need to derive from them as an implementation detail. | |
template<typename _Tp> | |
struct __success_type | |
{ typedef _Tp type; }; | |
struct __failure_type | |
{ }; | |
// Primary type categories. | |
template<typename> | |
struct remove_cv; | |
template<typename> | |
struct __is_void_helper | |
: public false_type { }; | |
template<> | |
struct __is_void_helper<void> | |
: public true_type { }; | |
/// is_void | |
template<typename _Tp> | |
struct is_void | |
: public __is_void_helper<typename remove_cv<_Tp>::type>::type | |
{ }; | |
template<typename> | |
struct __is_integral_helper | |
: public false_type { }; | |
template<> | |
struct __is_integral_helper<bool> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<char> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<signed char> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned char> | |
: public true_type { }; | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
template<> | |
struct __is_integral_helper<wchar_t> | |
: public true_type { }; | |
#endif | |
# 246 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
template<> | |
struct __is_integral_helper<char16_t> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<char32_t> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<short> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned short> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<int> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned int> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<long> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned long> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<long long> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned long long> | |
: public true_type { }; | |
// Conditionalizing on __STRICT_ANSI__ here will break any port that | |
// uses one of these types for size_t. | |
#if defined(__GLIBCXX_TYPE_INT_N_0) | |
template<> | |
struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_0> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_0> | |
: public true_type { }; | |
#endif | |
# 298 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_1) | |
template<> | |
struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_1> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_1> | |
: public true_type { }; | |
#endif | |
# 307 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_2) | |
template<> | |
struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_2> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_2> | |
: public true_type { }; | |
#endif | |
# 316 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_3) | |
template<> | |
struct __is_integral_helper<__GLIBCXX_TYPE_INT_N_3> | |
: public true_type { }; | |
template<> | |
struct __is_integral_helper<unsigned __GLIBCXX_TYPE_INT_N_3> | |
: public true_type { }; | |
#endif | |
# 325 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
/// is_integral | |
template<typename _Tp> | |
struct is_integral | |
: public __is_integral_helper<typename remove_cv<_Tp>::type>::type | |
{ }; | |
template<typename> | |
struct __is_floating_point_helper | |
: public false_type { }; | |
template<> | |
struct __is_floating_point_helper<float> | |
: public true_type { }; | |
template<> | |
struct __is_floating_point_helper<double> | |
: public true_type { }; | |
template<> | |
struct __is_floating_point_helper<long double> | |
: public true_type { }; | |
#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) | |
template<> | |
struct __is_floating_point_helper<__float128> | |
: public true_type { }; | |
#endif | |
# 353 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
/// is_floating_point | |
template<typename _Tp> | |
struct is_floating_point | |
: public __is_floating_point_helper<typename remove_cv<_Tp>::type>::type | |
{ }; | |
/// is_array | |
template<typename> | |
struct is_array | |
: public false_type { }; | |
template<typename _Tp, std::size_t _Size> | |
struct is_array<_Tp[_Size]> | |
: public true_type { }; | |
template<typename _Tp> | |
struct is_array<_Tp[]> | |
: public true_type { }; | |
template<typename> | |
struct __is_pointer_helper | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_pointer_helper<_Tp*> | |
: public true_type { }; | |
/// is_pointer | |
template<typename _Tp> | |
struct is_pointer | |
: public __is_pointer_helper<typename remove_cv<_Tp>::type>::type | |
{ }; | |
/// is_lvalue_reference | |
template<typename> | |
struct is_lvalue_reference | |
: public false_type { }; | |
template<typename _Tp> | |
struct is_lvalue_reference<_Tp&> | |
: public true_type { }; | |
/// is_rvalue_reference | |
template<typename> | |
struct is_rvalue_reference | |
: public false_type { }; | |
template<typename _Tp> | |
struct is_rvalue_reference<_Tp&&> | |
: public true_type { }; | |
template<typename> | |
struct is_function; | |
template<typename> | |
struct __is_member_object_pointer_helper | |
: public false_type { }; | |
template<typename _Tp, typename _Cp> | |
struct __is_member_object_pointer_helper<_Tp _Cp::*> | |
: public integral_constant<bool, !is_function<_Tp>::value> { }; | |
/// is_member_object_pointer | |
template<typename _Tp> | |
struct is_member_object_pointer | |
: public __is_member_object_pointer_helper< | |
typename remove_cv<_Tp>::type>::type | |
{ }; | |
template<typename> | |
struct __is_member_function_pointer_helper | |
: public false_type { }; | |
template<typename _Tp, typename _Cp> | |
struct __is_member_function_pointer_helper<_Tp _Cp::*> | |
: public integral_constant<bool, is_function<_Tp>::value> { }; | |
/// is_member_function_pointer | |
template<typename _Tp> | |
struct is_member_function_pointer | |
: public __is_member_function_pointer_helper< | |
typename remove_cv<_Tp>::type>::type | |
{ }; | |
/// is_enum | |
template<typename _Tp> | |
struct is_enum | |
: public integral_constant<bool, __is_enum(_Tp)> | |
{ }; | |
/// is_union | |
template<typename _Tp> | |
struct is_union | |
: public integral_constant<bool, __is_union(_Tp)> | |
{ }; | |
/// is_class | |
template<typename _Tp> | |
struct is_class | |
: public integral_constant<bool, __is_class(_Tp)> | |
{ }; | |
/// is_function | |
template<typename> | |
struct is_function | |
: public false_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) & _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) && _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) & _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) && _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) const _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) const & _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) const && _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) const _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) const & _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) const && _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) volatile _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) volatile & _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) volatile && _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) volatile _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) volatile & _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) volatile && _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) const volatile _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) const volatile & _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes...) const volatile && _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) const volatile _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) const volatile & _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
template<typename _Res, typename... _ArgTypes _GLIBCXX_NOEXCEPT_PARM> | |
struct is_function<_Res(_ArgTypes......) const volatile && _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type { }; | |
#define __cpp_lib_is_null_pointer 201309 | |
template<typename> | |
struct __is_null_pointer_helper | |
: public false_type { }; | |
template<> | |
struct __is_null_pointer_helper<std::nullptr_t> | |
: public true_type { }; | |
/// is_null_pointer (LWG 2247). | |
template<typename _Tp> | |
struct is_null_pointer | |
: public __is_null_pointer_helper<typename remove_cv<_Tp>::type>::type | |
{ }; | |
/// __is_nullptr_t (extension). | |
template<typename _Tp> | |
struct __is_nullptr_t | |
: public is_null_pointer<_Tp> | |
{ }; | |
// Composite type categories. | |
/// is_reference | |
template<typename _Tp> | |
struct is_reference | |
: public __or_<is_lvalue_reference<_Tp>, | |
is_rvalue_reference<_Tp>>::type | |
{ }; | |
/// is_arithmetic | |
template<typename _Tp> | |
struct is_arithmetic | |
: public __or_<is_integral<_Tp>, is_floating_point<_Tp>>::type | |
{ }; | |
/// is_fundamental | |
template<typename _Tp> | |
struct is_fundamental | |
: public __or_<is_arithmetic<_Tp>, is_void<_Tp>, | |
is_null_pointer<_Tp>>::type | |
{ }; | |
/// is_object | |
template<typename _Tp> | |
struct is_object | |
: public __not_<__or_<is_function<_Tp>, is_reference<_Tp>, | |
is_void<_Tp>>>::type | |
{ }; | |
template<typename> | |
struct is_member_pointer; | |
/// is_scalar | |
template<typename _Tp> | |
struct is_scalar | |
: public __or_<is_arithmetic<_Tp>, is_enum<_Tp>, is_pointer<_Tp>, | |
is_member_pointer<_Tp>, is_null_pointer<_Tp>>::type | |
{ }; | |
/// is_compound | |
template<typename _Tp> | |
struct is_compound | |
: public integral_constant<bool, !is_fundamental<_Tp>::value> { }; | |
template<typename _Tp> | |
struct __is_member_pointer_helper | |
: public false_type { }; | |
template<typename _Tp, typename _Cp> | |
struct __is_member_pointer_helper<_Tp _Cp::*> | |
: public true_type { }; | |
/// is_member_pointer | |
template<typename _Tp> | |
struct is_member_pointer | |
: public __is_member_pointer_helper<typename remove_cv<_Tp>::type>::type | |
{ }; | |
// Utility to detect referenceable types ([defns.referenceable]). | |
template<typename _Tp> | |
struct __is_referenceable | |
: public __or_<is_object<_Tp>, is_reference<_Tp>>::type | |
{ }; | |
template<typename _Res, typename... _Args _GLIBCXX_NOEXCEPT_PARM> | |
struct __is_referenceable<_Res(_Args...) _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type | |
{ }; | |
template<typename _Res, typename... _Args _GLIBCXX_NOEXCEPT_PARM> | |
struct __is_referenceable<_Res(_Args......) _GLIBCXX_NOEXCEPT_QUAL> | |
: public true_type | |
{ }; | |
// Type properties. | |
/// is_const | |
template<typename> | |
struct is_const | |
: public false_type { }; | |
template<typename _Tp> | |
struct is_const<_Tp const> | |
: public true_type { }; | |
/// is_volatile | |
template<typename> | |
struct is_volatile | |
: public false_type { }; | |
template<typename _Tp> | |
struct is_volatile<_Tp volatile> | |
: public true_type { }; | |
/// is_trivial | |
template<typename _Tp> | |
struct is_trivial | |
: public integral_constant<bool, __is_trivial(_Tp)> | |
{ }; | |
// is_trivially_copyable | |
template<typename _Tp> | |
struct is_trivially_copyable | |
: public integral_constant<bool, __is_trivially_copyable(_Tp)> | |
{ }; | |
/// is_standard_layout | |
template<typename _Tp> | |
struct is_standard_layout | |
: public integral_constant<bool, __is_standard_layout(_Tp)> | |
{ }; | |
/// is_pod | |
// Could use is_standard_layout && is_trivial instead of the builtin. | |
template<typename _Tp> | |
struct is_pod | |
: public integral_constant<bool, __is_pod(_Tp)> | |
{ }; | |
/// is_literal_type | |
template<typename _Tp> | |
struct is_literal_type | |
: public integral_constant<bool, __is_literal_type(_Tp)> | |
{ }; | |
/// is_empty | |
template<typename _Tp> | |
struct is_empty | |
: public integral_constant<bool, __is_empty(_Tp)> | |
{ }; | |
/// is_polymorphic | |
template<typename _Tp> | |
struct is_polymorphic | |
: public integral_constant<bool, __is_polymorphic(_Tp)> | |
{ }; | |
#if __cplusplus >= 201402L | |
#define __cpp_lib_is_final 201402L | |
/// is_final | |
template<typename _Tp> | |
struct is_final | |
: public integral_constant<bool, __is_final(_Tp)> | |
{ }; | |
#endif | |
# 725 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
/// is_abstract | |
template<typename _Tp> | |
struct is_abstract | |
: public integral_constant<bool, __is_abstract(_Tp)> | |
{ }; | |
template<typename _Tp, | |
bool = is_arithmetic<_Tp>::value> | |
struct __is_signed_helper | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_signed_helper<_Tp, true> | |
: public integral_constant<bool, _Tp(-1) < _Tp(0)> | |
{ }; | |
/// is_signed | |
template<typename _Tp> | |
struct is_signed | |
: public __is_signed_helper<_Tp>::type | |
{ }; | |
/// is_unsigned | |
template<typename _Tp> | |
struct is_unsigned | |
: public __and_<is_arithmetic<_Tp>, __not_<is_signed<_Tp>>> | |
{ }; | |
// Destructible and constructible type properties. | |
template<typename> | |
struct add_rvalue_reference; | |
/** | |
* @brief Utility to simplify expressions used in unevaluated operands | |
* @ingroup utilities | |
*/ | |
template<typename _Tp> | |
typename add_rvalue_reference<_Tp>::type declval() noexcept; | |
template<typename, unsigned = 0> | |
struct extent; | |
template<typename> | |
struct remove_all_extents; | |
template<typename _Tp> | |
struct __is_array_known_bounds | |
: public integral_constant<bool, (extent<_Tp>::value > 0)> | |
{ }; | |
template<typename _Tp> | |
struct __is_array_unknown_bounds | |
: public __and_<is_array<_Tp>, __not_<extent<_Tp>>> | |
{ }; | |
// In N3290 is_destructible does not say anything about function | |
// types and abstract types, see LWG 2049. This implementation | |
// describes function types as non-destructible and all complete | |
// object types as destructible, iff the explicit destructor | |
// call expression is wellformed. | |
struct __do_is_destructible_impl | |
{ | |
template<typename _Tp, typename = decltype(declval<_Tp&>().~_Tp())> | |
static true_type __test(int); | |
template<typename> | |
static false_type __test(...); | |
}; | |
template<typename _Tp> | |
struct __is_destructible_impl | |
: public __do_is_destructible_impl | |
{ | |
typedef decltype(__test<_Tp>(0)) type; | |
}; | |
template<typename _Tp, | |
bool = __or_<is_void<_Tp>, | |
__is_array_unknown_bounds<_Tp>, | |
is_function<_Tp>>::value, | |
bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value> | |
struct __is_destructible_safe; | |
template<typename _Tp> | |
struct __is_destructible_safe<_Tp, false, false> | |
: public __is_destructible_impl<typename | |
remove_all_extents<_Tp>::type>::type | |
{ }; | |
template<typename _Tp> | |
struct __is_destructible_safe<_Tp, true, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_destructible_safe<_Tp, false, true> | |
: public true_type { }; | |
/// is_destructible | |
template<typename _Tp> | |
struct is_destructible | |
: public __is_destructible_safe<_Tp>::type | |
{ }; | |
// is_nothrow_destructible requires that is_destructible is | |
// satisfied as well. We realize that by mimicing the | |
// implementation of is_destructible but refer to noexcept(expr) | |
// instead of decltype(expr). | |
struct __do_is_nt_destructible_impl | |
{ | |
template<typename _Tp> | |
static integral_constant<bool, noexcept(declval<_Tp&>().~_Tp())> | |
__test(int); | |
template<typename> | |
static false_type __test(...); | |
}; | |
template<typename _Tp> | |
struct __is_nt_destructible_impl | |
: public __do_is_nt_destructible_impl | |
{ | |
typedef decltype(__test<_Tp>(0)) type; | |
}; | |
template<typename _Tp, | |
bool = __or_<is_void<_Tp>, | |
__is_array_unknown_bounds<_Tp>, | |
is_function<_Tp>>::value, | |
bool = __or_<is_reference<_Tp>, is_scalar<_Tp>>::value> | |
struct __is_nt_destructible_safe; | |
template<typename _Tp> | |
struct __is_nt_destructible_safe<_Tp, false, false> | |
: public __is_nt_destructible_impl<typename | |
remove_all_extents<_Tp>::type>::type | |
{ }; | |
template<typename _Tp> | |
struct __is_nt_destructible_safe<_Tp, true, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_nt_destructible_safe<_Tp, false, true> | |
: public true_type { }; | |
/// is_nothrow_destructible | |
template<typename _Tp> | |
struct is_nothrow_destructible | |
: public __is_nt_destructible_safe<_Tp>::type | |
{ }; | |
struct __do_is_default_constructible_impl | |
{ | |
template<typename _Tp, typename = decltype(_Tp())> | |
static true_type __test(int); | |
template<typename> | |
static false_type __test(...); | |
}; | |
template<typename _Tp> | |
struct __is_default_constructible_impl | |
: public __do_is_default_constructible_impl | |
{ | |
typedef decltype(__test<_Tp>(0)) type; | |
}; | |
template<typename _Tp> | |
struct __is_default_constructible_atom | |
: public __and_<__not_<is_void<_Tp>>, | |
__is_default_constructible_impl<_Tp>> | |
{ }; | |
template<typename _Tp, bool = is_array<_Tp>::value> | |
struct __is_default_constructible_safe; | |
// The following technique is a workaround for a current core language | |
// restriction, which does not allow for array types to occur in | |
// functional casts of the form T(). Complete arrays can be default- | |
// constructed, if the element type is default-constructible, but | |
// arrays with unknown bounds are not. | |
template<typename _Tp> | |
struct __is_default_constructible_safe<_Tp, true> | |
: public __and_<__is_array_known_bounds<_Tp>, | |
__is_default_constructible_atom<typename | |
remove_all_extents<_Tp>::type>> | |
{ }; | |
template<typename _Tp> | |
struct __is_default_constructible_safe<_Tp, false> | |
: public __is_default_constructible_atom<_Tp>::type | |
{ }; | |
/// is_default_constructible | |
template<typename _Tp> | |
struct is_default_constructible | |
: public __is_default_constructible_safe<_Tp>::type | |
{ }; | |
// Implementation of is_constructible. | |
// The hardest part of this trait is the binary direct-initialization | |
// case, because we hit into a functional cast of the form T(arg). | |
// This implementation uses different strategies depending on the | |
// target type to reduce the test overhead as much as possible: | |
// | |
// a) For a reference target type, we use a static_cast expression | |
// modulo its extra cases. | |
// | |
// b) For a non-reference target type we use a ::new expression. | |
struct __do_is_static_castable_impl | |
{ | |
template<typename _From, typename _To, typename | |
= decltype(static_cast<_To>(declval<_From>()))> | |
static true_type __test(int); | |
template<typename, typename> | |
static false_type __test(...); | |
}; | |
template<typename _From, typename _To> | |
struct __is_static_castable_impl | |
: public __do_is_static_castable_impl | |
{ | |
typedef decltype(__test<_From, _To>(0)) type; | |
}; | |
template<typename _From, typename _To> | |
struct __is_static_castable_safe | |
: public __is_static_castable_impl<_From, _To>::type | |
{ }; | |
// __is_static_castable | |
template<typename _From, typename _To> | |
struct __is_static_castable | |
: public integral_constant<bool, (__is_static_castable_safe< | |
_From, _To>::value)> | |
{ }; | |
// Implementation for non-reference types. To meet the proper | |
// variable definition semantics, we also need to test for | |
// is_destructible in this case. | |
// This form should be simplified by a single expression: | |
// ::delete ::new _Tp(declval<_Arg>()), see c++/51222. | |
struct __do_is_direct_constructible_impl | |
{ | |
template<typename _Tp, typename _Arg, typename | |
= decltype(::new _Tp(declval<_Arg>()))> | |
static true_type __test(int); | |
template<typename, typename> | |
static false_type __test(...); | |
}; | |
template<typename _Tp, typename _Arg> | |
struct __is_direct_constructible_impl | |
: public __do_is_direct_constructible_impl | |
{ | |
typedef decltype(__test<_Tp, _Arg>(0)) type; | |
}; | |
template<typename _Tp, typename _Arg> | |
struct __is_direct_constructible_new_safe | |
: public __and_<is_destructible<_Tp>, | |
__is_direct_constructible_impl<_Tp, _Arg>> | |
{ }; | |
template<typename, typename> | |
struct is_same; | |
template<typename, typename> | |
struct is_base_of; | |
template<typename> | |
struct remove_reference; | |
template<typename _From, typename _To, bool | |
= __not_<__or_<is_void<_From>, | |
is_function<_From>>>::value> | |
struct __is_base_to_derived_ref; | |
template<typename _Tp, typename... _Args> | |
struct is_constructible; | |
// Detect whether we have a downcast situation during | |
// reference binding. | |
template<typename _From, typename _To> | |
struct __is_base_to_derived_ref<_From, _To, true> | |
{ | |
typedef typename remove_cv<typename remove_reference<_From | |
>::type>::type __src_t; | |
typedef typename remove_cv<typename remove_reference<_To | |
>::type>::type __dst_t; | |
typedef __and_<__not_<is_same<__src_t, __dst_t>>, | |
is_base_of<__src_t, __dst_t>, | |
__not_<is_constructible<__dst_t, _From>>> type; | |
static constexpr bool value = type::value; | |
}; | |
template<typename _From, typename _To> | |
struct __is_base_to_derived_ref<_From, _To, false> | |
: public false_type | |
{ }; | |
template<typename _From, typename _To, bool | |
= __and_<is_lvalue_reference<_From>, | |
is_rvalue_reference<_To>>::value> | |
struct __is_lvalue_to_rvalue_ref; | |
// Detect whether we have an lvalue of non-function type | |
// bound to a reference-compatible rvalue-reference. | |
template<typename _From, typename _To> | |
struct __is_lvalue_to_rvalue_ref<_From, _To, true> | |
{ | |
typedef typename remove_cv<typename remove_reference< | |
_From>::type>::type __src_t; | |
typedef typename remove_cv<typename remove_reference< | |
_To>::type>::type __dst_t; | |
typedef __and_<__not_<is_function<__src_t>>, | |
__or_<is_same<__src_t, __dst_t>, | |
is_base_of<__dst_t, __src_t>>> type; | |
static constexpr bool value = type::value; | |
}; | |
template<typename _From, typename _To> | |
struct __is_lvalue_to_rvalue_ref<_From, _To, false> | |
: public false_type | |
{ }; | |
// Here we handle direct-initialization to a reference type as | |
// equivalent to a static_cast modulo overshooting conversions. | |
// These are restricted to the following conversions: | |
// a) A base class value to a derived class reference | |
// b) An lvalue to an rvalue-reference of reference-compatible | |
// types that are not functions | |
template<typename _Tp, typename _Arg> | |
struct __is_direct_constructible_ref_cast | |
: public __and_<__is_static_castable<_Arg, _Tp>, | |
__not_<__or_<__is_base_to_derived_ref<_Arg, _Tp>, | |
__is_lvalue_to_rvalue_ref<_Arg, _Tp> | |
>>> | |
{ }; | |
template<typename _Tp, typename _Arg> | |
struct __is_direct_constructible_new | |
: public conditional<is_reference<_Tp>::value, | |
__is_direct_constructible_ref_cast<_Tp, _Arg>, | |
__is_direct_constructible_new_safe<_Tp, _Arg> | |
>::type | |
{ }; | |
template<typename _Tp, typename _Arg> | |
struct __is_direct_constructible | |
: public __is_direct_constructible_new<_Tp, _Arg>::type | |
{ }; | |
// Since default-construction and binary direct-initialization have | |
// been handled separately, the implementation of the remaining | |
// n-ary construction cases is rather straightforward. We can use | |
// here a functional cast, because array types are excluded anyway | |
// and this form is never interpreted as a C cast. | |
struct __do_is_nary_constructible_impl | |
{ | |
template<typename _Tp, typename... _Args, typename | |
= decltype(_Tp(declval<_Args>()...))> | |
static true_type __test(int); | |
template<typename, typename...> | |
static false_type __test(...); | |
}; | |
template<typename _Tp, typename... _Args> | |
struct __is_nary_constructible_impl | |
: public __do_is_nary_constructible_impl | |
{ | |
typedef decltype(__test<_Tp, _Args...>(0)) type; | |
}; | |
template<typename _Tp, typename... _Args> | |
struct __is_nary_constructible | |
: public __is_nary_constructible_impl<_Tp, _Args...>::type | |
{ | |
static_assert(sizeof...(_Args) > 1, | |
"Only useful for > 1 arguments"); | |
}; | |
template<typename _Tp, typename... _Args> | |
struct __is_constructible_impl | |
: public __is_nary_constructible<_Tp, _Args...> | |
{ }; | |
template<typename _Tp, typename _Arg> | |
struct __is_constructible_impl<_Tp, _Arg> | |
: public __is_direct_constructible<_Tp, _Arg> | |
{ }; | |
template<typename _Tp> | |
struct __is_constructible_impl<_Tp> | |
: public is_default_constructible<_Tp> | |
{ }; | |
/// is_constructible | |
template<typename _Tp, typename... _Args> | |
struct is_constructible | |
: public __is_constructible_impl<_Tp, _Args...>::type | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __is_copy_constructible_impl; | |
template<typename _Tp> | |
struct __is_copy_constructible_impl<_Tp, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_copy_constructible_impl<_Tp, true> | |
: public is_constructible<_Tp, const _Tp&> | |
{ }; | |
/// is_copy_constructible | |
template<typename _Tp> | |
struct is_copy_constructible | |
: public __is_copy_constructible_impl<_Tp> | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __is_move_constructible_impl; | |
template<typename _Tp> | |
struct __is_move_constructible_impl<_Tp, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_move_constructible_impl<_Tp, true> | |
: public is_constructible<_Tp, _Tp&&> | |
{ }; | |
/// is_move_constructible | |
template<typename _Tp> | |
struct is_move_constructible | |
: public __is_move_constructible_impl<_Tp> | |
{ }; | |
template<typename _Tp> | |
struct __is_nt_default_constructible_atom | |
: public integral_constant<bool, noexcept(_Tp())> | |
{ }; | |
template<typename _Tp, bool = is_array<_Tp>::value> | |
struct __is_nt_default_constructible_impl; | |
template<typename _Tp> | |
struct __is_nt_default_constructible_impl<_Tp, true> | |
: public __and_<__is_array_known_bounds<_Tp>, | |
__is_nt_default_constructible_atom<typename | |
remove_all_extents<_Tp>::type>> | |
{ }; | |
template<typename _Tp> | |
struct __is_nt_default_constructible_impl<_Tp, false> | |
: public __is_nt_default_constructible_atom<_Tp> | |
{ }; | |
/// is_nothrow_default_constructible | |
template<typename _Tp> | |
struct is_nothrow_default_constructible | |
: public __and_<is_default_constructible<_Tp>, | |
__is_nt_default_constructible_impl<_Tp>> | |
{ }; | |
template<typename _Tp, typename... _Args> | |
struct __is_nt_constructible_impl | |
: public integral_constant<bool, noexcept(_Tp(declval<_Args>()...))> | |
{ }; | |
template<typename _Tp, typename _Arg> | |
struct __is_nt_constructible_impl<_Tp, _Arg> | |
: public integral_constant<bool, | |
noexcept(static_cast<_Tp>(declval<_Arg>()))> | |
{ }; | |
template<typename _Tp> | |
struct __is_nt_constructible_impl<_Tp> | |
: public is_nothrow_default_constructible<_Tp> | |
{ }; | |
/// is_nothrow_constructible | |
template<typename _Tp, typename... _Args> | |
struct is_nothrow_constructible | |
: public __and_<is_constructible<_Tp, _Args...>, | |
__is_nt_constructible_impl<_Tp, _Args...>> | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __is_nothrow_copy_constructible_impl; | |
template<typename _Tp> | |
struct __is_nothrow_copy_constructible_impl<_Tp, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_nothrow_copy_constructible_impl<_Tp, true> | |
: public is_nothrow_constructible<_Tp, const _Tp&> | |
{ }; | |
/// is_nothrow_copy_constructible | |
template<typename _Tp> | |
struct is_nothrow_copy_constructible | |
: public __is_nothrow_copy_constructible_impl<_Tp> | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __is_nothrow_move_constructible_impl; | |
template<typename _Tp> | |
struct __is_nothrow_move_constructible_impl<_Tp, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_nothrow_move_constructible_impl<_Tp, true> | |
: public is_nothrow_constructible<_Tp, _Tp&&> | |
{ }; | |
/// is_nothrow_move_constructible | |
template<typename _Tp> | |
struct is_nothrow_move_constructible | |
: public __is_nothrow_move_constructible_impl<_Tp> | |
{ }; | |
template<typename _Tp, typename _Up> | |
class __is_assignable_helper | |
{ | |
template<typename _Tp1, typename _Up1, | |
typename = decltype(declval<_Tp1>() = declval<_Up1>())> | |
static true_type | |
__test(int); | |
template<typename, typename> | |
static false_type | |
__test(...); | |
public: | |
typedef decltype(__test<_Tp, _Up>(0)) type; | |
}; | |
/// is_assignable | |
template<typename _Tp, typename _Up> | |
struct is_assignable | |
: public __is_assignable_helper<_Tp, _Up>::type | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __is_copy_assignable_impl; | |
template<typename _Tp> | |
struct __is_copy_assignable_impl<_Tp, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_copy_assignable_impl<_Tp, true> | |
: public is_assignable<_Tp&, const _Tp&> | |
{ }; | |
/// is_copy_assignable | |
template<typename _Tp> | |
struct is_copy_assignable | |
: public __is_copy_assignable_impl<_Tp> | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __is_move_assignable_impl; | |
template<typename _Tp> | |
struct __is_move_assignable_impl<_Tp, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_move_assignable_impl<_Tp, true> | |
: public is_assignable<_Tp&, _Tp&&> | |
{ }; | |
/// is_move_assignable | |
template<typename _Tp> | |
struct is_move_assignable | |
: public __is_move_assignable_impl<_Tp> | |
{ }; | |
template<typename _Tp, typename _Up> | |
struct __is_nt_assignable_impl | |
: public integral_constant<bool, noexcept(declval<_Tp>() = declval<_Up>())> | |
{ }; | |
/// is_nothrow_assignable | |
template<typename _Tp, typename _Up> | |
struct is_nothrow_assignable | |
: public __and_<is_assignable<_Tp, _Up>, | |
__is_nt_assignable_impl<_Tp, _Up>> | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __is_nt_copy_assignable_impl; | |
template<typename _Tp> | |
struct __is_nt_copy_assignable_impl<_Tp, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_nt_copy_assignable_impl<_Tp, true> | |
: public is_nothrow_assignable<_Tp&, const _Tp&> | |
{ }; | |
/// is_nothrow_copy_assignable | |
template<typename _Tp> | |
struct is_nothrow_copy_assignable | |
: public __is_nt_copy_assignable_impl<_Tp> | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __is_nt_move_assignable_impl; | |
template<typename _Tp> | |
struct __is_nt_move_assignable_impl<_Tp, false> | |
: public false_type { }; | |
template<typename _Tp> | |
struct __is_nt_move_assignable_impl<_Tp, true> | |
: public is_nothrow_assignable<_Tp&, _Tp&&> | |
{ }; | |
/// is_nothrow_move_assignable | |
template<typename _Tp> | |
struct is_nothrow_move_assignable | |
: public __is_nt_move_assignable_impl<_Tp> | |
{ }; | |
/// is_trivially_constructible | |
template<typename _Tp, typename... _Args> | |
struct is_trivially_constructible | |
: public __and_<is_constructible<_Tp, _Args...>, integral_constant<bool, | |
__is_trivially_constructible(_Tp, _Args...)>> | |
{ }; | |
/// is_trivially_default_constructible | |
template<typename _Tp> | |
struct is_trivially_default_constructible | |
: public is_trivially_constructible<_Tp>::type | |
{ }; | |
struct __do_is_implicitly_default_constructible_impl | |
{ | |
template <typename _Tp> | |
static void __helper(const _Tp&); | |
template <typename _Tp> | |
static true_type __test(const _Tp&, | |
decltype(__helper<const _Tp&>({}))* = 0); | |
static false_type __test(...); | |
}; | |
template<typename _Tp> | |
struct __is_implicitly_default_constructible_impl | |
: public __do_is_implicitly_default_constructible_impl | |
{ | |
typedef decltype(__test(declval<_Tp>())) type; | |
}; | |
template<typename _Tp> | |
struct __is_implicitly_default_constructible_safe | |
: public __is_implicitly_default_constructible_impl<_Tp>::type | |
{ }; | |
template <typename _Tp> | |
struct __is_implicitly_default_constructible | |
: public __and_<is_default_constructible<_Tp>, | |
__is_implicitly_default_constructible_safe<_Tp>> | |
{ }; | |
/// is_trivially_copy_constructible | |
template<typename _Tp> | |
struct is_trivially_copy_constructible | |
: public __and_<is_copy_constructible<_Tp>, | |
integral_constant<bool, | |
__is_trivially_constructible(_Tp, const _Tp&)>> | |
{ }; | |
/// is_trivially_move_constructible | |
template<typename _Tp> | |
struct is_trivially_move_constructible | |
: public __and_<is_move_constructible<_Tp>, | |
integral_constant<bool, | |
__is_trivially_constructible(_Tp, _Tp&&)>> | |
{ }; | |
/// is_trivially_assignable | |
template<typename _Tp, typename _Up> | |
struct is_trivially_assignable | |
: public __and_<is_assignable<_Tp, _Up>, | |
integral_constant<bool, | |
__is_trivially_assignable(_Tp, _Up)>> | |
{ }; | |
/// is_trivially_copy_assignable | |
template<typename _Tp> | |
struct is_trivially_copy_assignable | |
: public __and_<is_copy_assignable<_Tp>, | |
integral_constant<bool, | |
__is_trivially_assignable(_Tp&, const _Tp&)>> | |
{ }; | |
/// is_trivially_move_assignable | |
template<typename _Tp> | |
struct is_trivially_move_assignable | |
: public __and_<is_move_assignable<_Tp>, | |
integral_constant<bool, | |
__is_trivially_assignable(_Tp&, _Tp&&)>> | |
{ }; | |
/// is_trivially_destructible | |
template<typename _Tp> | |
struct is_trivially_destructible | |
: public __and_<is_destructible<_Tp>, integral_constant<bool, | |
__has_trivial_destructor(_Tp)>> | |
{ }; | |
/// has_virtual_destructor | |
template<typename _Tp> | |
struct has_virtual_destructor | |
: public integral_constant<bool, __has_virtual_destructor(_Tp)> | |
{ }; | |
// type property queries. | |
/// alignment_of | |
template<typename _Tp> | |
struct alignment_of | |
: public integral_constant<std::size_t, __alignof__(_Tp)> { }; | |
/// rank | |
template<typename> | |
struct rank | |
: public integral_constant<std::size_t, 0> { }; | |
template<typename _Tp, std::size_t _Size> | |
struct rank<_Tp[_Size]> | |
: public integral_constant<std::size_t, 1 + rank<_Tp>::value> { }; | |
template<typename _Tp> | |
struct rank<_Tp[]> | |
: public integral_constant<std::size_t, 1 + rank<_Tp>::value> { }; | |
/// extent | |
template<typename, unsigned _Uint> | |
struct extent | |
: public integral_constant<std::size_t, 0> { }; | |
template<typename _Tp, unsigned _Uint, std::size_t _Size> | |
struct extent<_Tp[_Size], _Uint> | |
: public integral_constant<std::size_t, | |
_Uint == 0 ? _Size : extent<_Tp, | |
_Uint - 1>::value> | |
{ }; | |
template<typename _Tp, unsigned _Uint> | |
struct extent<_Tp[], _Uint> | |
: public integral_constant<std::size_t, | |
_Uint == 0 ? 0 : extent<_Tp, | |
_Uint - 1>::value> | |
{ }; | |
// Type relations. | |
/// is_same | |
template<typename, typename> | |
struct is_same | |
: public false_type { }; | |
template<typename _Tp> | |
struct is_same<_Tp, _Tp> | |
: public true_type { }; | |
/// is_base_of | |
template<typename _Base, typename _Derived> | |
struct is_base_of | |
: public integral_constant<bool, __is_base_of(_Base, _Derived)> | |
{ }; | |
template<typename _From, typename _To, | |
bool = __or_<is_void<_From>, is_function<_To>, | |
is_array<_To>>::value> | |
struct __is_convertible_helper | |
{ typedef typename is_void<_To>::type type; }; | |
template<typename _From, typename _To> | |
class __is_convertible_helper<_From, _To, false> | |
{ | |
template<typename _To1> | |
static void __test_aux(_To1); | |
template<typename _From1, typename _To1, | |
typename = decltype(__test_aux<_To1>(std::declval<_From1>()))> | |
static true_type | |
__test(int); | |
template<typename, typename> | |
static false_type | |
__test(...); | |
public: | |
typedef decltype(__test<_From, _To>(0)) type; | |
}; | |
/// is_convertible | |
template<typename _From, typename _To> | |
struct is_convertible | |
: public __is_convertible_helper<_From, _To>::type | |
{ }; | |
// Const-volatile modifications. | |
/// remove_const | |
template<typename _Tp> | |
struct remove_const | |
{ typedef _Tp type; }; | |
template<typename _Tp> | |
struct remove_const<_Tp const> | |
{ typedef _Tp type; }; | |
/// remove_volatile | |
template<typename _Tp> | |
struct remove_volatile | |
{ typedef _Tp type; }; | |
template<typename _Tp> | |
struct remove_volatile<_Tp volatile> | |
{ typedef _Tp type; }; | |
/// remove_cv | |
template<typename _Tp> | |
struct remove_cv | |
{ | |
typedef typename | |
remove_const<typename remove_volatile<_Tp>::type>::type type; | |
}; | |
/// add_const | |
template<typename _Tp> | |
struct add_const | |
{ typedef _Tp const type; }; | |
/// add_volatile | |
template<typename _Tp> | |
struct add_volatile | |
{ typedef _Tp volatile type; }; | |
/// add_cv | |
template<typename _Tp> | |
struct add_cv | |
{ | |
typedef typename | |
add_const<typename add_volatile<_Tp>::type>::type type; | |
}; | |
#if __cplusplus > 201103L | |
#define __cpp_lib_transformation_trait_aliases 201304 | |
/// Alias template for remove_const | |
template<typename _Tp> | |
using remove_const_t = typename remove_const<_Tp>::type; | |
/// Alias template for remove_volatile | |
template<typename _Tp> | |
using remove_volatile_t = typename remove_volatile<_Tp>::type; | |
/// Alias template for remove_cv | |
template<typename _Tp> | |
using remove_cv_t = typename remove_cv<_Tp>::type; | |
/// Alias template for add_const | |
template<typename _Tp> | |
using add_const_t = typename add_const<_Tp>::type; | |
/// Alias template for add_volatile | |
template<typename _Tp> | |
using add_volatile_t = typename add_volatile<_Tp>::type; | |
/// Alias template for add_cv | |
template<typename _Tp> | |
using add_cv_t = typename add_cv<_Tp>::type; | |
#endif | |
# 1626 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// Reference transformations. | |
/// remove_reference | |
template<typename _Tp> | |
struct remove_reference | |
{ typedef _Tp type; }; | |
template<typename _Tp> | |
struct remove_reference<_Tp&> | |
{ typedef _Tp type; }; | |
template<typename _Tp> | |
struct remove_reference<_Tp&&> | |
{ typedef _Tp type; }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __add_lvalue_reference_helper | |
{ typedef _Tp type; }; | |
template<typename _Tp> | |
struct __add_lvalue_reference_helper<_Tp, true> | |
{ typedef _Tp& type; }; | |
/// add_lvalue_reference | |
template<typename _Tp> | |
struct add_lvalue_reference | |
: public __add_lvalue_reference_helper<_Tp> | |
{ }; | |
template<typename _Tp, bool = __is_referenceable<_Tp>::value> | |
struct __add_rvalue_reference_helper | |
{ typedef _Tp type; }; | |
template<typename _Tp> | |
struct __add_rvalue_reference_helper<_Tp, true> | |
{ typedef _Tp&& type; }; | |
/// add_rvalue_reference | |
template<typename _Tp> | |
struct add_rvalue_reference | |
: public __add_rvalue_reference_helper<_Tp> | |
{ }; | |
#if __cplusplus > 201103L | |
/// Alias template for remove_reference | |
template<typename _Tp> | |
using remove_reference_t = typename remove_reference<_Tp>::type; | |
/// Alias template for add_lvalue_reference | |
template<typename _Tp> | |
using add_lvalue_reference_t = typename add_lvalue_reference<_Tp>::type; | |
/// Alias template for add_rvalue_reference | |
template<typename _Tp> | |
using add_rvalue_reference_t = typename add_rvalue_reference<_Tp>::type; | |
#endif | |
# 1683 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// Sign modifications. | |
// Utility for constructing identically cv-qualified types. | |
template<typename _Unqualified, bool _IsConst, bool _IsVol> | |
struct __cv_selector; | |
template<typename _Unqualified> | |
struct __cv_selector<_Unqualified, false, false> | |
{ typedef _Unqualified __type; }; | |
template<typename _Unqualified> | |
struct __cv_selector<_Unqualified, false, true> | |
{ typedef volatile _Unqualified __type; }; | |
template<typename _Unqualified> | |
struct __cv_selector<_Unqualified, true, false> | |
{ typedef const _Unqualified __type; }; | |
template<typename _Unqualified> | |
struct __cv_selector<_Unqualified, true, true> | |
{ typedef const volatile _Unqualified __type; }; | |
template<typename _Qualified, typename _Unqualified, | |
bool _IsConst = is_const<_Qualified>::value, | |
bool _IsVol = is_volatile<_Qualified>::value> | |
class __match_cv_qualifiers | |
{ | |
typedef __cv_selector<_Unqualified, _IsConst, _IsVol> __match; | |
public: | |
typedef typename __match::__type __type; | |
}; | |
// Utility for finding the unsigned versions of signed integral types. | |
template<typename _Tp> | |
struct __make_unsigned | |
{ typedef _Tp __type; }; | |
template<> | |
struct __make_unsigned<char> | |
{ typedef unsigned char __type; }; | |
template<> | |
struct __make_unsigned<signed char> | |
{ typedef unsigned char __type; }; | |
template<> | |
struct __make_unsigned<short> | |
{ typedef unsigned short __type; }; | |
template<> | |
struct __make_unsigned<int> | |
{ typedef unsigned int __type; }; | |
template<> | |
struct __make_unsigned<long> | |
{ typedef unsigned long __type; }; | |
template<> | |
struct __make_unsigned<long long> | |
{ typedef unsigned long long __type; }; | |
#if defined(_GLIBCXX_USE_WCHAR_T) && !defined(__WCHAR_UNSIGNED__) | |
template<> | |
struct __make_unsigned<wchar_t> : __make_unsigned<__WCHAR_TYPE__> | |
{ }; | |
#endif | |
# 1751 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_0) | |
template<> | |
struct __make_unsigned<__GLIBCXX_TYPE_INT_N_0> | |
{ typedef unsigned __GLIBCXX_TYPE_INT_N_0 __type; }; | |
#endif | |
# 1757 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_1) | |
template<> | |
struct __make_unsigned<__GLIBCXX_TYPE_INT_N_1> | |
{ typedef unsigned __GLIBCXX_TYPE_INT_N_1 __type; }; | |
#endif | |
# 1762 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_2) | |
template<> | |
struct __make_unsigned<__GLIBCXX_TYPE_INT_N_2> | |
{ typedef unsigned __GLIBCXX_TYPE_INT_N_2 __type; }; | |
#endif | |
# 1767 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_3) | |
template<> | |
struct __make_unsigned<__GLIBCXX_TYPE_INT_N_3> | |
{ typedef unsigned __GLIBCXX_TYPE_INT_N_3 __type; }; | |
#endif | |
# 1772 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// Select between integral and enum: not possible to be both. | |
template<typename _Tp, | |
bool _IsInt = is_integral<_Tp>::value, | |
bool _IsEnum = is_enum<_Tp>::value> | |
class __make_unsigned_selector; | |
template<typename _Tp> | |
class __make_unsigned_selector<_Tp, true, false> | |
{ | |
typedef __make_unsigned<typename remove_cv<_Tp>::type> __unsignedt; | |
typedef typename __unsignedt::__type __unsigned_type; | |
typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; | |
public: | |
typedef typename __cv_unsigned::__type __type; | |
}; | |
template<typename _Tp> | |
class __make_unsigned_selector<_Tp, false, true> | |
{ | |
// With -fshort-enums, an enum may be as small as a char. | |
typedef unsigned char __smallest; | |
static const bool __b0 = sizeof(_Tp) <= sizeof(__smallest); | |
static const bool __b1 = sizeof(_Tp) <= sizeof(unsigned short); | |
static const bool __b2 = sizeof(_Tp) <= sizeof(unsigned int); | |
static const bool __b3 = sizeof(_Tp) <= sizeof(unsigned long); | |
typedef conditional<__b3, unsigned long, unsigned long long> __cond3; | |
typedef typename __cond3::type __cond3_type; | |
typedef conditional<__b2, unsigned int, __cond3_type> __cond2; | |
typedef typename __cond2::type __cond2_type; | |
typedef conditional<__b1, unsigned short, __cond2_type> __cond1; | |
typedef typename __cond1::type __cond1_type; | |
typedef typename conditional<__b0, __smallest, __cond1_type>::type | |
__unsigned_type; | |
typedef __match_cv_qualifiers<_Tp, __unsigned_type> __cv_unsigned; | |
public: | |
typedef typename __cv_unsigned::__type __type; | |
}; | |
// Given an integral/enum type, return the corresponding unsigned | |
// integer type. | |
// Primary template. | |
/// make_unsigned | |
template<typename _Tp> | |
struct make_unsigned | |
{ typedef typename __make_unsigned_selector<_Tp>::__type type; }; | |
// Integral, but don't define. | |
template<> | |
struct make_unsigned<bool>; | |
// Utility for finding the signed versions of unsigned integral types. | |
template<typename _Tp> | |
struct __make_signed | |
{ typedef _Tp __type; }; | |
template<> | |
struct __make_signed<char> | |
{ typedef signed char __type; }; | |
template<> | |
struct __make_signed<unsigned char> | |
{ typedef signed char __type; }; | |
template<> | |
struct __make_signed<unsigned short> | |
{ typedef signed short __type; }; | |
template<> | |
struct __make_signed<unsigned int> | |
{ typedef signed int __type; }; | |
template<> | |
struct __make_signed<unsigned long> | |
{ typedef signed long __type; }; | |
template<> | |
struct __make_signed<unsigned long long> | |
{ typedef signed long long __type; }; | |
#if defined(_GLIBCXX_USE_WCHAR_T) && defined(__WCHAR_UNSIGNED__) | |
template<> | |
struct __make_signed<wchar_t> : __make_signed<__WCHAR_TYPE__> | |
{ }; | |
#endif | |
# 1861 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#ifdef _GLIBCXX_USE_C99_STDINT_TR1 | |
template<> | |
struct __make_signed<char16_t> : __make_signed<uint_least16_t> | |
{ }; | |
template<> | |
struct __make_signed<char32_t> : __make_signed<uint_least32_t> | |
{ }; | |
#endif | |
# 1870 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_0) | |
template<> | |
struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_0> | |
{ typedef __GLIBCXX_TYPE_INT_N_0 __type; }; | |
#endif | |
# 1876 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_1) | |
template<> | |
struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_1> | |
{ typedef __GLIBCXX_TYPE_INT_N_1 __type; }; | |
#endif | |
# 1881 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_2) | |
template<> | |
struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_2> | |
{ typedef __GLIBCXX_TYPE_INT_N_2 __type; }; | |
#endif | |
# 1886 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if defined(__GLIBCXX_TYPE_INT_N_3) | |
template<> | |
struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_3> | |
{ typedef __GLIBCXX_TYPE_INT_N_3 __type; }; | |
#endif | |
# 1891 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// Select between integral and enum: not possible to be both. | |
template<typename _Tp, | |
bool _IsInt = is_integral<_Tp>::value, | |
bool _IsEnum = is_enum<_Tp>::value> | |
class __make_signed_selector; | |
template<typename _Tp> | |
class __make_signed_selector<_Tp, true, false> | |
{ | |
typedef __make_signed<typename remove_cv<_Tp>::type> __signedt; | |
typedef typename __signedt::__type __signed_type; | |
typedef __match_cv_qualifiers<_Tp, __signed_type> __cv_signed; | |
public: | |
typedef typename __cv_signed::__type __type; | |
}; | |
template<typename _Tp> | |
class __make_signed_selector<_Tp, false, true> | |
{ | |
typedef typename __make_unsigned_selector<_Tp>::__type __unsigned_type; | |
public: | |
typedef typename __make_signed_selector<__unsigned_type>::__type __type; | |
}; | |
// Given an integral/enum type, return the corresponding signed | |
// integer type. | |
// Primary template. | |
/// make_signed | |
template<typename _Tp> | |
struct make_signed | |
{ typedef typename __make_signed_selector<_Tp>::__type type; }; | |
// Integral, but don't define. | |
template<> | |
struct make_signed<bool>; | |
#if __cplusplus > 201103L | |
/// Alias template for make_signed | |
template<typename _Tp> | |
using make_signed_t = typename make_signed<_Tp>::type; | |
/// Alias template for make_unsigned | |
template<typename _Tp> | |
using make_unsigned_t = typename make_unsigned<_Tp>::type; | |
#endif | |
# 1939 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// Array modifications. | |
/// remove_extent | |
template<typename _Tp> | |
struct remove_extent | |
{ typedef _Tp type; }; | |
template<typename _Tp, std::size_t _Size> | |
struct remove_extent<_Tp[_Size]> | |
{ typedef _Tp type; }; | |
template<typename _Tp> | |
struct remove_extent<_Tp[]> | |
{ typedef _Tp type; }; | |
/// remove_all_extents | |
template<typename _Tp> | |
struct remove_all_extents | |
{ typedef _Tp type; }; | |
template<typename _Tp, std::size_t _Size> | |
struct remove_all_extents<_Tp[_Size]> | |
{ typedef typename remove_all_extents<_Tp>::type type; }; | |
template<typename _Tp> | |
struct remove_all_extents<_Tp[]> | |
{ typedef typename remove_all_extents<_Tp>::type type; }; | |
#if __cplusplus > 201103L | |
/// Alias template for remove_extent | |
template<typename _Tp> | |
using remove_extent_t = typename remove_extent<_Tp>::type; | |
/// Alias template for remove_all_extents | |
template<typename _Tp> | |
using remove_all_extents_t = typename remove_all_extents<_Tp>::type; | |
#endif | |
# 1977 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// Pointer modifications. | |
template<typename _Tp, typename> | |
struct __remove_pointer_helper | |
{ typedef _Tp type; }; | |
template<typename _Tp, typename _Up> | |
struct __remove_pointer_helper<_Tp, _Up*> | |
{ typedef _Up type; }; | |
/// remove_pointer | |
template<typename _Tp> | |
struct remove_pointer | |
: public __remove_pointer_helper<_Tp, typename remove_cv<_Tp>::type> | |
{ }; | |
/// add_pointer | |
template<typename _Tp, bool = __or_<__is_referenceable<_Tp>, | |
is_void<_Tp>>::value> | |
struct __add_pointer_helper | |
{ typedef _Tp type; }; | |
template<typename _Tp> | |
struct __add_pointer_helper<_Tp, true> | |
{ typedef typename remove_reference<_Tp>::type* type; }; | |
template<typename _Tp> | |
struct add_pointer | |
: public __add_pointer_helper<_Tp> | |
{ }; | |
#if __cplusplus > 201103L | |
/// Alias template for remove_pointer | |
template<typename _Tp> | |
using remove_pointer_t = typename remove_pointer<_Tp>::type; | |
/// Alias template for add_pointer | |
template<typename _Tp> | |
using add_pointer_t = typename add_pointer<_Tp>::type; | |
#endif | |
# 2018 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
template<std::size_t _Len> | |
struct __aligned_storage_msa | |
{ | |
union __type | |
{ | |
unsigned char __data[_Len]; | |
struct __attribute__((__aligned__)) { } __align; | |
}; | |
}; | |
/** | |
* @brief Alignment type. | |
* | |
* The value of _Align is a default-alignment which shall be the | |
* most stringent alignment requirement for any C++ object type | |
* whose size is no greater than _Len (3.9). The member typedef | |
* type shall be a POD type suitable for use as uninitialized | |
* storage for any object whose size is at most _Len and whose | |
* alignment is a divisor of _Align. | |
*/ | |
template<std::size_t _Len, std::size_t _Align = | |
__alignof__(typename __aligned_storage_msa<_Len>::__type)> | |
struct aligned_storage | |
{ | |
union type | |
{ | |
unsigned char __data[_Len]; | |
struct __attribute__((__aligned__((_Align)))) { } __align; | |
}; | |
}; | |
template <typename... _Types> | |
struct __strictest_alignment | |
{ | |
static const size_t _S_alignment = 0; | |
static const size_t _S_size = 0; | |
}; | |
template <typename _Tp, typename... _Types> | |
struct __strictest_alignment<_Tp, _Types...> | |
{ | |
static const size_t _S_alignment = | |
alignof(_Tp) > __strictest_alignment<_Types...>::_S_alignment | |
? alignof(_Tp) : __strictest_alignment<_Types...>::_S_alignment; | |
static const size_t _S_size = | |
sizeof(_Tp) > __strictest_alignment<_Types...>::_S_size | |
? sizeof(_Tp) : __strictest_alignment<_Types...>::_S_size; | |
}; | |
/** | |
* @brief Provide aligned storage for types. | |
* | |
* [meta.trans.other] | |
* | |
* Provides aligned storage for any of the provided types of at | |
* least size _Len. | |
* | |
* @see aligned_storage | |
*/ | |
template <size_t _Len, typename... _Types> | |
struct aligned_union | |
{ | |
private: | |
static_assert(sizeof...(_Types) != 0, "At least one type is required"); | |
using __strictest = __strictest_alignment<_Types...>; | |
static const size_t _S_len = _Len > __strictest::_S_size | |
? _Len : __strictest::_S_size; | |
public: | |
/// The value of the strictest alignment of _Types. | |
static const size_t alignment_value = __strictest::_S_alignment; | |
/// The storage. | |
typedef typename aligned_storage<_S_len, alignment_value>::type type; | |
}; | |
template <size_t _Len, typename... _Types> | |
const size_t aligned_union<_Len, _Types...>::alignment_value; | |
// Decay trait for arrays and functions, used for perfect forwarding | |
// in make_pair, make_tuple, etc. | |
template<typename _Up, | |
bool _IsArray = is_array<_Up>::value, | |
bool _IsFunction = is_function<_Up>::value> | |
struct __decay_selector; | |
// NB: DR 705. | |
template<typename _Up> | |
struct __decay_selector<_Up, false, false> | |
{ typedef typename remove_cv<_Up>::type __type; }; | |
template<typename _Up> | |
struct __decay_selector<_Up, true, false> | |
{ typedef typename remove_extent<_Up>::type* __type; }; | |
template<typename _Up> | |
struct __decay_selector<_Up, false, true> | |
{ typedef typename add_pointer<_Up>::type __type; }; | |
/// decay | |
template<typename _Tp> | |
class decay | |
{ | |
typedef typename remove_reference<_Tp>::type __remove_type; | |
public: | |
typedef typename __decay_selector<__remove_type>::__type type; | |
}; | |
template<typename _Tp> | |
class reference_wrapper; | |
// Helper which adds a reference to a type when given a reference_wrapper | |
template<typename _Tp> | |
struct __strip_reference_wrapper | |
{ | |
typedef _Tp __type; | |
}; | |
template<typename _Tp> | |
struct __strip_reference_wrapper<reference_wrapper<_Tp> > | |
{ | |
typedef _Tp& __type; | |
}; | |
template<typename _Tp> | |
struct __decay_and_strip | |
{ | |
typedef typename __strip_reference_wrapper< | |
typename decay<_Tp>::type>::__type __type; | |
}; | |
// Primary template. | |
/// Define a member typedef @c type only if a boolean constant is true. | |
template<bool, typename _Tp = void> | |
struct enable_if | |
{ }; | |
// Partial specialization for true. | |
template<typename _Tp> | |
struct enable_if<true, _Tp> | |
{ typedef _Tp type; }; | |
template<typename... _Cond> | |
using _Require = typename enable_if<__and_<_Cond...>::value>::type; | |
// Primary template. | |
/// Define a member typedef @c type to one of two argument types. | |
template<bool _Cond, typename _Iftrue, typename _Iffalse> | |
struct conditional | |
{ typedef _Iftrue type; }; | |
// Partial specialization for false. | |
template<typename _Iftrue, typename _Iffalse> | |
struct conditional<false, _Iftrue, _Iffalse> | |
{ typedef _Iffalse type; }; | |
/// common_type | |
template<typename... _Tp> | |
struct common_type; | |
// Sfinae-friendly common_type implementation: | |
struct __do_common_type_impl | |
{ | |
template<typename _Tp, typename _Up> | |
static __success_type<typename decay<decltype | |
(true ? std::declval<_Tp>() | |
: std::declval<_Up>())>::type> _S_test(int); | |
template<typename, typename> | |
static __failure_type _S_test(...); | |
}; | |
template<typename _Tp, typename _Up> | |
struct __common_type_impl | |
: private __do_common_type_impl | |
{ | |
typedef decltype(_S_test<_Tp, _Up>(0)) type; | |
}; | |
struct __do_member_type_wrapper | |
{ | |
template<typename _Tp> | |
static __success_type<typename _Tp::type> _S_test(int); | |
template<typename> | |
static __failure_type _S_test(...); | |
}; | |
template<typename _Tp> | |
struct __member_type_wrapper | |
: private __do_member_type_wrapper | |
{ | |
typedef decltype(_S_test<_Tp>(0)) type; | |
}; | |
template<typename _CTp, typename... _Args> | |
struct __expanded_common_type_wrapper | |
{ | |
typedef common_type<typename _CTp::type, _Args...> type; | |
}; | |
template<typename... _Args> | |
struct __expanded_common_type_wrapper<__failure_type, _Args...> | |
{ typedef __failure_type type; }; | |
template<typename _Tp> | |
struct common_type<_Tp> | |
{ typedef typename decay<_Tp>::type type; }; | |
template<typename _Tp, typename _Up> | |
struct common_type<_Tp, _Up> | |
: public __common_type_impl<_Tp, _Up>::type | |
{ }; | |
template<typename _Tp, typename _Up, typename... _Vp> | |
struct common_type<_Tp, _Up, _Vp...> | |
: public __expanded_common_type_wrapper<typename __member_type_wrapper< | |
common_type<_Tp, _Up>>::type, _Vp...>::type | |
{ }; | |
/// The underlying type of an enum. | |
template<typename _Tp> | |
struct underlying_type | |
{ | |
typedef __underlying_type(_Tp) type; | |
}; | |
template<typename _Tp> | |
struct __declval_protector | |
{ | |
static const bool __stop = false; | |
static typename add_rvalue_reference<_Tp>::type __delegate(); | |
}; | |
template<typename _Tp> | |
inline typename add_rvalue_reference<_Tp>::type | |
declval() noexcept | |
{ | |
static_assert(__declval_protector<_Tp>::__stop, | |
"declval() must not be used!"); | |
return __declval_protector<_Tp>::__delegate(); | |
} | |
/// result_of | |
template<typename _Signature> | |
class result_of; | |
// Sfinae-friendly result_of implementation: | |
#define __cpp_lib_result_of_sfinae 201210 | |
struct __invoke_memfun_ref { }; | |
struct __invoke_memfun_deref { }; | |
struct __invoke_memobj_ref { }; | |
struct __invoke_memobj_deref { }; | |
struct __invoke_other { }; | |
// Associate a tag type with a specialization of __success_type. | |
template<typename _Tp, typename _Tag> | |
struct __result_of_success : __success_type<_Tp> | |
{ using __invoke_type = _Tag; }; | |
// [func.require] paragraph 1 bullet 1: | |
struct __result_of_memfun_ref_impl | |
{ | |
template<typename _Fp, typename _Tp1, typename... _Args> | |
static __result_of_success<decltype( | |
(std::declval<_Tp1>().*std::declval<_Fp>())(std::declval<_Args>()...) | |
), __invoke_memfun_ref> _S_test(int); | |
template<typename...> | |
static __failure_type _S_test(...); | |
}; | |
template<typename _MemPtr, typename _Arg, typename... _Args> | |
struct __result_of_memfun_ref | |
: private __result_of_memfun_ref_impl | |
{ | |
typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; | |
}; | |
// [func.require] paragraph 1 bullet 2: | |
struct __result_of_memfun_deref_impl | |
{ | |
template<typename _Fp, typename _Tp1, typename... _Args> | |
static __result_of_success<decltype( | |
((*std::declval<_Tp1>()).*std::declval<_Fp>())(std::declval<_Args>()...) | |
), __invoke_memfun_deref> _S_test(int); | |
template<typename...> | |
static __failure_type _S_test(...); | |
}; | |
template<typename _MemPtr, typename _Arg, typename... _Args> | |
struct __result_of_memfun_deref | |
: private __result_of_memfun_deref_impl | |
{ | |
typedef decltype(_S_test<_MemPtr, _Arg, _Args...>(0)) type; | |
}; | |
// [func.require] paragraph 1 bullet 3: | |
struct __result_of_memobj_ref_impl | |
{ | |
template<typename _Fp, typename _Tp1> | |
static __result_of_success<decltype( | |
std::declval<_Tp1>().*std::declval<_Fp>() | |
), __invoke_memobj_ref> _S_test(int); | |
template<typename, typename> | |
static __failure_type _S_test(...); | |
}; | |
template<typename _MemPtr, typename _Arg> | |
struct __result_of_memobj_ref | |
: private __result_of_memobj_ref_impl | |
{ | |
typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; | |
}; | |
// [func.require] paragraph 1 bullet 4: | |
struct __result_of_memobj_deref_impl | |
{ | |
template<typename _Fp, typename _Tp1> | |
static __result_of_success<decltype( | |
(*std::declval<_Tp1>()).*std::declval<_Fp>() | |
), __invoke_memobj_deref> _S_test(int); | |
template<typename, typename> | |
static __failure_type _S_test(...); | |
}; | |
template<typename _MemPtr, typename _Arg> | |
struct __result_of_memobj_deref | |
: private __result_of_memobj_deref_impl | |
{ | |
typedef decltype(_S_test<_MemPtr, _Arg>(0)) type; | |
}; | |
template<typename _MemPtr, typename _Arg> | |
struct __result_of_memobj; | |
template<typename _Res, typename _Class, typename _Arg> | |
struct __result_of_memobj<_Res _Class::*, _Arg> | |
{ | |
typedef typename remove_cv<typename remove_reference< | |
_Arg>::type>::type _Argval; | |
typedef _Res _Class::* _MemPtr; | |
typedef typename conditional<__or_<is_same<_Argval, _Class>, | |
is_base_of<_Class, _Argval>>::value, | |
__result_of_memobj_ref<_MemPtr, _Arg>, | |
__result_of_memobj_deref<_MemPtr, _Arg> | |
>::type::type type; | |
}; | |
template<typename _MemPtr, typename _Arg, typename... _Args> | |
struct __result_of_memfun; | |
template<typename _Res, typename _Class, typename _Arg, typename... _Args> | |
struct __result_of_memfun<_Res _Class::*, _Arg, _Args...> | |
{ | |
typedef typename remove_cv<typename remove_reference< | |
_Arg>::type>::type _Argval; | |
typedef _Res _Class::* _MemPtr; | |
typedef typename conditional<__or_<is_same<_Argval, _Class>, | |
is_base_of<_Class, _Argval>>::value, | |
__result_of_memfun_ref<_MemPtr, _Arg, _Args...>, | |
__result_of_memfun_deref<_MemPtr, _Arg, _Args...> | |
>::type::type type; | |
}; | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2219. INVOKE-ing a pointer to member with a reference_wrapper | |
// as the object expression | |
template<typename _Res, typename _Class, typename _Arg> | |
struct __result_of_memobj<_Res _Class::*, reference_wrapper<_Arg>> | |
: __result_of_memobj_ref<_Res _Class::*, _Arg&> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg> | |
struct __result_of_memobj<_Res _Class::*, reference_wrapper<_Arg>&> | |
: __result_of_memobj_ref<_Res _Class::*, _Arg&> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg> | |
struct __result_of_memobj<_Res _Class::*, const reference_wrapper<_Arg>&> | |
: __result_of_memobj_ref<_Res _Class::*, _Arg&> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg> | |
struct __result_of_memobj<_Res _Class::*, reference_wrapper<_Arg>&&> | |
: __result_of_memobj_ref<_Res _Class::*, _Arg&> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg> | |
struct __result_of_memobj<_Res _Class::*, const reference_wrapper<_Arg>&&> | |
: __result_of_memobj_ref<_Res _Class::*, _Arg&> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg, typename... _Args> | |
struct __result_of_memfun<_Res _Class::*, reference_wrapper<_Arg>, _Args...> | |
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg, typename... _Args> | |
struct __result_of_memfun<_Res _Class::*, reference_wrapper<_Arg>&, | |
_Args...> | |
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg, typename... _Args> | |
struct __result_of_memfun<_Res _Class::*, const reference_wrapper<_Arg>&, | |
_Args...> | |
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg, typename... _Args> | |
struct __result_of_memfun<_Res _Class::*, reference_wrapper<_Arg>&&, | |
_Args...> | |
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...> | |
{ }; | |
template<typename _Res, typename _Class, typename _Arg, typename... _Args> | |
struct __result_of_memfun<_Res _Class::*, const reference_wrapper<_Arg>&&, | |
_Args...> | |
: __result_of_memfun_ref<_Res _Class::*, _Arg&, _Args...> | |
{ }; | |
template<bool, bool, typename _Functor, typename... _ArgTypes> | |
struct __result_of_impl | |
{ | |
typedef __failure_type type; | |
}; | |
template<typename _MemPtr, typename _Arg> | |
struct __result_of_impl<true, false, _MemPtr, _Arg> | |
: public __result_of_memobj<typename decay<_MemPtr>::type, _Arg> | |
{ }; | |
template<typename _MemPtr, typename _Arg, typename... _Args> | |
struct __result_of_impl<false, true, _MemPtr, _Arg, _Args...> | |
: public __result_of_memfun<typename decay<_MemPtr>::type, _Arg, _Args...> | |
{ }; | |
// [func.require] paragraph 1 bullet 5: | |
struct __result_of_other_impl | |
{ | |
template<typename _Fn, typename... _Args> | |
static __result_of_success<decltype( | |
std::declval<_Fn>()(std::declval<_Args>()...) | |
), __invoke_other> _S_test(int); | |
template<typename...> | |
static __failure_type _S_test(...); | |
}; | |
template<typename _Functor, typename... _ArgTypes> | |
struct __result_of_impl<false, false, _Functor, _ArgTypes...> | |
: private __result_of_other_impl | |
{ | |
typedef decltype(_S_test<_Functor, _ArgTypes...>(0)) type; | |
}; | |
template<typename _Functor, typename... _ArgTypes> | |
struct result_of<_Functor(_ArgTypes...)> | |
: public __result_of_impl< | |
is_member_object_pointer< | |
typename remove_reference<_Functor>::type | |
>::value, | |
is_member_function_pointer< | |
typename remove_reference<_Functor>::type | |
>::value, | |
_Functor, _ArgTypes... | |
>::type | |
{ }; | |
#if __cplusplus > 201103L | |
/// Alias template for aligned_storage | |
template<size_t _Len, size_t _Align = | |
__alignof__(typename __aligned_storage_msa<_Len>::__type)> | |
using aligned_storage_t = typename aligned_storage<_Len, _Align>::type; | |
template <size_t _Len, typename... _Types> | |
using aligned_union_t = typename aligned_union<_Len, _Types...>::type; | |
/// Alias template for decay | |
template<typename _Tp> | |
using decay_t = typename decay<_Tp>::type; | |
/// Alias template for enable_if | |
template<bool _Cond, typename _Tp = void> | |
using enable_if_t = typename enable_if<_Cond, _Tp>::type; | |
/// Alias template for conditional | |
template<bool _Cond, typename _Iftrue, typename _Iffalse> | |
using conditional_t = typename conditional<_Cond, _Iftrue, _Iffalse>::type; | |
/// Alias template for common_type | |
template<typename... _Tp> | |
using common_type_t = typename common_type<_Tp...>::type; | |
/// Alias template for underlying_type | |
template<typename _Tp> | |
using underlying_type_t = typename underlying_type<_Tp>::type; | |
/// Alias template for result_of | |
template<typename _Tp> | |
using result_of_t = typename result_of<_Tp>::type; | |
#endif | |
# 2530 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
template<typename...> using __void_t = void; | |
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 | |
#define __cpp_lib_void_t 201411 | |
/// A metafunction that always yields void, used for detecting valid types. | |
template<typename...> using void_t = void; | |
#endif | |
# 2538 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
/// Implementation of the detection idiom (negative case). | |
template<typename _Default, typename _AlwaysVoid, | |
template<typename...> class _Op, typename... _Args> | |
struct __detector | |
{ | |
using value_t = false_type; | |
using type = _Default; | |
}; | |
/// Implementation of the detection idiom (positive case). | |
template<typename _Default, template<typename...> class _Op, | |
typename... _Args> | |
struct __detector<_Default, __void_t<_Op<_Args...>>, _Op, _Args...> | |
{ | |
using value_t = true_type; | |
using type = _Op<_Args...>; | |
}; | |
// Detect whether _Op<_Args...> is a valid type, use _Default if not. | |
template<typename _Default, template<typename...> class _Op, | |
typename... _Args> | |
using __detected_or = __detector<_Default, void, _Op, _Args...>; | |
// _Op<_Args...> if that is a valid type, otherwise _Default. | |
template<typename _Default, template<typename...> class _Op, | |
typename... _Args> | |
using __detected_or_t | |
= typename __detected_or<_Default, _Op, _Args...>::type; | |
/// @} group metaprogramming | |
/** | |
* Use SFINAE to determine if the type _Tp has a publicly-accessible | |
* member type _NTYPE. | |
*/ | |
#define _GLIBCXX_HAS_NESTED_TYPE(_NTYPE) \ | |
template<typename _Tp, typename = __void_t<>> \ | |
struct __has_##_NTYPE \ | |
: false_type \ | |
{ }; \ | |
template<typename _Tp> \ | |
struct __has_##_NTYPE<_Tp, __void_t<typename _Tp::_NTYPE>> \ | |
: true_type \ | |
{ }; | |
template <typename _Tp> | |
struct __is_swappable; | |
template <typename _Tp> | |
struct __is_nothrow_swappable; | |
template<typename... _Elements> | |
class tuple; | |
template<typename> | |
struct __is_tuple_like_impl : false_type | |
{ }; | |
template<typename... _Tps> | |
struct __is_tuple_like_impl<tuple<_Tps...>> : true_type | |
{ }; | |
// Internal type trait that allows us to sfinae-protect tuple_cat. | |
template<typename _Tp> | |
struct __is_tuple_like | |
: public __is_tuple_like_impl<typename remove_cv< | |
typename remove_reference<_Tp>::type>::type>::type | |
{ }; | |
template<typename _Tp> | |
inline | |
typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, | |
is_move_constructible<_Tp>, | |
is_move_assignable<_Tp>>::value>::type | |
swap(_Tp&, _Tp&) | |
noexcept(__and_<is_nothrow_move_constructible<_Tp>, | |
is_nothrow_move_assignable<_Tp>>::value); | |
template<typename _Tp, size_t _Nm> | |
inline | |
typename enable_if<__is_swappable<_Tp>::value>::type | |
swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) | |
noexcept(__is_nothrow_swappable<_Tp>::value); | |
namespace __swappable_details { | |
using std::swap; | |
struct __do_is_swappable_impl | |
{ | |
template<typename _Tp, typename | |
= decltype(swap(std::declval<_Tp&>(), std::declval<_Tp&>()))> | |
static true_type __test(int); | |
template<typename> | |
static false_type __test(...); | |
}; | |
struct __do_is_nothrow_swappable_impl | |
{ | |
template<typename _Tp> | |
static __bool_constant< | |
noexcept(swap(std::declval<_Tp&>(), std::declval<_Tp&>())) | |
> __test(int); | |
template<typename> | |
static false_type __test(...); | |
}; | |
} // namespace __swappable_details | |
template<typename _Tp> | |
struct __is_swappable_impl | |
: public __swappable_details::__do_is_swappable_impl | |
{ | |
typedef decltype(__test<_Tp>(0)) type; | |
}; | |
template<typename _Tp> | |
struct __is_nothrow_swappable_impl | |
: public __swappable_details::__do_is_nothrow_swappable_impl | |
{ | |
typedef decltype(__test<_Tp>(0)) type; | |
}; | |
template<typename _Tp> | |
struct __is_swappable | |
: public __is_swappable_impl<_Tp>::type | |
{ }; | |
template<typename _Tp> | |
struct __is_nothrow_swappable | |
: public __is_nothrow_swappable_impl<_Tp>::type | |
{ }; | |
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 | |
#define __cpp_lib_is_swappable 201603 | |
/// Metafunctions used for detecting swappable types: p0185r1 | |
/// is_swappable | |
template<typename _Tp> | |
struct is_swappable | |
: public __is_swappable_impl<_Tp>::type | |
{ }; | |
/// is_nothrow_swappable | |
template<typename _Tp> | |
struct is_nothrow_swappable | |
: public __is_nothrow_swappable_impl<_Tp>::type | |
{ }; | |
#if __cplusplus >= 201402L | |
/// is_swappable_v | |
template<typename _Tp> | |
constexpr bool is_swappable_v = is_swappable<_Tp>::value; | |
/// is_nothrow_swappable_v | |
template<typename _Tp> | |
constexpr bool is_nothrow_swappable_v = is_nothrow_swappable<_Tp>::value; | |
#endif // __cplusplus >= 201402L | |
# 2698 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
namespace __swappable_with_details { | |
using std::swap; | |
struct __do_is_swappable_with_impl | |
{ | |
template<typename _Tp, typename _Up, typename | |
= decltype(swap(std::declval<_Tp>(), std::declval<_Up>())), | |
typename | |
= decltype(swap(std::declval<_Up>(), std::declval<_Tp>()))> | |
static true_type __test(int); | |
template<typename, typename> | |
static false_type __test(...); | |
}; | |
struct __do_is_nothrow_swappable_with_impl | |
{ | |
template<typename _Tp, typename _Up> | |
static __bool_constant< | |
noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())) | |
&& | |
noexcept(swap(std::declval<_Up>(), std::declval<_Tp>())) | |
> __test(int); | |
template<typename, typename> | |
static false_type __test(...); | |
}; | |
} // namespace __swappable_with_details | |
template<typename _Tp, typename _Up> | |
struct __is_swappable_with_impl | |
: public __swappable_with_details::__do_is_swappable_with_impl | |
{ | |
typedef decltype(__test<_Tp, _Up>(0)) type; | |
}; | |
// Optimization for the homogenous lvalue case, not required: | |
template<typename _Tp> | |
struct __is_swappable_with_impl<_Tp&, _Tp&> | |
: public __swappable_details::__do_is_swappable_impl | |
{ | |
typedef decltype(__test<_Tp&>(0)) type; | |
}; | |
template<typename _Tp, typename _Up> | |
struct __is_nothrow_swappable_with_impl | |
: public __swappable_with_details::__do_is_nothrow_swappable_with_impl | |
{ | |
typedef decltype(__test<_Tp, _Up>(0)) type; | |
}; | |
// Optimization for the homogenous lvalue case, not required: | |
template<typename _Tp> | |
struct __is_nothrow_swappable_with_impl<_Tp&, _Tp&> | |
: public __swappable_details::__do_is_nothrow_swappable_impl | |
{ | |
typedef decltype(__test<_Tp&>(0)) type; | |
}; | |
/// is_swappable_with | |
template<typename _Tp, typename _Up> | |
struct is_swappable_with | |
: public __is_swappable_with_impl<_Tp, _Up>::type | |
{ }; | |
/// is_nothrow_swappable_with | |
template<typename _Tp, typename _Up> | |
struct is_nothrow_swappable_with | |
: public __is_nothrow_swappable_with_impl<_Tp, _Up>::type | |
{ }; | |
#if __cplusplus >= 201402L | |
/// is_swappable_with_v | |
template<typename _Tp, typename _Up> | |
constexpr bool is_swappable_with_v = is_swappable_with<_Tp, _Up>::value; | |
/// is_nothrow_swappable_with_v | |
template<typename _Tp, typename _Up> | |
constexpr bool is_nothrow_swappable_with_v = | |
is_nothrow_swappable_with<_Tp, _Up>::value; | |
#endif // __cplusplus >= 201402L | |
# 2781 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#endif// c++1z or gnu++11 | |
# 2783 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
// __is_callable (std::is_callable for C++11) | |
template<typename _Result, typename _Ret, typename = __void_t<>> | |
struct __is_callable_impl : false_type { }; | |
template<typename _Result, typename _Ret> | |
struct __is_callable_impl<_Result, _Ret, __void_t<typename _Result::type>> | |
: __or_<is_void<_Ret>, is_convertible<typename _Result::type, _Ret>>::type | |
{ }; | |
template<typename, typename _Ret = void> | |
struct __is_callable; // not defined | |
template<typename _Fn, typename... _ArgTypes, typename _Ret> | |
struct __is_callable<_Fn(_ArgTypes...), _Ret> | |
: __is_callable_impl<result_of<_Fn(_ArgTypes...)>, _Ret>::type | |
{ }; | |
// Used by __invoke and __is_nothrow_callable to unwrap a reference_wrapper. | |
template<typename _Tp, typename _Up = typename decay<_Tp>::type> | |
struct __inv_unwrap | |
{ | |
using type = _Tp; | |
}; | |
template<typename _Tp, typename _Up> | |
struct __inv_unwrap<_Tp, reference_wrapper<_Up>> | |
{ | |
using type = _Up&; | |
}; | |
template<typename _Fn, typename _Tp, typename... _Args> | |
constexpr bool __call_is_nt(__invoke_memfun_ref) | |
{ | |
using _Up = typename __inv_unwrap<_Tp>::type; | |
return noexcept((std::declval<_Up>().*std::declval<_Fn>())( | |
std::declval<_Args>()...)); | |
} | |
template<typename _Fn, typename _Tp, typename... _Args> | |
constexpr bool __call_is_nt(__invoke_memfun_deref) | |
{ | |
return noexcept(((*std::declval<_Tp>()).*std::declval<_Fn>())( | |
std::declval<_Args>()...)); | |
} | |
template<typename _Fn, typename _Tp> | |
constexpr bool __call_is_nt(__invoke_memobj_ref) | |
{ | |
using _Up = typename __inv_unwrap<_Tp>::type; | |
return noexcept(std::declval<_Up>().*std::declval<_Fn>()); | |
} | |
template<typename _Fn, typename _Tp> | |
constexpr bool __call_is_nt(__invoke_memobj_deref) | |
{ | |
return noexcept((*std::declval<_Tp>()).*std::declval<_Fn>()); | |
} | |
template<typename _Fn, typename... _Args> | |
constexpr bool __call_is_nt(__invoke_other) | |
{ | |
return noexcept(std::declval<_Fn>()(std::declval<_Args>()...)); | |
} | |
template<typename _ResultOf, typename _Fn, typename... _Args> | |
struct __call_is_nothrow | |
: __bool_constant< | |
std::__call_is_nt<_Fn, _Args...>(typename _ResultOf::__invoke_type{})> | |
{ }; | |
// __is_nothrow_callable (std::is_nothrow_callable for C++11) | |
template<typename, typename _Ret = void> | |
struct __is_nothrow_callable; // not defined | |
template<typename _Fn, typename... _Args, typename _Ret> | |
struct __is_nothrow_callable<_Fn(_Args...), _Ret> | |
: __and_<__is_callable<_Fn(_Args...), _Ret>, | |
__call_is_nothrow<result_of<_Fn(_Args...)>, _Fn, _Args...>>::type | |
{ }; | |
struct __nonesuch { | |
__nonesuch() = delete; | |
~__nonesuch() = delete; | |
__nonesuch(__nonesuch const&) = delete; | |
void operator=(__nonesuch const&) = delete; | |
}; | |
#if __cplusplus > 201402L | |
# define __cpp_lib_is_callable 201603 | |
/// std::is_callable | |
template<typename, typename _Ret = void> | |
struct is_callable; // not defined | |
template<typename _Fn, typename... _ArgTypes, typename _Ret> | |
struct is_callable<_Fn(_ArgTypes...), _Ret> | |
: __is_callable<_Fn(_ArgTypes...), _Ret>::type | |
{ }; | |
/// std::is_nothrow_callable | |
template<typename, typename _Ret = void> | |
struct is_nothrow_callable; // not defined | |
template<typename _Fn, typename... _ArgTypes, typename _Ret> | |
struct is_nothrow_callable<_Fn(_ArgTypes...), _Ret> | |
: __is_nothrow_callable<_Fn(_ArgTypes...), _Ret>::type | |
{ }; | |
/// std::is_callable_v | |
template<typename T, typename _Ret = void> | |
constexpr bool is_callable_v = is_callable<T, _Ret>::value; | |
/// std::is_nothrow_callable_v | |
template<typename T, typename _Ret = void> | |
constexpr bool is_nothrow_callable_v = is_nothrow_callable<T, _Ret>::value; | |
#endif // C++17 | |
# 2902 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#if __cplusplus > 201402L | |
# define __cpp_lib_type_trait_variable_templates 201510L | |
template <typename _Tp> | |
constexpr bool is_void_v = is_void<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_integral_v = is_integral<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_floating_point_v = is_floating_point<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_array_v = is_array<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_pointer_v = is_pointer<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_lvalue_reference_v = is_lvalue_reference<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_rvalue_reference_v = is_rvalue_reference<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_member_object_pointer_v = | |
is_member_object_pointer<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_member_function_pointer_v = | |
is_member_function_pointer<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_enum_v = is_enum<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_union_v = is_union<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_class_v = is_class<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_function_v = is_function<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_reference_v = is_reference<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_fundamental_v = is_fundamental<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_object_v = is_object<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_scalar_v = is_scalar<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_compound_v = is_compound<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_const_v = is_const<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_volatile_v = is_volatile<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_trivial_v = is_trivial<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_trivially_copyable_v = is_trivially_copyable<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_pod_v = is_pod<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_literal_type_v = is_literal_type<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_empty_v = is_empty<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_abstract_v = is_abstract<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_final_v = is_final<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_signed_v = is_signed<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_unsigned_v = is_unsigned<_Tp>::value; | |
template <typename _Tp, typename... _Args> | |
constexpr bool is_constructible_v = is_constructible<_Tp, _Args...>::value; | |
template <typename _Tp> | |
constexpr bool is_default_constructible_v = | |
is_default_constructible<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_copy_constructible_v = is_copy_constructible<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_move_constructible_v = is_move_constructible<_Tp>::value; | |
template <typename _Tp, typename _Up> | |
constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value; | |
template <typename _Tp> | |
constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_destructible_v = is_destructible<_Tp>::value; | |
template <typename _Tp, typename... _Args> | |
constexpr bool is_trivially_constructible_v = | |
is_trivially_constructible<_Tp, _Args...>::value; | |
template <typename _Tp> | |
constexpr bool is_trivially_default_constructible_v = | |
is_trivially_default_constructible<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_trivially_copy_constructible_v = | |
is_trivially_copy_constructible<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_trivially_move_constructible_v = | |
is_trivially_move_constructible<_Tp>::value; | |
template <typename _Tp, typename _Up> | |
constexpr bool is_trivially_assignable_v = | |
is_trivially_assignable<_Tp, _Up>::value; | |
template <typename _Tp> | |
constexpr bool is_trivially_copy_assignable_v = | |
is_trivially_copy_assignable<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_trivially_move_assignable_v = | |
is_trivially_move_assignable<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_trivially_destructible_v = | |
is_trivially_destructible<_Tp>::value; | |
template <typename _Tp, typename... _Args> | |
constexpr bool is_nothrow_constructible_v = | |
is_nothrow_constructible<_Tp, _Args...>::value; | |
template <typename _Tp> | |
constexpr bool is_nothrow_default_constructible_v = | |
is_nothrow_default_constructible<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_nothrow_copy_constructible_v = | |
is_nothrow_copy_constructible<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_nothrow_move_constructible_v = | |
is_nothrow_move_constructible<_Tp>::value; | |
template <typename _Tp, typename _Up> | |
constexpr bool is_nothrow_assignable_v = | |
is_nothrow_assignable<_Tp, _Up>::value; | |
template <typename _Tp> | |
constexpr bool is_nothrow_copy_assignable_v = | |
is_nothrow_copy_assignable<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_nothrow_move_assignable_v = | |
is_nothrow_move_assignable<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool is_nothrow_destructible_v = | |
is_nothrow_destructible<_Tp>::value; | |
template <typename _Tp> | |
constexpr bool has_virtual_destructor_v = | |
has_virtual_destructor<_Tp>::value; | |
template <typename _Tp> | |
constexpr size_t alignment_of_v = alignment_of<_Tp>::value; | |
template <typename _Tp> | |
constexpr size_t rank_v = rank<_Tp>::value; | |
template <typename _Tp, unsigned _Idx = 0> | |
constexpr size_t extent_v = extent<_Tp, _Idx>::value; | |
template <typename _Tp, typename _Up> | |
constexpr bool is_same_v = is_same<_Tp, _Up>::value; | |
template <typename _Base, typename _Derived> | |
constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value; | |
template <typename _From, typename _To> | |
constexpr bool is_convertible_v = is_convertible<_From, _To>::value; | |
#ifdef __has_builtin | |
# if !__has_builtin(__has_unique_object_representations) | |
// Try not to break non-GNU compilers that don't support the built-in: | |
# define _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP 1 | |
# endif | |
# 3062 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#endif | |
# 3063 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#ifndef _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP | |
# define __cpp_lib_has_unique_object_representations 201606 | |
/// has_unique_object_representations | |
template<typename _Tp> | |
struct has_unique_object_representations | |
: bool_constant<__has_unique_object_representations( | |
remove_cv_t<remove_all_extents_t<_Tp>> | |
)> | |
{ }; | |
#endif | |
# 3074 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#undef _GLIBCXX_NO_BUILTIN_HAS_UNIQ_OBJ_REP | |
#endif // C++17 | |
# 3077 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace std | |
#endif // C++11 | |
# 3082 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
#endif // _GLIBCXX_TYPE_TRAITS | |
# 3084 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/type_traits" 3 | |
# 55 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 2 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @addtogroup utilities | |
* @{ | |
*/ | |
/** | |
* @brief Forward an lvalue. | |
* @return The parameter cast to the specified type. | |
* | |
* This function is used to implement "perfect forwarding". | |
*/ | |
template<typename _Tp> | |
constexpr _Tp&& | |
forward(typename std::remove_reference<_Tp>::type& __t) noexcept | |
{ return static_cast<_Tp&&>(__t); } | |
/** | |
* @brief Forward an rvalue. | |
* @return The parameter cast to the specified type. | |
* | |
* This function is used to implement "perfect forwarding". | |
*/ | |
template<typename _Tp> | |
constexpr _Tp&& | |
forward(typename std::remove_reference<_Tp>::type&& __t) noexcept | |
{ | |
static_assert(!std::is_lvalue_reference<_Tp>::value, "template argument" | |
" substituting _Tp is an lvalue reference type"); | |
return static_cast<_Tp&&>(__t); | |
} | |
/** | |
* @brief Convert a value to an rvalue. | |
* @param __t A thing of arbitrary type. | |
* @return The parameter cast to an rvalue-reference to allow moving it. | |
*/ | |
template<typename _Tp> | |
constexpr typename std::remove_reference<_Tp>::type&& | |
move(_Tp&& __t) noexcept | |
{ return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); } | |
template<typename _Tp> | |
struct __move_if_noexcept_cond | |
: public __and_<__not_<is_nothrow_move_constructible<_Tp>>, | |
is_copy_constructible<_Tp>>::type { }; | |
/** | |
* @brief Conditionally convert a value to an rvalue. | |
* @param __x A thing of arbitrary type. | |
* @return The parameter, possibly cast to an rvalue-reference. | |
* | |
* Same as std::move unless the type's move constructor could throw and the | |
* type is copyable, in which case an lvalue-reference is returned instead. | |
*/ | |
template<typename _Tp> | |
constexpr typename | |
conditional<__move_if_noexcept_cond<_Tp>::value, const _Tp&, _Tp&&>::type | |
move_if_noexcept(_Tp& __x) noexcept | |
{ return std::move(__x); } | |
// declval, from type_traits. | |
#if __cplusplus > 201402L | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2296. std::addressof should be constexpr | |
# define __cpp_lib_addressof_constexpr 201603 | |
#endif | |
# 128 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
/** | |
* @brief Returns the actual address of the object or function | |
* referenced by r, even in the presence of an overloaded | |
* operator&. | |
* @param __r Reference to an object or function. | |
* @return The actual address. | |
*/ | |
template<typename _Tp> | |
inline _GLIBCXX17_CONSTEXPR _Tp* | |
addressof(_Tp& __r) noexcept | |
{ return std::__addressof(__r); } | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2598. addressof works on temporaries | |
template<typename _Tp> | |
const _Tp* addressof(const _Tp&&) = delete; | |
// C++11 version of std::exchange for internal use. | |
template <typename _Tp, typename _Up = _Tp> | |
inline _Tp | |
__exchange(_Tp& __obj, _Up&& __new_val) | |
{ | |
_Tp __old_val = std::move(__obj); | |
__obj = std::forward<_Up>(__new_val); | |
return __old_val; | |
} | |
/// @} group utilities | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#define _GLIBCXX_MOVE(__val) std::move(__val) | |
#define _GLIBCXX_FORWARD(_Tp, __val) std::forward<_Tp>(__val) | |
#else | |
# 162 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
#define _GLIBCXX_MOVE(__val) (__val) | |
#define _GLIBCXX_FORWARD(_Tp, __val) (__val) | |
#endif | |
# 165 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @addtogroup utilities | |
* @{ | |
*/ | |
/** | |
* @brief Swaps two values. | |
* @param __a A thing of arbitrary type. | |
* @param __b Another thing of arbitrary type. | |
* @return Nothing. | |
*/ | |
template<typename _Tp> | |
inline | |
#if __cplusplus >= 201103L | |
typename enable_if<__and_<__not_<__is_tuple_like<_Tp>>, | |
is_move_constructible<_Tp>, | |
is_move_assignable<_Tp>>::value>::type | |
swap(_Tp& __a, _Tp& __b) | |
noexcept(__and_<is_nothrow_move_constructible<_Tp>, | |
is_nothrow_move_assignable<_Tp>>::value) | |
#else | |
# 191 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
void | |
swap(_Tp& __a, _Tp& __b) | |
#endif | |
# 194 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_SGIAssignableConcept<_Tp>) | |
_Tp __tmp = _GLIBCXX_MOVE(__a); | |
__a = _GLIBCXX_MOVE(__b); | |
__b = _GLIBCXX_MOVE(__tmp); | |
} | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// DR 809. std::swap should be overloaded for array types. | |
/// Swap the contents of two arrays. | |
template<typename _Tp, size_t _Nm> | |
inline | |
#if __cplusplus >= 201103L | |
typename enable_if<__is_swappable<_Tp>::value>::type | |
swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) | |
noexcept(__is_nothrow_swappable<_Tp>::value) | |
#else | |
# 213 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
void | |
swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm]) | |
#endif | |
# 216 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
{ | |
for (size_t __n = 0; __n < _Nm; ++__n) | |
swap(__a[__n], __b[__n]); | |
} | |
/// @} group utilities | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif /* _MOVE_H */ | |
# 226 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/move.h" 3 | |
# 60 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 2 3 | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <type_traits> // for std::__decay_and_strip too | |
#endif /* expanded by -frewrite-includes */ | |
# 62 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
# 63 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
#endif | |
# 64 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @addtogroup utilities | |
* @{ | |
*/ | |
#if __cplusplus >= 201103L | |
/// piecewise_construct_t | |
struct piecewise_construct_t { explicit piecewise_construct_t() = default; }; | |
/// piecewise_construct | |
constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); | |
// Forward declarations. | |
template<typename...> | |
class tuple; | |
template<std::size_t...> | |
struct _Index_tuple; | |
// Concept utility functions, reused in conditionally-explicit | |
// constructors. | |
// See PR 70437, don't look at is_constructible or | |
// is_convertible if the types are the same to | |
// avoid querying those properties for incomplete types. | |
template <bool, typename _T1, typename _T2> | |
struct _PCC | |
{ | |
template <typename _U1, typename _U2> | |
static constexpr bool _ConstructiblePair() | |
{ | |
return __and_<is_constructible<_T1, const _U1&>, | |
is_constructible<_T2, const _U2&>>::value; | |
} | |
template <typename _U1, typename _U2> | |
static constexpr bool _ImplicitlyConvertiblePair() | |
{ | |
return __and_<is_convertible<const _U1&, _T1>, | |
is_convertible<const _U2&, _T2>>::value; | |
} | |
template <typename _U1, typename _U2> | |
static constexpr bool _MoveConstructiblePair() | |
{ | |
return __and_<is_constructible<_T1, _U1&&>, | |
is_constructible<_T2, _U2&&>>::value; | |
} | |
template <typename _U1, typename _U2> | |
static constexpr bool _ImplicitlyMoveConvertiblePair() | |
{ | |
return __and_<is_convertible<_U1&&, _T1>, | |
is_convertible<_U2&&, _T2>>::value; | |
} | |
template <bool __implicit, typename _U1, typename _U2> | |
static constexpr bool _CopyMovePair() | |
{ | |
using __do_converts = __and_<is_convertible<const _U1&, _T1>, | |
is_convertible<_U2&&, _T2>>; | |
using __converts = typename conditional<__implicit, | |
__do_converts, | |
__not_<__do_converts>>::type; | |
return __and_<is_constructible<_T1, const _U1&>, | |
is_constructible<_T2, _U2&&>, | |
__converts | |
>::value; | |
} | |
template <bool __implicit, typename _U1, typename _U2> | |
static constexpr bool _MoveCopyPair() | |
{ | |
using __do_converts = __and_<is_convertible<_U1&&, _T1>, | |
is_convertible<const _U2&, _T2>>; | |
using __converts = typename conditional<__implicit, | |
__do_converts, | |
__not_<__do_converts>>::type; | |
return __and_<is_constructible<_T1, _U1&&>, | |
is_constructible<_T2, const _U2&&>, | |
__converts | |
>::value; | |
} | |
}; | |
template <typename _T1, typename _T2> | |
struct _PCC<false, _T1, _T2> | |
{ | |
template <typename _U1, typename _U2> | |
static constexpr bool _ConstructiblePair() | |
{ | |
return false; | |
} | |
template <typename _U1, typename _U2> | |
static constexpr bool _ImplicitlyConvertiblePair() | |
{ | |
return false; | |
} | |
template <typename _U1, typename _U2> | |
static constexpr bool _MoveConstructiblePair() | |
{ | |
return false; | |
} | |
template <typename _U1, typename _U2> | |
static constexpr bool _ImplicitlyMoveConvertiblePair() | |
{ | |
return false; | |
} | |
}; | |
#endif | |
# 182 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
/** | |
* @brief Struct holding two objects of arbitrary type. | |
* | |
* @tparam _T1 Type of first object. | |
* @tparam _T2 Type of second object. | |
*/ | |
template<typename _T1, typename _T2> | |
struct pair | |
{ | |
typedef _T1 first_type; /// @c first_type is the first bound type | |
typedef _T2 second_type; /// @c second_type is the second bound type | |
_T1 first; /// @c first is a copy of the first object | |
_T2 second; /// @c second is a copy of the second object | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 265. std::pair::pair() effects overly restrictive | |
/** The default constructor creates @c first and @c second using their | |
* respective default constructors. */ | |
#if __cplusplus >= 201103L | |
template <typename _U1 = _T1, | |
typename _U2 = _T2, | |
typename enable_if<__and_< | |
__is_implicitly_default_constructible<_U1>, | |
__is_implicitly_default_constructible<_U2>> | |
::value, bool>::type = true> | |
#endif | |
# 210 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
_GLIBCXX_CONSTEXPR pair() | |
: first(), second() { } | |
#if __cplusplus >= 201103L | |
template <typename _U1 = _T1, | |
typename _U2 = _T2, | |
typename enable_if<__and_< | |
is_default_constructible<_U1>, | |
is_default_constructible<_U2>, | |
__not_< | |
__and_<__is_implicitly_default_constructible<_U1>, | |
__is_implicitly_default_constructible<_U2>>>> | |
::value, bool>::type = false> | |
explicit constexpr pair() | |
: first(), second() { } | |
#endif | |
# 226 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
/** Two objects may be passed to a @c pair constructor to be copied. */ | |
#if __cplusplus < 201103L | |
pair(const _T1& __a, const _T2& __b) | |
: first(__a), second(__b) { } | |
#else | |
# 232 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
// Shortcut for constraining the templates that don't take pairs. | |
using _PCCP = _PCC<true, _T1, _T2>; | |
template<typename _U1 = _T1, typename _U2=_T2, typename | |
enable_if<_PCCP::template | |
_ConstructiblePair<_U1, _U2>() | |
&& _PCCP::template | |
_ImplicitlyConvertiblePair<_U1, _U2>(), | |
bool>::type=true> | |
constexpr pair(const _T1& __a, const _T2& __b) | |
: first(__a), second(__b) { } | |
template<typename _U1 = _T1, typename _U2=_T2, typename | |
enable_if<_PCCP::template | |
_ConstructiblePair<_U1, _U2>() | |
&& !_PCCP::template | |
_ImplicitlyConvertiblePair<_U1, _U2>(), | |
bool>::type=false> | |
explicit constexpr pair(const _T1& __a, const _T2& __b) | |
: first(__a), second(__b) { } | |
#endif | |
# 253 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
/** There is also a templated copy ctor for the @c pair class itself. */ | |
#if __cplusplus < 201103L | |
template<typename _U1, typename _U2> | |
pair(const pair<_U1, _U2>& __p) | |
: first(__p.first), second(__p.second) { } | |
#else | |
# 260 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
// Shortcut for constraining the templates that take pairs. | |
template <typename _U1, typename _U2> | |
using _PCCFP = _PCC<!is_same<_T1, _U1>::value | |
|| !is_same<_T2, _U2>::value, | |
_T1, _T2>; | |
template<typename _U1, typename _U2, typename | |
enable_if<_PCCFP<_U1, _U2>::template | |
_ConstructiblePair<_U1, _U2>() | |
&& _PCCFP<_U1, _U2>::template | |
_ImplicitlyConvertiblePair<_U1, _U2>(), | |
bool>::type=true> | |
constexpr pair(const pair<_U1, _U2>& __p) | |
: first(__p.first), second(__p.second) { } | |
template<typename _U1, typename _U2, typename | |
enable_if<_PCCFP<_U1, _U2>::template | |
_ConstructiblePair<_U1, _U2>() | |
&& !_PCCFP<_U1, _U2>::template | |
_ImplicitlyConvertiblePair<_U1, _U2>(), | |
bool>::type=false> | |
explicit constexpr pair(const pair<_U1, _U2>& __p) | |
: first(__p.first), second(__p.second) { } | |
constexpr pair(const pair&) = default; | |
constexpr pair(pair&&) = default; | |
// DR 811. | |
template<typename _U1, typename | |
enable_if<_PCCP::template | |
_MoveCopyPair<true, _U1, _T2>(), | |
bool>::type=true> | |
constexpr pair(_U1&& __x, const _T2& __y) | |
: first(std::forward<_U1>(__x)), second(__y) { } | |
template<typename _U1, typename | |
enable_if<_PCCP::template | |
_MoveCopyPair<false, _U1, _T2>(), | |
bool>::type=false> | |
explicit constexpr pair(_U1&& __x, const _T2& __y) | |
: first(std::forward<_U1>(__x)), second(__y) { } | |
template<typename _U2, typename | |
enable_if<_PCCP::template | |
_CopyMovePair<true, _T1, _U2>(), | |
bool>::type=true> | |
constexpr pair(const _T1& __x, _U2&& __y) | |
: first(__x), second(std::forward<_U2>(__y)) { } | |
template<typename _U2, typename | |
enable_if<_PCCP::template | |
_CopyMovePair<false, _T1, _U2>(), | |
bool>::type=false> | |
explicit pair(const _T1& __x, _U2&& __y) | |
: first(__x), second(std::forward<_U2>(__y)) { } | |
template<typename _U1, typename _U2, typename | |
enable_if<_PCCP::template | |
_MoveConstructiblePair<_U1, _U2>() | |
&& _PCCP::template | |
_ImplicitlyMoveConvertiblePair<_U1, _U2>(), | |
bool>::type=true> | |
constexpr pair(_U1&& __x, _U2&& __y) | |
: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } | |
template<typename _U1, typename _U2, typename | |
enable_if<_PCCP::template | |
_MoveConstructiblePair<_U1, _U2>() | |
&& !_PCCP::template | |
_ImplicitlyMoveConvertiblePair<_U1, _U2>(), | |
bool>::type=false> | |
explicit constexpr pair(_U1&& __x, _U2&& __y) | |
: first(std::forward<_U1>(__x)), second(std::forward<_U2>(__y)) { } | |
template<typename _U1, typename _U2, typename | |
enable_if<_PCCFP<_U1, _U2>::template | |
_MoveConstructiblePair<_U1, _U2>() | |
&& _PCCFP<_U1, _U2>::template | |
_ImplicitlyMoveConvertiblePair<_U1, _U2>(), | |
bool>::type=true> | |
constexpr pair(pair<_U1, _U2>&& __p) | |
: first(std::forward<_U1>(__p.first)), | |
second(std::forward<_U2>(__p.second)) { } | |
template<typename _U1, typename _U2, typename | |
enable_if<_PCCFP<_U1, _U2>::template | |
_MoveConstructiblePair<_U1, _U2>() | |
&& !_PCCFP<_U1, _U2>::template | |
_ImplicitlyMoveConvertiblePair<_U1, _U2>(), | |
bool>::type=false> | |
explicit constexpr pair(pair<_U1, _U2>&& __p) | |
: first(std::forward<_U1>(__p.first)), | |
second(std::forward<_U2>(__p.second)) { } | |
template<typename... _Args1, typename... _Args2> | |
pair(piecewise_construct_t, tuple<_Args1...>, tuple<_Args2...>); | |
pair& | |
operator=(typename conditional< | |
__and_<is_copy_assignable<_T1>, | |
is_copy_assignable<_T2>>::value, | |
const pair&, const __nonesuch&>::type __p) | |
{ | |
first = __p.first; | |
second = __p.second; | |
return *this; | |
} | |
pair& | |
operator=(typename conditional< | |
__not_<__and_<is_copy_assignable<_T1>, | |
is_copy_assignable<_T2>>>::value, | |
const pair&, const __nonesuch&>::type __p) = delete; | |
pair& | |
operator=(typename conditional< | |
__and_<is_move_assignable<_T1>, | |
is_move_assignable<_T2>>::value, | |
pair&&, __nonesuch&&>::type __p) | |
noexcept(__and_<is_nothrow_move_assignable<_T1>, | |
is_nothrow_move_assignable<_T2>>::value) | |
{ | |
first = std::forward<first_type>(__p.first); | |
second = std::forward<second_type>(__p.second); | |
return *this; | |
} | |
template<typename _U1, typename _U2> | |
typename enable_if<__and_<is_assignable<_T1&, const _U1&>, | |
is_assignable<_T2&, const _U2&>>::value, | |
pair&>::type | |
operator=(const pair<_U1, _U2>& __p) | |
{ | |
first = __p.first; | |
second = __p.second; | |
return *this; | |
} | |
template<typename _U1, typename _U2> | |
typename enable_if<__and_<is_assignable<_T1&, _U1&&>, | |
is_assignable<_T2&, _U2&&>>::value, | |
pair&>::type | |
operator=(pair<_U1, _U2>&& __p) | |
{ | |
first = std::forward<_U1>(__p.first); | |
second = std::forward<_U2>(__p.second); | |
return *this; | |
} | |
void | |
swap(pair& __p) | |
noexcept(__and_<__is_nothrow_swappable<_T1>, | |
__is_nothrow_swappable<_T2>>::value) | |
{ | |
using std::swap; | |
swap(first, __p.first); | |
swap(second, __p.second); | |
} | |
private: | |
template<typename... _Args1, std::size_t... _Indexes1, | |
typename... _Args2, std::size_t... _Indexes2> | |
pair(tuple<_Args1...>&, tuple<_Args2...>&, | |
_Index_tuple<_Indexes1...>, _Index_tuple<_Indexes2...>); | |
#endif | |
# 426 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
}; | |
/// Two pairs of the same type are equal iff their members are equal. | |
template<typename _T1, typename _T2> | |
inline _GLIBCXX_CONSTEXPR bool | |
operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | |
{ return __x.first == __y.first && __x.second == __y.second; } | |
/// <http://gcc.gnu.org/onlinedocs/libstdc++/manual/utilities.html> | |
template<typename _T1, typename _T2> | |
inline _GLIBCXX_CONSTEXPR 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); } | |
/// Uses @c operator== to find the result. | |
template<typename _T1, typename _T2> | |
inline _GLIBCXX_CONSTEXPR bool | |
operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | |
{ return !(__x == __y); } | |
/// Uses @c operator< to find the result. | |
template<typename _T1, typename _T2> | |
inline _GLIBCXX_CONSTEXPR bool | |
operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | |
{ return __y < __x; } | |
/// Uses @c operator< to find the result. | |
template<typename _T1, typename _T2> | |
inline _GLIBCXX_CONSTEXPR bool | |
operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | |
{ return !(__y < __x); } | |
/// Uses @c operator< to find the result. | |
template<typename _T1, typename _T2> | |
inline _GLIBCXX_CONSTEXPR bool | |
operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y) | |
{ return !(__x < __y); } | |
#if __cplusplus >= 201103L | |
/// See std::pair::swap(). | |
// Note: no std::swap overloads in C++03 mode, this has performance | |
// implications, see, eg, libstdc++/38466. | |
template<typename _T1, typename _T2> | |
inline | |
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 | |
// Constrained free swap overload, see p0185r1 | |
typename enable_if<__and_<__is_swappable<_T1>, | |
__is_swappable<_T2>>::value>::type | |
#else | |
# 476 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
void | |
#endif | |
# 478 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y) | |
noexcept(noexcept(__x.swap(__y))) | |
{ __x.swap(__y); } | |
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11 | |
template<typename _T1, typename _T2> | |
typename enable_if<!__and_<__is_swappable<_T1>, | |
__is_swappable<_T2>>::value>::type | |
swap(pair<_T1, _T2>&, pair<_T1, _T2>&) = delete; | |
#endif | |
# 488 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
#endif // __cplusplus >= 201103L | |
# 489 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
/** | |
* @brief A convenience wrapper for creating a pair from two objects. | |
* @param __x The first object. | |
* @param __y The second object. | |
* @return A newly-constructed pair<> object of the appropriate type. | |
* | |
* The standard requires that the objects be passed by reference-to-const, | |
* but LWG issue #181 says they should be passed by const value. We follow | |
* the LWG by default. | |
*/ | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 181. make_pair() unintended behavior | |
#if __cplusplus >= 201103L | |
// NB: DR 706. | |
template<typename _T1, typename _T2> | |
constexpr pair<typename __decay_and_strip<_T1>::__type, | |
typename __decay_and_strip<_T2>::__type> | |
make_pair(_T1&& __x, _T2&& __y) | |
{ | |
typedef typename __decay_and_strip<_T1>::__type __ds_type1; | |
typedef typename __decay_and_strip<_T2>::__type __ds_type2; | |
typedef pair<__ds_type1, __ds_type2> __pair_type; | |
return __pair_type(std::forward<_T1>(__x), std::forward<_T2>(__y)); | |
} | |
#else | |
# 515 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
template<typename _T1, typename _T2> | |
inline pair<_T1, _T2> | |
make_pair(_T1 __x, _T2 __y) | |
{ return pair<_T1, _T2>(__x, __y); } | |
#endif | |
# 520 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
/// @} | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace std | |
#endif /* _STL_PAIR_H */ | |
# 527 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_pair.h" 3 | |
# 71 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 2 3 | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <type_traits> | |
#endif /* expanded by -frewrite-includes */ | |
# 74 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
# 75 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/move.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 75 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
# 76 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <initializer_list> | |
#endif /* expanded by -frewrite-includes */ | |
# 76 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 1 3 | |
// std::initializer_list support -*- C++ -*- | |
// Copyright (C) 2008-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file initializer_list | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef _INITIALIZER_LIST | |
#define _INITIALIZER_LIST | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 3 | |
#if __cplusplus < 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <bits/c++0x_warning.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 3 | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 3 | |
#else // C++0x | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 3 | |
#pragma GCC visibility push(default) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 3 | |
namespace std | |
{ | |
/// initializer_list | |
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; | |
private: | |
iterator _M_array; | |
size_type _M_len; | |
// The compiler can call a private constructor. | |
constexpr initializer_list(const_iterator __a, size_type __l) | |
: _M_array(__a), _M_len(__l) { } | |
public: | |
constexpr initializer_list() noexcept | |
: _M_array(0), _M_len(0) { } | |
// Number of elements. | |
constexpr size_type | |
size() const noexcept { return _M_len; } | |
// First element. | |
constexpr const_iterator | |
begin() const noexcept { return _M_array; } | |
// One past the last element. | |
constexpr const_iterator | |
end() const noexcept { return begin() + size(); } | |
}; | |
/** | |
* @brief Return an iterator pointing to the first element of | |
* the initializer_list. | |
* @param __ils Initializer list. | |
*/ | |
template<class _Tp> | |
constexpr const _Tp* | |
begin(initializer_list<_Tp> __ils) noexcept | |
{ return __ils.begin(); } | |
/** | |
* @brief Return an iterator pointing to one past the last element | |
* of the initializer_list. | |
* @param __ils Initializer list. | |
*/ | |
template<class _Tp> | |
constexpr const _Tp* | |
end(initializer_list<_Tp> __ils) noexcept | |
{ return __ils.end(); } | |
} | |
#pragma GCC visibility pop | |
#endif // C++11 | |
# 106 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 3 | |
#endif // _INITIALIZER_LIST | |
# 108 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/initializer_list" 3 | |
# 77 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 2 3 | |
#if __cplusplus > 201402L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <exception> | |
#endif /* expanded by -frewrite-includes */ | |
# 79 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 1 3 | |
// Exception Handling support header for -*- C++ -*- | |
// Copyright (C) 1995-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file exception | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef __EXCEPTION__ | |
#define __EXCEPTION__ | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
#pragma GCC visibility push(default) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/exception.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception.h" 1 3 | |
// Exception Handling support header for -*- C++ -*- | |
// Copyright (C) 2016-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/exception.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. | |
*/ | |
#ifndef __EXCEPTION_H | |
#define __EXCEPTION_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception.h" 3 | |
#pragma GCC visibility push(default) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception.h" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception.h" 3 | |
extern "C++" { | |
namespace std | |
{ | |
/** | |
* @defgroup exceptions Exceptions | |
* @ingroup diagnostics | |
* | |
* Classes and functions for reporting errors via exception classes. | |
* @{ | |
*/ | |
/** | |
* @brief Base class for all library exceptions. | |
* | |
* This is the base class for all exceptions thrown by the standard | |
* library, and by certain language expressions. You are free to derive | |
* your own %exception classes, or use a different hierarchy, or to | |
* throw non-class data (e.g., fundamental types). | |
*/ | |
class exception | |
{ | |
public: | |
exception() _GLIBCXX_USE_NOEXCEPT { } | |
virtual ~exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT; | |
/** Returns a C-style character string describing the general cause | |
* of the current error. */ | |
virtual const char* | |
what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT; | |
}; | |
} // namespace std | |
} | |
#pragma GCC visibility pop | |
#endif | |
# 79 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception.h" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 2 3 | |
extern "C++" { | |
namespace std | |
{ | |
/** If an %exception is thrown which is not listed in a function's | |
* %exception specification, one of these may be thrown. */ | |
class bad_exception : public exception | |
{ | |
public: | |
bad_exception() _GLIBCXX_USE_NOEXCEPT { } | |
// This declaration is not useless: | |
// http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 | |
virtual ~bad_exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT; | |
// See comment in eh_exception.cc. | |
virtual const char* | |
what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT; | |
}; | |
/// If you write a replacement %terminate handler, it must be of this type. | |
typedef void (*terminate_handler) (); | |
/// If you write a replacement %unexpected handler, it must be of this type. | |
typedef void (*unexpected_handler) (); | |
/// Takes a new handler function as an argument, returns the old function. | |
terminate_handler set_terminate(terminate_handler) _GLIBCXX_USE_NOEXCEPT; | |
#if __cplusplus >= 201103L | |
/// Return the current terminate handler. | |
terminate_handler get_terminate() noexcept; | |
#endif | |
# 73 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
/** The runtime will call this function if %exception handling must be | |
* abandoned for any reason. It can also be called by the user. */ | |
void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__)); | |
/// Takes a new handler function as an argument, returns the old function. | |
unexpected_handler set_unexpected(unexpected_handler) _GLIBCXX_USE_NOEXCEPT; | |
#if __cplusplus >= 201103L | |
/// Return the current unexpected handler. | |
unexpected_handler get_unexpected() noexcept; | |
#endif | |
# 85 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
/** The runtime will call this function if an %exception is thrown which | |
* violates the function's %exception specification. */ | |
void unexpected() __attribute__ ((__noreturn__)); | |
/** [18.6.4]/1: 'Returns true after completing evaluation of a | |
* throw-expression until either completing initialization of the | |
* exception-declaration in the matching handler or entering @c unexpected() | |
* due to the throw; or after entering @c terminate() for any reason | |
* other than an explicit call to @c terminate(). [Note: This includes | |
* stack unwinding [15.2]. end note]' | |
* | |
* 2: 'When @c uncaught_exception() is true, throwing an | |
* %exception can result in a call of @c terminate() | |
* (15.5.1).' | |
*/ | |
bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); | |
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++98 | |
#define __cpp_lib_uncaught_exceptions 201411 | |
/// The number of uncaught exceptions. | |
int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); | |
#endif | |
# 108 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
// @} group exceptions | |
} // namespace std | |
namespace __gnu_cxx | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @brief A replacement for the standard terminate_handler which | |
* prints more information about the terminating exception (if any) | |
* on stderr. | |
* | |
* @ingroup exceptions | |
* | |
* Call | |
* @code | |
* std::set_terminate(__gnu_cxx::__verbose_terminate_handler) | |
* @endcode | |
* to use. For more info, see | |
* http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt02ch06s02.html | |
* | |
* In 3.4 and later, this is on by default. | |
*/ | |
void __verbose_terminate_handler(); | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
} // extern "C++" | |
#pragma GCC visibility pop | |
#if (__cplusplus >= 201103L) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/exception_ptr.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 142 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 1 3 | |
// Exception Handling support header (exception_ptr class) for -*- C++ -*- | |
// Copyright (C) 2008-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/exception_ptr.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{exception} | |
*/ | |
#ifndef _EXCEPTION_PTR_H | |
#define _EXCEPTION_PTR_H | |
#pragma GCC visibility push(default) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/exception_defines.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_defines.h" 1 3 | |
// -fno-exceptions Support -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/exception_defines.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{exception} | |
*/ | |
#ifndef _EXCEPTION_DEFINES_H | |
#define _EXCEPTION_DEFINES_H 1 | |
#if ! __cpp_exceptions | |
// Iff -fno-exceptions, transform error handling code to work without it. | |
# define __try if (true) | |
# define __catch(X) if (false) | |
# define __throw_exception_again | |
#else | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_defines.h" 3 | |
// Else proceed normally. | |
# define __try try | |
# define __catch(X) catch(X) | |
# define __throw_exception_again throw | |
#endif | |
# 44 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_defines.h" 3 | |
#endif | |
# 46 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_defines.h" 3 | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/cxxabi_init_exception.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 1 3 | |
// ABI Support -*- C++ -*- | |
// Copyright (C) 2016-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/cxxabi_init_exception.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. | |
*/ | |
#ifndef _CXXABI_INIT_EXCEPTION_H | |
#define _CXXABI_INIT_EXCEPTION_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 3 | |
#pragma GCC visibility push(default) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <stddef.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.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 | |
# 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 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 3 | |
#ifndef _GLIBCXX_CDTOR_CALLABI | |
#define _GLIBCXX_CDTOR_CALLABI | |
#define _GLIBCXX_HAVE_CDTOR_CALLABI 0 | |
#else | |
# 45 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 3 | |
#define _GLIBCXX_HAVE_CDTOR_CALLABI 1 | |
#endif | |
# 47 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 3 | |
#ifdef __cplusplus | |
namespace std | |
{ | |
class type_info; | |
} | |
namespace __cxxabiv1 | |
{ | |
struct __cxa_refcounted_exception; | |
extern "C" | |
{ | |
// Allocate memory for the primary exception plus the thrown object. | |
void* | |
__cxa_allocate_exception(size_t) _GLIBCXX_NOTHROW; | |
// Initialize exception (this is a GNU extension) | |
__cxa_refcounted_exception* | |
__cxa_init_primary_exception(void *object, std::type_info *tinfo, | |
void (_GLIBCXX_CDTOR_CALLABI *dest) (void *)) _GLIBCXX_NOTHROW; | |
} | |
} // namespace __cxxabiv1 | |
#endif | |
# 74 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 3 | |
#pragma GCC visibility pop | |
#endif // _CXXABI_INIT_EXCEPTION_H | |
# 78 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_init_exception.h" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <typeinfo> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 1 3 | |
// RTTI support for -*- C++ -*- | |
// Copyright (C) 1994-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file typeinfo | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef _TYPEINFO | |
#define _TYPEINFO | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/exception.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/hash_bytes.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/hash_bytes.h" 1 3 | |
// Declarations for hash functions. -*- C++ -*- | |
// Copyright (C) 2010-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/hash_bytes.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{functional} | |
*/ | |
#ifndef _HASH_BYTES_H | |
#define _HASH_BYTES_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/hash_bytes.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/hash_bytes.h" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/hash_bytes.h" 3 | |
namespace std | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// Hash function implementation for the nontrivial specialization. | |
// All of them are based on a primitive that hashes a pointer to a | |
// byte array. The actual hash algorithm is not guaranteed to stay | |
// the same from release to release -- it may be updated or tuned to | |
// improve hash quality or speed. | |
size_t | |
_Hash_bytes(const void* __ptr, size_t __len, size_t __seed); | |
// A similar hash primitive, using the FNV hash algorithm. This | |
// algorithm is guaranteed to stay the same from release to release. | |
// (although it might not produce the same values on different | |
// machines.) | |
size_t | |
_Fnv_hash_bytes(const void* __ptr, size_t __len, size_t __seed); | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif | |
# 60 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/hash_bytes.h" 3 | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 2 3 | |
#endif | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
#pragma GCC visibility push(default) | |
extern "C++" { | |
namespace __cxxabiv1 | |
{ | |
class __class_type_info; | |
} // namespace __cxxabiv1 | |
// Determine whether typeinfo names for the same type are merged (in which | |
// case comparison can just compare pointers) or not (in which case strings | |
// must be compared), and whether comparison is to be implemented inline or | |
// not. We used to do inline pointer comparison by default if weak symbols | |
// are available, but even with weak symbols sometimes names are not merged | |
// when objects are loaded with RTLD_LOCAL, so now we always use strcmp by | |
// default. For ABI compatibility, we do the strcmp inline if weak symbols | |
// are available, and out-of-line if not. Out-of-line pointer comparison | |
// is used where the object files are to be portable to multiple systems, | |
// some of which may not be able to use pointer comparison, but the | |
// particular system for which libstdc++ is being built can use pointer | |
// comparison; in particular for most ARM EABI systems, where the ABI | |
// specifies out-of-line comparison. The compiler's target configuration | |
// can override the defaults by defining __GXX_TYPEINFO_EQUALITY_INLINE to | |
// 1 or 0 to indicate whether or not comparison is inline, and | |
// __GXX_MERGED_TYPEINFO_NAMES to 1 or 0 to indicate whether or not pointer | |
// comparison can be used. | |
#ifndef __GXX_MERGED_TYPEINFO_NAMES | |
// By default, typeinfo names are not merged. | |
#define __GXX_MERGED_TYPEINFO_NAMES 0 | |
#endif | |
# 70 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
// By default follow the old inline rules to avoid ABI changes. | |
#ifndef __GXX_TYPEINFO_EQUALITY_INLINE | |
#if !__GXX_WEAK__ | |
#define __GXX_TYPEINFO_EQUALITY_INLINE 0 | |
#else | |
# 76 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
#define __GXX_TYPEINFO_EQUALITY_INLINE 1 | |
#endif | |
# 78 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
#endif | |
# 79 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
namespace std | |
{ | |
/** | |
* @brief Part of RTTI. | |
* | |
* The @c type_info class describes type information generated by | |
* an implementation. | |
*/ | |
class type_info | |
{ | |
public: | |
/** Destructor first. Being the first non-inline virtual function, this | |
* controls in which translation unit the vtable is emitted. The | |
* compiler makes use of that information to know where to emit | |
* the runtime-mandated type_info structures in the new-abi. */ | |
virtual ~type_info(); | |
/** Returns an @e implementation-defined byte string; this is not | |
* portable between compilers! */ | |
const char* name() const _GLIBCXX_NOEXCEPT | |
{ return __name[0] == '*' ? __name + 1 : __name; } | |
#if !__GXX_TYPEINFO_EQUALITY_INLINE | |
// In old abi, or when weak symbols are not supported, there can | |
// be multiple instances of a type_info object for one | |
// type. Uniqueness must use the _name value, not object address. | |
bool before(const type_info& __arg) const _GLIBCXX_NOEXCEPT; | |
bool operator==(const type_info& __arg) const _GLIBCXX_NOEXCEPT; | |
#else | |
# 109 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
#if !__GXX_MERGED_TYPEINFO_NAMES | |
/** Returns true if @c *this precedes @c __arg in the implementation's | |
* collation order. */ | |
// Even with the new abi, on systems that support dlopen | |
// we can run into cases where type_info names aren't merged, | |
// so we still need to do string comparison. | |
bool before(const type_info& __arg) const _GLIBCXX_NOEXCEPT | |
{ return (__name[0] == '*' && __arg.__name[0] == '*') | |
? __name < __arg.__name | |
: __builtin_strcmp (__name, __arg.__name) < 0; } | |
bool operator==(const type_info& __arg) const _GLIBCXX_NOEXCEPT | |
{ | |
return ((__name == __arg.__name) | |
|| (__name[0] != '*' && | |
__builtin_strcmp (__name, __arg.__name) == 0)); | |
} | |
#else | |
# 127 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
// On some targets we can rely on type_info's NTBS being unique, | |
// and therefore address comparisons are sufficient. | |
bool before(const type_info& __arg) const _GLIBCXX_NOEXCEPT | |
{ return __name < __arg.__name; } | |
bool operator==(const type_info& __arg) const _GLIBCXX_NOEXCEPT | |
{ return __name == __arg.__name; } | |
#endif | |
# 135 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
#endif | |
# 136 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
bool operator!=(const type_info& __arg) const _GLIBCXX_NOEXCEPT | |
{ return !operator==(__arg); } | |
#if __cplusplus >= 201103L | |
size_t hash_code() const noexcept | |
{ | |
# if !__GXX_MERGED_TYPEINFO_NAMES | |
return _Hash_bytes(name(), __builtin_strlen(name()), | |
static_cast<size_t>(0xc70f6907UL)); | |
# else | |
# 146 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
return reinterpret_cast<size_t>(__name); | |
# endif | |
# 148 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
} | |
#endif // C++11 | |
# 150 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
// Return true if this is a pointer type of some kind | |
virtual bool __is_pointer_p() const; | |
// Return true if this is a function type | |
virtual bool __is_function_p() const; | |
// Try and catch a thrown type. Store an adjusted pointer to the | |
// caught type in THR_OBJ. If THR_TYPE is not a pointer type, then | |
// THR_OBJ points to the thrown object. If THR_TYPE is a pointer | |
// type, then THR_OBJ is the pointer itself. OUTER indicates the | |
// number of outer pointers, and whether they were const | |
// qualified. | |
virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj, | |
unsigned __outer) const; | |
// Internally used during catch matching | |
virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target, | |
void **__obj_ptr) const; | |
protected: | |
const char *__name; | |
explicit type_info(const char *__n): __name(__n) { } | |
private: | |
/// Assigning type_info is not supported. | |
type_info& operator=(const type_info&); | |
type_info(const type_info&); | |
}; | |
/** | |
* @brief Thrown during incorrect typecasting. | |
* @ingroup exceptions | |
* | |
* If you attempt an invalid @c dynamic_cast expression, an instance of | |
* this class (or something derived from this class) is thrown. */ | |
class bad_cast : public exception | |
{ | |
public: | |
bad_cast() _GLIBCXX_USE_NOEXCEPT { } | |
// This declaration is not useless: | |
// http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 | |
virtual ~bad_cast() _GLIBCXX_USE_NOEXCEPT; | |
// See comment in eh_exception.cc. | |
virtual const char* what() const _GLIBCXX_USE_NOEXCEPT; | |
}; | |
/** | |
* @brief Thrown when a NULL pointer in a @c typeid expression is used. | |
* @ingroup exceptions | |
*/ | |
class bad_typeid : public exception | |
{ | |
public: | |
bad_typeid () _GLIBCXX_USE_NOEXCEPT { } | |
// This declaration is not useless: | |
// http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 | |
virtual ~bad_typeid() _GLIBCXX_USE_NOEXCEPT; | |
// See comment in eh_exception.cc. | |
virtual const char* what() const _GLIBCXX_USE_NOEXCEPT; | |
}; | |
} // namespace std | |
} // extern "C++" | |
#pragma GCC visibility pop | |
#endif | |
# 223 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/typeinfo" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <new> | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 1 3 | |
// The -*- C++ -*- dynamic memory management header. | |
// Copyright (C) 1994-2017 Free Software Foundation, Inc. | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file new | |
* This is a Standard C++ Library header. | |
* | |
* The header @c new defines several functions to manage dynamic memory and | |
* handling memory allocation errors; see | |
* http://gcc.gnu.org/onlinedocs/libstdc++/18_support/howto.html#4 for more. | |
*/ | |
#ifndef _NEW | |
#define _NEW | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <exception> | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 1 3 | |
// Exception Handling support header for -*- C++ -*- | |
// Copyright (C) 1995-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file exception | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef __EXCEPTION__ | |
#define __EXCEPTION__ | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
#pragma GCC visibility push(default) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/exception.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
extern "C++" { | |
namespace std | |
{ | |
/** If an %exception is thrown which is not listed in a function's | |
* %exception specification, one of these may be thrown. */ | |
class bad_exception : public exception | |
{ | |
public: | |
bad_exception() _GLIBCXX_USE_NOEXCEPT { } | |
// This declaration is not useless: | |
// http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 | |
virtual ~bad_exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT; | |
// See comment in eh_exception.cc. | |
virtual const char* | |
what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_USE_NOEXCEPT; | |
}; | |
/// If you write a replacement %terminate handler, it must be of this type. | |
typedef void (*terminate_handler) (); | |
/// If you write a replacement %unexpected handler, it must be of this type. | |
typedef void (*unexpected_handler) (); | |
/// Takes a new handler function as an argument, returns the old function. | |
terminate_handler set_terminate(terminate_handler) _GLIBCXX_USE_NOEXCEPT; | |
#if __cplusplus >= 201103L | |
/// Return the current terminate handler. | |
terminate_handler get_terminate() noexcept; | |
#endif | |
# 73 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
/** The runtime will call this function if %exception handling must be | |
* abandoned for any reason. It can also be called by the user. */ | |
void terminate() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__noreturn__)); | |
/// Takes a new handler function as an argument, returns the old function. | |
unexpected_handler set_unexpected(unexpected_handler) _GLIBCXX_USE_NOEXCEPT; | |
#if __cplusplus >= 201103L | |
/// Return the current unexpected handler. | |
unexpected_handler get_unexpected() noexcept; | |
#endif | |
# 85 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
/** The runtime will call this function if an %exception is thrown which | |
* violates the function's %exception specification. */ | |
void unexpected() __attribute__ ((__noreturn__)); | |
/** [18.6.4]/1: 'Returns true after completing evaluation of a | |
* throw-expression until either completing initialization of the | |
* exception-declaration in the matching handler or entering @c unexpected() | |
* due to the throw; or after entering @c terminate() for any reason | |
* other than an explicit call to @c terminate(). [Note: This includes | |
* stack unwinding [15.2]. end note]' | |
* | |
* 2: 'When @c uncaught_exception() is true, throwing an | |
* %exception can result in a call of @c terminate() | |
* (15.5.1).' | |
*/ | |
bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); | |
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++98 | |
#define __cpp_lib_uncaught_exceptions 201411 | |
/// The number of uncaught exceptions. | |
int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); | |
#endif | |
# 108 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
// @} group exceptions | |
} // namespace std | |
namespace __gnu_cxx | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @brief A replacement for the standard terminate_handler which | |
* prints more information about the terminating exception (if any) | |
* on stderr. | |
* | |
* @ingroup exceptions | |
* | |
* Call | |
* @code | |
* std::set_terminate(__gnu_cxx::__verbose_terminate_handler) | |
* @endcode | |
* to use. For more info, see | |
* http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt02ch06s02.html | |
* | |
* In 3.4 and later, this is on by default. | |
*/ | |
void __verbose_terminate_handler(); | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
} // extern "C++" | |
#pragma GCC visibility pop | |
#if (__cplusplus >= 201103L) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/exception_ptr.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 142 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 143 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/nested_exception.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 143 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 144 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
#endif | |
# 145 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
#endif | |
# 147 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 2 3 | |
#pragma GCC visibility push(default) | |
extern "C++" { | |
namespace std | |
{ | |
/** | |
* @brief Exception possibly thrown by @c new. | |
* @ingroup exceptions | |
* | |
* @c bad_alloc (or classes derived from it) is used to report allocation | |
* errors from the throwing forms of @c new. */ | |
class bad_alloc : public exception | |
{ | |
public: | |
bad_alloc() throw() { } | |
// This declaration is not useless: | |
// http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 | |
virtual ~bad_alloc() throw(); | |
// See comment in eh_exception.cc. | |
virtual const char* what() const throw(); | |
}; | |
#if __cplusplus >= 201103L | |
class bad_array_new_length : public bad_alloc | |
{ | |
public: | |
bad_array_new_length() throw() { }; | |
// This declaration is not useless: | |
// http://gcc.gnu.org/onlinedocs/gcc-3.0.2/gcc_6.html#SEC118 | |
virtual ~bad_array_new_length() throw(); | |
// See comment in eh_exception.cc. | |
virtual const char* what() const throw(); | |
}; | |
#endif | |
# 81 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
#if __cpp_aligned_new | |
enum class align_val_t: size_t {}; | |
#endif | |
# 85 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
struct nothrow_t | |
{ | |
#if __cplusplus >= 201103L | |
explicit nothrow_t() = default; | |
#endif | |
# 91 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
}; | |
extern const nothrow_t nothrow; | |
/** If you write your own error handler to be called by @c new, it must | |
* be of this type. */ | |
typedef void (*new_handler)(); | |
/// Takes a replacement handler as the argument, returns the | |
/// previous handler. | |
new_handler set_new_handler(new_handler) throw(); | |
#if __cplusplus >= 201103L | |
/// Return the current new handler. | |
new_handler get_new_handler() noexcept; | |
#endif | |
# 107 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
} // namespace std | |
//@{ | |
/** These are replaceable signatures: | |
* - normal single new and delete (no arguments, throw @c bad_alloc on error) | |
* - normal array new and delete (same) | |
* - @c nothrow single new and delete (take a @c nothrow argument, return | |
* @c NULL on error) | |
* - @c nothrow array new and delete (same) | |
* | |
* Placement new and delete signatures (take a memory address argument, | |
* does nothing) may not be replaced by a user's program. | |
*/ | |
void* operator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc) | |
__attribute__((__externally_visible__)); | |
void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc) | |
__attribute__((__externally_visible__)); | |
void operator delete(void*) _GLIBCXX_USE_NOEXCEPT | |
__attribute__((__externally_visible__)); | |
void operator delete[](void*) _GLIBCXX_USE_NOEXCEPT | |
__attribute__((__externally_visible__)); | |
#if __cpp_sized_deallocation | |
void operator delete(void*, std::size_t) _GLIBCXX_USE_NOEXCEPT | |
__attribute__((__externally_visible__)); | |
void operator delete[](void*, std::size_t) _GLIBCXX_USE_NOEXCEPT | |
__attribute__((__externally_visible__)); | |
#endif | |
# 134 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT | |
__attribute__((__externally_visible__)); | |
void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT | |
__attribute__((__externally_visible__)); | |
void operator delete(void*, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT | |
__attribute__((__externally_visible__)); | |
void operator delete[](void*, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT | |
__attribute__((__externally_visible__)); | |
#if __cpp_aligned_new | |
void* operator new(std::size_t, std::align_val_t) | |
__attribute__((__externally_visible__)); | |
void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&) | |
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__)); | |
void operator delete(void*, std::align_val_t) | |
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__)); | |
void operator delete(void*, std::align_val_t, const std::nothrow_t&) | |
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__)); | |
void* operator new[](std::size_t, std::align_val_t) | |
__attribute__((__externally_visible__)); | |
void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&) | |
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__)); | |
void operator delete[](void*, std::align_val_t) | |
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__)); | |
void operator delete[](void*, std::align_val_t, const std::nothrow_t&) | |
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__)); | |
#if __cpp_sized_deallocation | |
void operator delete(void*, std::size_t, std::align_val_t) | |
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__)); | |
void operator delete[](void*, std::size_t, std::align_val_t) | |
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__)); | |
#endif // __cpp_sized_deallocation | |
# 165 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
#endif // __cpp_aligned_new | |
# 166 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
// Default placement versions of operator new. | |
inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT | |
{ return __p; } | |
inline void* operator new[](std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT | |
{ return __p; } | |
// Default placement versions of operator delete. | |
inline void operator delete (void*, void*) _GLIBCXX_USE_NOEXCEPT { } | |
inline void operator delete[](void*, void*) _GLIBCXX_USE_NOEXCEPT { } | |
//@} | |
} // extern "C++" | |
#if __cplusplus > 201402L | |
#ifdef __has_builtin | |
# if !__has_builtin(__builtin_launder) | |
// Try not to break non-GNU compilers that don't support the built-in: | |
# define _GLIBCXX_NO_BUILTIN_LAUNDER 1 | |
# endif | |
# 185 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
#endif | |
# 186 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
#ifndef _GLIBCXX_NO_BUILTIN_LAUNDER | |
namespace std | |
{ | |
#define __cpp_lib_launder 201606 | |
/// Pointer optimization barrier [ptr.launder] | |
template<typename _Tp> | |
constexpr _Tp* | |
launder(_Tp* __p) noexcept | |
{ return __builtin_launder(__p); } | |
// The program is ill-formed if T is a function type or | |
// (possibly cv-qualified) void. | |
template<typename _Ret, typename... _Args _GLIBCXX_NOEXCEPT_PARM> | |
void launder(_Ret (*)(_Args...) _GLIBCXX_NOEXCEPT_QUAL) = delete; | |
template<typename _Ret, typename... _Args _GLIBCXX_NOEXCEPT_PARM> | |
void launder(_Ret (*)(_Args......) _GLIBCXX_NOEXCEPT_QUAL) = delete; | |
void launder(void*) = delete; | |
void launder(const void*) = delete; | |
void launder(volatile void*) = delete; | |
void launder(const volatile void*) = delete; | |
} | |
#endif // _GLIBCXX_NO_BUILTIN_LAUNDER | |
# 211 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
#undef _GLIBCXX_NO_BUILTIN_LAUNDER | |
#endif // C++17 | |
# 213 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
#pragma GCC visibility pop | |
#endif | |
# 217 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/new" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 2 3 | |
extern "C++" { | |
namespace std | |
{ | |
class type_info; | |
/** | |
* @addtogroup exceptions | |
* @{ | |
*/ | |
namespace __exception_ptr | |
{ | |
class exception_ptr; | |
} | |
using __exception_ptr::exception_ptr; | |
/** Obtain an exception_ptr to the currently handled exception. If there | |
* is none, or the currently handled exception is foreign, return the null | |
* value. | |
*/ | |
exception_ptr current_exception() _GLIBCXX_USE_NOEXCEPT; | |
template<typename _Ex> | |
exception_ptr make_exception_ptr(_Ex) _GLIBCXX_USE_NOEXCEPT; | |
/// Throw the object pointed to by the exception_ptr. | |
void rethrow_exception(exception_ptr) __attribute__ ((__noreturn__)); | |
namespace __exception_ptr | |
{ | |
using std::rethrow_exception; | |
/** | |
* @brief An opaque pointer to an arbitrary exception. | |
* @ingroup exceptions | |
*/ | |
class exception_ptr | |
{ | |
void* _M_exception_object; | |
explicit exception_ptr(void* __e) _GLIBCXX_USE_NOEXCEPT; | |
void _M_addref() _GLIBCXX_USE_NOEXCEPT; | |
void _M_release() _GLIBCXX_USE_NOEXCEPT; | |
void *_M_get() const _GLIBCXX_NOEXCEPT __attribute__ ((__pure__)); | |
friend exception_ptr std::current_exception() _GLIBCXX_USE_NOEXCEPT; | |
friend void std::rethrow_exception(exception_ptr); | |
template<typename _Ex> | |
friend exception_ptr std::make_exception_ptr(_Ex) _GLIBCXX_USE_NOEXCEPT; | |
public: | |
exception_ptr() _GLIBCXX_USE_NOEXCEPT; | |
exception_ptr(const exception_ptr&) _GLIBCXX_USE_NOEXCEPT; | |
#if __cplusplus >= 201103L | |
exception_ptr(nullptr_t) noexcept | |
: _M_exception_object(0) | |
{ } | |
exception_ptr(exception_ptr&& __o) noexcept | |
: _M_exception_object(__o._M_exception_object) | |
{ __o._M_exception_object = 0; } | |
#endif | |
# 109 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
#if (__cplusplus < 201103L) || defined (_GLIBCXX_EH_PTR_COMPAT) | |
typedef void (exception_ptr::*__safe_bool)(); | |
// For construction from nullptr or 0. | |
exception_ptr(__safe_bool) _GLIBCXX_USE_NOEXCEPT; | |
#endif | |
# 116 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
exception_ptr& | |
operator=(const exception_ptr&) _GLIBCXX_USE_NOEXCEPT; | |
#if __cplusplus >= 201103L | |
exception_ptr& | |
operator=(exception_ptr&& __o) noexcept | |
{ | |
exception_ptr(static_cast<exception_ptr&&>(__o)).swap(*this); | |
return *this; | |
} | |
#endif | |
# 128 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
~exception_ptr() _GLIBCXX_USE_NOEXCEPT; | |
void | |
swap(exception_ptr&) _GLIBCXX_USE_NOEXCEPT; | |
#ifdef _GLIBCXX_EH_PTR_COMPAT | |
// Retained for compatibility with CXXABI_1.3. | |
void _M_safe_bool_dummy() _GLIBCXX_USE_NOEXCEPT | |
__attribute__ ((__const__)); | |
bool operator!() const _GLIBCXX_USE_NOEXCEPT | |
__attribute__ ((__pure__)); | |
operator __safe_bool() const _GLIBCXX_USE_NOEXCEPT; | |
#endif | |
# 142 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
#if __cplusplus >= 201103L | |
explicit operator bool() const | |
{ return _M_exception_object; } | |
#endif | |
# 147 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
friend bool | |
operator==(const exception_ptr&, const exception_ptr&) | |
_GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); | |
const class std::type_info* | |
__cxa_exception_type() const _GLIBCXX_USE_NOEXCEPT | |
__attribute__ ((__pure__)); | |
}; | |
bool | |
operator==(const exception_ptr&, const exception_ptr&) | |
_GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); | |
bool | |
operator!=(const exception_ptr&, const exception_ptr&) | |
_GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__)); | |
inline void | |
swap(exception_ptr& __lhs, exception_ptr& __rhs) | |
{ __lhs.swap(__rhs); } | |
template<typename _Ex> | |
inline void | |
__dest_thunk(void* x) | |
{ static_cast<_Ex*>(x)->~_Ex(); } | |
} // namespace __exception_ptr | |
/// Obtain an exception_ptr pointing to a copy of the supplied object. | |
template<typename _Ex> | |
exception_ptr | |
make_exception_ptr(_Ex __ex) _GLIBCXX_USE_NOEXCEPT | |
{ | |
#if __cpp_exceptions | |
try | |
{ | |
#if __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI | |
void *__e = __cxxabiv1::__cxa_allocate_exception(sizeof(_Ex)); | |
(void)__cxxabiv1::__cxa_init_primary_exception( | |
__e, const_cast<std::type_info*>(&typeid(__ex)), | |
__exception_ptr::__dest_thunk<_Ex>); | |
::new (__e) _Ex(__ex); | |
return exception_ptr(__e); | |
#else | |
# 192 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
throw __ex; | |
#endif | |
# 194 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
} | |
catch(...) | |
{ | |
return current_exception(); | |
} | |
#else | |
# 200 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
return exception_ptr(); | |
#endif | |
# 202 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
} | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 1130. copy_exception name misleading | |
/// Obtain an exception_ptr pointing to a copy of the supplied object. | |
/// This function is deprecated, use std::make_exception_ptr instead. | |
template<typename _Ex> | |
exception_ptr | |
copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT _GLIBCXX_DEPRECATED; | |
template<typename _Ex> | |
exception_ptr | |
copy_exception(_Ex __ex) _GLIBCXX_USE_NOEXCEPT | |
{ return std::make_exception_ptr<_Ex>(__ex); } | |
// @} group exceptions | |
} // namespace std | |
} // extern "C++" | |
#pragma GCC visibility pop | |
#endif | |
# 225 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/exception_ptr.h" 3 | |
# 143 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/nested_exception.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 143 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 1 3 | |
// Nested Exception support header (nested_exception class) for -*- C++ -*- | |
// Copyright (C) 2009-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/nested_exception.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{exception} | |
*/ | |
#ifndef _GLIBCXX_NESTED_EXCEPTION_H | |
#define _GLIBCXX_NESTED_EXCEPTION_H 1 | |
#pragma GCC visibility push(default) | |
#if __cplusplus < 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <bits/c++0x_warning.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
#else | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/move.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
extern "C++" { | |
namespace std | |
{ | |
/** | |
* @addtogroup exceptions | |
* @{ | |
*/ | |
/// Exception class with exception_ptr data member. | |
class nested_exception | |
{ | |
exception_ptr _M_ptr; | |
public: | |
nested_exception() noexcept : _M_ptr(current_exception()) { } | |
nested_exception(const nested_exception&) noexcept = default; | |
nested_exception& operator=(const nested_exception&) noexcept = default; | |
virtual ~nested_exception() noexcept; | |
[[noreturn]] | |
void | |
rethrow_nested() const | |
{ | |
if (_M_ptr) | |
rethrow_exception(_M_ptr); | |
std::terminate(); | |
} | |
exception_ptr | |
nested_ptr() const noexcept | |
{ return _M_ptr; } | |
}; | |
template<typename _Except> | |
struct _Nested_exception : public _Except, public nested_exception | |
{ | |
explicit _Nested_exception(const _Except& __ex) | |
: _Except(__ex) | |
{ } | |
explicit _Nested_exception(_Except&& __ex) | |
: _Except(static_cast<_Except&&>(__ex)) | |
{ } | |
}; | |
// [except.nested]/8 | |
// Throw an exception of unspecified type that is publicly derived from | |
// both remove_reference_t<_Tp> and nested_exception. | |
template<typename _Tp> | |
inline void | |
__throw_with_nested_impl(_Tp&& __t, true_type) | |
{ | |
using _Up = typename remove_reference<_Tp>::type; | |
throw _Nested_exception<_Up>{std::forward<_Tp>(__t)}; | |
} | |
template<typename _Tp> | |
inline void | |
__throw_with_nested_impl(_Tp&& __t, false_type) | |
{ throw std::forward<_Tp>(__t); } | |
/// If @p __t is derived from nested_exception, throws @p __t. | |
/// Else, throws an implementation-defined object derived from both. | |
template<typename _Tp> | |
[[noreturn]] | |
inline void | |
throw_with_nested(_Tp&& __t) | |
{ | |
using _Up = typename decay<_Tp>::type; | |
using _CopyConstructible | |
= __and_<is_copy_constructible<_Up>, is_move_constructible<_Up>>; | |
static_assert(_CopyConstructible::value, | |
"throw_with_nested argument must be CopyConstructible"); | |
using __nest = __and_<is_class<_Up>, __bool_constant<!__is_final(_Up)>, | |
__not_<is_base_of<nested_exception, _Up>>>; | |
std::__throw_with_nested_impl(std::forward<_Tp>(__t), __nest{}); | |
} | |
// Determine if dynamic_cast<const nested_exception&> would be well-formed. | |
template<typename _Tp> | |
using __rethrow_if_nested_cond = typename enable_if< | |
__and_<is_polymorphic<_Tp>, | |
__or_<__not_<is_base_of<nested_exception, _Tp>>, | |
is_convertible<_Tp*, nested_exception*>>>::value | |
>::type; | |
// Attempt dynamic_cast to nested_exception and call rethrow_nested(). | |
template<typename _Ex> | |
inline __rethrow_if_nested_cond<_Ex> | |
__rethrow_if_nested_impl(const _Ex* __ptr) | |
{ | |
if (auto __ne_ptr = dynamic_cast<const nested_exception*>(__ptr)) | |
__ne_ptr->rethrow_nested(); | |
} | |
// Otherwise, no effects. | |
inline void | |
__rethrow_if_nested_impl(const void*) | |
{ } | |
/// If @p __ex is derived from nested_exception, @p __ex.rethrow_nested(). | |
template<typename _Ex> | |
inline void | |
rethrow_if_nested(const _Ex& __ex) | |
{ std::__rethrow_if_nested_impl(std::__addressof(__ex)); } | |
// @} group exceptions | |
} // namespace std | |
} // extern "C++" | |
#endif // C++11 | |
# 158 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
#pragma GCC visibility pop | |
#endif // _GLIBCXX_NESTED_EXCEPTION_H | |
# 162 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/nested_exception.h" 3 | |
# 144 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 2 3 | |
#endif | |
# 145 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
#endif | |
# 147 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/exception" 3 | |
# 80 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 2 3 | |
#endif | |
# 81 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/// Finds the size of a given tuple type. | |
template<typename _Tp> | |
struct tuple_size; | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2770. tuple_size<const T> specialization is not SFINAE compatible | |
template<typename _Tp, typename = void> | |
struct __tuple_size_cv_impl { }; | |
template<typename _Tp> | |
struct __tuple_size_cv_impl<_Tp, __void_t<decltype(tuple_size<_Tp>::value)>> | |
: integral_constant<size_t, tuple_size<_Tp>::value> { }; | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2313. tuple_size should always derive from integral_constant<size_t, N> | |
template<typename _Tp> | |
struct tuple_size<const _Tp> : __tuple_size_cv_impl<_Tp> { }; | |
template<typename _Tp> | |
struct tuple_size<volatile _Tp> : __tuple_size_cv_impl<_Tp> { }; | |
template<typename _Tp> | |
struct tuple_size<const volatile _Tp> : __tuple_size_cv_impl<_Tp> { }; | |
/// Gives the type of the ith element of a given tuple type. | |
template<std::size_t __i, typename _Tp> | |
struct tuple_element; | |
// Duplicate of C++14's tuple_element_t for internal use in C++11 mode | |
template<std::size_t __i, typename _Tp> | |
using __tuple_element_t = typename tuple_element<__i, _Tp>::type; | |
template<std::size_t __i, typename _Tp> | |
struct tuple_element<__i, const _Tp> | |
{ | |
typedef typename add_const<__tuple_element_t<__i, _Tp>>::type type; | |
}; | |
template<std::size_t __i, typename _Tp> | |
struct tuple_element<__i, volatile _Tp> | |
{ | |
typedef typename add_volatile<__tuple_element_t<__i, _Tp>>::type type; | |
}; | |
template<std::size_t __i, typename _Tp> | |
struct tuple_element<__i, const volatile _Tp> | |
{ | |
typedef typename add_cv<__tuple_element_t<__i, _Tp>>::type type; | |
}; | |
#if __cplusplus > 201103L | |
#define __cpp_lib_tuple_element_t 201402 | |
template<std::size_t __i, typename _Tp> | |
using tuple_element_t = typename tuple_element<__i, _Tp>::type; | |
#endif | |
# 142 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
// Various functions which give std::pair a tuple-like interface. | |
/// Partial specialization for std::pair | |
template<typename _T1, typename _T2> | |
struct __is_tuple_like_impl<std::pair<_T1, _T2>> : true_type | |
{ }; | |
/// Partial specialization for std::pair | |
template<class _Tp1, class _Tp2> | |
struct tuple_size<std::pair<_Tp1, _Tp2>> | |
: public integral_constant<std::size_t, 2> { }; | |
/// Partial specialization for std::pair | |
template<class _Tp1, class _Tp2> | |
struct tuple_element<0, std::pair<_Tp1, _Tp2>> | |
{ typedef _Tp1 type; }; | |
/// Partial specialization for std::pair | |
template<class _Tp1, class _Tp2> | |
struct tuple_element<1, std::pair<_Tp1, _Tp2>> | |
{ typedef _Tp2 type; }; | |
template<std::size_t _Int> | |
struct __pair_get; | |
template<> | |
struct __pair_get<0> | |
{ | |
template<typename _Tp1, typename _Tp2> | |
static constexpr _Tp1& | |
__get(std::pair<_Tp1, _Tp2>& __pair) noexcept | |
{ return __pair.first; } | |
template<typename _Tp1, typename _Tp2> | |
static constexpr _Tp1&& | |
__move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept | |
{ return std::forward<_Tp1>(__pair.first); } | |
template<typename _Tp1, typename _Tp2> | |
static constexpr const _Tp1& | |
__const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept | |
{ return __pair.first; } | |
}; | |
template<> | |
struct __pair_get<1> | |
{ | |
template<typename _Tp1, typename _Tp2> | |
static constexpr _Tp2& | |
__get(std::pair<_Tp1, _Tp2>& __pair) noexcept | |
{ return __pair.second; } | |
template<typename _Tp1, typename _Tp2> | |
static constexpr _Tp2&& | |
__move_get(std::pair<_Tp1, _Tp2>&& __pair) noexcept | |
{ return std::forward<_Tp2>(__pair.second); } | |
template<typename _Tp1, typename _Tp2> | |
static constexpr const _Tp2& | |
__const_get(const std::pair<_Tp1, _Tp2>& __pair) noexcept | |
{ return __pair.second; } | |
}; | |
template<std::size_t _Int, class _Tp1, class _Tp2> | |
constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& | |
get(std::pair<_Tp1, _Tp2>& __in) noexcept | |
{ return __pair_get<_Int>::__get(__in); } | |
template<std::size_t _Int, class _Tp1, class _Tp2> | |
constexpr typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type&& | |
get(std::pair<_Tp1, _Tp2>&& __in) noexcept | |
{ return __pair_get<_Int>::__move_get(std::move(__in)); } | |
template<std::size_t _Int, class _Tp1, class _Tp2> | |
constexpr const typename tuple_element<_Int, std::pair<_Tp1, _Tp2>>::type& | |
get(const std::pair<_Tp1, _Tp2>& __in) noexcept | |
{ return __pair_get<_Int>::__const_get(__in); } | |
#if __cplusplus > 201103L | |
#define __cpp_lib_tuples_by_type 201304 | |
template <typename _Tp, typename _Up> | |
constexpr _Tp& | |
get(pair<_Tp, _Up>& __p) noexcept | |
{ return __p.first; } | |
template <typename _Tp, typename _Up> | |
constexpr const _Tp& | |
get(const pair<_Tp, _Up>& __p) noexcept | |
{ return __p.first; } | |
template <typename _Tp, typename _Up> | |
constexpr _Tp&& | |
get(pair<_Tp, _Up>&& __p) noexcept | |
{ return std::move(__p.first); } | |
template <typename _Tp, typename _Up> | |
constexpr _Tp& | |
get(pair<_Up, _Tp>& __p) noexcept | |
{ return __p.second; } | |
template <typename _Tp, typename _Up> | |
constexpr const _Tp& | |
get(const pair<_Up, _Tp>& __p) noexcept | |
{ return __p.second; } | |
template <typename _Tp, typename _Up> | |
constexpr _Tp&& | |
get(pair<_Up, _Tp>&& __p) noexcept | |
{ return std::move(__p.second); } | |
#define __cpp_lib_exchange_function 201304 | |
/// Assign @p __new_val to @p __obj and return its previous value. | |
template <typename _Tp, typename _Up = _Tp> | |
inline _Tp | |
exchange(_Tp& __obj, _Up&& __new_val) | |
{ return std::__exchange(__obj, std::forward<_Up>(__new_val)); } | |
#endif | |
# 263 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
// Stores a tuple of indices. Used by tuple and pair, and by bind() to | |
// extract the elements in a tuple. | |
template<size_t... _Indexes> struct _Index_tuple { }; | |
// Concatenates two _Index_tuples. | |
template<typename _Itup1, typename _Itup2> struct _Itup_cat; | |
template<size_t... _Ind1, size_t... _Ind2> | |
struct _Itup_cat<_Index_tuple<_Ind1...>, _Index_tuple<_Ind2...>> | |
{ | |
using __type = _Index_tuple<_Ind1..., (_Ind2 + sizeof...(_Ind1))...>; | |
}; | |
// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>. | |
template<size_t _Num> | |
struct _Build_index_tuple | |
: _Itup_cat<typename _Build_index_tuple<_Num / 2>::__type, | |
typename _Build_index_tuple<_Num - _Num / 2>::__type> | |
{ }; | |
template<> | |
struct _Build_index_tuple<1> | |
{ | |
typedef _Index_tuple<0> __type; | |
}; | |
template<> | |
struct _Build_index_tuple<0> | |
{ | |
typedef _Index_tuple<> __type; | |
}; | |
#if __cplusplus > 201103L | |
#define __cpp_lib_integer_sequence 201304 | |
/// Class template integer_sequence | |
template<typename _Tp, _Tp... _Idx> | |
struct integer_sequence | |
{ | |
typedef _Tp value_type; | |
static constexpr size_t size() { return sizeof...(_Idx); } | |
}; | |
template<typename _Tp, _Tp _Num, | |
typename _ISeq = typename _Build_index_tuple<_Num>::__type> | |
struct _Make_integer_sequence; | |
template<typename _Tp, _Tp _Num, size_t... _Idx> | |
struct _Make_integer_sequence<_Tp, _Num, _Index_tuple<_Idx...>> | |
{ | |
static_assert( _Num >= 0, | |
"Cannot make integer sequence of negative length" ); | |
typedef integer_sequence<_Tp, static_cast<_Tp>(_Idx)...> __type; | |
}; | |
/// Alias template make_integer_sequence | |
template<typename _Tp, _Tp _Num> | |
using make_integer_sequence | |
= typename _Make_integer_sequence<_Tp, _Num>::__type; | |
/// Alias template index_sequence | |
template<size_t... _Idx> | |
using index_sequence = integer_sequence<size_t, _Idx...>; | |
/// Alias template make_index_sequence | |
template<size_t _Num> | |
using make_index_sequence = make_integer_sequence<size_t, _Num>; | |
/// Alias template index_sequence_for | |
template<typename... _Types> | |
using index_sequence_for = make_index_sequence<sizeof...(_Types)>; | |
#endif | |
# 338 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
#if __cplusplus > 201402L | |
struct in_place_t { | |
explicit in_place_t() = default; | |
}; | |
inline constexpr in_place_t in_place{}; | |
template<typename _Tp> struct in_place_type_t | |
{ | |
explicit in_place_type_t() = default; | |
}; | |
template<typename _Tp> | |
inline constexpr in_place_type_t<_Tp> in_place_type{}; | |
template<size_t _Idx> struct in_place_index_t | |
{ | |
explicit in_place_index_t() = default; | |
}; | |
template<size_t _Idx> | |
inline constexpr in_place_index_t<_Idx> in_place_index{}; | |
template<typename> | |
struct __is_in_place_type_impl : false_type | |
{ }; | |
template<typename _Tp> | |
struct __is_in_place_type_impl<in_place_type_t<_Tp>> : true_type | |
{ }; | |
template<typename _Tp> | |
struct __is_in_place_type | |
: public __is_in_place_type_impl<_Tp> | |
{ }; | |
#define __cpp_lib_as_const 201510 | |
template<typename _Tp> | |
constexpr add_const_t<_Tp>& as_const(_Tp& __t) noexcept { return __t; } | |
template<typename _Tp> | |
void as_const(const _Tp&&) = delete; | |
#endif // C++17 | |
# 384 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif | |
# 389 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
#endif /* _GLIBCXX_UTILITY */ | |
# 391 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/utility" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/tuple" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <array> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/tuple" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/array" 1 3 | |
// <array> -*- C++ -*- | |
// Copyright (C) 2007-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/array | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef _GLIBCXX_ARRAY | |
#define _GLIBCXX_ARRAY 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/array" 3 | |
#if __cplusplus < 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <bits/c++0x_warning.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/array" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/array" 3 | |
#else | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/array" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <utility> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/array" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/array" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <stdexcept> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/array" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/stdexcept" 1 3 | |
// Standard exception classes -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/stdexcept | |
* This is a Standard C++ Library header. | |
*/ | |
// | |
// ISO C++ 19.1 Exception classes | |
// | |
#ifndef _GLIBCXX_STDEXCEPT | |
#define _GLIBCXX_STDEXCEPT 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/stdexcept" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <exception> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/stdexcept" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/stdexcept" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <string> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/stdexcept" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 1 3 | |
// Components for manipulating sequences of characters -*- C++ -*- | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/string | |
* This is a Standard C++ Library header. | |
*/ | |
// | |
// ISO C++ 14882: 21 Strings library | |
// | |
#ifndef _GLIBCXX_STRING | |
#define _GLIBCXX_STRING 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stringfwd.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 1 3 | |
// <string> Forward declarations -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/stringfwd.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{string} | |
*/ | |
// | |
// ISO C++ 14882: 21 Strings library | |
// | |
#ifndef _STRINGFWD_H | |
#define _STRINGFWD_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/memoryfwd.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/memoryfwd.h" 1 3 | |
// <memory> Forward declarations -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* Copyright (c) 1996-1997 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file bits/memoryfwd.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{memory} | |
*/ | |
#ifndef _MEMORYFWD_H | |
#define _MEMORYFWD_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 47 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/memoryfwd.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 48 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/memoryfwd.h" 3 | |
# 49 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/memoryfwd.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @defgroup allocators Allocators | |
* @ingroup memory | |
* | |
* Classes encapsulating memory operations. | |
* | |
* @{ | |
*/ | |
template<typename> | |
class allocator; | |
template<> | |
class allocator<void>; | |
/// Declare uses_allocator so it can be specialized in \<queue\> etc. | |
template<typename, typename> | |
struct uses_allocator; | |
/// @} group memory | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace std | |
#endif | |
# 79 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/memoryfwd.h" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 2 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @defgroup strings Strings | |
* | |
* @{ | |
*/ | |
template<class _CharT> | |
struct char_traits; | |
template<> struct char_traits<char>; | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
template<> struct char_traits<wchar_t>; | |
#endif | |
# 60 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
#if ((__cplusplus >= 201103L) \ | |
&& defined(_GLIBCXX_USE_C99_STDINT_TR1)) | |
template<> struct char_traits<char16_t>; | |
template<> struct char_traits<char32_t>; | |
#endif | |
# 66 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
_GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
template<typename _CharT, typename _Traits = char_traits<_CharT>, | |
typename _Alloc = allocator<_CharT> > | |
class basic_string; | |
/// A string of @c char | |
typedef basic_string<char> string; | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
/// A string of @c wchar_t | |
typedef basic_string<wchar_t> wstring; | |
#endif | |
# 80 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
#if ((__cplusplus >= 201103L) \ | |
&& defined(_GLIBCXX_USE_C99_STDINT_TR1)) | |
/// A string of @c char16_t | |
typedef basic_string<char16_t> u16string; | |
/// A string of @c char32_t | |
typedef basic_string<char32_t> u32string; | |
#endif | |
# 89 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
_GLIBCXX_END_NAMESPACE_CXX11 | |
/** @} */ | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace std | |
#endif // _STRINGFWD_H | |
# 98 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stringfwd.h" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/char_traits.h> // NB: In turn includes stl_algobase.h | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 1 3 | |
// Character Traits for use by standard string and iostream -*- C++ -*- | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/char_traits.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{string} | |
*/ | |
// | |
// ISO C++ 14882: 21 Strings library | |
// | |
#ifndef _CHAR_TRAITS_H | |
#define _CHAR_TRAITS_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_algobase.h> // std::copy, std::fill_n | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 1 3 | |
// Core algorithmic facilities -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* | |
* Copyright (c) 1996-1998 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file bits/stl_algobase.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{algorithm} | |
*/ | |
#ifndef _STL_ALGOBASE_H | |
#define _STL_ALGOBASE_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 59 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 60 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/functexcept.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 60 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/functexcept.h" 1 3 | |
// Function-Based Exception Support -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/functexcept.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{exception} | |
* | |
* This header provides support for -fno-exceptions. | |
*/ | |
// | |
// ISO C++ 14882: 19.1 Exception classes | |
// | |
#ifndef _FUNCTEXCEPT_H | |
#define _FUNCTEXCEPT_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/functexcept.h" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/functexcept.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/exception_defines.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/functexcept.h" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/functexcept.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// Helper for exception objects in <except> | |
void | |
__throw_bad_exception(void) __attribute__((__noreturn__)); | |
// Helper for exception objects in <new> | |
void | |
__throw_bad_alloc(void) __attribute__((__noreturn__)); | |
// Helper for exception objects in <typeinfo> | |
void | |
__throw_bad_cast(void) __attribute__((__noreturn__)); | |
void | |
__throw_bad_typeid(void) __attribute__((__noreturn__)); | |
// Helpers for exception objects in <stdexcept> | |
void | |
__throw_logic_error(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_domain_error(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_invalid_argument(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_length_error(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_out_of_range(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_out_of_range_fmt(const char*, ...) __attribute__((__noreturn__)) | |
__attribute__((__format__(__gnu_printf__, 1, 2))); | |
void | |
__throw_runtime_error(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_range_error(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_overflow_error(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_underflow_error(const char*) __attribute__((__noreturn__)); | |
// Helpers for exception objects in <ios> | |
void | |
__throw_ios_failure(const char*) __attribute__((__noreturn__)); | |
void | |
__throw_system_error(int) __attribute__((__noreturn__)); | |
void | |
__throw_future_error(int) __attribute__((__noreturn__)); | |
// Helpers for exception objects in <functional> | |
void | |
__throw_bad_function_call() __attribute__((__noreturn__)); | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif | |
# 111 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/functexcept.h" 3 | |
# 61 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/cpp_type_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 61 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 1 3 | |
// The -*- C++ -*- type traits classes for internal use in libstdc++ | |
// Copyright (C) 2000-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/cpp_type_traits.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{ext/type_traits} | |
*/ | |
// Written by Gabriel Dos Reis <[email protected]> | |
#ifndef _CPP_TYPE_TRAITS_H | |
#define _CPP_TYPE_TRAITS_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
// | |
// This file provides some compile-time information about various types. | |
// These representations were designed, on purpose, to be constant-expressions | |
// and not types as found in <bits/type_traits.h>. In particular, they | |
// can be used in control structures and the optimizer hopefully will do | |
// the obvious thing. | |
// | |
// Why integral expressions, and not functions nor types? | |
// Firstly, these compile-time entities are used as template-arguments | |
// so function return values won't work: We need compile-time entities. | |
// We're left with types and constant integral expressions. | |
// Secondly, from the point of view of ease of use, type-based compile-time | |
// information is -not- *that* convenient. On has to write lots of | |
// overloaded functions and to hope that the compiler will select the right | |
// one. As a net effect, the overall structure isn't very clear at first | |
// glance. | |
// Thirdly, partial ordering and overload resolution (of function templates) | |
// is highly costly in terms of compiler-resource. It is a Good Thing to | |
// keep these resource consumption as least as possible. | |
// | |
// See valarray_array.h for a case use. | |
// | |
// -- Gaby ([email protected]) 2000-03-06. | |
// | |
// Update 2005: types are also provided and <bits/type_traits.h> has been | |
// removed. | |
// | |
extern "C++" { | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
struct __true_type { }; | |
struct __false_type { }; | |
template<bool> | |
struct __truth_type | |
{ typedef __false_type __type; }; | |
template<> | |
struct __truth_type<true> | |
{ typedef __true_type __type; }; | |
// N.B. The conversions to bool are needed due to the issue | |
// explained in c++/19404. | |
template<class _Sp, class _Tp> | |
struct __traitor | |
{ | |
enum { __value = bool(_Sp::__value) || bool(_Tp::__value) }; | |
typedef typename __truth_type<__value>::__type __type; | |
}; | |
// Compare for equality of types. | |
template<typename, typename> | |
struct __are_same | |
{ | |
enum { __value = 0 }; | |
typedef __false_type __type; | |
}; | |
template<typename _Tp> | |
struct __are_same<_Tp, _Tp> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
// Holds if the template-argument is a void type. | |
template<typename _Tp> | |
struct __is_void | |
{ | |
enum { __value = 0 }; | |
typedef __false_type __type; | |
}; | |
template<> | |
struct __is_void<void> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
// | |
// Integer types | |
// | |
template<typename _Tp> | |
struct __is_integer | |
{ | |
enum { __value = 0 }; | |
typedef __false_type __type; | |
}; | |
// Thirteen specializations (yes there are eleven standard integer | |
// types; <em>long long</em> and <em>unsigned long long</em> are | |
// supported as extensions). Up to four target-specific __int<N> | |
// types are supported as well. | |
template<> | |
struct __is_integer<bool> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<char> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<signed char> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<unsigned char> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
# ifdef _GLIBCXX_USE_WCHAR_T | |
template<> | |
struct __is_integer<wchar_t> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
# endif | |
# 173 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
#if __cplusplus >= 201103L | |
template<> | |
struct __is_integer<char16_t> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<char32_t> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
#endif | |
# 189 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
template<> | |
struct __is_integer<short> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<unsigned short> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<int> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<unsigned int> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<long> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<unsigned long> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<long long> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_integer<unsigned long long> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
#define __INT_N(TYPE) \ | |
template<> \ | |
struct __is_integer<TYPE> \ | |
{ \ | |
enum { __value = 1 }; \ | |
typedef __true_type __type; \ | |
}; \ | |
template<> \ | |
struct __is_integer<unsigned TYPE> \ | |
{ \ | |
enum { __value = 1 }; \ | |
typedef __true_type __type; \ | |
}; | |
#ifdef __GLIBCXX_TYPE_INT_N_0 | |
__INT_N(__GLIBCXX_TYPE_INT_N_0) | |
#endif | |
# 263 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
#ifdef __GLIBCXX_TYPE_INT_N_1 | |
__INT_N(__GLIBCXX_TYPE_INT_N_1) | |
#endif | |
# 266 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
#ifdef __GLIBCXX_TYPE_INT_N_2 | |
__INT_N(__GLIBCXX_TYPE_INT_N_2) | |
#endif | |
# 269 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
#ifdef __GLIBCXX_TYPE_INT_N_3 | |
__INT_N(__GLIBCXX_TYPE_INT_N_3) | |
#endif | |
# 272 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
#undef __INT_N | |
// | |
// Floating point types | |
// | |
template<typename _Tp> | |
struct __is_floating | |
{ | |
enum { __value = 0 }; | |
typedef __false_type __type; | |
}; | |
// three specializations (float, double and 'long double') | |
template<> | |
struct __is_floating<float> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_floating<double> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_floating<long double> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
// | |
// Pointer types | |
// | |
template<typename _Tp> | |
struct __is_pointer | |
{ | |
enum { __value = 0 }; | |
typedef __false_type __type; | |
}; | |
template<typename _Tp> | |
struct __is_pointer<_Tp*> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
// | |
// An arithmetic type is an integer type or a floating point type | |
// | |
template<typename _Tp> | |
struct __is_arithmetic | |
: public __traitor<__is_integer<_Tp>, __is_floating<_Tp> > | |
{ }; | |
// | |
// A scalar type is an arithmetic type or a pointer type | |
// | |
template<typename _Tp> | |
struct __is_scalar | |
: public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> > | |
{ }; | |
// | |
// For use in std::copy and std::find overloads for streambuf iterators. | |
// | |
template<typename _Tp> | |
struct __is_char | |
{ | |
enum { __value = 0 }; | |
typedef __false_type __type; | |
}; | |
template<> | |
struct __is_char<char> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
template<> | |
struct __is_char<wchar_t> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
#endif | |
# 365 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
template<typename _Tp> | |
struct __is_byte | |
{ | |
enum { __value = 0 }; | |
typedef __false_type __type; | |
}; | |
template<> | |
struct __is_byte<char> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_byte<signed char> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<> | |
struct __is_byte<unsigned char> | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
// | |
// Move iterator type | |
// | |
template<typename _Tp> | |
struct __is_move_iterator | |
{ | |
enum { __value = 0 }; | |
typedef __false_type __type; | |
}; | |
// Fallback implementation of the function in bits/stl_iterator.h used to | |
// remove the move_iterator wrapper. | |
template<typename _Iterator> | |
inline _Iterator | |
__miter_base(_Iterator __it) | |
{ return __it; } | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
} // extern "C++" | |
#endif //_CPP_TYPE_TRAITS_H | |
# 416 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cpp_type_traits.h" 3 | |
# 62 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <ext/type_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 62 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/type_traits.h" 1 3 | |
// -*- C++ -*- | |
// Copyright (C) 2005-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the terms | |
// of the GNU General Public License as published by the Free Software | |
// Foundation; either version 3, or (at your option) any later | |
// version. | |
// This 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 | |
// General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file ext/type_traits.h | |
* This file is a GNU extension to the Standard C++ Library. | |
*/ | |
#ifndef _EXT_TYPE_TRAITS | |
#define _EXT_TYPE_TRAITS 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/type_traits.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/type_traits.h" 3 | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/type_traits.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/cpp_type_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/type_traits.h" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/type_traits.h" 3 | |
extern "C++" { | |
namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// Define a nested type if some predicate holds. | |
template<bool, typename> | |
struct __enable_if | |
{ }; | |
template<typename _Tp> | |
struct __enable_if<true, _Tp> | |
{ typedef _Tp __type; }; | |
// Conditional expression for types. If true, first, if false, second. | |
template<bool _Cond, typename _Iftrue, typename _Iffalse> | |
struct __conditional_type | |
{ typedef _Iftrue __type; }; | |
template<typename _Iftrue, typename _Iffalse> | |
struct __conditional_type<false, _Iftrue, _Iffalse> | |
{ typedef _Iffalse __type; }; | |
// Given an integral builtin type, return the corresponding unsigned type. | |
template<typename _Tp> | |
struct __add_unsigned | |
{ | |
private: | |
typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type; | |
public: | |
typedef typename __if_type::__type __type; | |
}; | |
template<> | |
struct __add_unsigned<char> | |
{ typedef unsigned char __type; }; | |
template<> | |
struct __add_unsigned<signed char> | |
{ typedef unsigned char __type; }; | |
template<> | |
struct __add_unsigned<short> | |
{ typedef unsigned short __type; }; | |
template<> | |
struct __add_unsigned<int> | |
{ typedef unsigned int __type; }; | |
template<> | |
struct __add_unsigned<long> | |
{ typedef unsigned long __type; }; | |
template<> | |
struct __add_unsigned<long long> | |
{ typedef unsigned long long __type; }; | |
// Declare but don't define. | |
template<> | |
struct __add_unsigned<bool>; | |
template<> | |
struct __add_unsigned<wchar_t>; | |
// Given an integral builtin type, return the corresponding signed type. | |
template<typename _Tp> | |
struct __remove_unsigned | |
{ | |
private: | |
typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type; | |
public: | |
typedef typename __if_type::__type __type; | |
}; | |
template<> | |
struct __remove_unsigned<char> | |
{ typedef signed char __type; }; | |
template<> | |
struct __remove_unsigned<unsigned char> | |
{ typedef signed char __type; }; | |
template<> | |
struct __remove_unsigned<unsigned short> | |
{ typedef short __type; }; | |
template<> | |
struct __remove_unsigned<unsigned int> | |
{ typedef int __type; }; | |
template<> | |
struct __remove_unsigned<unsigned long> | |
{ typedef long __type; }; | |
template<> | |
struct __remove_unsigned<unsigned long long> | |
{ typedef long long __type; }; | |
// Declare but don't define. | |
template<> | |
struct __remove_unsigned<bool>; | |
template<> | |
struct __remove_unsigned<wchar_t>; | |
// For use in string and vstring. | |
template<typename _Type> | |
inline bool | |
__is_null_pointer(_Type* __ptr) | |
{ return __ptr == 0; } | |
template<typename _Type> | |
inline bool | |
__is_null_pointer(_Type) | |
{ return false; } | |
#if __cplusplus >= 201103L | |
inline bool | |
__is_null_pointer(std::nullptr_t) | |
{ return true; } | |
#endif | |
# 165 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/type_traits.h" 3 | |
// For complex and cmath | |
template<typename _Tp, bool = std::__is_integer<_Tp>::__value> | |
struct __promote | |
{ typedef double __type; }; | |
// No nested __type member for non-integer non-floating point types, | |
// allows this type to be used for SFINAE to constrain overloads in | |
// <cmath> and <complex> to only the intended types. | |
template<typename _Tp> | |
struct __promote<_Tp, false> | |
{ }; | |
template<> | |
struct __promote<long double> | |
{ typedef long double __type; }; | |
template<> | |
struct __promote<double> | |
{ typedef double __type; }; | |
template<> | |
struct __promote<float> | |
{ typedef float __type; }; | |
template<typename _Tp, typename _Up, | |
typename _Tp2 = typename __promote<_Tp>::__type, | |
typename _Up2 = typename __promote<_Up>::__type> | |
struct __promote_2 | |
{ | |
typedef __typeof__(_Tp2() + _Up2()) __type; | |
}; | |
template<typename _Tp, typename _Up, typename _Vp, | |
typename _Tp2 = typename __promote<_Tp>::__type, | |
typename _Up2 = typename __promote<_Up>::__type, | |
typename _Vp2 = typename __promote<_Vp>::__type> | |
struct __promote_3 | |
{ | |
typedef __typeof__(_Tp2() + _Up2() + _Vp2()) __type; | |
}; | |
template<typename _Tp, typename _Up, typename _Vp, typename _Wp, | |
typename _Tp2 = typename __promote<_Tp>::__type, | |
typename _Up2 = typename __promote<_Up>::__type, | |
typename _Vp2 = typename __promote<_Vp>::__type, | |
typename _Wp2 = typename __promote<_Wp>::__type> | |
struct __promote_4 | |
{ | |
typedef __typeof__(_Tp2() + _Up2() + _Vp2() + _Wp2()) __type; | |
}; | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
} // extern "C++" | |
#endif | |
# 222 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/type_traits.h" 3 | |
# 63 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <ext/numeric_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 63 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/numeric_traits.h" 1 3 | |
// -*- C++ -*- | |
// Copyright (C) 2007-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the terms | |
// of the GNU General Public License as published by the Free Software | |
// Foundation; either version 3, or (at your option) any later | |
// version. | |
// This 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 | |
// General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file ext/numeric_traits.h | |
* This file is a GNU extension to the Standard C++ Library. | |
*/ | |
#ifndef _EXT_NUMERIC_TRAITS | |
#define _EXT_NUMERIC_TRAITS 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/numeric_traits.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/cpp_type_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/numeric_traits.h" 3 | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/numeric_traits.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <ext/type_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/numeric_traits.h" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/numeric_traits.h" 3 | |
namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// Compile time constants for builtin types. | |
// Sadly std::numeric_limits member functions cannot be used for this. | |
#define __glibcxx_signed(_Tp) ((_Tp)(-1) < 0) | |
#define __glibcxx_digits(_Tp) \ | |
(sizeof(_Tp) * __CHAR_BIT__ - __glibcxx_signed(_Tp)) | |
#define __glibcxx_min(_Tp) \ | |
(__glibcxx_signed(_Tp) ? (_Tp)1 << __glibcxx_digits(_Tp) : (_Tp)0) | |
#define __glibcxx_max(_Tp) \ | |
(__glibcxx_signed(_Tp) ? \ | |
(((((_Tp)1 << (__glibcxx_digits(_Tp) - 1)) - 1) << 1) + 1) : ~(_Tp)0) | |
template<typename _Value> | |
struct __numeric_traits_integer | |
{ | |
// Only integers for initialization of member constant. | |
static const _Value __min = __glibcxx_min(_Value); | |
static const _Value __max = __glibcxx_max(_Value); | |
// NB: these two also available in std::numeric_limits as compile | |
// time constants, but <limits> is big and we avoid including it. | |
static const bool __is_signed = __glibcxx_signed(_Value); | |
static const int __digits = __glibcxx_digits(_Value); | |
}; | |
template<typename _Value> | |
const _Value __numeric_traits_integer<_Value>::__min; | |
template<typename _Value> | |
const _Value __numeric_traits_integer<_Value>::__max; | |
template<typename _Value> | |
const bool __numeric_traits_integer<_Value>::__is_signed; | |
template<typename _Value> | |
const int __numeric_traits_integer<_Value>::__digits; | |
#undef __glibcxx_signed | |
#undef __glibcxx_digits | |
#undef __glibcxx_min | |
#undef __glibcxx_max | |
#define __glibcxx_floating(_Tp, _Fval, _Dval, _LDval) \ | |
(std::__are_same<_Tp, float>::__value ? _Fval \ | |
: std::__are_same<_Tp, double>::__value ? _Dval : _LDval) | |
#define __glibcxx_max_digits10(_Tp) \ | |
(2 + __glibcxx_floating(_Tp, __FLT_MANT_DIG__, __DBL_MANT_DIG__, \ | |
__LDBL_MANT_DIG__) * 643L / 2136) | |
#define __glibcxx_digits10(_Tp) \ | |
__glibcxx_floating(_Tp, __FLT_DIG__, __DBL_DIG__, __LDBL_DIG__) | |
#define __glibcxx_max_exponent10(_Tp) \ | |
__glibcxx_floating(_Tp, __FLT_MAX_10_EXP__, __DBL_MAX_10_EXP__, \ | |
__LDBL_MAX_10_EXP__) | |
template<typename _Value> | |
struct __numeric_traits_floating | |
{ | |
// Only floating point types. See N1822. | |
static const int __max_digits10 = __glibcxx_max_digits10(_Value); | |
// See above comment... | |
static const bool __is_signed = true; | |
static const int __digits10 = __glibcxx_digits10(_Value); | |
static const int __max_exponent10 = __glibcxx_max_exponent10(_Value); | |
}; | |
template<typename _Value> | |
const int __numeric_traits_floating<_Value>::__max_digits10; | |
template<typename _Value> | |
const bool __numeric_traits_floating<_Value>::__is_signed; | |
template<typename _Value> | |
const int __numeric_traits_floating<_Value>::__digits10; | |
template<typename _Value> | |
const int __numeric_traits_floating<_Value>::__max_exponent10; | |
template<typename _Value> | |
struct __numeric_traits | |
: public __conditional_type<std::__is_integer<_Value>::__value, | |
__numeric_traits_integer<_Value>, | |
__numeric_traits_floating<_Value> >::__type | |
{ }; | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#undef __glibcxx_floating | |
#undef __glibcxx_max_digits10 | |
#undef __glibcxx_digits10 | |
#undef __glibcxx_max_exponent10 | |
#endif | |
# 139 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/numeric_traits.h" 3 | |
# 64 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_pair.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 64 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 65 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_iterator_base_types.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 65 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 1 3 | |
// Types used in iterator implementation -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* | |
* Copyright (c) 1996-1998 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file bits/stl_iterator_base_types.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iterator} | |
* | |
* This file contains all of the general iterator-related utility types, | |
* such as iterator_traits and struct iterator. | |
*/ | |
#ifndef _STL_ITERATOR_BASE_TYPES_H | |
#define _STL_ITERATOR_BASE_TYPES_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 63 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 64 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
# 65 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <type_traits> // For __void_t, is_convertible | |
#endif /* expanded by -frewrite-includes */ | |
# 67 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
# 68 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
#endif | |
# 69 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @defgroup iterators Iterators | |
* Abstractions for uniform iterating through various underlying types. | |
*/ | |
//@{ | |
/** | |
* @defgroup iterator_tags Iterator Tags | |
* These are empty types, used to distinguish different iterators. The | |
* distinction is not made by what they contain, but simply by what they | |
* are. Different underlying algorithms can then be used based on the | |
* different operations supported by different iterator types. | |
*/ | |
//@{ | |
/// Marking input iterators. | |
struct input_iterator_tag { }; | |
/// Marking output iterators. | |
struct output_iterator_tag { }; | |
/// Forward iterators support a superset of input iterator operations. | |
struct forward_iterator_tag : public input_iterator_tag { }; | |
/// Bidirectional iterators support a superset of forward iterator | |
/// operations. | |
struct bidirectional_iterator_tag : public forward_iterator_tag { }; | |
/// Random-access iterators support a superset of bidirectional | |
/// iterator operations. | |
struct random_access_iterator_tag : public bidirectional_iterator_tag { }; | |
//@} | |
/** | |
* @brief Common %iterator class. | |
* | |
* This class does nothing but define nested typedefs. %Iterator classes | |
* can inherit from this class to save some work. The typedefs are then | |
* used in specializations and overloading. | |
* | |
* In particular, there are no default implementations of requirements | |
* such as @c operator++ and the like. (How could there be?) | |
*/ | |
template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t, | |
typename _Pointer = _Tp*, typename _Reference = _Tp&> | |
struct iterator | |
{ | |
/// One of the @link iterator_tags tag types@endlink. | |
typedef _Category iterator_category; | |
/// The type "pointed to" by the iterator. | |
typedef _Tp value_type; | |
/// Distance between iterators is represented as this type. | |
typedef _Distance difference_type; | |
/// This type represents a pointer-to-value_type. | |
typedef _Pointer pointer; | |
/// This type represents a reference-to-value_type. | |
typedef _Reference reference; | |
}; | |
/** | |
* @brief Traits class for iterators. | |
* | |
* This class does nothing but define nested typedefs. The general | |
* version simply @a forwards the nested typedefs from the Iterator | |
* argument. Specialized versions for pointers and pointers-to-const | |
* provide tighter, more correct semantics. | |
*/ | |
#if __cplusplus >= 201103L | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2408. SFINAE-friendly common_type/iterator_traits is missing in C++14 | |
template<typename _Iterator, typename = __void_t<>> | |
struct __iterator_traits { }; | |
template<typename _Iterator> | |
struct __iterator_traits<_Iterator, | |
__void_t<typename _Iterator::iterator_category, | |
typename _Iterator::value_type, | |
typename _Iterator::difference_type, | |
typename _Iterator::pointer, | |
typename _Iterator::reference>> | |
{ | |
typedef typename _Iterator::iterator_category iterator_category; | |
typedef typename _Iterator::value_type value_type; | |
typedef typename _Iterator::difference_type difference_type; | |
typedef typename _Iterator::pointer pointer; | |
typedef typename _Iterator::reference reference; | |
}; | |
template<typename _Iterator> | |
struct iterator_traits | |
: public __iterator_traits<_Iterator> { }; | |
#else | |
# 165 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
template<typename _Iterator> | |
struct iterator_traits | |
{ | |
typedef typename _Iterator::iterator_category iterator_category; | |
typedef typename _Iterator::value_type value_type; | |
typedef typename _Iterator::difference_type difference_type; | |
typedef typename _Iterator::pointer pointer; | |
typedef typename _Iterator::reference reference; | |
}; | |
#endif | |
# 175 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
/// Partial specialization for pointer types. | |
template<typename _Tp> | |
struct iterator_traits<_Tp*> | |
{ | |
typedef random_access_iterator_tag iterator_category; | |
typedef _Tp value_type; | |
typedef ptrdiff_t difference_type; | |
typedef _Tp* pointer; | |
typedef _Tp& reference; | |
}; | |
/// Partial specialization for const pointer types. | |
template<typename _Tp> | |
struct iterator_traits<const _Tp*> | |
{ | |
typedef random_access_iterator_tag iterator_category; | |
typedef _Tp value_type; | |
typedef ptrdiff_t difference_type; | |
typedef const _Tp* pointer; | |
typedef const _Tp& reference; | |
}; | |
/** | |
* This function is not a part of the C++ standard but is syntactic | |
* sugar for internal library use only. | |
*/ | |
template<typename _Iter> | |
inline typename iterator_traits<_Iter>::iterator_category | |
__iterator_category(const _Iter&) | |
{ return typename iterator_traits<_Iter>::iterator_category(); } | |
//@} | |
#if __cplusplus < 201103L | |
// If _Iterator has a base returns it otherwise _Iterator is returned | |
// untouched | |
template<typename _Iterator, bool _HasBase> | |
struct _Iter_base | |
{ | |
typedef _Iterator iterator_type; | |
static iterator_type _S_base(_Iterator __it) | |
{ return __it; } | |
}; | |
template<typename _Iterator> | |
struct _Iter_base<_Iterator, true> | |
{ | |
typedef typename _Iterator::iterator_type iterator_type; | |
static iterator_type _S_base(_Iterator __it) | |
{ return __it.base(); } | |
}; | |
#endif | |
# 228 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
#if __cplusplus >= 201103L | |
template<typename _InIter> | |
using _RequireInputIter = typename | |
enable_if<is_convertible<typename | |
iterator_traits<_InIter>::iterator_category, | |
input_iterator_tag>::value>::type; | |
#endif | |
# 236 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif /* _STL_ITERATOR_BASE_TYPES_H */ | |
# 241 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_types.h" 3 | |
# 66 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_iterator_base_funcs.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 66 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 1 3 | |
// Functions used by iterators -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* | |
* Copyright (c) 1996-1998 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file bits/stl_iterator_base_funcs.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iterator} | |
* | |
* This file contains all of the general iterator-related utility | |
* functions, such as distance() and advance(). | |
*/ | |
#ifndef _STL_ITERATOR_BASE_FUNCS_H | |
#define _STL_ITERATOR_BASE_FUNCS_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 63 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/concept_check.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 64 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 3 | |
# 65 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <debug/assertions.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 65 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/assertions.h" 1 3 | |
// Debugging support implementation -*- C++ -*- | |
// Copyright (C) 2003-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file debug/assertions.h | |
* This file is a GNU debug extension to the Standard C++ Library. | |
*/ | |
#ifndef _GLIBCXX_DEBUG_ASSERTIONS_H | |
#define _GLIBCXX_DEBUG_ASSERTIONS_H 1 | |
#ifndef _GLIBCXX_DEBUG | |
# define _GLIBCXX_DEBUG_ASSERT(_Condition) | |
# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) | |
# define _GLIBCXX_DEBUG_ONLY(_Statement) | |
#endif | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/assertions.h" 3 | |
#ifndef _GLIBCXX_ASSERTIONS | |
# define __glibcxx_requires_non_empty_range(_First,_Last) | |
# define __glibcxx_requires_nonempty() | |
# define __glibcxx_requires_subscript(_N) | |
#else | |
# 45 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/assertions.h" 3 | |
// Verify that [_First, _Last) forms a non-empty iterator range. | |
# define __glibcxx_requires_non_empty_range(_First,_Last) \ | |
__glibcxx_assert(__builtin_expect(_First != _Last, true)) | |
# define __glibcxx_requires_subscript(_N) \ | |
__glibcxx_assert(__builtin_expect(_N < this->size(), true)) | |
// Verify that the container is nonempty | |
# define __glibcxx_requires_nonempty() \ | |
__glibcxx_assert(__builtin_expect(!this->empty(), true)) | |
#endif | |
# 55 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/assertions.h" 3 | |
#ifdef _GLIBCXX_DEBUG | |
# define _GLIBCXX_DEBUG_ASSERT(_Condition) __glibcxx_assert(_Condition) | |
# ifdef _GLIBCXX_DEBUG_PEDANTIC | |
# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) _GLIBCXX_DEBUG_ASSERT(_Condition) | |
# else | |
# 62 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/assertions.h" 3 | |
# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) | |
# endif | |
# 64 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/assertions.h" 3 | |
# define _GLIBCXX_DEBUG_ONLY(_Statement) _Statement | |
#endif | |
# 67 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/assertions.h" 3 | |
#endif // _GLIBCXX_DEBUG_ASSERTIONS | |
# 69 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/assertions.h" 3 | |
# 66 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 2 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_CONTAINER | |
// Forward declaration for the overloads of __distance. | |
template <typename> struct _List_iterator; | |
template <typename> struct _List_const_iterator; | |
_GLIBCXX_END_NAMESPACE_CONTAINER | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
template<typename _InputIterator> | |
inline _GLIBCXX14_CONSTEXPR | |
typename iterator_traits<_InputIterator>::difference_type | |
__distance(_InputIterator __first, _InputIterator __last, | |
input_iterator_tag) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) | |
typename iterator_traits<_InputIterator>::difference_type __n = 0; | |
while (__first != __last) | |
{ | |
++__first; | |
++__n; | |
} | |
return __n; | |
} | |
template<typename _RandomAccessIterator> | |
inline _GLIBCXX14_CONSTEXPR | |
typename iterator_traits<_RandomAccessIterator>::difference_type | |
__distance(_RandomAccessIterator __first, _RandomAccessIterator __last, | |
random_access_iterator_tag) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_RandomAccessIteratorConcept< | |
_RandomAccessIterator>) | |
return __last - __first; | |
} | |
#if _GLIBCXX_USE_CXX11_ABI | |
// Forward declaration because of the qualified call in distance. | |
template<typename _Tp> | |
ptrdiff_t | |
__distance(_GLIBCXX_STD_C::_List_iterator<_Tp>, | |
_GLIBCXX_STD_C::_List_iterator<_Tp>, | |
input_iterator_tag); | |
template<typename _Tp> | |
ptrdiff_t | |
__distance(_GLIBCXX_STD_C::_List_const_iterator<_Tp>, | |
_GLIBCXX_STD_C::_List_const_iterator<_Tp>, | |
input_iterator_tag); | |
#endif | |
# 121 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 3 | |
/** | |
* @brief A generalization of pointer arithmetic. | |
* @param __first An input iterator. | |
* @param __last An input iterator. | |
* @return The distance between them. | |
* | |
* Returns @c n such that __first + n == __last. This requires | |
* that @p __last must be reachable from @p __first. Note that @c | |
* n may be negative. | |
* | |
* For random access iterators, this uses their @c + and @c - operations | |
* and are constant time. For other %iterator classes they are linear time. | |
*/ | |
template<typename _InputIterator> | |
inline _GLIBCXX17_CONSTEXPR | |
typename iterator_traits<_InputIterator>::difference_type | |
distance(_InputIterator __first, _InputIterator __last) | |
{ | |
// concept requirements -- taken care of in __distance | |
return std::__distance(__first, __last, | |
std::__iterator_category(__first)); | |
} | |
template<typename _InputIterator, typename _Distance> | |
inline _GLIBCXX14_CONSTEXPR void | |
__advance(_InputIterator& __i, _Distance __n, input_iterator_tag) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator>) | |
__glibcxx_assert(__n >= 0); | |
while (__n--) | |
++__i; | |
} | |
template<typename _BidirectionalIterator, typename _Distance> | |
inline _GLIBCXX14_CONSTEXPR void | |
__advance(_BidirectionalIterator& __i, _Distance __n, | |
bidirectional_iterator_tag) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_BidirectionalIteratorConcept< | |
_BidirectionalIterator>) | |
if (__n > 0) | |
while (__n--) | |
++__i; | |
else | |
while (__n++) | |
--__i; | |
} | |
template<typename _RandomAccessIterator, typename _Distance> | |
inline _GLIBCXX14_CONSTEXPR void | |
__advance(_RandomAccessIterator& __i, _Distance __n, | |
random_access_iterator_tag) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_RandomAccessIteratorConcept< | |
_RandomAccessIterator>) | |
__i += __n; | |
} | |
/** | |
* @brief A generalization of pointer arithmetic. | |
* @param __i An input iterator. | |
* @param __n The @a delta by which to change @p __i. | |
* @return Nothing. | |
* | |
* This increments @p i by @p n. For bidirectional and random access | |
* iterators, @p __n may be negative, in which case @p __i is decremented. | |
* | |
* For random access iterators, this uses their @c + and @c - operations | |
* and are constant time. For other %iterator classes they are linear time. | |
*/ | |
template<typename _InputIterator, typename _Distance> | |
inline _GLIBCXX17_CONSTEXPR void | |
advance(_InputIterator& __i, _Distance __n) | |
{ | |
// concept requirements -- taken care of in __advance | |
typename iterator_traits<_InputIterator>::difference_type __d = __n; | |
std::__advance(__i, __d, std::__iterator_category(__i)); | |
} | |
#if __cplusplus >= 201103L | |
template<typename _ForwardIterator> | |
inline _GLIBCXX17_CONSTEXPR _ForwardIterator | |
next(_ForwardIterator __x, typename | |
iterator_traits<_ForwardIterator>::difference_type __n = 1) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_ForwardIteratorConcept< | |
_ForwardIterator>) | |
std::advance(__x, __n); | |
return __x; | |
} | |
template<typename _BidirectionalIterator> | |
inline _GLIBCXX17_CONSTEXPR _BidirectionalIterator | |
prev(_BidirectionalIterator __x, typename | |
iterator_traits<_BidirectionalIterator>::difference_type __n = 1) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_BidirectionalIteratorConcept< | |
_BidirectionalIterator>) | |
std::advance(__x, -__n); | |
return __x; | |
} | |
#endif // C++11 | |
# 231 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif /* _STL_ITERATOR_BASE_FUNCS_H */ | |
# 236 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator_base_funcs.h" 3 | |
# 67 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_iterator.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 67 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 1 3 | |
// Iterators -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* | |
* Copyright (c) 1996-1998 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file bits/stl_iterator.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iterator} | |
* | |
* This file implements reverse_iterator, back_insert_iterator, | |
* front_insert_iterator, insert_iterator, __normal_iterator, and their | |
* supporting functions and overloaded operators. | |
*/ | |
#ifndef _STL_ITERATOR_H | |
#define _STL_ITERATOR_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/cpp_type_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 63 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
# 64 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <ext/type_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 64 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
# 65 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/move.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 65 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
# 66 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/ptr_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 66 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ptr_traits.h" 1 3 | |
// Pointer Traits -*- C++ -*- | |
// Copyright (C) 2011-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/ptr_traits.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{memory} | |
*/ | |
#ifndef _PTR_TRAITS_H | |
#define _PTR_TRAITS_H 1 | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/move.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ptr_traits.h" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ptr_traits.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
class __undefined; | |
// Given Template<T, ...> return T, otherwise invalid. | |
template<typename _Tp> | |
struct __get_first_arg | |
{ using type = __undefined; }; | |
template<template<typename, typename...> class _Template, typename _Tp, | |
typename... _Types> | |
struct __get_first_arg<_Template<_Tp, _Types...>> | |
{ using type = _Tp; }; | |
template<typename _Tp> | |
using __get_first_arg_t = typename __get_first_arg<_Tp>::type; | |
// Given Template<T, ...> and U return Template<U, ...>, otherwise invalid. | |
template<typename _Tp, typename _Up> | |
struct __replace_first_arg | |
{ }; | |
template<template<typename, typename...> class _Template, typename _Up, | |
typename _Tp, typename... _Types> | |
struct __replace_first_arg<_Template<_Tp, _Types...>, _Up> | |
{ using type = _Template<_Up, _Types...>; }; | |
template<typename _Tp, typename _Up> | |
using __replace_first_arg_t = typename __replace_first_arg<_Tp, _Up>::type; | |
template<typename _Tp> | |
using __make_not_void | |
= typename conditional<is_void<_Tp>::value, __undefined, _Tp>::type; | |
/** | |
* @brief Uniform interface to all pointer-like types | |
* @ingroup pointer_abstractions | |
*/ | |
template<typename _Ptr> | |
struct pointer_traits | |
{ | |
private: | |
template<typename _Tp> | |
using __element_type = typename _Tp::element_type; | |
template<typename _Tp> | |
using __difference_type = typename _Tp::difference_type; | |
template<typename _Tp, typename _Up, typename = void> | |
struct __rebind : __replace_first_arg<_Tp, _Up> { }; | |
template<typename _Tp, typename _Up> | |
struct __rebind<_Tp, _Up, __void_t<typename _Tp::template rebind<_Up>>> | |
{ using type = typename _Tp::template rebind<_Up>; }; | |
public: | |
/// The pointer type. | |
using pointer = _Ptr; | |
/// The type pointed to. | |
using element_type | |
= __detected_or_t<__get_first_arg_t<_Ptr>, __element_type, _Ptr>; | |
/// The type used to represent the difference between two pointers. | |
using difference_type | |
= __detected_or_t<ptrdiff_t, __difference_type, _Ptr>; | |
/// A pointer to a different type. | |
template<typename _Up> | |
using rebind = typename __rebind<_Ptr, _Up>::type; | |
static _Ptr | |
pointer_to(__make_not_void<element_type>& __e) | |
{ return _Ptr::pointer_to(__e); } | |
static_assert(!is_same<element_type, __undefined>::value, | |
"pointer type defines element_type or is like SomePointer<T, Args>"); | |
}; | |
/** | |
* @brief Partial specialization for built-in pointers. | |
* @ingroup pointer_abstractions | |
*/ | |
template<typename _Tp> | |
struct pointer_traits<_Tp*> | |
{ | |
/// The pointer type | |
typedef _Tp* pointer; | |
/// The type pointed to | |
typedef _Tp element_type; | |
/// Type used to represent the difference between two pointers | |
typedef ptrdiff_t difference_type; | |
template<typename _Up> | |
using rebind = _Up*; | |
/** | |
* @brief Obtain a pointer to an object | |
* @param __r A reference to an object of type @c element_type | |
* @return @c addressof(__r) | |
*/ | |
static pointer | |
pointer_to(__make_not_void<element_type>& __r) noexcept | |
{ return std::addressof(__r); } | |
}; | |
/// Convenience alias for rebinding pointers. | |
template<typename _Ptr, typename _Tp> | |
using __ptr_rebind = typename pointer_traits<_Ptr>::template rebind<_Tp>; | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace std | |
#endif | |
# 153 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ptr_traits.h" 3 | |
#endif | |
# 155 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ptr_traits.h" 3 | |
# 67 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 2 3 | |
#if __cplusplus > 201402L | |
# define __cpp_lib_array_constexpr 201603 | |
#endif | |
# 71 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @addtogroup iterators | |
* @{ | |
*/ | |
// 24.4.1 Reverse iterators | |
/** | |
* Bidirectional and random access iterators have corresponding reverse | |
* %iterator adaptors that iterate through the data structure in the | |
* opposite direction. They have the same signatures as the corresponding | |
* iterators. The fundamental relation between a reverse %iterator and its | |
* corresponding %iterator @c i is established by the identity: | |
* @code | |
* &*(reverse_iterator(i)) == &*(i - 1) | |
* @endcode | |
* | |
* <em>This mapping is dictated by the fact that while there is always a | |
* pointer past the end of an array, there might not be a valid pointer | |
* before the beginning of an array.</em> [24.4.1]/1,2 | |
* | |
* Reverse iterators can be tricky and surprising at first. Their | |
* semantics make sense, however, and the trickiness is a side effect of | |
* the requirement that the iterators must be safe. | |
*/ | |
template<typename _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; | |
typedef iterator_traits<_Iterator> __traits_type; | |
public: | |
typedef _Iterator iterator_type; | |
typedef typename __traits_type::difference_type difference_type; | |
typedef typename __traits_type::pointer pointer; | |
typedef typename __traits_type::reference reference; | |
/** | |
* The default constructor value-initializes member @p current. | |
* If it is a pointer, that means it is zero-initialized. | |
*/ | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 235 No specification of default ctor for reverse_iterator | |
_GLIBCXX17_CONSTEXPR | |
reverse_iterator() : current() { } | |
/** | |
* This %iterator will move in the opposite direction that @p x does. | |
*/ | |
explicit _GLIBCXX17_CONSTEXPR | |
reverse_iterator(iterator_type __x) : current(__x) { } | |
/** | |
* The copy constructor is normal. | |
*/ | |
_GLIBCXX17_CONSTEXPR | |
reverse_iterator(const reverse_iterator& __x) | |
: current(__x.current) { } | |
/** | |
* A %reverse_iterator across other types can be copied if the | |
* underlying %iterator can be converted to the type of @c current. | |
*/ | |
template<typename _Iter> | |
_GLIBCXX17_CONSTEXPR | |
reverse_iterator(const reverse_iterator<_Iter>& __x) | |
: current(__x.base()) { } | |
/** | |
* @return @c current, the %iterator used for underlying work. | |
*/ | |
_GLIBCXX17_CONSTEXPR iterator_type | |
base() const | |
{ return current; } | |
/** | |
* @return A reference to the value at @c --current | |
* | |
* This requires that @c --current is dereferenceable. | |
* | |
* @warning This implementation requires that for an iterator of the | |
* underlying iterator type, @c x, a reference obtained by | |
* @c *x remains valid after @c x has been modified or | |
* destroyed. This is a bug: http://gcc.gnu.org/PR51823 | |
*/ | |
_GLIBCXX17_CONSTEXPR reference | |
operator*() const | |
{ | |
_Iterator __tmp = current; | |
return *--__tmp; | |
} | |
/** | |
* @return A pointer to the value at @c --current | |
* | |
* This requires that @c --current is dereferenceable. | |
*/ | |
_GLIBCXX17_CONSTEXPR pointer | |
operator->() const | |
{ return &(operator*()); } | |
/** | |
* @return @c *this | |
* | |
* Decrements the underlying iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reverse_iterator& | |
operator++() | |
{ | |
--current; | |
return *this; | |
} | |
/** | |
* @return The original value of @c *this | |
* | |
* Decrements the underlying iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reverse_iterator | |
operator++(int) | |
{ | |
reverse_iterator __tmp = *this; | |
--current; | |
return __tmp; | |
} | |
/** | |
* @return @c *this | |
* | |
* Increments the underlying iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reverse_iterator& | |
operator--() | |
{ | |
++current; | |
return *this; | |
} | |
/** | |
* @return A reverse_iterator with the previous value of @c *this | |
* | |
* Increments the underlying iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reverse_iterator | |
operator--(int) | |
{ | |
reverse_iterator __tmp = *this; | |
++current; | |
return __tmp; | |
} | |
/** | |
* @return A reverse_iterator that refers to @c current - @a __n | |
* | |
* The underlying iterator must be a Random Access Iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reverse_iterator | |
operator+(difference_type __n) const | |
{ return reverse_iterator(current - __n); } | |
/** | |
* @return *this | |
* | |
* Moves the underlying iterator backwards @a __n steps. | |
* The underlying iterator must be a Random Access Iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reverse_iterator& | |
operator+=(difference_type __n) | |
{ | |
current -= __n; | |
return *this; | |
} | |
/** | |
* @return A reverse_iterator that refers to @c current - @a __n | |
* | |
* The underlying iterator must be a Random Access Iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reverse_iterator | |
operator-(difference_type __n) const | |
{ return reverse_iterator(current + __n); } | |
/** | |
* @return *this | |
* | |
* Moves the underlying iterator forwards @a __n steps. | |
* The underlying iterator must be a Random Access Iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reverse_iterator& | |
operator-=(difference_type __n) | |
{ | |
current += __n; | |
return *this; | |
} | |
/** | |
* @return The value at @c current - @a __n - 1 | |
* | |
* The underlying iterator must be a Random Access Iterator. | |
*/ | |
_GLIBCXX17_CONSTEXPR reference | |
operator[](difference_type __n) const | |
{ return *(*this + __n); } | |
}; | |
//@{ | |
/** | |
* @param __x A %reverse_iterator. | |
* @param __y A %reverse_iterator. | |
* @return A simple bool. | |
* | |
* Reverse iterators forward many operations to their underlying base() | |
* iterators. Others are implemented in terms of one another. | |
* | |
*/ | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator==(const reverse_iterator<_Iterator>& __x, | |
const reverse_iterator<_Iterator>& __y) | |
{ return __x.base() == __y.base(); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator<(const reverse_iterator<_Iterator>& __x, | |
const reverse_iterator<_Iterator>& __y) | |
{ return __y.base() < __x.base(); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator!=(const reverse_iterator<_Iterator>& __x, | |
const reverse_iterator<_Iterator>& __y) | |
{ return !(__x == __y); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator>(const reverse_iterator<_Iterator>& __x, | |
const reverse_iterator<_Iterator>& __y) | |
{ return __y < __x; } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator<=(const reverse_iterator<_Iterator>& __x, | |
const reverse_iterator<_Iterator>& __y) | |
{ return !(__y < __x); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator>=(const reverse_iterator<_Iterator>& __x, | |
const reverse_iterator<_Iterator>& __y) | |
{ return !(__x < __y); } | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// DR 280. Comparison of reverse_iterator to const reverse_iterator. | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator==(const reverse_iterator<_IteratorL>& __x, | |
const reverse_iterator<_IteratorR>& __y) | |
{ return __x.base() == __y.base(); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator<(const reverse_iterator<_IteratorL>& __x, | |
const reverse_iterator<_IteratorR>& __y) | |
{ return __y.base() < __x.base(); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator!=(const reverse_iterator<_IteratorL>& __x, | |
const reverse_iterator<_IteratorR>& __y) | |
{ return !(__x == __y); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator>(const reverse_iterator<_IteratorL>& __x, | |
const reverse_iterator<_IteratorR>& __y) | |
{ return __y < __x; } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator<=(const reverse_iterator<_IteratorL>& __x, | |
const reverse_iterator<_IteratorR>& __y) | |
{ return !(__y < __x); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator>=(const reverse_iterator<_IteratorL>& __x, | |
const reverse_iterator<_IteratorR>& __y) | |
{ return !(__x < __y); } | |
//@} | |
#if __cplusplus < 201103L | |
template<typename _Iterator> | |
inline typename reverse_iterator<_Iterator>::difference_type | |
operator-(const reverse_iterator<_Iterator>& __x, | |
const reverse_iterator<_Iterator>& __y) | |
{ return __y.base() - __x.base(); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline typename reverse_iterator<_IteratorL>::difference_type | |
operator-(const reverse_iterator<_IteratorL>& __x, | |
const reverse_iterator<_IteratorR>& __y) | |
{ return __y.base() - __x.base(); } | |
#else | |
# 385 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// DR 685. reverse_iterator/move_iterator difference has invalid signatures | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR auto | |
operator-(const reverse_iterator<_IteratorL>& __x, | |
const reverse_iterator<_IteratorR>& __y) | |
-> decltype(__y.base() - __x.base()) | |
{ return __y.base() - __x.base(); } | |
#endif | |
# 394 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> | |
operator+(typename reverse_iterator<_Iterator>::difference_type __n, | |
const reverse_iterator<_Iterator>& __x) | |
{ return reverse_iterator<_Iterator>(__x.base() - __n); } | |
#if __cplusplus >= 201103L | |
// Same as C++14 make_reverse_iterator but used in C++03 mode too. | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> | |
__make_reverse_iterator(_Iterator __i) | |
{ return reverse_iterator<_Iterator>(__i); } | |
# if __cplusplus > 201103L | |
# define __cpp_lib_make_reverse_iterator 201402 | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// DR 2285. make_reverse_iterator | |
/// Generator function for reverse_iterator. | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Iterator> | |
make_reverse_iterator(_Iterator __i) | |
{ return reverse_iterator<_Iterator>(__i); } | |
# endif | |
# 419 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#endif | |
# 420 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#if __cplusplus >= 201103L | |
template<typename _Iterator> | |
auto | |
__niter_base(reverse_iterator<_Iterator> __it) | |
-> decltype(__make_reverse_iterator(__niter_base(__it.base()))) | |
{ return __make_reverse_iterator(__niter_base(__it.base())); } | |
template<typename _Iterator> | |
struct __is_move_iterator<reverse_iterator<_Iterator> > | |
: __is_move_iterator<_Iterator> | |
{ }; | |
template<typename _Iterator> | |
auto | |
__miter_base(reverse_iterator<_Iterator> __it) | |
-> decltype(__make_reverse_iterator(__miter_base(__it.base()))) | |
{ return __make_reverse_iterator(__miter_base(__it.base())); } | |
#endif | |
# 439 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
// 24.4.2.2.1 back_insert_iterator | |
/** | |
* @brief Turns assignment into insertion. | |
* | |
* These are output iterators, constructed from a container-of-T. | |
* Assigning a T to the iterator appends it to the container using | |
* push_back. | |
* | |
* Tip: Using the back_inserter function to create these iterators can | |
* save typing. | |
*/ | |
template<typename _Container> | |
class back_insert_iterator | |
: public iterator<output_iterator_tag, void, void, void, void> | |
{ | |
protected: | |
_Container* container; | |
public: | |
/// A nested typedef for the type of whatever container you used. | |
typedef _Container container_type; | |
/// The only way to create this %iterator is with a container. | |
explicit | |
back_insert_iterator(_Container& __x) | |
: container(std::__addressof(__x)) { } | |
/** | |
* @param __value An instance of whatever type | |
* container_type::const_reference is; presumably a | |
* reference-to-const T for container<T>. | |
* @return This %iterator, for chained operations. | |
* | |
* This kind of %iterator doesn't really have a @a position in the | |
* container (you can think of the position as being permanently at | |
* the end, if you like). Assigning a value to the %iterator will | |
* always append the value to the end of the container. | |
*/ | |
#if __cplusplus < 201103L | |
back_insert_iterator& | |
operator=(typename _Container::const_reference __value) | |
{ | |
container->push_back(__value); | |
return *this; | |
} | |
#else | |
# 486 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
back_insert_iterator& | |
operator=(const typename _Container::value_type& __value) | |
{ | |
container->push_back(__value); | |
return *this; | |
} | |
back_insert_iterator& | |
operator=(typename _Container::value_type&& __value) | |
{ | |
container->push_back(std::move(__value)); | |
return *this; | |
} | |
#endif | |
# 500 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
/// Simply returns *this. | |
back_insert_iterator& | |
operator*() | |
{ return *this; } | |
/// Simply returns *this. (This %iterator does not @a move.) | |
back_insert_iterator& | |
operator++() | |
{ return *this; } | |
/// Simply returns *this. (This %iterator does not @a move.) | |
back_insert_iterator | |
operator++(int) | |
{ return *this; } | |
}; | |
/** | |
* @param __x A container of arbitrary type. | |
* @return An instance of back_insert_iterator working on @p __x. | |
* | |
* This wrapper function helps in creating back_insert_iterator instances. | |
* Typing the name of the %iterator requires knowing the precise full | |
* type of the container, which can be tedious and impedes generic | |
* programming. Using this function lets you take advantage of automatic | |
* template parameter deduction, making the compiler match the correct | |
* types for you. | |
*/ | |
template<typename _Container> | |
inline back_insert_iterator<_Container> | |
back_inserter(_Container& __x) | |
{ return back_insert_iterator<_Container>(__x); } | |
/** | |
* @brief Turns assignment into insertion. | |
* | |
* These are output iterators, constructed from a container-of-T. | |
* Assigning a T to the iterator prepends it to the container using | |
* push_front. | |
* | |
* Tip: Using the front_inserter function to create these iterators can | |
* save typing. | |
*/ | |
template<typename _Container> | |
class front_insert_iterator | |
: public iterator<output_iterator_tag, void, void, void, void> | |
{ | |
protected: | |
_Container* container; | |
public: | |
/// A nested typedef for the type of whatever container you used. | |
typedef _Container container_type; | |
/// The only way to create this %iterator is with a container. | |
explicit front_insert_iterator(_Container& __x) | |
: container(std::__addressof(__x)) { } | |
/** | |
* @param __value An instance of whatever type | |
* container_type::const_reference is; presumably a | |
* reference-to-const T for container<T>. | |
* @return This %iterator, for chained operations. | |
* | |
* This kind of %iterator doesn't really have a @a position in the | |
* container (you can think of the position as being permanently at | |
* the front, if you like). Assigning a value to the %iterator will | |
* always prepend the value to the front of the container. | |
*/ | |
#if __cplusplus < 201103L | |
front_insert_iterator& | |
operator=(typename _Container::const_reference __value) | |
{ | |
container->push_front(__value); | |
return *this; | |
} | |
#else | |
# 577 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
front_insert_iterator& | |
operator=(const typename _Container::value_type& __value) | |
{ | |
container->push_front(__value); | |
return *this; | |
} | |
front_insert_iterator& | |
operator=(typename _Container::value_type&& __value) | |
{ | |
container->push_front(std::move(__value)); | |
return *this; | |
} | |
#endif | |
# 591 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
/// Simply returns *this. | |
front_insert_iterator& | |
operator*() | |
{ return *this; } | |
/// Simply returns *this. (This %iterator does not @a move.) | |
front_insert_iterator& | |
operator++() | |
{ return *this; } | |
/// Simply returns *this. (This %iterator does not @a move.) | |
front_insert_iterator | |
operator++(int) | |
{ return *this; } | |
}; | |
/** | |
* @param __x A container of arbitrary type. | |
* @return An instance of front_insert_iterator working on @p x. | |
* | |
* This wrapper function helps in creating front_insert_iterator instances. | |
* Typing the name of the %iterator requires knowing the precise full | |
* type of the container, which can be tedious and impedes generic | |
* programming. Using this function lets you take advantage of automatic | |
* template parameter deduction, making the compiler match the correct | |
* types for you. | |
*/ | |
template<typename _Container> | |
inline front_insert_iterator<_Container> | |
front_inserter(_Container& __x) | |
{ return front_insert_iterator<_Container>(__x); } | |
/** | |
* @brief Turns assignment into insertion. | |
* | |
* These are output iterators, constructed from a container-of-T. | |
* Assigning a T to the iterator inserts it in the container at the | |
* %iterator's position, rather than overwriting the value at that | |
* position. | |
* | |
* (Sequences will actually insert a @e copy of the value before the | |
* %iterator's position.) | |
* | |
* Tip: Using the inserter function to create these iterators can | |
* save typing. | |
*/ | |
template<typename _Container> | |
class insert_iterator | |
: public iterator<output_iterator_tag, void, void, void, void> | |
{ | |
protected: | |
_Container* container; | |
typename _Container::iterator iter; | |
public: | |
/// A nested typedef for the type of whatever container you used. | |
typedef _Container container_type; | |
/** | |
* The only way to create this %iterator is with a container and an | |
* initial position (a normal %iterator into the container). | |
*/ | |
insert_iterator(_Container& __x, typename _Container::iterator __i) | |
: container(std::__addressof(__x)), iter(__i) {} | |
/** | |
* @param __value An instance of whatever type | |
* container_type::const_reference is; presumably a | |
* reference-to-const T for container<T>. | |
* @return This %iterator, for chained operations. | |
* | |
* This kind of %iterator maintains its own position in the | |
* container. Assigning a value to the %iterator will insert the | |
* value into the container at the place before the %iterator. | |
* | |
* The position is maintained such that subsequent assignments will | |
* insert values immediately after one another. For example, | |
* @code | |
* // vector v contains A and Z | |
* | |
* insert_iterator i (v, ++v.begin()); | |
* i = 1; | |
* i = 2; | |
* i = 3; | |
* | |
* // vector v contains A, 1, 2, 3, and Z | |
* @endcode | |
*/ | |
#if __cplusplus < 201103L | |
insert_iterator& | |
operator=(typename _Container::const_reference __value) | |
{ | |
iter = container->insert(iter, __value); | |
++iter; | |
return *this; | |
} | |
#else | |
# 689 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
insert_iterator& | |
operator=(const typename _Container::value_type& __value) | |
{ | |
iter = container->insert(iter, __value); | |
++iter; | |
return *this; | |
} | |
insert_iterator& | |
operator=(typename _Container::value_type&& __value) | |
{ | |
iter = container->insert(iter, std::move(__value)); | |
++iter; | |
return *this; | |
} | |
#endif | |
# 705 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
/// Simply returns *this. | |
insert_iterator& | |
operator*() | |
{ return *this; } | |
/// Simply returns *this. (This %iterator does not @a move.) | |
insert_iterator& | |
operator++() | |
{ return *this; } | |
/// Simply returns *this. (This %iterator does not @a move.) | |
insert_iterator& | |
operator++(int) | |
{ return *this; } | |
}; | |
/** | |
* @param __x A container of arbitrary type. | |
* @return An instance of insert_iterator working on @p __x. | |
* | |
* This wrapper function helps in creating insert_iterator instances. | |
* Typing the name of the %iterator requires knowing the precise full | |
* type of the container, which can be tedious and impedes generic | |
* programming. Using this function lets you take advantage of automatic | |
* template parameter deduction, making the compiler match the correct | |
* types for you. | |
*/ | |
template<typename _Container, typename _Iterator> | |
inline insert_iterator<_Container> | |
inserter(_Container& __x, _Iterator __i) | |
{ | |
return insert_iterator<_Container>(__x, | |
typename _Container::iterator(__i)); | |
} | |
// @} group iterators | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// This iterator adapter is @a normal in the sense that it does not | |
// change the semantics of any of the operators of its iterator | |
// parameter. Its primary purpose is to convert an iterator that is | |
// not a class, e.g. a pointer, into an iterator that is a class. | |
// The _Container parameter exists solely so that different containers | |
// using this template can instantiate different types, even if the | |
// _Iterator parameter is the same. | |
using std::iterator_traits; | |
using std::iterator; | |
template<typename _Iterator, typename _Container> | |
class __normal_iterator | |
{ | |
protected: | |
_Iterator _M_current; | |
typedef iterator_traits<_Iterator> __traits_type; | |
public: | |
typedef _Iterator iterator_type; | |
typedef typename __traits_type::iterator_category iterator_category; | |
typedef typename __traits_type::value_type value_type; | |
typedef typename __traits_type::difference_type difference_type; | |
typedef typename __traits_type::reference reference; | |
typedef typename __traits_type::pointer pointer; | |
_GLIBCXX_CONSTEXPR __normal_iterator() _GLIBCXX_NOEXCEPT | |
: _M_current(_Iterator()) { } | |
explicit | |
__normal_iterator(const _Iterator& __i) _GLIBCXX_NOEXCEPT | |
: _M_current(__i) { } | |
// Allow iterator to const_iterator conversion | |
template<typename _Iter> | |
__normal_iterator(const __normal_iterator<_Iter, | |
typename __enable_if< | |
(std::__are_same<_Iter, typename _Container::pointer>::__value), | |
_Container>::__type>& __i) _GLIBCXX_NOEXCEPT | |
: _M_current(__i.base()) { } | |
// Forward iterator requirements | |
reference | |
operator*() const _GLIBCXX_NOEXCEPT | |
{ return *_M_current; } | |
pointer | |
operator->() const _GLIBCXX_NOEXCEPT | |
{ return _M_current; } | |
__normal_iterator& | |
operator++() _GLIBCXX_NOEXCEPT | |
{ | |
++_M_current; | |
return *this; | |
} | |
__normal_iterator | |
operator++(int) _GLIBCXX_NOEXCEPT | |
{ return __normal_iterator(_M_current++); } | |
// Bidirectional iterator requirements | |
__normal_iterator& | |
operator--() _GLIBCXX_NOEXCEPT | |
{ | |
--_M_current; | |
return *this; | |
} | |
__normal_iterator | |
operator--(int) _GLIBCXX_NOEXCEPT | |
{ return __normal_iterator(_M_current--); } | |
// Random access iterator requirements | |
reference | |
operator[](difference_type __n) const _GLIBCXX_NOEXCEPT | |
{ return _M_current[__n]; } | |
__normal_iterator& | |
operator+=(difference_type __n) _GLIBCXX_NOEXCEPT | |
{ _M_current += __n; return *this; } | |
__normal_iterator | |
operator+(difference_type __n) const _GLIBCXX_NOEXCEPT | |
{ return __normal_iterator(_M_current + __n); } | |
__normal_iterator& | |
operator-=(difference_type __n) _GLIBCXX_NOEXCEPT | |
{ _M_current -= __n; return *this; } | |
__normal_iterator | |
operator-(difference_type __n) const _GLIBCXX_NOEXCEPT | |
{ return __normal_iterator(_M_current - __n); } | |
const _Iterator& | |
base() const _GLIBCXX_NOEXCEPT | |
{ return _M_current; } | |
}; | |
// Note: In what follows, the left- and right-hand-side iterators are | |
// allowed to vary in types (conceptually in cv-qualification) so that | |
// comparison between cv-qualified and non-cv-qualified iterators be | |
// valid. However, the greedy and unfriendly operators in std::rel_ops | |
// will make overload resolution ambiguous (when in scope) if we don't | |
// provide overloads whose operands are of the same type. Can someone | |
// remind me what generic programming is about? -- Gaby | |
// Forward iterator requirements | |
template<typename _IteratorL, typename _IteratorR, typename _Container> | |
inline bool | |
operator==(const __normal_iterator<_IteratorL, _Container>& __lhs, | |
const __normal_iterator<_IteratorR, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() == __rhs.base(); } | |
template<typename _Iterator, typename _Container> | |
inline bool | |
operator==(const __normal_iterator<_Iterator, _Container>& __lhs, | |
const __normal_iterator<_Iterator, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() == __rhs.base(); } | |
template<typename _IteratorL, typename _IteratorR, typename _Container> | |
inline bool | |
operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs, | |
const __normal_iterator<_IteratorR, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() != __rhs.base(); } | |
template<typename _Iterator, typename _Container> | |
inline bool | |
operator!=(const __normal_iterator<_Iterator, _Container>& __lhs, | |
const __normal_iterator<_Iterator, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() != __rhs.base(); } | |
// Random access iterator requirements | |
template<typename _IteratorL, typename _IteratorR, typename _Container> | |
inline bool | |
operator<(const __normal_iterator<_IteratorL, _Container>& __lhs, | |
const __normal_iterator<_IteratorR, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() < __rhs.base(); } | |
template<typename _Iterator, typename _Container> | |
inline bool | |
operator<(const __normal_iterator<_Iterator, _Container>& __lhs, | |
const __normal_iterator<_Iterator, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() < __rhs.base(); } | |
template<typename _IteratorL, typename _IteratorR, typename _Container> | |
inline bool | |
operator>(const __normal_iterator<_IteratorL, _Container>& __lhs, | |
const __normal_iterator<_IteratorR, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() > __rhs.base(); } | |
template<typename _Iterator, typename _Container> | |
inline bool | |
operator>(const __normal_iterator<_Iterator, _Container>& __lhs, | |
const __normal_iterator<_Iterator, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() > __rhs.base(); } | |
template<typename _IteratorL, typename _IteratorR, typename _Container> | |
inline bool | |
operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs, | |
const __normal_iterator<_IteratorR, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() <= __rhs.base(); } | |
template<typename _Iterator, typename _Container> | |
inline bool | |
operator<=(const __normal_iterator<_Iterator, _Container>& __lhs, | |
const __normal_iterator<_Iterator, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() <= __rhs.base(); } | |
template<typename _IteratorL, typename _IteratorR, typename _Container> | |
inline bool | |
operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs, | |
const __normal_iterator<_IteratorR, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() >= __rhs.base(); } | |
template<typename _Iterator, typename _Container> | |
inline bool | |
operator>=(const __normal_iterator<_Iterator, _Container>& __lhs, | |
const __normal_iterator<_Iterator, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() >= __rhs.base(); } | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// According to the resolution of DR179 not only the various comparison | |
// operators but also operator- must accept mixed iterator/const_iterator | |
// parameters. | |
template<typename _IteratorL, typename _IteratorR, typename _Container> | |
#if __cplusplus >= 201103L | |
// DR 685. | |
inline auto | |
operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, | |
const __normal_iterator<_IteratorR, _Container>& __rhs) noexcept | |
-> decltype(__lhs.base() - __rhs.base()) | |
#else | |
# 954 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
inline typename __normal_iterator<_IteratorL, _Container>::difference_type | |
operator-(const __normal_iterator<_IteratorL, _Container>& __lhs, | |
const __normal_iterator<_IteratorR, _Container>& __rhs) | |
#endif | |
# 958 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
{ return __lhs.base() - __rhs.base(); } | |
template<typename _Iterator, typename _Container> | |
inline typename __normal_iterator<_Iterator, _Container>::difference_type | |
operator-(const __normal_iterator<_Iterator, _Container>& __lhs, | |
const __normal_iterator<_Iterator, _Container>& __rhs) | |
_GLIBCXX_NOEXCEPT | |
{ return __lhs.base() - __rhs.base(); } | |
template<typename _Iterator, typename _Container> | |
inline __normal_iterator<_Iterator, _Container> | |
operator+(typename __normal_iterator<_Iterator, _Container>::difference_type | |
__n, const __normal_iterator<_Iterator, _Container>& __i) | |
_GLIBCXX_NOEXCEPT | |
{ return __normal_iterator<_Iterator, _Container>(__i.base() + __n); } | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
template<typename _Iterator, typename _Container> | |
_Iterator | |
__niter_base(__gnu_cxx::__normal_iterator<_Iterator, _Container> __it) | |
{ return __it.base(); } | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#if __cplusplus >= 201103L | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @addtogroup iterators | |
* @{ | |
*/ | |
// 24.4.3 Move iterators | |
/** | |
* Class template move_iterator is an iterator adapter with the same | |
* behavior as the underlying iterator except that its dereference | |
* operator implicitly converts the value returned by the underlying | |
* iterator's dereference operator to an rvalue reference. Some | |
* generic algorithms can be called with move iterators to replace | |
* copying with moving. | |
*/ | |
template<typename _Iterator> | |
class move_iterator | |
{ | |
protected: | |
_Iterator _M_current; | |
typedef iterator_traits<_Iterator> __traits_type; | |
typedef typename __traits_type::reference __base_ref; | |
public: | |
typedef _Iterator iterator_type; | |
typedef typename __traits_type::iterator_category iterator_category; | |
typedef typename __traits_type::value_type value_type; | |
typedef typename __traits_type::difference_type difference_type; | |
// NB: DR 680. | |
typedef _Iterator pointer; | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2106. move_iterator wrapping iterators returning prvalues | |
typedef typename conditional<is_reference<__base_ref>::value, | |
typename remove_reference<__base_ref>::type&&, | |
__base_ref>::type reference; | |
_GLIBCXX17_CONSTEXPR | |
move_iterator() | |
: _M_current() { } | |
explicit _GLIBCXX17_CONSTEXPR | |
move_iterator(iterator_type __i) | |
: _M_current(__i) { } | |
template<typename _Iter> | |
_GLIBCXX17_CONSTEXPR | |
move_iterator(const move_iterator<_Iter>& __i) | |
: _M_current(__i.base()) { } | |
_GLIBCXX17_CONSTEXPR iterator_type | |
base() const | |
{ return _M_current; } | |
_GLIBCXX17_CONSTEXPR reference | |
operator*() const | |
{ return static_cast<reference>(*_M_current); } | |
_GLIBCXX17_CONSTEXPR pointer | |
operator->() const | |
{ return _M_current; } | |
_GLIBCXX17_CONSTEXPR move_iterator& | |
operator++() | |
{ | |
++_M_current; | |
return *this; | |
} | |
_GLIBCXX17_CONSTEXPR move_iterator | |
operator++(int) | |
{ | |
move_iterator __tmp = *this; | |
++_M_current; | |
return __tmp; | |
} | |
_GLIBCXX17_CONSTEXPR move_iterator& | |
operator--() | |
{ | |
--_M_current; | |
return *this; | |
} | |
_GLIBCXX17_CONSTEXPR move_iterator | |
operator--(int) | |
{ | |
move_iterator __tmp = *this; | |
--_M_current; | |
return __tmp; | |
} | |
_GLIBCXX17_CONSTEXPR move_iterator | |
operator+(difference_type __n) const | |
{ return move_iterator(_M_current + __n); } | |
_GLIBCXX17_CONSTEXPR move_iterator& | |
operator+=(difference_type __n) | |
{ | |
_M_current += __n; | |
return *this; | |
} | |
_GLIBCXX17_CONSTEXPR move_iterator | |
operator-(difference_type __n) const | |
{ return move_iterator(_M_current - __n); } | |
_GLIBCXX17_CONSTEXPR move_iterator& | |
operator-=(difference_type __n) | |
{ | |
_M_current -= __n; | |
return *this; | |
} | |
_GLIBCXX17_CONSTEXPR reference | |
operator[](difference_type __n) const | |
{ return std::move(_M_current[__n]); } | |
}; | |
// Note: See __normal_iterator operators note from Gaby to understand | |
// why there are always 2 versions for most of the move_iterator | |
// operators. | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator==(const move_iterator<_IteratorL>& __x, | |
const move_iterator<_IteratorR>& __y) | |
{ return __x.base() == __y.base(); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator==(const move_iterator<_Iterator>& __x, | |
const move_iterator<_Iterator>& __y) | |
{ return __x.base() == __y.base(); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator!=(const move_iterator<_IteratorL>& __x, | |
const move_iterator<_IteratorR>& __y) | |
{ return !(__x == __y); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator!=(const move_iterator<_Iterator>& __x, | |
const move_iterator<_Iterator>& __y) | |
{ return !(__x == __y); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator<(const move_iterator<_IteratorL>& __x, | |
const move_iterator<_IteratorR>& __y) | |
{ return __x.base() < __y.base(); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator<(const move_iterator<_Iterator>& __x, | |
const move_iterator<_Iterator>& __y) | |
{ return __x.base() < __y.base(); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator<=(const move_iterator<_IteratorL>& __x, | |
const move_iterator<_IteratorR>& __y) | |
{ return !(__y < __x); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator<=(const move_iterator<_Iterator>& __x, | |
const move_iterator<_Iterator>& __y) | |
{ return !(__y < __x); } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator>(const move_iterator<_IteratorL>& __x, | |
const move_iterator<_IteratorR>& __y) | |
{ return __y < __x; } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator>(const move_iterator<_Iterator>& __x, | |
const move_iterator<_Iterator>& __y) | |
{ return __y < __x; } | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator>=(const move_iterator<_IteratorL>& __x, | |
const move_iterator<_IteratorR>& __y) | |
{ return !(__x < __y); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR bool | |
operator>=(const move_iterator<_Iterator>& __x, | |
const move_iterator<_Iterator>& __y) | |
{ return !(__x < __y); } | |
// DR 685. | |
template<typename _IteratorL, typename _IteratorR> | |
inline _GLIBCXX17_CONSTEXPR auto | |
operator-(const move_iterator<_IteratorL>& __x, | |
const move_iterator<_IteratorR>& __y) | |
-> decltype(__x.base() - __y.base()) | |
{ return __x.base() - __y.base(); } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR move_iterator<_Iterator> | |
operator+(typename move_iterator<_Iterator>::difference_type __n, | |
const move_iterator<_Iterator>& __x) | |
{ return __x + __n; } | |
template<typename _Iterator> | |
inline _GLIBCXX17_CONSTEXPR move_iterator<_Iterator> | |
make_move_iterator(_Iterator __i) | |
{ return move_iterator<_Iterator>(__i); } | |
template<typename _Iterator, typename _ReturnType | |
= typename conditional<__move_if_noexcept_cond | |
<typename iterator_traits<_Iterator>::value_type>::value, | |
_Iterator, move_iterator<_Iterator>>::type> | |
inline _GLIBCXX17_CONSTEXPR _ReturnType | |
__make_move_if_noexcept_iterator(_Iterator __i) | |
{ return _ReturnType(__i); } | |
// Overload for pointers that matches std::move_if_noexcept more closely, | |
// returning a constant iterator when we don't want to move. | |
template<typename _Tp, typename _ReturnType | |
= typename conditional<__move_if_noexcept_cond<_Tp>::value, | |
const _Tp*, move_iterator<_Tp*>>::type> | |
inline _GLIBCXX17_CONSTEXPR _ReturnType | |
__make_move_if_noexcept_iterator(_Tp* __i) | |
{ return _ReturnType(__i); } | |
// @} group iterators | |
template<typename _Iterator> | |
auto | |
__niter_base(move_iterator<_Iterator> __it) | |
-> decltype(make_move_iterator(__niter_base(__it.base()))) | |
{ return make_move_iterator(__niter_base(__it.base())); } | |
template<typename _Iterator> | |
struct __is_move_iterator<move_iterator<_Iterator> > | |
{ | |
enum { __value = 1 }; | |
typedef __true_type __type; | |
}; | |
template<typename _Iterator> | |
auto | |
__miter_base(move_iterator<_Iterator> __it) | |
-> decltype(__miter_base(__it.base())) | |
{ return __miter_base(__it.base()); } | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) std::make_move_iterator(_Iter) | |
#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) \ | |
std::__make_move_if_noexcept_iterator(_Iter) | |
#else | |
# 1252 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#define _GLIBCXX_MAKE_MOVE_ITERATOR(_Iter) (_Iter) | |
#define _GLIBCXX_MAKE_MOVE_IF_NOEXCEPT_ITERATOR(_Iter) (_Iter) | |
#endif // C++11 | |
# 1255 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#ifdef _GLIBCXX_DEBUG | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <debug/stl_iterator.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 1257 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
# 1258 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#endif | |
# 1259 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
#endif | |
# 1261 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_iterator.h" 3 | |
# 68 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/concept_check.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 68 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 69 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <debug/debug.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 69 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 1 3 | |
// Debugging support implementation -*- C++ -*- | |
// Copyright (C) 2003-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file debug/debug.h | |
* This file is a GNU debug extension to the Standard C++ Library. | |
*/ | |
#ifndef _GLIBCXX_DEBUG_MACRO_SWITCH_H | |
#define _GLIBCXX_DEBUG_MACRO_SWITCH_H 1 | |
/** Macros and namespaces used by the implementation outside of debug | |
* wrappers to verify certain properties. The __glibcxx_requires_xxx | |
* macros are merely wrappers around the __glibcxx_check_xxx wrappers | |
* when we are compiling with debug mode, but disappear when we are | |
* in release mode so that there is no checking performed in, e.g., | |
* the standard library algorithms. | |
*/ | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <debug/assertions.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
// Debug mode namespaces. | |
/** | |
* @namespace std::__debug | |
* @brief GNU debug code, replaces standard behavior with debug behavior. | |
*/ | |
namespace std | |
{ | |
namespace __debug { } | |
} | |
/** @namespace __gnu_debug | |
* @brief GNU debug classes for public use. | |
*/ | |
namespace __gnu_debug | |
{ | |
using namespace std::__debug; | |
} | |
#ifndef _GLIBCXX_DEBUG | |
# define __glibcxx_requires_cond(_Cond,_Msg) | |
# define __glibcxx_requires_valid_range(_First,_Last) | |
# define __glibcxx_requires_sorted(_First,_Last) | |
# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) | |
# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) | |
# define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred) | |
# define __glibcxx_requires_partitioned_lower(_First,_Last,_Value) | |
# define __glibcxx_requires_partitioned_upper(_First,_Last,_Value) | |
# define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred) | |
# define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred) | |
# define __glibcxx_requires_heap(_First,_Last) | |
# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) | |
# define __glibcxx_requires_string(_String) | |
# define __glibcxx_requires_string_len(_String,_Len) | |
# define __glibcxx_requires_irreflexive(_First,_Last) | |
# define __glibcxx_requires_irreflexive2(_First,_Last) | |
# define __glibcxx_requires_irreflexive_pred(_First,_Last,_Pred) | |
# define __glibcxx_requires_irreflexive_pred2(_First,_Last,_Pred) | |
#else | |
# 83 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <debug/macros.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 84 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
# 85 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
# define __glibcxx_requires_cond(_Cond,_Msg) _GLIBCXX_DEBUG_VERIFY(_Cond,_Msg) | |
# define __glibcxx_requires_valid_range(_First,_Last) \ | |
__glibcxx_check_valid_range(_First,_Last) | |
# define __glibcxx_requires_sorted(_First,_Last) \ | |
__glibcxx_check_sorted(_First,_Last) | |
# define __glibcxx_requires_sorted_pred(_First,_Last,_Pred) \ | |
__glibcxx_check_sorted_pred(_First,_Last,_Pred) | |
# define __glibcxx_requires_sorted_set(_First1,_Last1,_First2) \ | |
__glibcxx_check_sorted_set(_First1,_Last1,_First2) | |
# define __glibcxx_requires_sorted_set_pred(_First1,_Last1,_First2,_Pred) \ | |
__glibcxx_check_sorted_set_pred(_First1,_Last1,_First2,_Pred) | |
# define __glibcxx_requires_partitioned_lower(_First,_Last,_Value) \ | |
__glibcxx_check_partitioned_lower(_First,_Last,_Value) | |
# define __glibcxx_requires_partitioned_upper(_First,_Last,_Value) \ | |
__glibcxx_check_partitioned_upper(_First,_Last,_Value) | |
# define __glibcxx_requires_partitioned_lower_pred(_First,_Last,_Value,_Pred) \ | |
__glibcxx_check_partitioned_lower_pred(_First,_Last,_Value,_Pred) | |
# define __glibcxx_requires_partitioned_upper_pred(_First,_Last,_Value,_Pred) \ | |
__glibcxx_check_partitioned_upper_pred(_First,_Last,_Value,_Pred) | |
# define __glibcxx_requires_heap(_First,_Last) \ | |
__glibcxx_check_heap(_First,_Last) | |
# define __glibcxx_requires_heap_pred(_First,_Last,_Pred) \ | |
__glibcxx_check_heap_pred(_First,_Last,_Pred) | |
# define __glibcxx_requires_string(_String) __glibcxx_check_string(_String) | |
# define __glibcxx_requires_string_len(_String,_Len) \ | |
__glibcxx_check_string_len(_String,_Len) | |
# define __glibcxx_requires_irreflexive(_First,_Last) \ | |
__glibcxx_check_irreflexive(_First,_Last) | |
# define __glibcxx_requires_irreflexive2(_First,_Last) \ | |
__glibcxx_check_irreflexive2(_First,_Last) | |
# define __glibcxx_requires_irreflexive_pred(_First,_Last,_Pred) \ | |
__glibcxx_check_irreflexive_pred(_First,_Last,_Pred) | |
# define __glibcxx_requires_irreflexive_pred2(_First,_Last,_Pred) \ | |
__glibcxx_check_irreflexive_pred2(_First,_Last,_Pred) | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <debug/functions.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 121 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
# 122 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
#endif | |
# 124 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
#endif // _GLIBCXX_DEBUG_MACRO_SWITCH_H | |
# 126 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/debug/debug.h" 3 | |
# 70 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/move.h> // For std::swap and _GLIBCXX_MOVE | |
#endif /* expanded by -frewrite-includes */ | |
# 70 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 71 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/predefined_ops.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 71 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/predefined_ops.h" 1 3 | |
// Default predicates for internal use -*- C++ -*- | |
// Copyright (C) 2013-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file predefined_ops.h | |
* This is an internal header file, included by other library headers. | |
* You should not attempt to use it directly. | |
*/ | |
#ifndef _GLIBCXX_PREDEFINED_OPS_H | |
#define _GLIBCXX_PREDEFINED_OPS_H 1 | |
namespace __gnu_cxx | |
{ | |
namespace __ops | |
{ | |
struct _Iter_less_iter | |
{ | |
template<typename _Iterator1, typename _Iterator2> | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(_Iterator1 __it1, _Iterator2 __it2) const | |
{ return *__it1 < *__it2; } | |
}; | |
_GLIBCXX14_CONSTEXPR | |
inline _Iter_less_iter | |
__iter_less_iter() | |
{ return _Iter_less_iter(); } | |
struct _Iter_less_val | |
{ | |
#if __cplusplus >= 201103L | |
constexpr _Iter_less_val() = default; | |
#else | |
# 56 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/predefined_ops.h" 3 | |
_Iter_less_val() { } | |
#endif | |
# 58 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/predefined_ops.h" 3 | |
explicit | |
_Iter_less_val(_Iter_less_iter) { } | |
template<typename _Iterator, typename _Value> | |
bool | |
operator()(_Iterator __it, _Value& __val) const | |
{ return *__it < __val; } | |
}; | |
inline _Iter_less_val | |
__iter_less_val() | |
{ return _Iter_less_val(); } | |
inline _Iter_less_val | |
__iter_comp_val(_Iter_less_iter) | |
{ return _Iter_less_val(); } | |
struct _Val_less_iter | |
{ | |
#if __cplusplus >= 201103L | |
constexpr _Val_less_iter() = default; | |
#else | |
# 81 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/predefined_ops.h" 3 | |
_Val_less_iter() { } | |
#endif | |
# 83 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/predefined_ops.h" 3 | |
explicit | |
_Val_less_iter(_Iter_less_iter) { } | |
template<typename _Value, typename _Iterator> | |
bool | |
operator()(_Value& __val, _Iterator __it) const | |
{ return __val < *__it; } | |
}; | |
inline _Val_less_iter | |
__val_less_iter() | |
{ return _Val_less_iter(); } | |
inline _Val_less_iter | |
__val_comp_iter(_Iter_less_iter) | |
{ return _Val_less_iter(); } | |
struct _Iter_equal_to_iter | |
{ | |
template<typename _Iterator1, typename _Iterator2> | |
bool | |
operator()(_Iterator1 __it1, _Iterator2 __it2) const | |
{ return *__it1 == *__it2; } | |
}; | |
inline _Iter_equal_to_iter | |
__iter_equal_to_iter() | |
{ return _Iter_equal_to_iter(); } | |
struct _Iter_equal_to_val | |
{ | |
template<typename _Iterator, typename _Value> | |
bool | |
operator()(_Iterator __it, _Value& __val) const | |
{ return *__it == __val; } | |
}; | |
inline _Iter_equal_to_val | |
__iter_equal_to_val() | |
{ return _Iter_equal_to_val(); } | |
inline _Iter_equal_to_val | |
__iter_comp_val(_Iter_equal_to_iter) | |
{ return _Iter_equal_to_val(); } | |
template<typename _Compare> | |
struct _Iter_comp_iter | |
{ | |
_Compare _M_comp; | |
explicit _GLIBCXX14_CONSTEXPR | |
_Iter_comp_iter(_Compare __comp) | |
: _M_comp(_GLIBCXX_MOVE(__comp)) | |
{ } | |
template<typename _Iterator1, typename _Iterator2> | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(_Iterator1 __it1, _Iterator2 __it2) | |
{ return bool(_M_comp(*__it1, *__it2)); } | |
}; | |
template<typename _Compare> | |
_GLIBCXX14_CONSTEXPR | |
inline _Iter_comp_iter<_Compare> | |
__iter_comp_iter(_Compare __comp) | |
{ return _Iter_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } | |
template<typename _Compare> | |
struct _Iter_comp_val | |
{ | |
_Compare _M_comp; | |
explicit | |
_Iter_comp_val(_Compare __comp) | |
: _M_comp(_GLIBCXX_MOVE(__comp)) | |
{ } | |
explicit | |
_Iter_comp_val(const _Iter_comp_iter<_Compare>& __comp) | |
: _M_comp(__comp._M_comp) | |
{ } | |
#if __cplusplus >= 201103L | |
explicit | |
_Iter_comp_val(_Iter_comp_iter<_Compare>&& __comp) | |
: _M_comp(std::move(__comp._M_comp)) | |
{ } | |
#endif | |
# 173 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/predefined_ops.h" 3 | |
template<typename _Iterator, typename _Value> | |
bool | |
operator()(_Iterator __it, _Value& __val) | |
{ return bool(_M_comp(*__it, __val)); } | |
}; | |
template<typename _Compare> | |
inline _Iter_comp_val<_Compare> | |
__iter_comp_val(_Compare __comp) | |
{ return _Iter_comp_val<_Compare>(_GLIBCXX_MOVE(__comp)); } | |
template<typename _Compare> | |
inline _Iter_comp_val<_Compare> | |
__iter_comp_val(_Iter_comp_iter<_Compare> __comp) | |
{ return _Iter_comp_val<_Compare>(_GLIBCXX_MOVE(__comp)); } | |
template<typename _Compare> | |
struct _Val_comp_iter | |
{ | |
_Compare _M_comp; | |
explicit | |
_Val_comp_iter(_Compare __comp) | |
: _M_comp(_GLIBCXX_MOVE(__comp)) | |
{ } | |
explicit | |
_Val_comp_iter(const _Iter_comp_iter<_Compare>& __comp) | |
: _M_comp(__comp._M_comp) | |
{ } | |
#if __cplusplus >= 201103L | |
explicit | |
_Val_comp_iter(_Iter_comp_iter<_Compare>&& __comp) | |
: _M_comp(std::move(__comp._M_comp)) | |
{ } | |
#endif | |
# 211 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/predefined_ops.h" 3 | |
template<typename _Value, typename _Iterator> | |
bool | |
operator()(_Value& __val, _Iterator __it) | |
{ return bool(_M_comp(__val, *__it)); } | |
}; | |
template<typename _Compare> | |
inline _Val_comp_iter<_Compare> | |
__val_comp_iter(_Compare __comp) | |
{ return _Val_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } | |
template<typename _Compare> | |
inline _Val_comp_iter<_Compare> | |
__val_comp_iter(_Iter_comp_iter<_Compare> __comp) | |
{ return _Val_comp_iter<_Compare>(_GLIBCXX_MOVE(__comp)); } | |
template<typename _Value> | |
struct _Iter_equals_val | |
{ | |
_Value& _M_value; | |
explicit | |
_Iter_equals_val(_Value& __value) | |
: _M_value(__value) | |
{ } | |
template<typename _Iterator> | |
bool | |
operator()(_Iterator __it) | |
{ return *__it == _M_value; } | |
}; | |
template<typename _Value> | |
inline _Iter_equals_val<_Value> | |
__iter_equals_val(_Value& __val) | |
{ return _Iter_equals_val<_Value>(__val); } | |
template<typename _Iterator1> | |
struct _Iter_equals_iter | |
{ | |
typename std::iterator_traits<_Iterator1>::reference _M_ref; | |
explicit | |
_Iter_equals_iter(_Iterator1 __it1) | |
: _M_ref(*__it1) | |
{ } | |
template<typename _Iterator2> | |
bool | |
operator()(_Iterator2 __it2) | |
{ return *__it2 == _M_ref; } | |
}; | |
template<typename _Iterator> | |
inline _Iter_equals_iter<_Iterator> | |
__iter_comp_iter(_Iter_equal_to_iter, _Iterator __it) | |
{ return _Iter_equals_iter<_Iterator>(__it); } | |
template<typename _Predicate> | |
struct _Iter_pred | |
{ | |
_Predicate _M_pred; | |
explicit | |
_Iter_pred(_Predicate __pred) | |
: _M_pred(_GLIBCXX_MOVE(__pred)) | |
{ } | |
template<typename _Iterator> | |
bool | |
operator()(_Iterator __it) | |
{ return bool(_M_pred(*__it)); } | |
}; | |
template<typename _Predicate> | |
inline _Iter_pred<_Predicate> | |
__pred_iter(_Predicate __pred) | |
{ return _Iter_pred<_Predicate>(_GLIBCXX_MOVE(__pred)); } | |
template<typename _Compare, typename _Value> | |
struct _Iter_comp_to_val | |
{ | |
_Compare _M_comp; | |
_Value& _M_value; | |
_Iter_comp_to_val(_Compare __comp, _Value& __value) | |
: _M_comp(_GLIBCXX_MOVE(__comp)), _M_value(__value) | |
{ } | |
template<typename _Iterator> | |
bool | |
operator()(_Iterator __it) | |
{ return bool(_M_comp(*__it, _M_value)); } | |
}; | |
template<typename _Compare, typename _Value> | |
_Iter_comp_to_val<_Compare, _Value> | |
__iter_comp_val(_Compare __comp, _Value &__val) | |
{ | |
return _Iter_comp_to_val<_Compare, _Value>(_GLIBCXX_MOVE(__comp), __val); | |
} | |
template<typename _Compare, typename _Iterator1> | |
struct _Iter_comp_to_iter | |
{ | |
_Compare _M_comp; | |
typename std::iterator_traits<_Iterator1>::reference _M_ref; | |
_Iter_comp_to_iter(_Compare __comp, _Iterator1 __it1) | |
: _M_comp(_GLIBCXX_MOVE(__comp)), _M_ref(*__it1) | |
{ } | |
template<typename _Iterator2> | |
bool | |
operator()(_Iterator2 __it2) | |
{ return bool(_M_comp(*__it2, _M_ref)); } | |
}; | |
template<typename _Compare, typename _Iterator> | |
inline _Iter_comp_to_iter<_Compare, _Iterator> | |
__iter_comp_iter(_Iter_comp_iter<_Compare> __comp, _Iterator __it) | |
{ | |
return _Iter_comp_to_iter<_Compare, _Iterator>( | |
_GLIBCXX_MOVE(__comp._M_comp), __it); | |
} | |
template<typename _Predicate> | |
struct _Iter_negate | |
{ | |
_Predicate _M_pred; | |
explicit | |
_Iter_negate(_Predicate __pred) | |
: _M_pred(_GLIBCXX_MOVE(__pred)) | |
{ } | |
template<typename _Iterator> | |
bool | |
operator()(_Iterator __it) | |
{ return !bool(_M_pred(*__it)); } | |
}; | |
template<typename _Predicate> | |
inline _Iter_negate<_Predicate> | |
__negate(_Iter_pred<_Predicate> __pred) | |
{ return _Iter_negate<_Predicate>(_GLIBCXX_MOVE(__pred._M_pred)); } | |
} // namespace __ops | |
} // namespace __gnu_cxx | |
#endif | |
# 363 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/predefined_ops.h" 3 | |
# 72 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 2 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
#if __cplusplus < 201103L | |
// See http://gcc.gnu.org/ml/libstdc++/2004-08/msg00167.html: in a | |
// nutshell, we are partially implementing the resolution of DR 187, | |
// when it's safe, i.e., the value_types are equal. | |
template<bool _BoolType> | |
struct __iter_swap | |
{ | |
template<typename _ForwardIterator1, typename _ForwardIterator2> | |
static void | |
iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) | |
{ | |
typedef typename iterator_traits<_ForwardIterator1>::value_type | |
_ValueType1; | |
_ValueType1 __tmp = _GLIBCXX_MOVE(*__a); | |
*__a = _GLIBCXX_MOVE(*__b); | |
*__b = _GLIBCXX_MOVE(__tmp); | |
} | |
}; | |
template<> | |
struct __iter_swap<true> | |
{ | |
template<typename _ForwardIterator1, typename _ForwardIterator2> | |
static void | |
iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) | |
{ | |
swap(*__a, *__b); | |
} | |
}; | |
#endif | |
# 107 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
/** | |
* @brief Swaps the contents of two iterators. | |
* @ingroup mutating_algorithms | |
* @param __a An iterator. | |
* @param __b Another iterator. | |
* @return Nothing. | |
* | |
* This function swaps the values pointed to by two iterators, not the | |
* iterators themselves. | |
*/ | |
template<typename _ForwardIterator1, typename _ForwardIterator2> | |
inline void | |
iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_Mutable_ForwardIteratorConcept< | |
_ForwardIterator1>) | |
__glibcxx_function_requires(_Mutable_ForwardIteratorConcept< | |
_ForwardIterator2>) | |
#if __cplusplus < 201103L | |
typedef typename iterator_traits<_ForwardIterator1>::value_type | |
_ValueType1; | |
typedef typename iterator_traits<_ForwardIterator2>::value_type | |
_ValueType2; | |
__glibcxx_function_requires(_ConvertibleConcept<_ValueType1, | |
_ValueType2>) | |
__glibcxx_function_requires(_ConvertibleConcept<_ValueType2, | |
_ValueType1>) | |
typedef typename iterator_traits<_ForwardIterator1>::reference | |
_ReferenceType1; | |
typedef typename iterator_traits<_ForwardIterator2>::reference | |
_ReferenceType2; | |
std::__iter_swap<__are_same<_ValueType1, _ValueType2>::__value | |
&& __are_same<_ValueType1&, _ReferenceType1>::__value | |
&& __are_same<_ValueType2&, _ReferenceType2>::__value>:: | |
iter_swap(__a, __b); | |
#else | |
# 148 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
swap(*__a, *__b); | |
#endif | |
# 150 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
} | |
/** | |
* @brief Swap the elements of two sequences. | |
* @ingroup mutating_algorithms | |
* @param __first1 A forward iterator. | |
* @param __last1 A forward iterator. | |
* @param __first2 A forward iterator. | |
* @return An iterator equal to @p first2+(last1-first1). | |
* | |
* Swaps each element in the range @p [first1,last1) with the | |
* corresponding element in the range @p [first2,(last1-first1)). | |
* The ranges must not overlap. | |
*/ | |
template<typename _ForwardIterator1, typename _ForwardIterator2> | |
_ForwardIterator2 | |
swap_ranges(_ForwardIterator1 __first1, _ForwardIterator1 __last1, | |
_ForwardIterator2 __first2) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_Mutable_ForwardIteratorConcept< | |
_ForwardIterator1>) | |
__glibcxx_function_requires(_Mutable_ForwardIteratorConcept< | |
_ForwardIterator2>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
for (; __first1 != __last1; ++__first1, (void)++__first2) | |
std::iter_swap(__first1, __first2); | |
return __first2; | |
} | |
/** | |
* @brief This does what you think it does. | |
* @ingroup sorting_algorithms | |
* @param __a A thing of arbitrary type. | |
* @param __b Another thing of arbitrary type. | |
* @return The lesser of the parameters. | |
* | |
* This is the simple classic generic implementation. It will work on | |
* temporary expressions, since they are only evaluated once, unlike a | |
* preprocessor macro. | |
*/ | |
template<typename _Tp> | |
_GLIBCXX14_CONSTEXPR | |
inline const _Tp& | |
min(const _Tp& __a, const _Tp& __b) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_LessThanComparableConcept<_Tp>) | |
//return __b < __a ? __b : __a; | |
if (__b < __a) | |
return __b; | |
return __a; | |
} | |
/** | |
* @brief This does what you think it does. | |
* @ingroup sorting_algorithms | |
* @param __a A thing of arbitrary type. | |
* @param __b Another thing of arbitrary type. | |
* @return The greater of the parameters. | |
* | |
* This is the simple classic generic implementation. It will work on | |
* temporary expressions, since they are only evaluated once, unlike a | |
* preprocessor macro. | |
*/ | |
template<typename _Tp> | |
_GLIBCXX14_CONSTEXPR | |
inline const _Tp& | |
max(const _Tp& __a, const _Tp& __b) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_LessThanComparableConcept<_Tp>) | |
//return __a < __b ? __b : __a; | |
if (__a < __b) | |
return __b; | |
return __a; | |
} | |
/** | |
* @brief This does what you think it does. | |
* @ingroup sorting_algorithms | |
* @param __a A thing of arbitrary type. | |
* @param __b Another thing of arbitrary type. | |
* @param __comp A @link comparison_functors comparison functor@endlink. | |
* @return The lesser of the parameters. | |
* | |
* This will work on temporary expressions, since they are only evaluated | |
* once, unlike a preprocessor macro. | |
*/ | |
template<typename _Tp, typename _Compare> | |
_GLIBCXX14_CONSTEXPR | |
inline const _Tp& | |
min(const _Tp& __a, const _Tp& __b, _Compare __comp) | |
{ | |
//return __comp(__b, __a) ? __b : __a; | |
if (__comp(__b, __a)) | |
return __b; | |
return __a; | |
} | |
/** | |
* @brief This does what you think it does. | |
* @ingroup sorting_algorithms | |
* @param __a A thing of arbitrary type. | |
* @param __b Another thing of arbitrary type. | |
* @param __comp A @link comparison_functors comparison functor@endlink. | |
* @return The greater of the parameters. | |
* | |
* This will work on temporary expressions, since they are only evaluated | |
* once, unlike a preprocessor macro. | |
*/ | |
template<typename _Tp, typename _Compare> | |
_GLIBCXX14_CONSTEXPR | |
inline const _Tp& | |
max(const _Tp& __a, const _Tp& __b, _Compare __comp) | |
{ | |
//return __comp(__a, __b) ? __b : __a; | |
if (__comp(__a, __b)) | |
return __b; | |
return __a; | |
} | |
// Fallback implementation of the function in bits/stl_iterator.h used to | |
// remove the __normal_iterator wrapper. See copy, fill, ... | |
template<typename _Iterator> | |
inline _Iterator | |
__niter_base(_Iterator __it) | |
{ return __it; } | |
// All of these auxiliary structs serve two purposes. (1) Replace | |
// calls to copy with memmove whenever possible. (Memmove, not memcpy, | |
// because the input and output ranges are permitted to overlap.) | |
// (2) If we're using random access iterators, then write the loop as | |
// a for loop with an explicit count. | |
template<bool, bool, typename> | |
struct __copy_move | |
{ | |
template<typename _II, typename _OI> | |
static _OI | |
__copy_m(_II __first, _II __last, _OI __result) | |
{ | |
for (; __first != __last; ++__result, (void)++__first) | |
*__result = *__first; | |
return __result; | |
} | |
}; | |
#if __cplusplus >= 201103L | |
template<typename _Category> | |
struct __copy_move<true, false, _Category> | |
{ | |
template<typename _II, typename _OI> | |
static _OI | |
__copy_m(_II __first, _II __last, _OI __result) | |
{ | |
for (; __first != __last; ++__result, (void)++__first) | |
*__result = std::move(*__first); | |
return __result; | |
} | |
}; | |
#endif | |
# 313 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
template<> | |
struct __copy_move<false, false, random_access_iterator_tag> | |
{ | |
template<typename _II, typename _OI> | |
static _OI | |
__copy_m(_II __first, _II __last, _OI __result) | |
{ | |
typedef typename iterator_traits<_II>::difference_type _Distance; | |
for(_Distance __n = __last - __first; __n > 0; --__n) | |
{ | |
*__result = *__first; | |
++__first; | |
++__result; | |
} | |
return __result; | |
} | |
}; | |
#if __cplusplus >= 201103L | |
template<> | |
struct __copy_move<true, false, random_access_iterator_tag> | |
{ | |
template<typename _II, typename _OI> | |
static _OI | |
__copy_m(_II __first, _II __last, _OI __result) | |
{ | |
typedef typename iterator_traits<_II>::difference_type _Distance; | |
for(_Distance __n = __last - __first; __n > 0; --__n) | |
{ | |
*__result = std::move(*__first); | |
++__first; | |
++__result; | |
} | |
return __result; | |
} | |
}; | |
#endif | |
# 351 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
template<bool _IsMove> | |
struct __copy_move<_IsMove, true, random_access_iterator_tag> | |
{ | |
template<typename _Tp> | |
static _Tp* | |
__copy_m(const _Tp* __first, const _Tp* __last, _Tp* __result) | |
{ | |
#if __cplusplus >= 201103L | |
using __assignable = conditional<_IsMove, | |
is_move_assignable<_Tp>, | |
is_copy_assignable<_Tp>>; | |
// trivial types can have deleted assignment | |
static_assert( __assignable::type::value, "type is not assignable" ); | |
#endif | |
# 366 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
const ptrdiff_t _Num = __last - __first; | |
if (_Num) | |
__builtin_memmove(__result, __first, sizeof(_Tp) * _Num); | |
return __result + _Num; | |
} | |
}; | |
template<bool _IsMove, typename _II, typename _OI> | |
inline _OI | |
__copy_move_a(_II __first, _II __last, _OI __result) | |
{ | |
typedef typename iterator_traits<_II>::value_type _ValueTypeI; | |
typedef typename iterator_traits<_OI>::value_type _ValueTypeO; | |
typedef typename iterator_traits<_II>::iterator_category _Category; | |
const bool __simple = (__is_trivial(_ValueTypeI) | |
&& __is_pointer<_II>::__value | |
&& __is_pointer<_OI>::__value | |
&& __are_same<_ValueTypeI, _ValueTypeO>::__value); | |
return std::__copy_move<_IsMove, __simple, | |
_Category>::__copy_m(__first, __last, __result); | |
} | |
// Helpers for streambuf iterators (either istream or ostream). | |
// NB: avoid including <iosfwd>, relatively large. | |
template<typename _CharT> | |
struct char_traits; | |
template<typename _CharT, typename _Traits> | |
class istreambuf_iterator; | |
template<typename _CharT, typename _Traits> | |
class ostreambuf_iterator; | |
template<bool _IsMove, typename _CharT> | |
typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, | |
ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type | |
__copy_move_a2(_CharT*, _CharT*, | |
ostreambuf_iterator<_CharT, char_traits<_CharT> >); | |
template<bool _IsMove, typename _CharT> | |
typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, | |
ostreambuf_iterator<_CharT, char_traits<_CharT> > >::__type | |
__copy_move_a2(const _CharT*, const _CharT*, | |
ostreambuf_iterator<_CharT, char_traits<_CharT> >); | |
template<bool _IsMove, typename _CharT> | |
typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, | |
_CharT*>::__type | |
__copy_move_a2(istreambuf_iterator<_CharT, char_traits<_CharT> >, | |
istreambuf_iterator<_CharT, char_traits<_CharT> >, _CharT*); | |
template<bool _IsMove, typename _II, typename _OI> | |
inline _OI | |
__copy_move_a2(_II __first, _II __last, _OI __result) | |
{ | |
return _OI(std::__copy_move_a<_IsMove>(std::__niter_base(__first), | |
std::__niter_base(__last), | |
std::__niter_base(__result))); | |
} | |
/** | |
* @brief Copies the range [first,last) into result. | |
* @ingroup mutating_algorithms | |
* @param __first An input iterator. | |
* @param __last An input iterator. | |
* @param __result An output iterator. | |
* @return result + (first - last) | |
* | |
* This inline function will boil down to a call to @c memmove whenever | |
* possible. Failing that, if random access iterators are passed, then the | |
* loop count will be known (and therefore a candidate for compiler | |
* optimizations such as unrolling). Result may not be contained within | |
* [first,last); the copy_backward function should be used instead. | |
* | |
* Note that the end of the output range is permitted to be contained | |
* within [first,last). | |
*/ | |
template<typename _II, typename _OI> | |
inline _OI | |
copy(_II __first, _II __last, _OI __result) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_II>) | |
__glibcxx_function_requires(_OutputIteratorConcept<_OI, | |
typename iterator_traits<_II>::value_type>) | |
__glibcxx_requires_valid_range(__first, __last); | |
return (std::__copy_move_a2<__is_move_iterator<_II>::__value> | |
(std::__miter_base(__first), std::__miter_base(__last), | |
__result)); | |
} | |
#if __cplusplus >= 201103L | |
/** | |
* @brief Moves the range [first,last) into result. | |
* @ingroup mutating_algorithms | |
* @param __first An input iterator. | |
* @param __last An input iterator. | |
* @param __result An output iterator. | |
* @return result + (first - last) | |
* | |
* This inline function will boil down to a call to @c memmove whenever | |
* possible. Failing that, if random access iterators are passed, then the | |
* loop count will be known (and therefore a candidate for compiler | |
* optimizations such as unrolling). Result may not be contained within | |
* [first,last); the move_backward function should be used instead. | |
* | |
* Note that the end of the output range is permitted to be contained | |
* within [first,last). | |
*/ | |
template<typename _II, typename _OI> | |
inline _OI | |
move(_II __first, _II __last, _OI __result) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_II>) | |
__glibcxx_function_requires(_OutputIteratorConcept<_OI, | |
typename iterator_traits<_II>::value_type>) | |
__glibcxx_requires_valid_range(__first, __last); | |
return std::__copy_move_a2<true>(std::__miter_base(__first), | |
std::__miter_base(__last), __result); | |
} | |
#define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::move(_Tp, _Up, _Vp) | |
#else | |
# 493 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
#define _GLIBCXX_MOVE3(_Tp, _Up, _Vp) std::copy(_Tp, _Up, _Vp) | |
#endif | |
# 495 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
template<bool, bool, typename> | |
struct __copy_move_backward | |
{ | |
template<typename _BI1, typename _BI2> | |
static _BI2 | |
__copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) | |
{ | |
while (__first != __last) | |
*--__result = *--__last; | |
return __result; | |
} | |
}; | |
#if __cplusplus >= 201103L | |
template<typename _Category> | |
struct __copy_move_backward<true, false, _Category> | |
{ | |
template<typename _BI1, typename _BI2> | |
static _BI2 | |
__copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) | |
{ | |
while (__first != __last) | |
*--__result = std::move(*--__last); | |
return __result; | |
} | |
}; | |
#endif | |
# 523 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
template<> | |
struct __copy_move_backward<false, false, random_access_iterator_tag> | |
{ | |
template<typename _BI1, typename _BI2> | |
static _BI2 | |
__copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) | |
{ | |
typename iterator_traits<_BI1>::difference_type __n; | |
for (__n = __last - __first; __n > 0; --__n) | |
*--__result = *--__last; | |
return __result; | |
} | |
}; | |
#if __cplusplus >= 201103L | |
template<> | |
struct __copy_move_backward<true, false, random_access_iterator_tag> | |
{ | |
template<typename _BI1, typename _BI2> | |
static _BI2 | |
__copy_move_b(_BI1 __first, _BI1 __last, _BI2 __result) | |
{ | |
typename iterator_traits<_BI1>::difference_type __n; | |
for (__n = __last - __first; __n > 0; --__n) | |
*--__result = std::move(*--__last); | |
return __result; | |
} | |
}; | |
#endif | |
# 553 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
template<bool _IsMove> | |
struct __copy_move_backward<_IsMove, true, random_access_iterator_tag> | |
{ | |
template<typename _Tp> | |
static _Tp* | |
__copy_move_b(const _Tp* __first, const _Tp* __last, _Tp* __result) | |
{ | |
#if __cplusplus >= 201103L | |
using __assignable = conditional<_IsMove, | |
is_move_assignable<_Tp>, | |
is_copy_assignable<_Tp>>; | |
// trivial types can have deleted assignment | |
static_assert( __assignable::type::value, "type is not assignable" ); | |
#endif | |
# 568 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
const ptrdiff_t _Num = __last - __first; | |
if (_Num) | |
__builtin_memmove(__result - _Num, __first, sizeof(_Tp) * _Num); | |
return __result - _Num; | |
} | |
}; | |
template<bool _IsMove, typename _BI1, typename _BI2> | |
inline _BI2 | |
__copy_move_backward_a(_BI1 __first, _BI1 __last, _BI2 __result) | |
{ | |
typedef typename iterator_traits<_BI1>::value_type _ValueType1; | |
typedef typename iterator_traits<_BI2>::value_type _ValueType2; | |
typedef typename iterator_traits<_BI1>::iterator_category _Category; | |
const bool __simple = (__is_trivial(_ValueType1) | |
&& __is_pointer<_BI1>::__value | |
&& __is_pointer<_BI2>::__value | |
&& __are_same<_ValueType1, _ValueType2>::__value); | |
return std::__copy_move_backward<_IsMove, __simple, | |
_Category>::__copy_move_b(__first, | |
__last, | |
__result); | |
} | |
template<bool _IsMove, typename _BI1, typename _BI2> | |
inline _BI2 | |
__copy_move_backward_a2(_BI1 __first, _BI1 __last, _BI2 __result) | |
{ | |
return _BI2(std::__copy_move_backward_a<_IsMove> | |
(std::__niter_base(__first), std::__niter_base(__last), | |
std::__niter_base(__result))); | |
} | |
/** | |
* @brief Copies the range [first,last) into result. | |
* @ingroup mutating_algorithms | |
* @param __first A bidirectional iterator. | |
* @param __last A bidirectional iterator. | |
* @param __result A bidirectional iterator. | |
* @return result - (first - last) | |
* | |
* The function has the same effect as copy, but starts at the end of the | |
* range and works its way to the start, returning the start of the result. | |
* This inline function will boil down to a call to @c memmove whenever | |
* possible. Failing that, if random access iterators are passed, then the | |
* loop count will be known (and therefore a candidate for compiler | |
* optimizations such as unrolling). | |
* | |
* Result may not be in the range (first,last]. Use copy instead. Note | |
* that the start of the output range may overlap [first,last). | |
*/ | |
template<typename _BI1, typename _BI2> | |
inline _BI2 | |
copy_backward(_BI1 __first, _BI1 __last, _BI2 __result) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>) | |
__glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>) | |
__glibcxx_function_requires(_ConvertibleConcept< | |
typename iterator_traits<_BI1>::value_type, | |
typename iterator_traits<_BI2>::value_type>) | |
__glibcxx_requires_valid_range(__first, __last); | |
return (std::__copy_move_backward_a2<__is_move_iterator<_BI1>::__value> | |
(std::__miter_base(__first), std::__miter_base(__last), | |
__result)); | |
} | |
#if __cplusplus >= 201103L | |
/** | |
* @brief Moves the range [first,last) into result. | |
* @ingroup mutating_algorithms | |
* @param __first A bidirectional iterator. | |
* @param __last A bidirectional iterator. | |
* @param __result A bidirectional iterator. | |
* @return result - (first - last) | |
* | |
* The function has the same effect as move, but starts at the end of the | |
* range and works its way to the start, returning the start of the result. | |
* This inline function will boil down to a call to @c memmove whenever | |
* possible. Failing that, if random access iterators are passed, then the | |
* loop count will be known (and therefore a candidate for compiler | |
* optimizations such as unrolling). | |
* | |
* Result may not be in the range (first,last]. Use move instead. Note | |
* that the start of the output range may overlap [first,last). | |
*/ | |
template<typename _BI1, typename _BI2> | |
inline _BI2 | |
move_backward(_BI1 __first, _BI1 __last, _BI2 __result) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_BidirectionalIteratorConcept<_BI1>) | |
__glibcxx_function_requires(_Mutable_BidirectionalIteratorConcept<_BI2>) | |
__glibcxx_function_requires(_ConvertibleConcept< | |
typename iterator_traits<_BI1>::value_type, | |
typename iterator_traits<_BI2>::value_type>) | |
__glibcxx_requires_valid_range(__first, __last); | |
return std::__copy_move_backward_a2<true>(std::__miter_base(__first), | |
std::__miter_base(__last), | |
__result); | |
} | |
#define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::move_backward(_Tp, _Up, _Vp) | |
#else | |
# 675 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
#define _GLIBCXX_MOVE_BACKWARD3(_Tp, _Up, _Vp) std::copy_backward(_Tp, _Up, _Vp) | |
#endif | |
# 677 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
template<typename _ForwardIterator, typename _Tp> | |
inline typename | |
__gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, void>::__type | |
__fill_a(_ForwardIterator __first, _ForwardIterator __last, | |
const _Tp& __value) | |
{ | |
for (; __first != __last; ++__first) | |
*__first = __value; | |
} | |
template<typename _ForwardIterator, typename _Tp> | |
inline typename | |
__gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, void>::__type | |
__fill_a(_ForwardIterator __first, _ForwardIterator __last, | |
const _Tp& __value) | |
{ | |
const _Tp __tmp = __value; | |
for (; __first != __last; ++__first) | |
*__first = __tmp; | |
} | |
// Specialization: for char types we can use memset. | |
template<typename _Tp> | |
inline typename | |
__gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type | |
__fill_a(_Tp* __first, _Tp* __last, const _Tp& __c) | |
{ | |
const _Tp __tmp = __c; | |
if (const size_t __len = __last - __first) | |
__builtin_memset(__first, static_cast<unsigned char>(__tmp), __len); | |
} | |
/** | |
* @brief Fills the range [first,last) with copies of value. | |
* @ingroup mutating_algorithms | |
* @param __first A forward iterator. | |
* @param __last A forward iterator. | |
* @param __value A reference-to-const of arbitrary type. | |
* @return Nothing. | |
* | |
* This function fills a range with copies of the same value. For char | |
* types filling contiguous areas of memory, this becomes an inline call | |
* to @c memset or @c wmemset. | |
*/ | |
template<typename _ForwardIterator, typename _Tp> | |
inline void | |
fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_Mutable_ForwardIteratorConcept< | |
_ForwardIterator>) | |
__glibcxx_requires_valid_range(__first, __last); | |
std::__fill_a(std::__niter_base(__first), std::__niter_base(__last), | |
__value); | |
} | |
template<typename _OutputIterator, typename _Size, typename _Tp> | |
inline typename | |
__gnu_cxx::__enable_if<!__is_scalar<_Tp>::__value, _OutputIterator>::__type | |
__fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) | |
{ | |
for (__decltype(__n + 0) __niter = __n; | |
__niter > 0; --__niter, ++__first) | |
*__first = __value; | |
return __first; | |
} | |
template<typename _OutputIterator, typename _Size, typename _Tp> | |
inline typename | |
__gnu_cxx::__enable_if<__is_scalar<_Tp>::__value, _OutputIterator>::__type | |
__fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value) | |
{ | |
const _Tp __tmp = __value; | |
for (__decltype(__n + 0) __niter = __n; | |
__niter > 0; --__niter, ++__first) | |
*__first = __tmp; | |
return __first; | |
} | |
template<typename _Size, typename _Tp> | |
inline typename | |
__gnu_cxx::__enable_if<__is_byte<_Tp>::__value, _Tp*>::__type | |
__fill_n_a(_Tp* __first, _Size __n, const _Tp& __c) | |
{ | |
std::__fill_a(__first, __first + __n, __c); | |
return __first + __n; | |
} | |
/** | |
* @brief Fills the range [first,first+n) with copies of value. | |
* @ingroup mutating_algorithms | |
* @param __first An output iterator. | |
* @param __n The count of copies to perform. | |
* @param __value A reference-to-const of arbitrary type. | |
* @return The iterator at first+n. | |
* | |
* This function fills a range with copies of the same value. For char | |
* types filling contiguous areas of memory, this becomes an inline call | |
* to @c memset or @ wmemset. | |
* | |
* _GLIBCXX_RESOLVE_LIB_DEFECTS | |
* DR 865. More algorithms that throw away information | |
*/ | |
template<typename _OI, typename _Size, typename _Tp> | |
inline _OI | |
fill_n(_OI __first, _Size __n, const _Tp& __value) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_OutputIteratorConcept<_OI, _Tp>) | |
return _OI(std::__fill_n_a(std::__niter_base(__first), __n, __value)); | |
} | |
template<bool _BoolType> | |
struct __equal | |
{ | |
template<typename _II1, typename _II2> | |
static bool | |
equal(_II1 __first1, _II1 __last1, _II2 __first2) | |
{ | |
for (; __first1 != __last1; ++__first1, (void)++__first2) | |
if (!(*__first1 == *__first2)) | |
return false; | |
return true; | |
} | |
}; | |
template<> | |
struct __equal<true> | |
{ | |
template<typename _Tp> | |
static bool | |
equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2) | |
{ | |
if (const size_t __len = (__last1 - __first1)) | |
return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len); | |
return true; | |
} | |
}; | |
template<typename _II1, typename _II2> | |
inline bool | |
__equal_aux(_II1 __first1, _II1 __last1, _II2 __first2) | |
{ | |
typedef typename iterator_traits<_II1>::value_type _ValueType1; | |
typedef typename iterator_traits<_II2>::value_type _ValueType2; | |
const bool __simple = ((__is_integer<_ValueType1>::__value | |
|| __is_pointer<_ValueType1>::__value) | |
&& __is_pointer<_II1>::__value | |
&& __is_pointer<_II2>::__value | |
&& __are_same<_ValueType1, _ValueType2>::__value); | |
return std::__equal<__simple>::equal(__first1, __last1, __first2); | |
} | |
template<typename, typename> | |
struct __lc_rai | |
{ | |
template<typename _II1, typename _II2> | |
static _II1 | |
__newlast1(_II1, _II1 __last1, _II2, _II2) | |
{ return __last1; } | |
template<typename _II> | |
static bool | |
__cnd2(_II __first, _II __last) | |
{ return __first != __last; } | |
}; | |
template<> | |
struct __lc_rai<random_access_iterator_tag, random_access_iterator_tag> | |
{ | |
template<typename _RAI1, typename _RAI2> | |
static _RAI1 | |
__newlast1(_RAI1 __first1, _RAI1 __last1, | |
_RAI2 __first2, _RAI2 __last2) | |
{ | |
const typename iterator_traits<_RAI1>::difference_type | |
__diff1 = __last1 - __first1; | |
const typename iterator_traits<_RAI2>::difference_type | |
__diff2 = __last2 - __first2; | |
return __diff2 < __diff1 ? __first1 + __diff2 : __last1; | |
} | |
template<typename _RAI> | |
static bool | |
__cnd2(_RAI, _RAI) | |
{ return true; } | |
}; | |
template<typename _II1, typename _II2, typename _Compare> | |
bool | |
__lexicographical_compare_impl(_II1 __first1, _II1 __last1, | |
_II2 __first2, _II2 __last2, | |
_Compare __comp) | |
{ | |
typedef typename iterator_traits<_II1>::iterator_category _Category1; | |
typedef typename iterator_traits<_II2>::iterator_category _Category2; | |
typedef std::__lc_rai<_Category1, _Category2> __rai_type; | |
__last1 = __rai_type::__newlast1(__first1, __last1, __first2, __last2); | |
for (; __first1 != __last1 && __rai_type::__cnd2(__first2, __last2); | |
++__first1, (void)++__first2) | |
{ | |
if (__comp(__first1, __first2)) | |
return true; | |
if (__comp(__first2, __first1)) | |
return false; | |
} | |
return __first1 == __last1 && __first2 != __last2; | |
} | |
template<bool _BoolType> | |
struct __lexicographical_compare | |
{ | |
template<typename _II1, typename _II2> | |
static bool __lc(_II1, _II1, _II2, _II2); | |
}; | |
template<bool _BoolType> | |
template<typename _II1, typename _II2> | |
bool | |
__lexicographical_compare<_BoolType>:: | |
__lc(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) | |
{ | |
return std::__lexicographical_compare_impl(__first1, __last1, | |
__first2, __last2, | |
__gnu_cxx::__ops::__iter_less_iter()); | |
} | |
template<> | |
struct __lexicographical_compare<true> | |
{ | |
template<typename _Tp, typename _Up> | |
static bool | |
__lc(const _Tp* __first1, const _Tp* __last1, | |
const _Up* __first2, const _Up* __last2) | |
{ | |
const size_t __len1 = __last1 - __first1; | |
const size_t __len2 = __last2 - __first2; | |
if (const size_t __len = std::min(__len1, __len2)) | |
if (int __result = __builtin_memcmp(__first1, __first2, __len)) | |
return __result < 0; | |
return __len1 < __len2; | |
} | |
}; | |
template<typename _II1, typename _II2> | |
inline bool | |
__lexicographical_compare_aux(_II1 __first1, _II1 __last1, | |
_II2 __first2, _II2 __last2) | |
{ | |
typedef typename iterator_traits<_II1>::value_type _ValueType1; | |
typedef typename iterator_traits<_II2>::value_type _ValueType2; | |
const bool __simple = | |
(__is_byte<_ValueType1>::__value && __is_byte<_ValueType2>::__value | |
&& !__gnu_cxx::__numeric_traits<_ValueType1>::__is_signed | |
&& !__gnu_cxx::__numeric_traits<_ValueType2>::__is_signed | |
&& __is_pointer<_II1>::__value | |
&& __is_pointer<_II2>::__value); | |
return std::__lexicographical_compare<__simple>::__lc(__first1, __last1, | |
__first2, __last2); | |
} | |
template<typename _ForwardIterator, typename _Tp, typename _Compare> | |
_ForwardIterator | |
__lower_bound(_ForwardIterator __first, _ForwardIterator __last, | |
const _Tp& __val, _Compare __comp) | |
{ | |
typedef typename iterator_traits<_ForwardIterator>::difference_type | |
_DistanceType; | |
_DistanceType __len = std::distance(__first, __last); | |
while (__len > 0) | |
{ | |
_DistanceType __half = __len >> 1; | |
_ForwardIterator __middle = __first; | |
std::advance(__middle, __half); | |
if (__comp(__middle, __val)) | |
{ | |
__first = __middle; | |
++__first; | |
__len = __len - __half - 1; | |
} | |
else | |
__len = __half; | |
} | |
return __first; | |
} | |
/** | |
* @brief Finds the first position in which @a val could be inserted | |
* without changing the ordering. | |
* @param __first An iterator. | |
* @param __last Another iterator. | |
* @param __val The search term. | |
* @return An iterator pointing to the first element <em>not less | |
* than</em> @a val, or end() if every element is less than | |
* @a val. | |
* @ingroup binary_search_algorithms | |
*/ | |
template<typename _ForwardIterator, typename _Tp> | |
inline _ForwardIterator | |
lower_bound(_ForwardIterator __first, _ForwardIterator __last, | |
const _Tp& __val) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>) | |
__glibcxx_function_requires(_LessThanOpConcept< | |
typename iterator_traits<_ForwardIterator>::value_type, _Tp>) | |
__glibcxx_requires_partitioned_lower(__first, __last, __val); | |
return std::__lower_bound(__first, __last, __val, | |
__gnu_cxx::__ops::__iter_less_val()); | |
} | |
/// This is a helper function for the sort routines and for random.tcc. | |
// Precondition: __n > 0. | |
inline _GLIBCXX_CONSTEXPR int | |
__lg(int __n) | |
{ return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } | |
inline _GLIBCXX_CONSTEXPR unsigned | |
__lg(unsigned __n) | |
{ return sizeof(int) * __CHAR_BIT__ - 1 - __builtin_clz(__n); } | |
inline _GLIBCXX_CONSTEXPR long | |
__lg(long __n) | |
{ return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } | |
inline _GLIBCXX_CONSTEXPR unsigned long | |
__lg(unsigned long __n) | |
{ return sizeof(long) * __CHAR_BIT__ - 1 - __builtin_clzl(__n); } | |
inline _GLIBCXX_CONSTEXPR long long | |
__lg(long long __n) | |
{ return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } | |
inline _GLIBCXX_CONSTEXPR unsigned long long | |
__lg(unsigned long long __n) | |
{ return sizeof(long long) * __CHAR_BIT__ - 1 - __builtin_clzll(__n); } | |
_GLIBCXX_END_NAMESPACE_VERSION | |
_GLIBCXX_BEGIN_NAMESPACE_ALGO | |
/** | |
* @brief Tests a range for element-wise equality. | |
* @ingroup non_mutating_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @return A boolean true or false. | |
* | |
* This compares the elements of two ranges using @c == and returns true or | |
* false depending on whether all of the corresponding elements of the | |
* ranges are equal. | |
*/ | |
template<typename _II1, typename _II2> | |
inline bool | |
equal(_II1 __first1, _II1 __last1, _II2 __first2) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_II1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_II2>) | |
__glibcxx_function_requires(_EqualOpConcept< | |
typename iterator_traits<_II1>::value_type, | |
typename iterator_traits<_II2>::value_type>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
return std::__equal_aux(std::__niter_base(__first1), | |
std::__niter_base(__last1), | |
std::__niter_base(__first2)); | |
} | |
/** | |
* @brief Tests a range for element-wise equality. | |
* @ingroup non_mutating_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @param __binary_pred A binary predicate @link functors | |
* functor@endlink. | |
* @return A boolean true or false. | |
* | |
* This compares the elements of two ranges using the binary_pred | |
* parameter, and returns true or | |
* false depending on whether all of the corresponding elements of the | |
* ranges are equal. | |
*/ | |
template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> | |
inline bool | |
equal(_IIter1 __first1, _IIter1 __last1, | |
_IIter2 __first2, _BinaryPredicate __binary_pred) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_IIter1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_IIter2>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
for (; __first1 != __last1; ++__first1, (void)++__first2) | |
if (!bool(__binary_pred(*__first1, *__first2))) | |
return false; | |
return true; | |
} | |
#if __cplusplus > 201103L | |
#define __cpp_lib_robust_nonmodifying_seq_ops 201304 | |
/** | |
* @brief Tests a range for element-wise equality. | |
* @ingroup non_mutating_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @param __last2 An input iterator. | |
* @return A boolean true or false. | |
* | |
* This compares the elements of two ranges using @c == and returns true or | |
* false depending on whether all of the corresponding elements of the | |
* ranges are equal. | |
*/ | |
template<typename _II1, typename _II2> | |
inline bool | |
equal(_II1 __first1, _II1 __last1, _II2 __first2, _II2 __last2) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_II1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_II2>) | |
__glibcxx_function_requires(_EqualOpConcept< | |
typename iterator_traits<_II1>::value_type, | |
typename iterator_traits<_II2>::value_type>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
__glibcxx_requires_valid_range(__first2, __last2); | |
using _RATag = random_access_iterator_tag; | |
using _Cat1 = typename iterator_traits<_II1>::iterator_category; | |
using _Cat2 = typename iterator_traits<_II2>::iterator_category; | |
using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>; | |
if (_RAIters()) | |
{ | |
auto __d1 = std::distance(__first1, __last1); | |
auto __d2 = std::distance(__first2, __last2); | |
if (__d1 != __d2) | |
return false; | |
return _GLIBCXX_STD_A::equal(__first1, __last1, __first2); | |
} | |
for (; __first1 != __last1 && __first2 != __last2; | |
++__first1, (void)++__first2) | |
if (!(*__first1 == *__first2)) | |
return false; | |
return __first1 == __last1 && __first2 == __last2; | |
} | |
/** | |
* @brief Tests a range for element-wise equality. | |
* @ingroup non_mutating_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @param __last2 An input iterator. | |
* @param __binary_pred A binary predicate @link functors | |
* functor@endlink. | |
* @return A boolean true or false. | |
* | |
* This compares the elements of two ranges using the binary_pred | |
* parameter, and returns true or | |
* false depending on whether all of the corresponding elements of the | |
* ranges are equal. | |
*/ | |
template<typename _IIter1, typename _IIter2, typename _BinaryPredicate> | |
inline bool | |
equal(_IIter1 __first1, _IIter1 __last1, | |
_IIter2 __first2, _IIter2 __last2, _BinaryPredicate __binary_pred) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_IIter1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_IIter2>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
__glibcxx_requires_valid_range(__first2, __last2); | |
using _RATag = random_access_iterator_tag; | |
using _Cat1 = typename iterator_traits<_IIter1>::iterator_category; | |
using _Cat2 = typename iterator_traits<_IIter2>::iterator_category; | |
using _RAIters = __and_<is_same<_Cat1, _RATag>, is_same<_Cat2, _RATag>>; | |
if (_RAIters()) | |
{ | |
auto __d1 = std::distance(__first1, __last1); | |
auto __d2 = std::distance(__first2, __last2); | |
if (__d1 != __d2) | |
return false; | |
return _GLIBCXX_STD_A::equal(__first1, __last1, __first2, | |
__binary_pred); | |
} | |
for (; __first1 != __last1 && __first2 != __last2; | |
++__first1, (void)++__first2) | |
if (!bool(__binary_pred(*__first1, *__first2))) | |
return false; | |
return __first1 == __last1 && __first2 == __last2; | |
} | |
#endif | |
# 1185 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
/** | |
* @brief Performs @b dictionary comparison on ranges. | |
* @ingroup sorting_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @param __last2 An input iterator. | |
* @return A boolean true or false. | |
* | |
* <em>Returns true if the sequence of elements defined by the range | |
* [first1,last1) is lexicographically less than the sequence of elements | |
* defined by the range [first2,last2). Returns false otherwise.</em> | |
* (Quoted from [25.3.8]/1.) If the iterators are all character pointers, | |
* then this is an inline call to @c memcmp. | |
*/ | |
template<typename _II1, typename _II2> | |
inline bool | |
lexicographical_compare(_II1 __first1, _II1 __last1, | |
_II2 __first2, _II2 __last2) | |
{ | |
#ifdef _GLIBCXX_CONCEPT_CHECKS | |
// concept requirements | |
typedef typename iterator_traits<_II1>::value_type _ValueType1; | |
typedef typename iterator_traits<_II2>::value_type _ValueType2; | |
#endif | |
# 1211 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
__glibcxx_function_requires(_InputIteratorConcept<_II1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_II2>) | |
__glibcxx_function_requires(_LessThanOpConcept<_ValueType1, _ValueType2>) | |
__glibcxx_function_requires(_LessThanOpConcept<_ValueType2, _ValueType1>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
__glibcxx_requires_valid_range(__first2, __last2); | |
return std::__lexicographical_compare_aux(std::__niter_base(__first1), | |
std::__niter_base(__last1), | |
std::__niter_base(__first2), | |
std::__niter_base(__last2)); | |
} | |
/** | |
* @brief Performs @b dictionary comparison on ranges. | |
* @ingroup sorting_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @param __last2 An input iterator. | |
* @param __comp A @link comparison_functors comparison functor@endlink. | |
* @return A boolean true or false. | |
* | |
* The same as the four-parameter @c lexicographical_compare, but uses the | |
* comp parameter instead of @c <. | |
*/ | |
template<typename _II1, typename _II2, typename _Compare> | |
inline bool | |
lexicographical_compare(_II1 __first1, _II1 __last1, | |
_II2 __first2, _II2 __last2, _Compare __comp) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_II1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_II2>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
__glibcxx_requires_valid_range(__first2, __last2); | |
return std::__lexicographical_compare_impl | |
(__first1, __last1, __first2, __last2, | |
__gnu_cxx::__ops::__iter_comp_iter(__comp)); | |
} | |
template<typename _InputIterator1, typename _InputIterator2, | |
typename _BinaryPredicate> | |
pair<_InputIterator1, _InputIterator2> | |
__mismatch(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _BinaryPredicate __binary_pred) | |
{ | |
while (__first1 != __last1 && __binary_pred(__first1, __first2)) | |
{ | |
++__first1; | |
++__first2; | |
} | |
return pair<_InputIterator1, _InputIterator2>(__first1, __first2); | |
} | |
/** | |
* @brief Finds the places in ranges which don't match. | |
* @ingroup non_mutating_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @return A pair of iterators pointing to the first mismatch. | |
* | |
* This compares the elements of two ranges using @c == and returns a pair | |
* of iterators. The first iterator points into the first range, the | |
* second iterator points into the second range, and the elements pointed | |
* to by the iterators are not equal. | |
*/ | |
template<typename _InputIterator1, typename _InputIterator2> | |
inline pair<_InputIterator1, _InputIterator2> | |
mismatch(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) | |
__glibcxx_function_requires(_EqualOpConcept< | |
typename iterator_traits<_InputIterator1>::value_type, | |
typename iterator_traits<_InputIterator2>::value_type>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, | |
__gnu_cxx::__ops::__iter_equal_to_iter()); | |
} | |
/** | |
* @brief Finds the places in ranges which don't match. | |
* @ingroup non_mutating_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @param __binary_pred A binary predicate @link functors | |
* functor@endlink. | |
* @return A pair of iterators pointing to the first mismatch. | |
* | |
* This compares the elements of two ranges using the binary_pred | |
* parameter, and returns a pair | |
* of iterators. The first iterator points into the first range, the | |
* second iterator points into the second range, and the elements pointed | |
* to by the iterators are not equal. | |
*/ | |
template<typename _InputIterator1, typename _InputIterator2, | |
typename _BinaryPredicate> | |
inline pair<_InputIterator1, _InputIterator2> | |
mismatch(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _BinaryPredicate __binary_pred) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, | |
__gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); | |
} | |
#if __cplusplus > 201103L | |
template<typename _InputIterator1, typename _InputIterator2, | |
typename _BinaryPredicate> | |
pair<_InputIterator1, _InputIterator2> | |
__mismatch(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, | |
_BinaryPredicate __binary_pred) | |
{ | |
while (__first1 != __last1 && __first2 != __last2 | |
&& __binary_pred(__first1, __first2)) | |
{ | |
++__first1; | |
++__first2; | |
} | |
return pair<_InputIterator1, _InputIterator2>(__first1, __first2); | |
} | |
/** | |
* @brief Finds the places in ranges which don't match. | |
* @ingroup non_mutating_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @param __last2 An input iterator. | |
* @return A pair of iterators pointing to the first mismatch. | |
* | |
* This compares the elements of two ranges using @c == and returns a pair | |
* of iterators. The first iterator points into the first range, the | |
* second iterator points into the second range, and the elements pointed | |
* to by the iterators are not equal. | |
*/ | |
template<typename _InputIterator1, typename _InputIterator2> | |
inline pair<_InputIterator1, _InputIterator2> | |
mismatch(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) | |
__glibcxx_function_requires(_EqualOpConcept< | |
typename iterator_traits<_InputIterator1>::value_type, | |
typename iterator_traits<_InputIterator2>::value_type>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
__glibcxx_requires_valid_range(__first2, __last2); | |
return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2, | |
__gnu_cxx::__ops::__iter_equal_to_iter()); | |
} | |
/** | |
* @brief Finds the places in ranges which don't match. | |
* @ingroup non_mutating_algorithms | |
* @param __first1 An input iterator. | |
* @param __last1 An input iterator. | |
* @param __first2 An input iterator. | |
* @param __last2 An input iterator. | |
* @param __binary_pred A binary predicate @link functors | |
* functor@endlink. | |
* @return A pair of iterators pointing to the first mismatch. | |
* | |
* This compares the elements of two ranges using the binary_pred | |
* parameter, and returns a pair | |
* of iterators. The first iterator points into the first range, the | |
* second iterator points into the second range, and the elements pointed | |
* to by the iterators are not equal. | |
*/ | |
template<typename _InputIterator1, typename _InputIterator2, | |
typename _BinaryPredicate> | |
inline pair<_InputIterator1, _InputIterator2> | |
mismatch(_InputIterator1 __first1, _InputIterator1 __last1, | |
_InputIterator2 __first2, _InputIterator2 __last2, | |
_BinaryPredicate __binary_pred) | |
{ | |
// concept requirements | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>) | |
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>) | |
__glibcxx_requires_valid_range(__first1, __last1); | |
__glibcxx_requires_valid_range(__first2, __last2); | |
return _GLIBCXX_STD_A::__mismatch(__first1, __last1, __first2, __last2, | |
__gnu_cxx::__ops::__iter_comp_iter(__binary_pred)); | |
} | |
#endif | |
# 1412 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
_GLIBCXX_END_NAMESPACE_ALGO | |
} // namespace std | |
// NB: This file is included within many other C++ includes, as a way | |
// of getting the base algorithms. So, make sure that parallel bits | |
// come in too if requested. | |
#ifdef _GLIBCXX_PARALLEL | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <parallel/algobase.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 1420 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 1421 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
#endif | |
# 1422 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
#endif | |
# 1424 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_algobase.h" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/postypes.h> // For streampos | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 1 3 | |
// Position types -*- C++ -*- | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/postypes.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iosfwd} | |
*/ | |
// | |
// ISO C++ 14882: 27.4.1 - Types | |
// ISO C++ 14882: 27.4.3 - Template class fpos | |
// | |
#ifndef _GLIBCXX_POSTYPES_H | |
#define _GLIBCXX_POSTYPES_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <cwchar> // For mbstate_t | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 1 3 | |
// -*- C++ -*- forwarding header. | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/cwchar | |
* This is a Standard C++ Library file. You should @c \#include this file | |
* in your programs, rather than any of the @a *.h implementation files. | |
* | |
* This is the C++ version of the Standard C Library header @c wchar.h, | |
* and its contents are (mostly) the same as that header, but are all | |
* contained in the namespace @c std (except for names which are defined | |
* as macros in C). | |
*/ | |
// | |
// ISO C++ 14882: 21.4 | |
// | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_WCHAR_H | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <wchar.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 44 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 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/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 | |
# 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 | |
# 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 | |
# 42 "/usr/include/wchar.h" 2 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/lib/clang/5.0.0/include/stddef.h" 1 3 4 | |
/*===---- 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 4 | |
#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 4 | |
#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 4 | |
typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
#endif | |
# 53 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_ptrdiff_t | |
#endif /* defined(__need_ptrdiff_t) */ | |
# 55 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
typedef __SIZE_TYPE__ size_t; | |
#endif | |
# 64 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_size_t | |
#endif /*defined(__need_size_t) */ | |
# 66 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
typedef __SIZE_TYPE__ rsize_t; | |
#endif | |
# 78 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#endif /* defined(__need_STDDEF_H_misc) */ | |
# 79 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
#endif | |
# 90 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
typedef __WCHAR_TYPE__ wchar_t; | |
#endif | |
# 92 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#endif | |
# 93 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_wchar_t | |
#endif /* defined(__need_wchar_t) */ | |
# 95 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
# define NULL 0 | |
# endif | |
# 104 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#else | |
# 105 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
# define NULL ((void*)0) | |
#endif | |
# 107 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
#endif | |
# 113 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_NULL | |
#endif /* defined(__need_NULL) */ | |
# 115 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
# 119 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#endif | |
# 120 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
/* 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 4 | |
typedef __WINT_TYPE__ wint_t; | |
#endif | |
# 134 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_wint_t | |
#endif /* __need_wint_t */ | |
# 136 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#endif | |
# 138 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
# 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 | |
# 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 <[email protected]>, 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 | |
# 184 "/usr/include/wchar.h" 2 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 | |
# 45 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 2 3 | |
#endif | |
# 46 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#ifndef _GLIBCXX_CWCHAR | |
#define _GLIBCXX_CWCHAR 1 | |
// Need to do a bit of trickery here with mbstate_t as char_traits | |
// assumes it is in wchar.h, regardless of wchar_t specializations. | |
#ifndef _GLIBCXX_HAVE_MBSTATE_T | |
extern "C" | |
{ | |
typedef struct | |
{ | |
int __fill[6]; | |
} mbstate_t; | |
} | |
#endif | |
# 61 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
namespace std | |
{ | |
using ::mbstate_t; | |
} // namespace std | |
// Get rid of those macros defined in <wchar.h> in lieu of real functions. | |
#undef btowc | |
#undef fgetwc | |
#undef fgetws | |
#undef fputwc | |
#undef fputws | |
#undef fwide | |
#undef fwprintf | |
#undef fwscanf | |
#undef getwc | |
#undef getwchar | |
#undef mbrlen | |
#undef mbrtowc | |
#undef mbsinit | |
#undef mbsrtowcs | |
#undef putwc | |
#undef putwchar | |
#undef swprintf | |
#undef swscanf | |
#undef ungetwc | |
#undef vfwprintf | |
#if _GLIBCXX_HAVE_VFWSCANF | |
# undef vfwscanf | |
#endif | |
# 91 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#undef vswprintf | |
#if _GLIBCXX_HAVE_VSWSCANF | |
# undef vswscanf | |
#endif | |
# 95 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#undef vwprintf | |
#if _GLIBCXX_HAVE_VWSCANF | |
# undef vwscanf | |
#endif | |
# 99 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#undef wcrtomb | |
#undef wcscat | |
#undef wcschr | |
#undef wcscmp | |
#undef wcscoll | |
#undef wcscpy | |
#undef wcscspn | |
#undef wcsftime | |
#undef wcslen | |
#undef wcsncat | |
#undef wcsncmp | |
#undef wcsncpy | |
#undef wcspbrk | |
#undef wcsrchr | |
#undef wcsrtombs | |
#undef wcsspn | |
#undef wcsstr | |
#undef wcstod | |
#if _GLIBCXX_HAVE_WCSTOF | |
# undef wcstof | |
#endif | |
# 120 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#undef wcstok | |
#undef wcstol | |
#undef wcstoul | |
#undef wcsxfrm | |
#undef wctob | |
#undef wmemchr | |
#undef wmemcmp | |
#undef wmemcpy | |
#undef wmemmove | |
#undef wmemset | |
#undef wprintf | |
#undef wscanf | |
#if _GLIBCXX_USE_WCHAR_T | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
using ::wint_t; | |
using ::btowc; | |
using ::fgetwc; | |
using ::fgetws; | |
using ::fputwc; | |
using ::fputws; | |
using ::fwide; | |
using ::fwprintf; | |
using ::fwscanf; | |
using ::getwc; | |
using ::getwchar; | |
using ::mbrlen; | |
using ::mbrtowc; | |
using ::mbsinit; | |
using ::mbsrtowcs; | |
using ::putwc; | |
using ::putwchar; | |
#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF | |
using ::swprintf; | |
#endif | |
# 160 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
using ::swscanf; | |
using ::ungetwc; | |
using ::vfwprintf; | |
#if _GLIBCXX_HAVE_VFWSCANF | |
using ::vfwscanf; | |
#endif | |
# 166 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF | |
using ::vswprintf; | |
#endif | |
# 169 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_VSWSCANF | |
using ::vswscanf; | |
#endif | |
# 172 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
using ::vwprintf; | |
#if _GLIBCXX_HAVE_VWSCANF | |
using ::vwscanf; | |
#endif | |
# 176 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
using ::wcrtomb; | |
using ::wcscat; | |
using ::wcscmp; | |
using ::wcscoll; | |
using ::wcscpy; | |
using ::wcscspn; | |
using ::wcsftime; | |
using ::wcslen; | |
using ::wcsncat; | |
using ::wcsncmp; | |
using ::wcsncpy; | |
using ::wcsrtombs; | |
using ::wcsspn; | |
using ::wcstod; | |
#if _GLIBCXX_HAVE_WCSTOF | |
using ::wcstof; | |
#endif | |
# 193 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
using ::wcstok; | |
using ::wcstol; | |
using ::wcstoul; | |
using ::wcsxfrm; | |
using ::wctob; | |
using ::wmemcmp; | |
using ::wmemcpy; | |
using ::wmemmove; | |
using ::wmemset; | |
using ::wprintf; | |
using ::wscanf; | |
using ::wcschr; | |
using ::wcspbrk; | |
using ::wcsrchr; | |
using ::wcsstr; | |
using ::wmemchr; | |
#ifndef __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
inline wchar_t* | |
wcschr(wchar_t* __p, wchar_t __c) | |
{ return wcschr(const_cast<const wchar_t*>(__p), __c); } | |
inline wchar_t* | |
wcspbrk(wchar_t* __s1, const wchar_t* __s2) | |
{ return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); } | |
inline wchar_t* | |
wcsrchr(wchar_t* __p, wchar_t __c) | |
{ return wcsrchr(const_cast<const wchar_t*>(__p), __c); } | |
inline wchar_t* | |
wcsstr(wchar_t* __s1, const wchar_t* __s2) | |
{ return wcsstr(const_cast<const wchar_t*>(__s1), __s2); } | |
inline wchar_t* | |
wmemchr(wchar_t* __p, wchar_t __c, size_t __n) | |
{ return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); } | |
#endif | |
# 231 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#if _GLIBCXX_USE_C99_WCHAR | |
#undef wcstold | |
#undef wcstoll | |
#undef wcstoull | |
namespace __gnu_cxx | |
{ | |
#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC | |
extern "C" long double | |
(wcstold)(const wchar_t * __restrict, wchar_t ** __restrict) throw (); | |
#endif | |
# 247 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if !_GLIBCXX_USE_C99_DYNAMIC | |
using ::wcstold; | |
#endif | |
# 250 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC | |
extern "C" long long int | |
(wcstoll)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); | |
extern "C" unsigned long long int | |
(wcstoull)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); | |
#endif | |
# 256 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC | |
using ::wcstoll; | |
using ::wcstoull; | |
#endif | |
# 260 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
} // namespace __gnu_cxx | |
namespace std | |
{ | |
using ::__gnu_cxx::wcstold; | |
using ::__gnu_cxx::wcstoll; | |
using ::__gnu_cxx::wcstoull; | |
} // namespace | |
#endif | |
# 270 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#endif //_GLIBCXX_USE_WCHAR_T | |
# 272 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if __cplusplus >= 201103L | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
namespace std | |
{ | |
#if _GLIBCXX_HAVE_WCSTOF | |
using std::wcstof; | |
#endif | |
# 282 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_VFWSCANF | |
using std::vfwscanf; | |
#endif | |
# 285 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_VSWSCANF | |
using std::vswscanf; | |
#endif | |
# 288 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_VWSCANF | |
using std::vwscanf; | |
#endif | |
# 291 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_USE_C99_WCHAR | |
using std::wcstold; | |
using std::wcstoll; | |
using std::wcstoull; | |
#endif | |
# 297 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
} // namespace | |
#endif // _GLIBCXX_USE_WCHAR_T | |
# 300 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#endif // C++11 | |
# 302 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#endif | |
# 304 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 2 3 | |
// XXX If <stdint.h> is really needed, make sure to define the macros | |
// before including it, in order not to break <tr1/cstdint> (and <cstdint> | |
// in C++11). Reconsider all this as soon as possible... | |
#if (defined(_GLIBCXX_HAVE_INT64_T) && !defined(_GLIBCXX_HAVE_INT64_T_LONG) \ | |
&& !defined(_GLIBCXX_HAVE_INT64_T_LONG_LONG)) | |
#ifndef __STDC_LIMIT_MACROS | |
# define _UNDEF__STDC_LIMIT_MACROS | |
# define __STDC_LIMIT_MACROS | |
#endif | |
# 52 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
#ifndef __STDC_CONSTANT_MACROS | |
# define _UNDEF__STDC_CONSTANT_MACROS | |
# define __STDC_CONSTANT_MACROS | |
#endif | |
# 56 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <stdint.h> // For int64_t | |
#endif /* expanded by -frewrite-includes */ | |
# 56 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
# 57 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
#ifdef _UNDEF__STDC_LIMIT_MACROS | |
# undef __STDC_LIMIT_MACROS | |
# undef _UNDEF__STDC_LIMIT_MACROS | |
#endif | |
# 61 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
#ifdef _UNDEF__STDC_CONSTANT_MACROS | |
# undef __STDC_CONSTANT_MACROS | |
# undef _UNDEF__STDC_CONSTANT_MACROS | |
#endif | |
# 65 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
#endif | |
# 67 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// The types streamoff, streampos and wstreampos and the class | |
// template fpos<> are described in clauses 21.1.2, 21.1.3, 27.1.2, | |
// 27.2, 27.4.1, 27.4.3 and D.6. Despite all this verbiage, the | |
// behaviour of these types is mostly implementation defined or | |
// unspecified. The behaviour in this implementation is as noted | |
// below. | |
/** | |
* @brief Type used by fpos, char_traits<char>, and char_traits<wchar_t>. | |
* | |
* In clauses 21.1.3.1 and 27.4.1 streamoff is described as an | |
* implementation defined type. | |
* Note: In versions of GCC up to and including GCC 3.3, streamoff | |
* was typedef long. | |
*/ | |
#ifdef _GLIBCXX_HAVE_INT64_T_LONG | |
typedef long streamoff; | |
#elif defined(_GLIBCXX_HAVE_INT64_T_LONG_LONG) | |
# 90 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
typedef long long streamoff; | |
#elif defined(_GLIBCXX_HAVE_INT64_T) | |
# 92 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
typedef int64_t streamoff; | |
#else | |
# 94 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
typedef long long streamoff; | |
#endif | |
# 96 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
/// Integral type for I/O operation counts and buffer sizes. | |
typedef ptrdiff_t streamsize; // Signed integral type | |
/** | |
* @brief Class representing stream positions. | |
* | |
* The standard places no requirements upon the template parameter StateT. | |
* In this implementation StateT must be DefaultConstructible, | |
* CopyConstructible and Assignable. The standard only requires that fpos | |
* should contain a member of type StateT. In this implementation it also | |
* contains an offset stored as a signed integer. | |
* | |
* @param StateT Type passed to and returned from state(). | |
*/ | |
template<typename _StateT> | |
class fpos | |
{ | |
private: | |
streamoff _M_off; | |
_StateT _M_state; | |
public: | |
// The standard doesn't require that fpos objects can be default | |
// constructed. This implementation provides a default | |
// constructor that initializes the offset to 0 and default | |
// constructs the state. | |
fpos() | |
: _M_off(0), _M_state() { } | |
// The standard requires that fpos objects can be constructed | |
// from streamoff objects using the constructor syntax, and | |
// fails to give any meaningful semantics. In this | |
// implementation implicit conversion is also allowed, and this | |
// constructor stores the streamoff as the offset and default | |
// constructs the state. | |
/// Construct position from offset. | |
fpos(streamoff __off) | |
: _M_off(__off), _M_state() { } | |
/// Convert to streamoff. | |
operator streamoff() const { return _M_off; } | |
/// Remember the value of @a st. | |
void | |
state(_StateT __st) | |
{ _M_state = __st; } | |
/// Return the last set value of @a st. | |
_StateT | |
state() const | |
{ return _M_state; } | |
// The standard requires that this operator must be defined, but | |
// gives no semantics. In this implementation it just adds its | |
// argument to the stored offset and returns *this. | |
/// Add offset to this position. | |
fpos& | |
operator+=(streamoff __off) | |
{ | |
_M_off += __off; | |
return *this; | |
} | |
// The standard requires that this operator must be defined, but | |
// gives no semantics. In this implementation it just subtracts | |
// its argument from the stored offset and returns *this. | |
/// Subtract offset from this position. | |
fpos& | |
operator-=(streamoff __off) | |
{ | |
_M_off -= __off; | |
return *this; | |
} | |
// The standard requires that this operator must be defined, but | |
// defines its semantics only in terms of operator-. In this | |
// implementation it constructs a copy of *this, adds the | |
// argument to that copy using operator+= and then returns the | |
// copy. | |
/// Add position and offset. | |
fpos | |
operator+(streamoff __off) const | |
{ | |
fpos __pos(*this); | |
__pos += __off; | |
return __pos; | |
} | |
// The standard requires that this operator must be defined, but | |
// defines its semantics only in terms of operator+. In this | |
// implementation it constructs a copy of *this, subtracts the | |
// argument from that copy using operator-= and then returns the | |
// copy. | |
/// Subtract offset from position. | |
fpos | |
operator-(streamoff __off) const | |
{ | |
fpos __pos(*this); | |
__pos -= __off; | |
return __pos; | |
} | |
// The standard requires that this operator must be defined, but | |
// defines its semantics only in terms of operator+. In this | |
// implementation it returns the difference between the offset | |
// stored in *this and in the argument. | |
/// Subtract position to return offset. | |
streamoff | |
operator-(const fpos& __other) const | |
{ return _M_off - __other._M_off; } | |
}; | |
// The standard only requires that operator== must be an | |
// equivalence relation. In this implementation two fpos<StateT> | |
// objects belong to the same equivalence class if the contained | |
// offsets compare equal. | |
/// Test if equivalent to another position. | |
template<typename _StateT> | |
inline bool | |
operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) | |
{ return streamoff(__lhs) == streamoff(__rhs); } | |
template<typename _StateT> | |
inline bool | |
operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs) | |
{ return streamoff(__lhs) != streamoff(__rhs); } | |
// Clauses 21.1.3.1 and 21.1.3.2 describe streampos and wstreampos | |
// as implementation defined types, but clause 27.2 requires that | |
// they must both be typedefs for fpos<mbstate_t> | |
/// File position for char streams. | |
typedef fpos<mbstate_t> streampos; | |
/// File position for wchar_t streams. | |
typedef fpos<mbstate_t> wstreampos; | |
#if __cplusplus >= 201103L | |
/// File position for char16_t streams. | |
typedef fpos<mbstate_t> u16streampos; | |
/// File position for char32_t streams. | |
typedef fpos<mbstate_t> u32streampos; | |
#endif | |
# 238 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif | |
# 243 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/postypes.h" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <cwchar> // For WEOF, wmemmove, wmemset, etc. | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 1 3 | |
// -*- C++ -*- forwarding header. | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/cwchar | |
* This is a Standard C++ Library file. You should @c \#include this file | |
* in your programs, rather than any of the @a *.h implementation files. | |
* | |
* This is the C++ version of the Standard C Library header @c wchar.h, | |
* and its contents are (mostly) the same as that header, but are all | |
* contained in the namespace @c std (except for names which are defined | |
* as macros in C). | |
*/ | |
// | |
// ISO C++ 14882: 21.4 | |
// | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_WCHAR_H | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <wchar.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 44 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 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 | |
# 37 "/usr/include/wchar.h" 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 | |
# 40 "/usr/include/wchar.h" 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 | |
# 52 "/usr/include/wchar.h" 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 | |
# 45 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 2 3 | |
#endif | |
# 46 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#ifndef _GLIBCXX_CWCHAR | |
#define _GLIBCXX_CWCHAR 1 | |
// Need to do a bit of trickery here with mbstate_t as char_traits | |
// assumes it is in wchar.h, regardless of wchar_t specializations. | |
#ifndef _GLIBCXX_HAVE_MBSTATE_T | |
extern "C" | |
{ | |
typedef struct | |
{ | |
int __fill[6]; | |
} mbstate_t; | |
} | |
#endif | |
# 61 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
namespace std | |
{ | |
using ::mbstate_t; | |
} // namespace std | |
// Get rid of those macros defined in <wchar.h> in lieu of real functions. | |
#undef btowc | |
#undef fgetwc | |
#undef fgetws | |
#undef fputwc | |
#undef fputws | |
#undef fwide | |
#undef fwprintf | |
#undef fwscanf | |
#undef getwc | |
#undef getwchar | |
#undef mbrlen | |
#undef mbrtowc | |
#undef mbsinit | |
#undef mbsrtowcs | |
#undef putwc | |
#undef putwchar | |
#undef swprintf | |
#undef swscanf | |
#undef ungetwc | |
#undef vfwprintf | |
#if _GLIBCXX_HAVE_VFWSCANF | |
# undef vfwscanf | |
#endif | |
# 91 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#undef vswprintf | |
#if _GLIBCXX_HAVE_VSWSCANF | |
# undef vswscanf | |
#endif | |
# 95 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#undef vwprintf | |
#if _GLIBCXX_HAVE_VWSCANF | |
# undef vwscanf | |
#endif | |
# 99 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#undef wcrtomb | |
#undef wcscat | |
#undef wcschr | |
#undef wcscmp | |
#undef wcscoll | |
#undef wcscpy | |
#undef wcscspn | |
#undef wcsftime | |
#undef wcslen | |
#undef wcsncat | |
#undef wcsncmp | |
#undef wcsncpy | |
#undef wcspbrk | |
#undef wcsrchr | |
#undef wcsrtombs | |
#undef wcsspn | |
#undef wcsstr | |
#undef wcstod | |
#if _GLIBCXX_HAVE_WCSTOF | |
# undef wcstof | |
#endif | |
# 120 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#undef wcstok | |
#undef wcstol | |
#undef wcstoul | |
#undef wcsxfrm | |
#undef wctob | |
#undef wmemchr | |
#undef wmemcmp | |
#undef wmemcpy | |
#undef wmemmove | |
#undef wmemset | |
#undef wprintf | |
#undef wscanf | |
#if _GLIBCXX_USE_WCHAR_T | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
using ::wint_t; | |
using ::btowc; | |
using ::fgetwc; | |
using ::fgetws; | |
using ::fputwc; | |
using ::fputws; | |
using ::fwide; | |
using ::fwprintf; | |
using ::fwscanf; | |
using ::getwc; | |
using ::getwchar; | |
using ::mbrlen; | |
using ::mbrtowc; | |
using ::mbsinit; | |
using ::mbsrtowcs; | |
using ::putwc; | |
using ::putwchar; | |
#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF | |
using ::swprintf; | |
#endif | |
# 160 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
using ::swscanf; | |
using ::ungetwc; | |
using ::vfwprintf; | |
#if _GLIBCXX_HAVE_VFWSCANF | |
using ::vfwscanf; | |
#endif | |
# 166 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#ifndef _GLIBCXX_HAVE_BROKEN_VSWPRINTF | |
using ::vswprintf; | |
#endif | |
# 169 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_VSWSCANF | |
using ::vswscanf; | |
#endif | |
# 172 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
using ::vwprintf; | |
#if _GLIBCXX_HAVE_VWSCANF | |
using ::vwscanf; | |
#endif | |
# 176 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
using ::wcrtomb; | |
using ::wcscat; | |
using ::wcscmp; | |
using ::wcscoll; | |
using ::wcscpy; | |
using ::wcscspn; | |
using ::wcsftime; | |
using ::wcslen; | |
using ::wcsncat; | |
using ::wcsncmp; | |
using ::wcsncpy; | |
using ::wcsrtombs; | |
using ::wcsspn; | |
using ::wcstod; | |
#if _GLIBCXX_HAVE_WCSTOF | |
using ::wcstof; | |
#endif | |
# 193 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
using ::wcstok; | |
using ::wcstol; | |
using ::wcstoul; | |
using ::wcsxfrm; | |
using ::wctob; | |
using ::wmemcmp; | |
using ::wmemcpy; | |
using ::wmemmove; | |
using ::wmemset; | |
using ::wprintf; | |
using ::wscanf; | |
using ::wcschr; | |
using ::wcspbrk; | |
using ::wcsrchr; | |
using ::wcsstr; | |
using ::wmemchr; | |
#ifndef __CORRECT_ISO_CPP_WCHAR_H_PROTO | |
inline wchar_t* | |
wcschr(wchar_t* __p, wchar_t __c) | |
{ return wcschr(const_cast<const wchar_t*>(__p), __c); } | |
inline wchar_t* | |
wcspbrk(wchar_t* __s1, const wchar_t* __s2) | |
{ return wcspbrk(const_cast<const wchar_t*>(__s1), __s2); } | |
inline wchar_t* | |
wcsrchr(wchar_t* __p, wchar_t __c) | |
{ return wcsrchr(const_cast<const wchar_t*>(__p), __c); } | |
inline wchar_t* | |
wcsstr(wchar_t* __s1, const wchar_t* __s2) | |
{ return wcsstr(const_cast<const wchar_t*>(__s1), __s2); } | |
inline wchar_t* | |
wmemchr(wchar_t* __p, wchar_t __c, size_t __n) | |
{ return wmemchr(const_cast<const wchar_t*>(__p), __c, __n); } | |
#endif | |
# 231 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#if _GLIBCXX_USE_C99_WCHAR | |
#undef wcstold | |
#undef wcstoll | |
#undef wcstoull | |
namespace __gnu_cxx | |
{ | |
#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC | |
extern "C" long double | |
(wcstold)(const wchar_t * __restrict, wchar_t ** __restrict) throw (); | |
#endif | |
# 247 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if !_GLIBCXX_USE_C99_DYNAMIC | |
using ::wcstold; | |
#endif | |
# 250 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_USE_C99_LONG_LONG_CHECK || _GLIBCXX_USE_C99_LONG_LONG_DYNAMIC | |
extern "C" long long int | |
(wcstoll)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); | |
extern "C" unsigned long long int | |
(wcstoull)(const wchar_t * __restrict, wchar_t ** __restrict, int) throw (); | |
#endif | |
# 256 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if !_GLIBCXX_USE_C99_LONG_LONG_DYNAMIC | |
using ::wcstoll; | |
using ::wcstoull; | |
#endif | |
# 260 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
} // namespace __gnu_cxx | |
namespace std | |
{ | |
using ::__gnu_cxx::wcstold; | |
using ::__gnu_cxx::wcstoll; | |
using ::__gnu_cxx::wcstoull; | |
} // namespace | |
#endif | |
# 270 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#endif //_GLIBCXX_USE_WCHAR_T | |
# 272 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if __cplusplus >= 201103L | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
namespace std | |
{ | |
#if _GLIBCXX_HAVE_WCSTOF | |
using std::wcstof; | |
#endif | |
# 282 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_VFWSCANF | |
using std::vfwscanf; | |
#endif | |
# 285 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_VSWSCANF | |
using std::vswscanf; | |
#endif | |
# 288 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_HAVE_VWSCANF | |
using std::vwscanf; | |
#endif | |
# 291 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#if _GLIBCXX_USE_C99_WCHAR | |
using std::wcstold; | |
using std::wcstoll; | |
using std::wcstoull; | |
#endif | |
# 297 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
} // namespace | |
#endif // _GLIBCXX_USE_WCHAR_T | |
# 300 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#endif // C++11 | |
# 302 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
#endif | |
# 304 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cwchar" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 2 3 | |
namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @brief Mapping from character type to associated types. | |
* | |
* @note This is an implementation class for the generic version | |
* of char_traits. It defines int_type, off_type, pos_type, and | |
* state_type. By default these are unsigned long, streamoff, | |
* streampos, and mbstate_t. Users who need a different set of | |
* types, but who don't need to change the definitions of any function | |
* defined in char_traits, can specialize __gnu_cxx::_Char_types | |
* while leaving __gnu_cxx::char_traits alone. */ | |
template<typename _CharT> | |
struct _Char_types | |
{ | |
typedef unsigned long int_type; | |
typedef std::streampos pos_type; | |
typedef std::streamoff off_type; | |
typedef std::mbstate_t state_type; | |
}; | |
/** | |
* @brief Base class used to implement std::char_traits. | |
* | |
* @note For any given actual character type, this definition is | |
* probably wrong. (Most of the member functions are likely to be | |
* right, but the int_type and state_type typedefs, and the eof() | |
* member function, are likely to be wrong.) The reason this class | |
* exists is so users can specialize it. Classes in namespace std | |
* may not be specialized for fundamental types, but classes in | |
* namespace __gnu_cxx may be. | |
* | |
* See https://gcc.gnu.org/onlinedocs/libstdc++/manual/strings.html#strings.string.character_types | |
* for advice on how to make use of this class for @a unusual character | |
* types. Also, check out include/ext/pod_char_traits.h. | |
*/ | |
template<typename _CharT> | |
struct char_traits | |
{ | |
typedef _CharT char_type; | |
typedef typename _Char_types<_CharT>::int_type int_type; | |
typedef typename _Char_types<_CharT>::pos_type pos_type; | |
typedef typename _Char_types<_CharT>::off_type off_type; | |
typedef typename _Char_types<_CharT>::state_type state_type; | |
static void | |
assign(char_type& __c1, const char_type& __c2) | |
{ __c1 = __c2; } | |
static _GLIBCXX_CONSTEXPR bool | |
eq(const char_type& __c1, const char_type& __c2) | |
{ return __c1 == __c2; } | |
static _GLIBCXX_CONSTEXPR bool | |
lt(const char_type& __c1, const char_type& __c2) | |
{ return __c1 < __c2; } | |
static int | |
compare(const char_type* __s1, const char_type* __s2, std::size_t __n); | |
static std::size_t | |
length(const char_type* __s); | |
static const char_type* | |
find(const char_type* __s, std::size_t __n, const char_type& __a); | |
static char_type* | |
move(char_type* __s1, const char_type* __s2, std::size_t __n); | |
static char_type* | |
copy(char_type* __s1, const char_type* __s2, std::size_t __n); | |
static char_type* | |
assign(char_type* __s, std::size_t __n, char_type __a); | |
static _GLIBCXX_CONSTEXPR char_type | |
to_char_type(const int_type& __c) | |
{ return static_cast<char_type>(__c); } | |
static _GLIBCXX_CONSTEXPR int_type | |
to_int_type(const char_type& __c) | |
{ return static_cast<int_type>(__c); } | |
static _GLIBCXX_CONSTEXPR bool | |
eq_int_type(const int_type& __c1, const int_type& __c2) | |
{ return __c1 == __c2; } | |
static _GLIBCXX_CONSTEXPR int_type | |
eof() | |
{ return static_cast<int_type>(_GLIBCXX_STDIO_EOF); } | |
static _GLIBCXX_CONSTEXPR int_type | |
not_eof(const int_type& __c) | |
{ return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); } | |
}; | |
template<typename _CharT> | |
int | |
char_traits<_CharT>:: | |
compare(const char_type* __s1, const char_type* __s2, std::size_t __n) | |
{ | |
for (std::size_t __i = 0; __i < __n; ++__i) | |
if (lt(__s1[__i], __s2[__i])) | |
return -1; | |
else if (lt(__s2[__i], __s1[__i])) | |
return 1; | |
return 0; | |
} | |
template<typename _CharT> | |
std::size_t | |
char_traits<_CharT>:: | |
length(const char_type* __p) | |
{ | |
std::size_t __i = 0; | |
while (!eq(__p[__i], char_type())) | |
++__i; | |
return __i; | |
} | |
template<typename _CharT> | |
const typename char_traits<_CharT>::char_type* | |
char_traits<_CharT>:: | |
find(const char_type* __s, std::size_t __n, const char_type& __a) | |
{ | |
for (std::size_t __i = 0; __i < __n; ++__i) | |
if (eq(__s[__i], __a)) | |
return __s + __i; | |
return 0; | |
} | |
template<typename _CharT> | |
typename char_traits<_CharT>::char_type* | |
char_traits<_CharT>:: | |
move(char_type* __s1, const char_type* __s2, std::size_t __n) | |
{ | |
return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, | |
__n * sizeof(char_type))); | |
} | |
template<typename _CharT> | |
typename char_traits<_CharT>::char_type* | |
char_traits<_CharT>:: | |
copy(char_type* __s1, const char_type* __s2, std::size_t __n) | |
{ | |
// NB: Inline std::copy so no recursive dependencies. | |
std::copy(__s2, __s2 + __n, __s1); | |
return __s1; | |
} | |
template<typename _CharT> | |
typename char_traits<_CharT>::char_type* | |
char_traits<_CharT>:: | |
assign(char_type* __s, std::size_t __n, char_type __a) | |
{ | |
// NB: Inline std::fill_n so no recursive dependencies. | |
std::fill_n(__s, __n, __a); | |
return __s; | |
} | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// 21.1 | |
/** | |
* @brief Basis for explicit traits specializations. | |
* | |
* @note For any given actual character type, this definition is | |
* probably wrong. Since this is just a thin wrapper around | |
* __gnu_cxx::char_traits, it is possible to achieve a more | |
* appropriate definition by specializing __gnu_cxx::char_traits. | |
* | |
* See https://gcc.gnu.org/onlinedocs/libstdc++/manual/strings.html#strings.string.character_types | |
* for advice on how to make use of this class for @a unusual character | |
* types. Also, check out include/ext/pod_char_traits.h. | |
*/ | |
template<class _CharT> | |
struct char_traits : public __gnu_cxx::char_traits<_CharT> | |
{ }; | |
/// 21.1.3.1 char_traits specializations | |
template<> | |
struct char_traits<char> | |
{ | |
typedef char char_type; | |
typedef int int_type; | |
typedef streampos pos_type; | |
typedef streamoff off_type; | |
typedef mbstate_t state_type; | |
static void | |
assign(char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT | |
{ __c1 = __c2; } | |
static _GLIBCXX_CONSTEXPR bool | |
eq(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT | |
{ return __c1 == __c2; } | |
static _GLIBCXX_CONSTEXPR bool | |
lt(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT | |
{ | |
// LWG 467. | |
return (static_cast<unsigned char>(__c1) | |
< static_cast<unsigned char>(__c2)); | |
} | |
static int | |
compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return 0; | |
return __builtin_memcmp(__s1, __s2, __n); | |
} | |
static size_t | |
length(const char_type* __s) | |
{ return __builtin_strlen(__s); } | |
static const char_type* | |
find(const char_type* __s, size_t __n, const char_type& __a) | |
{ | |
if (__n == 0) | |
return 0; | |
return static_cast<const char_type*>(__builtin_memchr(__s, __a, __n)); | |
} | |
static char_type* | |
move(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return __s1; | |
return static_cast<char_type*>(__builtin_memmove(__s1, __s2, __n)); | |
} | |
static char_type* | |
copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return __s1; | |
return static_cast<char_type*>(__builtin_memcpy(__s1, __s2, __n)); | |
} | |
static char_type* | |
assign(char_type* __s, size_t __n, char_type __a) | |
{ | |
if (__n == 0) | |
return __s; | |
return static_cast<char_type*>(__builtin_memset(__s, __a, __n)); | |
} | |
static _GLIBCXX_CONSTEXPR char_type | |
to_char_type(const int_type& __c) _GLIBCXX_NOEXCEPT | |
{ return static_cast<char_type>(__c); } | |
// To keep both the byte 0xff and the eof symbol 0xffffffff | |
// from ending up as 0xffffffff. | |
static _GLIBCXX_CONSTEXPR int_type | |
to_int_type(const char_type& __c) _GLIBCXX_NOEXCEPT | |
{ return static_cast<int_type>(static_cast<unsigned char>(__c)); } | |
static _GLIBCXX_CONSTEXPR bool | |
eq_int_type(const int_type& __c1, const int_type& __c2) _GLIBCXX_NOEXCEPT | |
{ return __c1 == __c2; } | |
static _GLIBCXX_CONSTEXPR int_type | |
eof() _GLIBCXX_NOEXCEPT | |
{ return static_cast<int_type>(_GLIBCXX_STDIO_EOF); } | |
static _GLIBCXX_CONSTEXPR int_type | |
not_eof(const int_type& __c) _GLIBCXX_NOEXCEPT | |
{ return (__c == eof()) ? 0 : __c; } | |
}; | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
/// 21.1.3.2 char_traits specializations | |
template<> | |
struct char_traits<wchar_t> | |
{ | |
typedef wchar_t char_type; | |
typedef wint_t int_type; | |
typedef streamoff off_type; | |
typedef wstreampos pos_type; | |
typedef mbstate_t state_type; | |
static void | |
assign(char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT | |
{ __c1 = __c2; } | |
static _GLIBCXX_CONSTEXPR bool | |
eq(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT | |
{ return __c1 == __c2; } | |
static _GLIBCXX_CONSTEXPR bool | |
lt(const char_type& __c1, const char_type& __c2) _GLIBCXX_NOEXCEPT | |
{ return __c1 < __c2; } | |
static int | |
compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return 0; | |
return wmemcmp(__s1, __s2, __n); | |
} | |
static size_t | |
length(const char_type* __s) | |
{ return wcslen(__s); } | |
static const char_type* | |
find(const char_type* __s, size_t __n, const char_type& __a) | |
{ | |
if (__n == 0) | |
return 0; | |
return wmemchr(__s, __a, __n); | |
} | |
static char_type* | |
move(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return __s1; | |
return wmemmove(__s1, __s2, __n); | |
} | |
static char_type* | |
copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return __s1; | |
return wmemcpy(__s1, __s2, __n); | |
} | |
static char_type* | |
assign(char_type* __s, size_t __n, char_type __a) | |
{ | |
if (__n == 0) | |
return __s; | |
return wmemset(__s, __a, __n); | |
} | |
static _GLIBCXX_CONSTEXPR char_type | |
to_char_type(const int_type& __c) _GLIBCXX_NOEXCEPT | |
{ return char_type(__c); } | |
static _GLIBCXX_CONSTEXPR int_type | |
to_int_type(const char_type& __c) _GLIBCXX_NOEXCEPT | |
{ return int_type(__c); } | |
static _GLIBCXX_CONSTEXPR bool | |
eq_int_type(const int_type& __c1, const int_type& __c2) _GLIBCXX_NOEXCEPT | |
{ return __c1 == __c2; } | |
static _GLIBCXX_CONSTEXPR int_type | |
eof() _GLIBCXX_NOEXCEPT | |
{ return static_cast<int_type>(WEOF); } | |
static _GLIBCXX_CONSTEXPR int_type | |
not_eof(const int_type& __c) _GLIBCXX_NOEXCEPT | |
{ return eq_int_type(__c, eof()) ? 0 : __c; } | |
}; | |
#endif //_GLIBCXX_USE_WCHAR_T | |
# 413 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#if ((__cplusplus >= 201103L) \ | |
&& defined(_GLIBCXX_USE_C99_STDINT_TR1)) | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <cstdint> | |
#endif /* expanded by -frewrite-includes */ | |
# 420 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 1 3 | |
// <cstdint> -*- C++ -*- | |
// Copyright (C) 2007-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/cstdint | |
* This is a Standard C++ Library header. | |
*/ | |
#ifndef _GLIBCXX_CSTDINT | |
#define _GLIBCXX_CSTDINT 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
#if __cplusplus < 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <bits/c++0x_warning.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
#else | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
#if _GLIBCXX_HAVE_STDINT_H | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <stdint.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 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 | |
# 27 "/usr/include/stdint.h" 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 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 2 3 | |
#endif | |
# 43 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
#ifdef _GLIBCXX_USE_C99_STDINT_TR1 | |
namespace std | |
{ | |
using ::int8_t; | |
using ::int16_t; | |
using ::int32_t; | |
using ::int64_t; | |
using ::int_fast8_t; | |
using ::int_fast16_t; | |
using ::int_fast32_t; | |
using ::int_fast64_t; | |
using ::int_least8_t; | |
using ::int_least16_t; | |
using ::int_least32_t; | |
using ::int_least64_t; | |
using ::intmax_t; | |
using ::intptr_t; | |
using ::uint8_t; | |
using ::uint16_t; | |
using ::uint32_t; | |
using ::uint64_t; | |
using ::uint_fast8_t; | |
using ::uint_fast16_t; | |
using ::uint_fast32_t; | |
using ::uint_fast64_t; | |
using ::uint_least8_t; | |
using ::uint_least16_t; | |
using ::uint_least32_t; | |
using ::uint_least64_t; | |
using ::uintmax_t; | |
using ::uintptr_t; | |
} // namespace std | |
#endif // _GLIBCXX_USE_C99_STDINT_TR1 | |
# 86 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
#endif // C++11 | |
# 88 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
#endif // _GLIBCXX_CSTDINT | |
# 90 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cstdint" 3 | |
# 421 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 2 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
template<> | |
struct char_traits<char16_t> | |
{ | |
typedef char16_t char_type; | |
typedef uint_least16_t int_type; | |
typedef streamoff off_type; | |
typedef u16streampos pos_type; | |
typedef mbstate_t state_type; | |
static void | |
assign(char_type& __c1, const char_type& __c2) noexcept | |
{ __c1 = __c2; } | |
static constexpr bool | |
eq(const char_type& __c1, const char_type& __c2) noexcept | |
{ return __c1 == __c2; } | |
static constexpr bool | |
lt(const char_type& __c1, const char_type& __c2) noexcept | |
{ return __c1 < __c2; } | |
static int | |
compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
for (size_t __i = 0; __i < __n; ++__i) | |
if (lt(__s1[__i], __s2[__i])) | |
return -1; | |
else if (lt(__s2[__i], __s1[__i])) | |
return 1; | |
return 0; | |
} | |
static size_t | |
length(const char_type* __s) | |
{ | |
size_t __i = 0; | |
while (!eq(__s[__i], char_type())) | |
++__i; | |
return __i; | |
} | |
static const char_type* | |
find(const char_type* __s, size_t __n, const char_type& __a) | |
{ | |
for (size_t __i = 0; __i < __n; ++__i) | |
if (eq(__s[__i], __a)) | |
return __s + __i; | |
return 0; | |
} | |
static char_type* | |
move(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return __s1; | |
return (static_cast<char_type*> | |
(__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); | |
} | |
static char_type* | |
copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return __s1; | |
return (static_cast<char_type*> | |
(__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); | |
} | |
static char_type* | |
assign(char_type* __s, size_t __n, char_type __a) | |
{ | |
for (size_t __i = 0; __i < __n; ++__i) | |
assign(__s[__i], __a); | |
return __s; | |
} | |
static constexpr char_type | |
to_char_type(const int_type& __c) noexcept | |
{ return char_type(__c); } | |
static constexpr int_type | |
to_int_type(const char_type& __c) noexcept | |
{ return int_type(__c); } | |
static constexpr bool | |
eq_int_type(const int_type& __c1, const int_type& __c2) noexcept | |
{ return __c1 == __c2; } | |
static constexpr int_type | |
eof() noexcept | |
{ return static_cast<int_type>(-1); } | |
static constexpr int_type | |
not_eof(const int_type& __c) noexcept | |
{ return eq_int_type(__c, eof()) ? 0 : __c; } | |
}; | |
template<> | |
struct char_traits<char32_t> | |
{ | |
typedef char32_t char_type; | |
typedef uint_least32_t int_type; | |
typedef streamoff off_type; | |
typedef u32streampos pos_type; | |
typedef mbstate_t state_type; | |
static void | |
assign(char_type& __c1, const char_type& __c2) noexcept | |
{ __c1 = __c2; } | |
static constexpr bool | |
eq(const char_type& __c1, const char_type& __c2) noexcept | |
{ return __c1 == __c2; } | |
static constexpr bool | |
lt(const char_type& __c1, const char_type& __c2) noexcept | |
{ return __c1 < __c2; } | |
static int | |
compare(const char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
for (size_t __i = 0; __i < __n; ++__i) | |
if (lt(__s1[__i], __s2[__i])) | |
return -1; | |
else if (lt(__s2[__i], __s1[__i])) | |
return 1; | |
return 0; | |
} | |
static size_t | |
length(const char_type* __s) | |
{ | |
size_t __i = 0; | |
while (!eq(__s[__i], char_type())) | |
++__i; | |
return __i; | |
} | |
static const char_type* | |
find(const char_type* __s, size_t __n, const char_type& __a) | |
{ | |
for (size_t __i = 0; __i < __n; ++__i) | |
if (eq(__s[__i], __a)) | |
return __s + __i; | |
return 0; | |
} | |
static char_type* | |
move(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return __s1; | |
return (static_cast<char_type*> | |
(__builtin_memmove(__s1, __s2, __n * sizeof(char_type)))); | |
} | |
static char_type* | |
copy(char_type* __s1, const char_type* __s2, size_t __n) | |
{ | |
if (__n == 0) | |
return __s1; | |
return (static_cast<char_type*> | |
(__builtin_memcpy(__s1, __s2, __n * sizeof(char_type)))); | |
} | |
static char_type* | |
assign(char_type* __s, size_t __n, char_type __a) | |
{ | |
for (size_t __i = 0; __i < __n; ++__i) | |
assign(__s[__i], __a); | |
return __s; | |
} | |
static constexpr char_type | |
to_char_type(const int_type& __c) noexcept | |
{ return char_type(__c); } | |
static constexpr int_type | |
to_int_type(const char_type& __c) noexcept | |
{ return int_type(__c); } | |
static constexpr bool | |
eq_int_type(const int_type& __c1, const int_type& __c2) noexcept | |
{ return __c1 == __c2; } | |
static constexpr int_type | |
eof() noexcept | |
{ return static_cast<int_type>(-1); } | |
static constexpr int_type | |
not_eof(const int_type& __c) noexcept | |
{ return eq_int_type(__c, eof()) ? 0 : __c; } | |
}; | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif | |
# 624 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 3 | |
#endif // _CHAR_TRAITS_H | |
# 626 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/char_traits.h" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/allocator.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 1 3 | |
// Allocators -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* Copyright (c) 1996-1997 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file bits/allocator.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{memory} | |
*/ | |
#ifndef _ALLOCATOR_H | |
#define _ALLOCATOR_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++allocator.h> // Define the base class to std::allocator. | |
#endif /* expanded by -frewrite-includes */ | |
# 46 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++allocator.h" 1 3 | |
// Base to std::allocator -*- C++ -*- | |
// Copyright (C) 2004-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/c++allocator.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{memory} | |
*/ | |
#ifndef _GLIBCXX_CXX_ALLOCATOR_H | |
#define _GLIBCXX_CXX_ALLOCATOR_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <ext/new_allocator.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++allocator.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 1 3 | |
// Allocator that wraps operator new -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file ext/new_allocator.h | |
* This file is a GNU extension to the Standard C++ Library. | |
*/ | |
#ifndef _NEW_ALLOCATOR_H | |
#define _NEW_ALLOCATOR_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 32 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <new> | |
#endif /* expanded by -frewrite-includes */ | |
# 33 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/functexcept.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/move.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <type_traits> | |
#endif /* expanded by -frewrite-includes */ | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
#endif | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
using std::size_t; | |
using std::ptrdiff_t; | |
/** | |
* @brief An allocator that uses global new, as per [20.4]. | |
* @ingroup allocators | |
* | |
* This is precisely the allocator defined in the C++ Standard. | |
* - all allocation calls operator new | |
* - all deallocation calls operator delete | |
* | |
* @tparam _Tp Type of allocated object. | |
*/ | |
template<typename _Tp> | |
class new_allocator | |
{ | |
public: | |
typedef size_t size_type; | |
typedef ptrdiff_t difference_type; | |
typedef _Tp* pointer; | |
typedef const _Tp* const_pointer; | |
typedef _Tp& reference; | |
typedef const _Tp& const_reference; | |
typedef _Tp value_type; | |
template<typename _Tp1> | |
struct rebind | |
{ typedef new_allocator<_Tp1> other; }; | |
#if __cplusplus >= 201103L | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2103. propagate_on_container_move_assignment | |
typedef std::true_type propagate_on_container_move_assignment; | |
#endif | |
# 78 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
new_allocator() _GLIBCXX_USE_NOEXCEPT { } | |
new_allocator(const new_allocator&) _GLIBCXX_USE_NOEXCEPT { } | |
template<typename _Tp1> | |
new_allocator(const new_allocator<_Tp1>&) _GLIBCXX_USE_NOEXCEPT { } | |
~new_allocator() _GLIBCXX_USE_NOEXCEPT { } | |
pointer | |
address(reference __x) const _GLIBCXX_NOEXCEPT | |
{ return std::__addressof(__x); } | |
const_pointer | |
address(const_reference __x) const _GLIBCXX_NOEXCEPT | |
{ return std::__addressof(__x); } | |
// NB: __n is permitted to be 0. The C++ standard says nothing | |
// about what the return value is when __n == 0. | |
pointer | |
allocate(size_type __n, const void* = 0) | |
{ | |
if (__n > this->max_size()) | |
std::__throw_bad_alloc(); | |
#if __cpp_aligned_new | |
if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__) | |
{ | |
std::align_val_t __al = std::align_val_t(alignof(_Tp)); | |
return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp), __al)); | |
} | |
#endif | |
# 111 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp))); | |
} | |
// __p is not permitted to be a null pointer. | |
void | |
deallocate(pointer __p, size_type) | |
{ | |
#if __cpp_aligned_new | |
if (alignof(_Tp) > __STDCPP_DEFAULT_NEW_ALIGNMENT__) | |
{ | |
::operator delete(__p, std::align_val_t(alignof(_Tp))); | |
return; | |
} | |
#endif | |
# 125 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
::operator delete(__p); | |
} | |
size_type | |
max_size() const _GLIBCXX_USE_NOEXCEPT | |
{ return size_t(-1) / sizeof(_Tp); } | |
#if __cplusplus >= 201103L | |
template<typename _Up, typename... _Args> | |
void | |
construct(_Up* __p, _Args&&... __args) | |
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } | |
template<typename _Up> | |
void | |
destroy(_Up* __p) { __p->~_Up(); } | |
#else | |
# 142 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 402. wrong new expression in [some_] allocator::construct | |
void | |
construct(pointer __p, const _Tp& __val) | |
{ ::new((void *)__p) _Tp(__val); } | |
void | |
destroy(pointer __p) { __p->~_Tp(); } | |
#endif | |
# 151 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
}; | |
template<typename _Tp> | |
inline bool | |
operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&) | |
{ return true; } | |
template<typename _Tp> | |
inline bool | |
operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&) | |
{ return false; } | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif | |
# 167 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/new_allocator.h" 3 | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++allocator.h" 2 3 | |
#if __cplusplus >= 201103L | |
namespace std | |
{ | |
/** | |
* @brief An alias to the base class for std::allocator. | |
* @ingroup allocators | |
* | |
* Used to set the std::allocator base class to | |
* __gnu_cxx::new_allocator. | |
* | |
* @tparam _Tp Type of allocated object. | |
*/ | |
template<typename _Tp> | |
using __allocator_base = __gnu_cxx::new_allocator<_Tp>; | |
} | |
#else | |
# 51 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++allocator.h" 3 | |
// Define new_allocator as the base class to std::allocator. | |
# define __allocator_base __gnu_cxx::new_allocator | |
#endif | |
# 54 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++allocator.h" 3 | |
#endif | |
# 56 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++allocator.h" 3 | |
# 47 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/memoryfwd.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 47 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
# 48 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <type_traits> | |
#endif /* expanded by -frewrite-includes */ | |
# 49 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
# 50 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
#endif | |
# 51 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
#define __cpp_lib_incomplete_container_elements 201505 | |
#if __cplusplus >= 201103L | |
# define __cpp_lib_allocator_is_always_equal 201411 | |
#endif | |
# 56 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @addtogroup allocators | |
* @{ | |
*/ | |
/// allocator<void> specialization. | |
template<> | |
class allocator<void> | |
{ | |
public: | |
typedef size_t size_type; | |
typedef ptrdiff_t difference_type; | |
typedef void* pointer; | |
typedef const void* const_pointer; | |
typedef void value_type; | |
template<typename _Tp1> | |
struct rebind | |
{ typedef allocator<_Tp1> other; }; | |
#if __cplusplus >= 201103L | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2103. std::allocator propagate_on_container_move_assignment | |
typedef true_type propagate_on_container_move_assignment; | |
typedef true_type is_always_equal; | |
template<typename _Up, typename... _Args> | |
void | |
construct(_Up* __p, _Args&&... __args) | |
{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } | |
template<typename _Up> | |
void | |
destroy(_Up* __p) { __p->~_Up(); } | |
#endif | |
# 97 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
}; | |
/** | |
* @brief The @a standard allocator, as per [20.4]. | |
* | |
* See https://gcc.gnu.org/onlinedocs/libstdc++/manual/memory.html#std.util.memory.allocator | |
* for further details. | |
* | |
* @tparam _Tp Type of allocated object. | |
*/ | |
template<typename _Tp> | |
class allocator: public __allocator_base<_Tp> | |
{ | |
public: | |
typedef size_t size_type; | |
typedef ptrdiff_t difference_type; | |
typedef _Tp* pointer; | |
typedef const _Tp* const_pointer; | |
typedef _Tp& reference; | |
typedef const _Tp& const_reference; | |
typedef _Tp value_type; | |
template<typename _Tp1> | |
struct rebind | |
{ typedef allocator<_Tp1> other; }; | |
#if __cplusplus >= 201103L | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 2103. std::allocator propagate_on_container_move_assignment | |
typedef true_type propagate_on_container_move_assignment; | |
typedef true_type is_always_equal; | |
#endif | |
# 130 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
allocator() throw() { } | |
allocator(const allocator& __a) throw() | |
: __allocator_base<_Tp>(__a) { } | |
template<typename _Tp1> | |
allocator(const allocator<_Tp1>&) throw() { } | |
~allocator() throw() { } | |
// Inherit everything else. | |
}; | |
template<typename _T1, typename _T2> | |
inline bool | |
operator==(const allocator<_T1>&, const allocator<_T2>&) | |
_GLIBCXX_USE_NOEXCEPT | |
{ return true; } | |
template<typename _Tp> | |
inline bool | |
operator==(const allocator<_Tp>&, const allocator<_Tp>&) | |
_GLIBCXX_USE_NOEXCEPT | |
{ return true; } | |
template<typename _T1, typename _T2> | |
inline bool | |
operator!=(const allocator<_T1>&, const allocator<_T2>&) | |
_GLIBCXX_USE_NOEXCEPT | |
{ return false; } | |
template<typename _Tp> | |
inline bool | |
operator!=(const allocator<_Tp>&, const allocator<_Tp>&) | |
_GLIBCXX_USE_NOEXCEPT | |
{ return false; } | |
/// @} group allocator | |
// Inhibit implicit instantiations for required instantiations, | |
// which are defined via explicit instantiations elsewhere. | |
#if _GLIBCXX_EXTERN_TEMPLATE | |
extern template class allocator<char>; | |
extern template class allocator<wchar_t>; | |
#endif | |
# 176 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
// Undefine. | |
#undef __allocator_base | |
// To implement Option 3 of DR 431. | |
template<typename _Alloc, bool = __is_empty(_Alloc)> | |
struct __alloc_swap | |
{ static void _S_do_it(_Alloc&, _Alloc&) _GLIBCXX_NOEXCEPT { } }; | |
template<typename _Alloc> | |
struct __alloc_swap<_Alloc, false> | |
{ | |
static void | |
_S_do_it(_Alloc& __one, _Alloc& __two) _GLIBCXX_NOEXCEPT | |
{ | |
// Precondition: swappable allocators. | |
if (__one != __two) | |
swap(__one, __two); | |
} | |
}; | |
// Optimize for stateless allocators. | |
template<typename _Alloc, bool = __is_empty(_Alloc)> | |
struct __alloc_neq | |
{ | |
static bool | |
_S_do_it(const _Alloc&, const _Alloc&) | |
{ return false; } | |
}; | |
template<typename _Alloc> | |
struct __alloc_neq<_Alloc, false> | |
{ | |
static bool | |
_S_do_it(const _Alloc& __one, const _Alloc& __two) | |
{ return __one != __two; } | |
}; | |
#if __cplusplus >= 201103L | |
template<typename _Tp, bool | |
= __or_<is_copy_constructible<typename _Tp::value_type>, | |
is_nothrow_move_constructible<typename _Tp::value_type>>::value> | |
struct __shrink_to_fit_aux | |
{ static bool _S_do_it(_Tp&) noexcept { return false; } }; | |
template<typename _Tp> | |
struct __shrink_to_fit_aux<_Tp, true> | |
{ | |
static bool | |
_S_do_it(_Tp& __c) noexcept | |
{ | |
#if __cpp_exceptions | |
try | |
{ | |
_Tp(__make_move_if_noexcept_iterator(__c.begin()), | |
__make_move_if_noexcept_iterator(__c.end()), | |
__c.get_allocator()).swap(__c); | |
return true; | |
} | |
catch(...) | |
{ return false; } | |
#else | |
# 238 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
return false; | |
#endif | |
# 240 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
} | |
}; | |
#endif | |
# 243 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace std | |
#endif | |
# 248 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/allocator.h" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/cpp_type_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 43 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/localefwd.h> // For operators >>, <<, and getline. | |
#endif /* expanded by -frewrite-includes */ | |
# 43 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 1 3 | |
// <locale> Forward declarations -*- C++ -*- | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/localefwd.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{locale} | |
*/ | |
// | |
// ISO C++ 14882: 22.1 Locales | |
// | |
#ifndef _LOCALE_FWD_H | |
#define _LOCALE_FWD_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++locale.h> // Defines __c_locale, config-specific include | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 1 3 | |
// Wrapper for underlying C-language localization -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/c++locale.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{locale} | |
*/ | |
// | |
// ISO C++ 14882: 22.8 Standard locale categories. | |
// | |
// Written by Benjamin Kosnik <[email protected]> | |
#ifndef _GLIBCXX_CXX_LOCALE_H | |
#define _GLIBCXX_CXX_LOCALE_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <clocale> | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/clocale" 1 3 | |
// -*- C++ -*- forwarding header. | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file clocale | |
* This is a Standard C++ Library file. You should @c \#include this file | |
* in your programs, rather than any of the @a *.h implementation files. | |
* | |
* This is the C++ version of the Standard C Library header @c locale.h, | |
* and its contents are (mostly) the same as that header, but are all | |
* contained in the namespace @c std (except for names which are defined | |
* as macros in C). | |
*/ | |
// | |
// ISO C++ 14882: 18.2.2 Implementation properties: C library | |
// | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/clocale" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/clocale" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/clocale" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <locale.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/clocale" 3 | |
# 1 "/usr/include/locale.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.11 Localization <locale.h> | |
*/ | |
#ifndef _LOCALE_H | |
#define _LOCALE_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <features.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 25 "/usr/include/locale.h" 3 4 | |
# 26 "/usr/include/locale.h" 3 4 | |
#define __need_NULL | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <stddef.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 28 "/usr/include/locale.h" 3 4 | |
# 1 "/usr/local/lib/clang/5.0.0/include/stddef.h" 1 3 4 | |
/*===---- 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 4 | |
#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 4 | |
#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 4 | |
typedef __PTRDIFF_TYPE__ ptrdiff_t; | |
#endif | |
# 53 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_ptrdiff_t | |
#endif /* defined(__need_ptrdiff_t) */ | |
# 55 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
typedef __SIZE_TYPE__ size_t; | |
#endif | |
# 64 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_size_t | |
#endif /*defined(__need_size_t) */ | |
# 66 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
typedef __SIZE_TYPE__ rsize_t; | |
#endif | |
# 78 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#endif /* defined(__need_STDDEF_H_misc) */ | |
# 79 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
#endif | |
# 90 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
typedef __WCHAR_TYPE__ wchar_t; | |
#endif | |
# 92 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#endif | |
# 93 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_wchar_t | |
#endif /* defined(__need_wchar_t) */ | |
# 95 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
# define NULL 0 | |
# endif | |
# 104 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#else | |
# 105 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
# define NULL ((void*)0) | |
#endif | |
# 107 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
#endif | |
# 113 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_NULL | |
#endif /* defined(__need_NULL) */ | |
# 115 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
# 119 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#endif | |
# 120 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#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 4 | |
/* 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 4 | |
typedef __WINT_TYPE__ wint_t; | |
#endif | |
# 134 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#undef __need_wint_t | |
#endif /* __need_wint_t */ | |
# 136 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
#endif | |
# 138 "/usr/local/lib/clang/5.0.0/include/stddef.h" 3 4 | |
# 29 "/usr/include/locale.h" 2 3 4 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/locale.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 29 "/usr/include/locale.h" 3 4 | |
# 1 "/usr/include/x86_64-linux-gnu/bits/locale.h" 1 3 4 | |
/* Definition of locale category symbol values. | |
Copyright (C) 2001-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 _LOCALE_H && !defined _LANGINFO_H | |
# error "Never use <bits/locale.h> directly; include <locale.h> instead." | |
#endif | |
# 22 "/usr/include/x86_64-linux-gnu/bits/locale.h" 3 4 | |
#ifndef _BITS_LOCALE_H | |
#define _BITS_LOCALE_H 1 | |
#define __LC_CTYPE 0 | |
#define __LC_NUMERIC 1 | |
#define __LC_TIME 2 | |
#define __LC_COLLATE 3 | |
#define __LC_MONETARY 4 | |
#define __LC_MESSAGES 5 | |
#define __LC_ALL 6 | |
#define __LC_PAPER 7 | |
#define __LC_NAME 8 | |
#define __LC_ADDRESS 9 | |
#define __LC_TELEPHONE 10 | |
#define __LC_MEASUREMENT 11 | |
#define __LC_IDENTIFICATION 12 | |
#endif /* bits/locale.h */ | |
# 41 "/usr/include/x86_64-linux-gnu/bits/locale.h" 3 4 | |
# 30 "/usr/include/locale.h" 2 3 4 | |
__BEGIN_DECLS | |
/* These are the possibilities for the first argument to setlocale. | |
The code assumes that the lowest LC_* symbol has the value zero. */ | |
#define LC_CTYPE __LC_CTYPE | |
#define LC_NUMERIC __LC_NUMERIC | |
#define LC_TIME __LC_TIME | |
#define LC_COLLATE __LC_COLLATE | |
#define LC_MONETARY __LC_MONETARY | |
#define LC_MESSAGES __LC_MESSAGES | |
#define LC_ALL __LC_ALL | |
#define LC_PAPER __LC_PAPER | |
#define LC_NAME __LC_NAME | |
#define LC_ADDRESS __LC_ADDRESS | |
#define LC_TELEPHONE __LC_TELEPHONE | |
#define LC_MEASUREMENT __LC_MEASUREMENT | |
#define LC_IDENTIFICATION __LC_IDENTIFICATION | |
__BEGIN_NAMESPACE_STD | |
/* Structure giving information about numeric and monetary notation. */ | |
struct lconv | |
{ | |
/* Numeric (non-monetary) information. */ | |
char *decimal_point; /* Decimal point character. */ | |
char *thousands_sep; /* Thousands separator. */ | |
/* Each element is the number of digits in each group; | |
elements with higher indices are farther left. | |
An element with value CHAR_MAX means that no further grouping is done. | |
An element with value 0 means that the previous element is used | |
for all groups farther left. */ | |
char *grouping; | |
/* Monetary information. */ | |
/* First three chars are a currency symbol from ISO 4217. | |
Fourth char is the separator. Fifth char is '\0'. */ | |
char *int_curr_symbol; | |
char *currency_symbol; /* Local currency symbol. */ | |
char *mon_decimal_point; /* Decimal point character. */ | |
char *mon_thousands_sep; /* Thousands separator. */ | |
char *mon_grouping; /* Like `grouping' element (above). */ | |
char *positive_sign; /* Sign for positive values. */ | |
char *negative_sign; /* Sign for negative values. */ | |
char int_frac_digits; /* Int'l fractional digits. */ | |
char frac_digits; /* Local fractional digits. */ | |
/* 1 if currency_symbol precedes a positive value, 0 if succeeds. */ | |
char p_cs_precedes; | |
/* 1 iff a space separates currency_symbol from a positive value. */ | |
char p_sep_by_space; | |
/* 1 if currency_symbol precedes a negative value, 0 if succeeds. */ | |
char n_cs_precedes; | |
/* 1 iff a space separates currency_symbol from a negative value. */ | |
char n_sep_by_space; | |
/* Positive and negative sign positions: | |
0 Parentheses surround the quantity and currency_symbol. | |
1 The sign string precedes the quantity and currency_symbol. | |
2 The sign string follows the quantity and currency_symbol. | |
3 The sign string immediately precedes the currency_symbol. | |
4 The sign string immediately follows the currency_symbol. */ | |
char p_sign_posn; | |
char n_sign_posn; | |
#ifdef __USE_ISOC99 | |
/* 1 if int_curr_symbol precedes a positive value, 0 if succeeds. */ | |
char int_p_cs_precedes; | |
/* 1 iff a space separates int_curr_symbol from a positive value. */ | |
char int_p_sep_by_space; | |
/* 1 if int_curr_symbol precedes a negative value, 0 if succeeds. */ | |
char int_n_cs_precedes; | |
/* 1 iff a space separates int_curr_symbol from a negative value. */ | |
char int_n_sep_by_space; | |
/* Positive and negative sign positions: | |
0 Parentheses surround the quantity and int_curr_symbol. | |
1 The sign string precedes the quantity and int_curr_symbol. | |
2 The sign string follows the quantity and int_curr_symbol. | |
3 The sign string immediately precedes the int_curr_symbol. | |
4 The sign string immediately follows the int_curr_symbol. */ | |
char int_p_sign_posn; | |
char int_n_sign_posn; | |
#else | |
# 113 "/usr/include/locale.h" 3 4 | |
char __int_p_cs_precedes; | |
char __int_p_sep_by_space; | |
char __int_n_cs_precedes; | |
char __int_n_sep_by_space; | |
char __int_p_sign_posn; | |
char __int_n_sign_posn; | |
#endif | |
# 120 "/usr/include/locale.h" 3 4 | |
}; | |
/* Set and/or return the current locale. */ | |
extern char *setlocale (int __category, const char *__locale) __THROW; | |
/* Return the numeric/monetary information for the current locale. */ | |
extern struct lconv *localeconv (void) __THROW; | |
__END_NAMESPACE_STD | |
#ifdef __USE_XOPEN2K8 | |
/* 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. */ | |
/* Get locale datatype definition. */ | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <xlocale.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 145 "/usr/include/locale.h" 3 4 | |
# 146 "/usr/include/locale.h" 3 4 | |
/* Return a reference to a data structure representing a set of locale | |
datasets. Unlike for the CATEGORY parameter for `setlocale' the | |
CATEGORY_MASK parameter here uses a single bit for each category, | |
made by OR'ing together LC_*_MASK bits above. */ | |
extern __locale_t newlocale (int __category_mask, const char *__locale, | |
__locale_t __base) __THROW; | |
/* These are the bits that can be set in the CATEGORY_MASK argument to | |
`newlocale'. In the GNU implementation, LC_FOO_MASK has the value | |
of (1 << LC_FOO), but this is not a part of the interface that | |
callers can assume will be true. */ | |
# define LC_CTYPE_MASK (1 << __LC_CTYPE) | |
# define LC_NUMERIC_MASK (1 << __LC_NUMERIC) | |
# define LC_TIME_MASK (1 << __LC_TIME) | |
# define LC_COLLATE_MASK (1 << __LC_COLLATE) | |
# define LC_MONETARY_MASK (1 << __LC_MONETARY) | |
# define LC_MESSAGES_MASK (1 << __LC_MESSAGES) | |
# define LC_PAPER_MASK (1 << __LC_PAPER) | |
# define LC_NAME_MASK (1 << __LC_NAME) | |
# define LC_ADDRESS_MASK (1 << __LC_ADDRESS) | |
# define LC_TELEPHONE_MASK (1 << __LC_TELEPHONE) | |
# define LC_MEASUREMENT_MASK (1 << __LC_MEASUREMENT) | |
# define LC_IDENTIFICATION_MASK (1 << __LC_IDENTIFICATION) | |
# define LC_ALL_MASK (LC_CTYPE_MASK \ | |
| LC_NUMERIC_MASK \ | |
| LC_TIME_MASK \ | |
| LC_COLLATE_MASK \ | |
| LC_MONETARY_MASK \ | |
| LC_MESSAGES_MASK \ | |
| LC_PAPER_MASK \ | |
| LC_NAME_MASK \ | |
| LC_ADDRESS_MASK \ | |
| LC_TELEPHONE_MASK \ | |
| LC_MEASUREMENT_MASK \ | |
| LC_IDENTIFICATION_MASK \ | |
) | |
/* Return a duplicate of the set of locale in DATASET. All usage | |
counters are increased if necessary. */ | |
extern __locale_t duplocale (__locale_t __dataset) __THROW; | |
/* Free the data associated with a locale dataset previously returned | |
by a call to `setlocale_r'. */ | |
extern void freelocale (__locale_t __dataset) __THROW; | |
/* Switch the current thread's locale to DATASET. | |
If DATASET is null, instead just return the current setting. | |
The special value LC_GLOBAL_LOCALE is the initial setting | |
for all threads and can also be installed any time, meaning | |
the thread uses the global settings controlled by `setlocale'. */ | |
extern __locale_t uselocale (__locale_t __dataset) __THROW; | |
/* This value can be passed to `uselocale' and may be returned by it. | |
Passing this value to any other function has undefined behavior. */ | |
# define LC_GLOBAL_LOCALE ((__locale_t) -1L) | |
#endif | |
# 204 "/usr/include/locale.h" 3 4 | |
__END_DECLS | |
#endif /* locale.h */ | |
# 208 "/usr/include/locale.h" 3 4 | |
# 43 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/clocale" 2 3 | |
#ifndef _GLIBCXX_CLOCALE | |
#define _GLIBCXX_CLOCALE 1 | |
// Get rid of those macros defined in <locale.h> in lieu of real functions. | |
#undef setlocale | |
#undef localeconv | |
namespace std | |
{ | |
using ::lconv; | |
using ::setlocale; | |
using ::localeconv; | |
} // namespace std | |
#endif | |
# 59 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/clocale" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3 | |
#define _GLIBCXX_C_LOCALE_GNU 1 | |
#define _GLIBCXX_NUM_CATEGORIES 6 | |
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) | |
namespace __gnu_cxx _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
extern "C" __typeof(uselocale) __uselocale; | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif | |
# 57 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
typedef __locale_t __c_locale; | |
// Convert numeric value of type double and long double to string and | |
// return length of string. If vsnprintf is available use it, otherwise | |
// fall back to the unsafe vsprintf which, in general, can be dangerous | |
// and should be avoided. | |
inline int | |
__convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)), | |
char* __out, | |
const int __size __attribute__ ((__unused__)), | |
const char* __fmt, ...) | |
{ | |
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) | |
__c_locale __old = __gnu_cxx::__uselocale(__cloc); | |
#else | |
# 77 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
char* __old = std::setlocale(LC_NUMERIC, 0); | |
char* __sav = 0; | |
if (__builtin_strcmp(__old, "C")) | |
{ | |
const size_t __len = __builtin_strlen(__old) + 1; | |
__sav = new char[__len]; | |
__builtin_memcpy(__sav, __old, __len); | |
std::setlocale(LC_NUMERIC, "C"); | |
} | |
#endif | |
# 87 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
__builtin_va_list __args; | |
__builtin_va_start(__args, __fmt); | |
#if _GLIBCXX_USE_C99_STDIO | |
const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args); | |
#else | |
# 94 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
const int __ret = __builtin_vsprintf(__out, __fmt, __args); | |
#endif | |
# 96 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
__builtin_va_end(__args); | |
#if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) | |
__gnu_cxx::__uselocale(__old); | |
#else | |
# 102 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
if (__sav) | |
{ | |
std::setlocale(LC_NUMERIC, __sav); | |
delete [] __sav; | |
} | |
#endif | |
# 108 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
return __ret; | |
} | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif | |
# 115 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/x86_64-pc-linux-gnu/bits/c++locale.h" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <iosfwd> // For ostreambuf_iterator, istreambuf_iterator | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 1 3 | |
// <iosfwd> Forward declarations -*- C++ -*- | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/iosfwd | |
* This is a Standard C++ Library header. | |
*/ | |
// | |
// ISO C++ 14882: 27.2 Forward declarations | |
// | |
#ifndef _GLIBCXX_IOSFWD | |
#define _GLIBCXX_IOSFWD 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stringfwd.h> // For string forward declarations. | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/postypes.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @defgroup io I/O | |
* | |
* Nearly all of the I/O classes are parameterized on the type of | |
* characters they read and write. (The major exception is ios_base at | |
* the top of the hierarchy.) This is a change from pre-Standard | |
* streams, which were not templates. | |
* | |
* For ease of use and compatibility, all of the basic_* I/O-related | |
* classes are given typedef names for both of the builtin character | |
* widths (wide and narrow). The typedefs are the same as the | |
* pre-Standard names, for example: | |
* | |
* @code | |
* typedef basic_ifstream<char> ifstream; | |
* @endcode | |
* | |
* Because properly forward-declaring these classes can be difficult, you | |
* should not do it yourself. Instead, include the <iosfwd> | |
* header, which contains only declarations of all the I/O classes as | |
* well as the typedefs. Trying to forward-declare the typedefs | |
* themselves (e.g., <code>class ostream;</code>) is not valid ISO C++. | |
* | |
* For more specific declarations, see | |
* https://gcc.gnu.org/onlinedocs/libstdc++/manual/io.html#std.io.objects | |
* | |
* @{ | |
*/ | |
class ios_base; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_ios; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_streambuf; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_istream; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_ostream; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_iostream; | |
_GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
template<typename _CharT, typename _Traits = char_traits<_CharT>, | |
typename _Alloc = allocator<_CharT> > | |
class basic_stringbuf; | |
template<typename _CharT, typename _Traits = char_traits<_CharT>, | |
typename _Alloc = allocator<_CharT> > | |
class basic_istringstream; | |
template<typename _CharT, typename _Traits = char_traits<_CharT>, | |
typename _Alloc = allocator<_CharT> > | |
class basic_ostringstream; | |
template<typename _CharT, typename _Traits = char_traits<_CharT>, | |
typename _Alloc = allocator<_CharT> > | |
class basic_stringstream; | |
_GLIBCXX_END_NAMESPACE_CXX11 | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_filebuf; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_ifstream; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_ofstream; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class basic_fstream; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class istreambuf_iterator; | |
template<typename _CharT, typename _Traits = char_traits<_CharT> > | |
class ostreambuf_iterator; | |
/// Base class for @c char streams. | |
typedef basic_ios<char> ios; | |
/// Base class for @c char buffers. | |
typedef basic_streambuf<char> streambuf; | |
/// Base class for @c char input streams. | |
typedef basic_istream<char> istream; | |
/// Base class for @c char output streams. | |
typedef basic_ostream<char> ostream; | |
/// Base class for @c char mixed input and output streams. | |
typedef basic_iostream<char> iostream; | |
/// Class for @c char memory buffers. | |
typedef basic_stringbuf<char> stringbuf; | |
/// Class for @c char input memory streams. | |
typedef basic_istringstream<char> istringstream; | |
/// Class for @c char output memory streams. | |
typedef basic_ostringstream<char> ostringstream; | |
/// Class for @c char mixed input and output memory streams. | |
typedef basic_stringstream<char> stringstream; | |
/// Class for @c char file buffers. | |
typedef basic_filebuf<char> filebuf; | |
/// Class for @c char input file streams. | |
typedef basic_ifstream<char> ifstream; | |
/// Class for @c char output file streams. | |
typedef basic_ofstream<char> ofstream; | |
/// Class for @c char mixed input and output file streams. | |
typedef basic_fstream<char> fstream; | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
/// Base class for @c wchar_t streams. | |
typedef basic_ios<wchar_t> wios; | |
/// Base class for @c wchar_t buffers. | |
typedef basic_streambuf<wchar_t> wstreambuf; | |
/// Base class for @c wchar_t input streams. | |
typedef basic_istream<wchar_t> wistream; | |
/// Base class for @c wchar_t output streams. | |
typedef basic_ostream<wchar_t> wostream; | |
/// Base class for @c wchar_t mixed input and output streams. | |
typedef basic_iostream<wchar_t> wiostream; | |
/// Class for @c wchar_t memory buffers. | |
typedef basic_stringbuf<wchar_t> wstringbuf; | |
/// Class for @c wchar_t input memory streams. | |
typedef basic_istringstream<wchar_t> wistringstream; | |
/// Class for @c wchar_t output memory streams. | |
typedef basic_ostringstream<wchar_t> wostringstream; | |
/// Class for @c wchar_t mixed input and output memory streams. | |
typedef basic_stringstream<wchar_t> wstringstream; | |
/// Class for @c wchar_t file buffers. | |
typedef basic_filebuf<wchar_t> wfilebuf; | |
/// Class for @c wchar_t input file streams. | |
typedef basic_ifstream<wchar_t> wifstream; | |
/// Class for @c wchar_t output file streams. | |
typedef basic_ofstream<wchar_t> wofstream; | |
/// Class for @c wchar_t mixed input and output file streams. | |
typedef basic_fstream<wchar_t> wfstream; | |
#endif | |
# 210 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
/** @} */ | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif /* _GLIBCXX_IOSFWD */ | |
# 216 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/iosfwd" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <cctype> | |
#endif /* expanded by -frewrite-includes */ | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 1 3 | |
// -*- C++ -*- forwarding header. | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file include/cctype | |
* This is a Standard C++ Library file. You should @c \#include this file | |
* in your programs, rather than any of the @a *.h implementation files. | |
* | |
* This is the C++ version of the Standard C Library header @c ctype.h, | |
* and its contents are (mostly) the same as that header, but are all | |
* contained in the namespace @c std (except for names which are defined | |
* as macros in C). | |
*/ | |
// | |
// ISO C++ 14882: <ccytpe> | |
// | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 40 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/c++config.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 41 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 3 | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <ctype.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 42 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 3 | |
# 1 "/usr/include/ctype.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.4: Character handling <ctype.h> | |
*/ | |
#ifndef _CTYPE_H | |
#define _CTYPE_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <features.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 25 "/usr/include/ctype.h" 3 4 | |
# 26 "/usr/include/ctype.h" 3 4 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/types.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 26 "/usr/include/ctype.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 | |
# 27 "/usr/include/ctype.h" 2 3 4 | |
__BEGIN_DECLS | |
#ifndef _ISbit | |
/* These are all the characteristics of characters. | |
If there get to be more than 16 distinct characteristics, | |
many things must be changed that use `unsigned short int's. | |
The characteristics are stored always in network byte order (big | |
endian). We define the bit value interpretations here dependent on the | |
machine's byte order. */ | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <endian.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/include/ctype.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 | |
# 28 "/usr/include/x86_64-linux-gnu/bits/byteswap.h" 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 | |
# 40 "/usr/include/ctype.h" 2 3 4 | |
# if __BYTE_ORDER == __BIG_ENDIAN | |
# define _ISbit(bit) (1 << (bit)) | |
# else /* __BYTE_ORDER == __LITTLE_ENDIAN */ | |
# 43 "/usr/include/ctype.h" 3 4 | |
# define _ISbit(bit) ((bit) < 8 ? ((1 << (bit)) << 8) : ((1 << (bit)) >> 8)) | |
# endif | |
# 45 "/usr/include/ctype.h" 3 4 | |
enum | |
{ | |
_ISupper = _ISbit (0), /* UPPERCASE. */ | |
_ISlower = _ISbit (1), /* lowercase. */ | |
_ISalpha = _ISbit (2), /* Alphabetic. */ | |
_ISdigit = _ISbit (3), /* Numeric. */ | |
_ISxdigit = _ISbit (4), /* Hexadecimal numeric. */ | |
_ISspace = _ISbit (5), /* Whitespace. */ | |
_ISprint = _ISbit (6), /* Printing. */ | |
_ISgraph = _ISbit (7), /* Graphical. */ | |
_ISblank = _ISbit (8), /* Blank (usually SPC and TAB). */ | |
_IScntrl = _ISbit (9), /* Control character. */ | |
_ISpunct = _ISbit (10), /* Punctuation. */ | |
_ISalnum = _ISbit (11) /* Alphanumeric. */ | |
}; | |
#endif /* ! _ISbit */ | |
# 62 "/usr/include/ctype.h" 3 4 | |
/* These are defined in ctype-info.c. | |
The declarations here must match those in localeinfo.h. | |
In the thread-specific locale model (see `uselocale' in <locale.h>) | |
we cannot use global variables for these as was done in the past. | |
Instead, the following accessor functions return the address of | |
each variable, which is local to the current thread if multithreaded. | |
These point into arrays of 384, so they can be indexed by any `unsigned | |
char' value [0,255]; by EOF (-1); or by any `signed char' value | |
[-128,-1). ISO C requires that the ctype functions work for `unsigned | |
char' values and for EOF; we also support negative `signed char' values | |
for broken old programs. The case conversion arrays are of `int's | |
rather than `unsigned char's because tolower (EOF) must be EOF, which | |
doesn't fit into an `unsigned char'. But today more important is that | |
the arrays are also used for multi-byte character sets. */ | |
extern const unsigned short int **__ctype_b_loc (void) | |
__THROW __attribute__ ((__const__)); | |
extern const __int32_t **__ctype_tolower_loc (void) | |
__THROW __attribute__ ((__const__)); | |
extern const __int32_t **__ctype_toupper_loc (void) | |
__THROW __attribute__ ((__const__)); | |
#ifndef __cplusplus | |
# define __isctype(c, type) \ | |
((*__ctype_b_loc ())[(int) (c)] & (unsigned short int) type) | |
#elif defined __USE_EXTERN_INLINES | |
# 91 "/usr/include/ctype.h" 3 4 | |
# define __isctype_f(type) \ | |
__extern_inline int \ | |
is##type (int __c) __THROW \ | |
{ \ | |
return (*__ctype_b_loc ())[(int) (__c)] & (unsigned short int) _IS##type; \ | |
} | |
#endif | |
# 98 "/usr/include/ctype.h" 3 4 | |
#define __isascii(c) (((c) & ~0x7f) == 0) /* If C is a 7 bit value. */ | |
#define __toascii(c) ((c) & 0x7f) /* Mask off high bits. */ | |
#define __exctype(name) extern int name (int) __THROW | |
__BEGIN_NAMESPACE_STD | |
/* The following names are all functions: | |
int isCHARACTERISTIC(int c); | |
which return nonzero iff C has CHARACTERISTIC. | |
For the meaning of the characteristic names, see the `enum' above. */ | |
__exctype (isalnum); | |
__exctype (isalpha); | |
__exctype (iscntrl); | |
__exctype (isdigit); | |
__exctype (islower); | |
__exctype (isgraph); | |
__exctype (isprint); | |
__exctype (ispunct); | |
__exctype (isspace); | |
__exctype (isupper); | |
__exctype (isxdigit); | |
/* Return the lowercase version of C. */ | |
extern int tolower (int __c) __THROW; | |
/* Return the uppercase version of C. */ | |
extern int toupper (int __c) __THROW; | |
__END_NAMESPACE_STD | |
/* ISO C99 introduced one new function. */ | |
#ifdef __USE_ISOC99 | |
__BEGIN_NAMESPACE_C99 | |
__exctype (isblank); | |
__END_NAMESPACE_C99 | |
#endif | |
# 140 "/usr/include/ctype.h" 3 4 | |
#ifdef __USE_GNU | |
/* Test C for a set of character classes according to MASK. */ | |
extern int isctype (int __c, int __mask) __THROW; | |
#endif | |
# 145 "/usr/include/ctype.h" 3 4 | |
#if defined __USE_MISC || defined __USE_XOPEN | |
/* Return nonzero iff C is in the ASCII set | |
(i.e., is no more than 7 bits wide). */ | |
extern int isascii (int __c) __THROW; | |
/* Return the part of C that is in the ASCII set | |
(i.e., the low-order 7 bits of C). */ | |
extern int toascii (int __c) __THROW; | |
/* These are the same as `toupper' and `tolower' except that they do not | |
check the argument for being in the range of a `char'. */ | |
__exctype (_toupper); | |
__exctype (_tolower); | |
#endif /* Use X/Open or use misc. */ | |
# 161 "/usr/include/ctype.h" 3 4 | |
/* This code is needed for the optimized mapping functions. */ | |
#define __tobody(c, f, a, args) \ | |
(__extension__ \ | |
({ int __res; \ | |
if (sizeof (c) > 1) \ | |
{ \ | |
if (__builtin_constant_p (c)) \ | |
{ \ | |
int __c = (c); \ | |
__res = __c < -128 || __c > 255 ? __c : (a)[__c]; \ | |
} \ | |
else \ | |
__res = f args; \ | |
} \ | |
else \ | |
__res = (a)[(int) (c)]; \ | |
__res; })) | |
#if !defined __NO_CTYPE | |
# ifdef __isctype_f | |
__isctype_f (alnum) | |
__isctype_f (alpha) | |
__isctype_f (cntrl) | |
__isctype_f (digit) | |
__isctype_f (lower) | |
__isctype_f (graph) | |
__isctype_f (print) | |
__isctype_f (punct) | |
__isctype_f (space) | |
__isctype_f (upper) | |
__isctype_f (xdigit) | |
# ifdef __USE_ISOC99 | |
__isctype_f (blank) | |
# endif | |
# 196 "/usr/include/ctype.h" 3 4 | |
# elif defined __isctype | |
# 197 "/usr/include/ctype.h" 3 4 | |
# define isalnum(c) __isctype((c), _ISalnum) | |
# define isalpha(c) __isctype((c), _ISalpha) | |
# define iscntrl(c) __isctype((c), _IScntrl) | |
# define isdigit(c) __isctype((c), _ISdigit) | |
# define islower(c) __isctype((c), _ISlower) | |
# define isgraph(c) __isctype((c), _ISgraph) | |
# define isprint(c) __isctype((c), _ISprint) | |
# define ispunct(c) __isctype((c), _ISpunct) | |
# define isspace(c) __isctype((c), _ISspace) | |
# define isupper(c) __isctype((c), _ISupper) | |
# define isxdigit(c) __isctype((c), _ISxdigit) | |
# ifdef __USE_ISOC99 | |
# define isblank(c) __isctype((c), _ISblank) | |
# endif | |
# 211 "/usr/include/ctype.h" 3 4 | |
# endif | |
# 212 "/usr/include/ctype.h" 3 4 | |
# ifdef __USE_EXTERN_INLINES | |
__extern_inline int | |
__NTH (tolower (int __c)) | |
{ | |
return __c >= -128 && __c < 256 ? (*__ctype_tolower_loc ())[__c] : __c; | |
} | |
__extern_inline int | |
__NTH (toupper (int __c)) | |
{ | |
return __c >= -128 && __c < 256 ? (*__ctype_toupper_loc ())[__c] : __c; | |
} | |
# endif | |
# 226 "/usr/include/ctype.h" 3 4 | |
# if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus | |
# define tolower(c) __tobody (c, tolower, *__ctype_tolower_loc (), (c)) | |
# define toupper(c) __tobody (c, toupper, *__ctype_toupper_loc (), (c)) | |
# endif /* Optimizing gcc */ | |
# 231 "/usr/include/ctype.h" 3 4 | |
# if defined __USE_MISC || defined __USE_XOPEN | |
# define isascii(c) __isascii (c) | |
# define toascii(c) __toascii (c) | |
# define _tolower(c) ((int) (*__ctype_tolower_loc ())[(int) (c)]) | |
# define _toupper(c) ((int) (*__ctype_toupper_loc ())[(int) (c)]) | |
# endif | |
# 239 "/usr/include/ctype.h" 3 4 | |
#endif /* Not __NO_CTYPE. */ | |
# 241 "/usr/include/ctype.h" 3 4 | |
#ifdef __USE_XOPEN2K8 | |
/* 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 */ | |
# 257 "/usr/include/ctype.h" 3 4 | |
# 258 "/usr/include/ctype.h" 3 4 | |
/* These definitions are similar to the ones above but all functions | |
take as an argument a handle for the locale which shall be used. */ | |
# define __isctype_l(c, type, locale) \ | |
((locale)->__ctype_b[(int) (c)] & (unsigned short int) type) | |
# define __exctype_l(name) \ | |
extern int name (int, __locale_t) __THROW | |
/* The following names are all functions: | |
int isCHARACTERISTIC(int c, locale_t *locale); | |
which return nonzero iff C has CHARACTERISTIC. | |
For the meaning of the characteristic names, see the `enum' above. */ | |
__exctype_l (isalnum_l); | |
__exctype_l (isalpha_l); | |
__exctype_l (iscntrl_l); | |
__exctype_l (isdigit_l); | |
__exctype_l (islower_l); | |
__exctype_l (isgraph_l); | |
__exctype_l (isprint_l); | |
__exctype_l (ispunct_l); | |
__exctype_l (isspace_l); | |
__exctype_l (isupper_l); | |
__exctype_l (isxdigit_l); | |
__exctype_l (isblank_l); | |
/* Return the lowercase version of C in locale L. */ | |
extern int __tolower_l (int __c, __locale_t __l) __THROW; | |
extern int tolower_l (int __c, __locale_t __l) __THROW; | |
/* Return the uppercase version of C. */ | |
extern int __toupper_l (int __c, __locale_t __l) __THROW; | |
extern int toupper_l (int __c, __locale_t __l) __THROW; | |
# if __GNUC__ >= 2 && defined __OPTIMIZE__ && !defined __cplusplus | |
# define __tolower_l(c, locale) \ | |
__tobody (c, __tolower_l, (locale)->__ctype_tolower, (c, locale)) | |
# define __toupper_l(c, locale) \ | |
__tobody (c, __toupper_l, (locale)->__ctype_toupper, (c, locale)) | |
# define tolower_l(c, locale) __tolower_l ((c), (locale)) | |
# define toupper_l(c, locale) __toupper_l ((c), (locale)) | |
# endif /* Optimizing gcc */ | |
# 302 "/usr/include/ctype.h" 3 4 | |
# ifndef __NO_CTYPE | |
# define __isalnum_l(c,l) __isctype_l((c), _ISalnum, (l)) | |
# define __isalpha_l(c,l) __isctype_l((c), _ISalpha, (l)) | |
# define __iscntrl_l(c,l) __isctype_l((c), _IScntrl, (l)) | |
# define __isdigit_l(c,l) __isctype_l((c), _ISdigit, (l)) | |
# define __islower_l(c,l) __isctype_l((c), _ISlower, (l)) | |
# define __isgraph_l(c,l) __isctype_l((c), _ISgraph, (l)) | |
# define __isprint_l(c,l) __isctype_l((c), _ISprint, (l)) | |
# define __ispunct_l(c,l) __isctype_l((c), _ISpunct, (l)) | |
# define __isspace_l(c,l) __isctype_l((c), _ISspace, (l)) | |
# define __isupper_l(c,l) __isctype_l((c), _ISupper, (l)) | |
# define __isxdigit_l(c,l) __isctype_l((c), _ISxdigit, (l)) | |
# define __isblank_l(c,l) __isctype_l((c), _ISblank, (l)) | |
# ifdef __USE_MISC | |
# define __isascii_l(c,l) ((l), __isascii (c)) | |
# define __toascii_l(c,l) ((l), __toascii (c)) | |
# endif | |
# 323 "/usr/include/ctype.h" 3 4 | |
# define isalnum_l(c,l) __isalnum_l ((c), (l)) | |
# define isalpha_l(c,l) __isalpha_l ((c), (l)) | |
# define iscntrl_l(c,l) __iscntrl_l ((c), (l)) | |
# define isdigit_l(c,l) __isdigit_l ((c), (l)) | |
# define islower_l(c,l) __islower_l ((c), (l)) | |
# define isgraph_l(c,l) __isgraph_l ((c), (l)) | |
# define isprint_l(c,l) __isprint_l ((c), (l)) | |
# define ispunct_l(c,l) __ispunct_l ((c), (l)) | |
# define isspace_l(c,l) __isspace_l ((c), (l)) | |
# define isupper_l(c,l) __isupper_l ((c), (l)) | |
# define isxdigit_l(c,l) __isxdigit_l ((c), (l)) | |
# define isblank_l(c,l) __isblank_l ((c), (l)) | |
# ifdef __USE_MISC | |
# define isascii_l(c,l) __isascii_l ((c), (l)) | |
# define toascii_l(c,l) __toascii_l ((c), (l)) | |
# endif | |
# 342 "/usr/include/ctype.h" 3 4 | |
# endif /* Not __NO_CTYPE. */ | |
# 344 "/usr/include/ctype.h" 3 4 | |
#endif /* Use POSIX 2008. */ | |
# 346 "/usr/include/ctype.h" 3 4 | |
__END_DECLS | |
#endif /* ctype.h */ | |
# 350 "/usr/include/ctype.h" 3 4 | |
# 43 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 2 3 | |
#ifndef _GLIBCXX_CCTYPE | |
#define _GLIBCXX_CCTYPE 1 | |
// Get rid of those macros defined in <ctype.h> in lieu of real functions. | |
#undef isalnum | |
#undef isalpha | |
#undef iscntrl | |
#undef isdigit | |
#undef isgraph | |
#undef islower | |
#undef isprint | |
#undef ispunct | |
#undef isspace | |
#undef isupper | |
#undef isxdigit | |
#undef tolower | |
#undef toupper | |
namespace std | |
{ | |
using ::isalnum; | |
using ::isalpha; | |
using ::iscntrl; | |
using ::isdigit; | |
using ::isgraph; | |
using ::islower; | |
using ::isprint; | |
using ::ispunct; | |
using ::isspace; | |
using ::isupper; | |
using ::isxdigit; | |
using ::tolower; | |
using ::toupper; | |
} // namespace std | |
#if __cplusplus >= 201103L | |
#ifdef _GLIBCXX_USE_C99_CTYPE_TR1 | |
#undef isblank | |
namespace std | |
{ | |
using ::isblank; | |
} // namespace std | |
#endif // _GLIBCXX_USE_C99_CTYPE_TR1 | |
# 91 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 3 | |
#endif // C++11 | |
# 93 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 3 | |
#endif | |
# 95 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/cctype" 3 | |
# 43 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 2 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @defgroup locales Locales | |
* | |
* Classes and functions for internationalization and localization. | |
*/ | |
// 22.1.1 Locale | |
class locale; | |
template<typename _Facet> | |
bool | |
has_facet(const locale&) throw(); | |
template<typename _Facet> | |
const _Facet& | |
use_facet(const locale&); | |
// 22.1.3 Convenience interfaces | |
template<typename _CharT> | |
bool | |
isspace(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
isprint(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
iscntrl(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
isupper(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
islower(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
isalpha(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
isdigit(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
ispunct(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
isxdigit(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
isalnum(_CharT, const locale&); | |
template<typename _CharT> | |
bool | |
isgraph(_CharT, const locale&); | |
#if __cplusplus >= 201103L | |
template<typename _CharT> | |
bool | |
isblank(_CharT, const locale&); | |
#endif | |
# 115 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
template<typename _CharT> | |
_CharT | |
toupper(_CharT, const locale&); | |
template<typename _CharT> | |
_CharT | |
tolower(_CharT, const locale&); | |
// 22.2.1 and 22.2.1.3 ctype | |
class ctype_base; | |
template<typename _CharT> | |
class ctype; | |
template<> class ctype<char>; | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
template<> class ctype<wchar_t>; | |
#endif | |
# 132 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
template<typename _CharT> | |
class ctype_byname; | |
// NB: Specialized for char and wchar_t in locale_facets.h. | |
class codecvt_base; | |
template<typename _InternT, typename _ExternT, typename _StateT> | |
class codecvt; | |
template<> class codecvt<char, char, mbstate_t>; | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
template<> class codecvt<wchar_t, char, mbstate_t>; | |
#endif | |
# 143 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
template<typename _InternT, typename _ExternT, typename _StateT> | |
class codecvt_byname; | |
// 22.2.2 and 22.2.3 numeric | |
_GLIBCXX_BEGIN_NAMESPACE_LDBL | |
template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > | |
class num_get; | |
template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > | |
class num_put; | |
_GLIBCXX_END_NAMESPACE_LDBL | |
_GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
template<typename _CharT> class numpunct; | |
template<typename _CharT> class numpunct_byname; | |
_GLIBCXX_END_NAMESPACE_CXX11 | |
_GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
// 22.2.4 collation | |
template<typename _CharT> | |
class collate; | |
template<typename _CharT> | |
class collate_byname; | |
_GLIBCXX_END_NAMESPACE_CXX11 | |
// 22.2.5 date and time | |
class time_base; | |
_GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > | |
class time_get; | |
template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > | |
class time_get_byname; | |
_GLIBCXX_END_NAMESPACE_CXX11 | |
template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > | |
class time_put; | |
template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > | |
class time_put_byname; | |
// 22.2.6 money | |
class money_base; | |
_GLIBCXX_BEGIN_NAMESPACE_LDBL_OR_CXX11 | |
template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> > | |
class money_get; | |
template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> > | |
class money_put; | |
_GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 | |
_GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
template<typename _CharT, bool _Intl = false> | |
class moneypunct; | |
template<typename _CharT, bool _Intl = false> | |
class moneypunct_byname; | |
_GLIBCXX_END_NAMESPACE_CXX11 | |
// 22.2.7 message retrieval | |
class messages_base; | |
_GLIBCXX_BEGIN_NAMESPACE_CXX11 | |
template<typename _CharT> | |
class messages; | |
template<typename _CharT> | |
class messages_byname; | |
_GLIBCXX_END_NAMESPACE_CXX11 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace std | |
#endif | |
# 207 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/localefwd.h" 3 | |
# 44 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/ostream_insert.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 44 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 1 3 | |
// Helpers for ostream inserters -*- C++ -*- | |
// Copyright (C) 2007-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/ostream_insert.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{ostream} | |
*/ | |
#ifndef _OSTREAM_INSERT_H | |
#define _OSTREAM_INSERT_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <iosfwd> | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 3 | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/cxxabi_forced.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_forced.h" 1 3 | |
// cxxabi.h subset for cancellation -*- C++ -*- | |
// Copyright (C) 2007-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of GCC. | |
// | |
// GCC is free software; you can redistribute it and/or modify | |
// it under the terms of the GNU General Public License as published by | |
// the Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// | |
// GCC 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 General Public License for more details. | |
// | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/cxxabi_forced.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{cxxabi.h} | |
*/ | |
#ifndef _CXXABI_FORCED_H | |
#define _CXXABI_FORCED_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 35 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_forced.h" 3 | |
#pragma GCC visibility push(default) | |
#ifdef __cplusplus | |
namespace __cxxabiv1 | |
{ | |
/** | |
* @brief Thrown as part of forced unwinding. | |
* @ingroup exceptions | |
* | |
* A magic placeholder class that can be caught by reference to | |
* recognize forced unwinding. | |
*/ | |
class __forced_unwind | |
{ | |
virtual ~__forced_unwind() throw(); | |
// Prevent catch by value. | |
virtual void __pure_dummy() = 0; | |
}; | |
} | |
#endif // __cplusplus | |
# 57 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_forced.h" 3 | |
#pragma GCC visibility pop | |
#endif // __CXXABI_FORCED_H | |
# 61 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/cxxabi_forced.h" 3 | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 2 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
template<typename _CharT, typename _Traits> | |
inline void | |
__ostream_write(basic_ostream<_CharT, _Traits>& __out, | |
const _CharT* __s, streamsize __n) | |
{ | |
typedef basic_ostream<_CharT, _Traits> __ostream_type; | |
typedef typename __ostream_type::ios_base __ios_base; | |
const streamsize __put = __out.rdbuf()->sputn(__s, __n); | |
if (__put != __n) | |
__out.setstate(__ios_base::badbit); | |
} | |
template<typename _CharT, typename _Traits> | |
inline void | |
__ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n) | |
{ | |
typedef basic_ostream<_CharT, _Traits> __ostream_type; | |
typedef typename __ostream_type::ios_base __ios_base; | |
const _CharT __c = __out.fill(); | |
for (; __n > 0; --__n) | |
{ | |
const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c); | |
if (_Traits::eq_int_type(__put, _Traits::eof())) | |
{ | |
__out.setstate(__ios_base::badbit); | |
break; | |
} | |
} | |
} | |
template<typename _CharT, typename _Traits> | |
basic_ostream<_CharT, _Traits>& | |
__ostream_insert(basic_ostream<_CharT, _Traits>& __out, | |
const _CharT* __s, streamsize __n) | |
{ | |
typedef basic_ostream<_CharT, _Traits> __ostream_type; | |
typedef typename __ostream_type::ios_base __ios_base; | |
typename __ostream_type::sentry __cerb(__out); | |
if (__cerb) | |
{ | |
__try | |
{ | |
const streamsize __w = __out.width(); | |
if (__w > __n) | |
{ | |
const bool __left = ((__out.flags() | |
& __ios_base::adjustfield) | |
== __ios_base::left); | |
if (!__left) | |
__ostream_fill(__out, __w - __n); | |
if (__out.good()) | |
__ostream_write(__out, __s, __n); | |
if (__left && __out.good()) | |
__ostream_fill(__out, __w - __n); | |
} | |
else | |
__ostream_write(__out, __s, __n); | |
__out.width(0); | |
} | |
__catch(__cxxabiv1::__forced_unwind&) | |
{ | |
__out._M_setstate(__ios_base::badbit); | |
__throw_exception_again; | |
} | |
__catch(...) | |
{ __out._M_setstate(__ios_base::badbit); } | |
} | |
return __out; | |
} | |
// Inhibit implicit instantiations for required instantiations, | |
// which are defined via explicit instantiations elsewhere. | |
#if _GLIBCXX_EXTERN_TEMPLATE | |
extern template ostream& __ostream_insert(ostream&, const char*, streamsize); | |
#ifdef _GLIBCXX_USE_WCHAR_T | |
extern template wostream& __ostream_insert(wostream&, const wchar_t*, | |
streamsize); | |
#endif | |
# 124 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 3 | |
#endif | |
# 125 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace std | |
#endif /* _OSTREAM_INSERT_H */ | |
# 130 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/ostream_insert.h" 3 | |
# 45 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_iterator_base_types.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 45 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 46 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_iterator_base_funcs.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 46 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 47 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_iterator.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 47 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 48 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_function.h> // For less | |
#endif /* expanded by -frewrite-includes */ | |
# 48 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 1 3 | |
// Functor implementations -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* | |
* Copyright (c) 1996-1998 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file bits/stl_function.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{functional} | |
*/ | |
#ifndef _STL_FUNCTION_H | |
#define _STL_FUNCTION_H 1 | |
#if __cplusplus > 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/move.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 60 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
# 61 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
#endif | |
# 62 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// 20.3.1 base classes | |
/** @defgroup functors Function Objects | |
* @ingroup utilities | |
* | |
* Function objects, or @e functors, are objects with an @c operator() | |
* defined and accessible. They can be passed as arguments to algorithm | |
* templates and used in place of a function pointer. Not only is the | |
* resulting expressiveness of the library increased, but the generated | |
* code can be more efficient than what you might write by hand. When we | |
* refer to @a functors, then, generally we include function pointers in | |
* the description as well. | |
* | |
* Often, functors are only created as temporaries passed to algorithm | |
* calls, rather than being created as named variables. | |
* | |
* Two examples taken from the standard itself follow. To perform a | |
* by-element addition of two vectors @c a and @c b containing @c double, | |
* and put the result in @c a, use | |
* \code | |
* transform (a.begin(), a.end(), b.begin(), a.begin(), plus<double>()); | |
* \endcode | |
* To negate every element in @c a, use | |
* \code | |
* transform(a.begin(), a.end(), a.begin(), negate<double>()); | |
* \endcode | |
* The addition and negation functions will be inlined directly. | |
* | |
* The standard functors are derived from structs named @c unary_function | |
* and @c binary_function. These two classes contain nothing but typedefs, | |
* to aid in generic (template) programming. If you write your own | |
* functors, you might consider doing the same. | |
* | |
* @{ | |
*/ | |
/** | |
* This is one of the @link functors functor base classes@endlink. | |
*/ | |
template<typename _Arg, typename _Result> | |
struct unary_function | |
{ | |
/// @c argument_type is the type of the argument | |
typedef _Arg argument_type; | |
/// @c result_type is the return type | |
typedef _Result result_type; | |
}; | |
/** | |
* This is one of the @link functors functor base classes@endlink. | |
*/ | |
template<typename _Arg1, typename _Arg2, typename _Result> | |
struct binary_function | |
{ | |
/// @c first_argument_type is the type of the first argument | |
typedef _Arg1 first_argument_type; | |
/// @c second_argument_type is the type of the second argument | |
typedef _Arg2 second_argument_type; | |
/// @c result_type is the return type | |
typedef _Result result_type; | |
}; | |
/** @} */ | |
// 20.3.2 arithmetic | |
/** @defgroup arithmetic_functors Arithmetic Classes | |
* @ingroup functors | |
* | |
* Because basic math often needs to be done during an algorithm, | |
* the library provides functors for those operations. See the | |
* documentation for @link functors the base classes@endlink | |
* for examples of their use. | |
* | |
* @{ | |
*/ | |
#if __cplusplus > 201103L | |
struct __is_transparent; // undefined | |
template<typename _Tp = void> | |
struct plus; | |
template<typename _Tp = void> | |
struct minus; | |
template<typename _Tp = void> | |
struct multiplies; | |
template<typename _Tp = void> | |
struct divides; | |
template<typename _Tp = void> | |
struct modulus; | |
template<typename _Tp = void> | |
struct negate; | |
#endif | |
# 164 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<typename _Tp> | |
struct plus : public binary_function<_Tp, _Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x + __y; } | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<typename _Tp> | |
struct minus : public binary_function<_Tp, _Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x - __y; } | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<typename _Tp> | |
struct multiplies : public binary_function<_Tp, _Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x * __y; } | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<typename _Tp> | |
struct divides : public binary_function<_Tp, _Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x / __y; } | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<typename _Tp> | |
struct modulus : public binary_function<_Tp, _Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x % __y; } | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<typename _Tp> | |
struct negate : public unary_function<_Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x) const | |
{ return -__x; } | |
}; | |
#if __cplusplus > 201103L | |
#define __cpp_lib_transparent_operators 201510 | |
template<> | |
struct plus<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) + std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) + std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) + std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<> | |
struct minus<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) - std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) - std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) - std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<> | |
struct multiplies<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) * std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) * std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) * std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<> | |
struct divides<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) / std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) / std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) / std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<> | |
struct modulus<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) % std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) % std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) % std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link arithmetic_functors math functors@endlink. | |
template<> | |
struct negate<void> | |
{ | |
template <typename _Tp> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t) const | |
noexcept(noexcept(-std::forward<_Tp>(__t))) | |
-> decltype(-std::forward<_Tp>(__t)) | |
{ return -std::forward<_Tp>(__t); } | |
typedef __is_transparent is_transparent; | |
}; | |
#endif | |
# 318 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
/** @} */ | |
// 20.3.3 comparisons | |
/** @defgroup comparison_functors Comparison Classes | |
* @ingroup functors | |
* | |
* The library provides six wrapper functors for all the basic comparisons | |
* in C++, like @c <. | |
* | |
* @{ | |
*/ | |
#if __cplusplus > 201103L | |
template<typename _Tp = void> | |
struct equal_to; | |
template<typename _Tp = void> | |
struct not_equal_to; | |
template<typename _Tp = void> | |
struct greater; | |
template<typename _Tp = void> | |
struct less; | |
template<typename _Tp = void> | |
struct greater_equal; | |
template<typename _Tp = void> | |
struct less_equal; | |
#endif | |
# 348 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<typename _Tp> | |
struct equal_to : public binary_function<_Tp, _Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x == __y; } | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<typename _Tp> | |
struct not_equal_to : public binary_function<_Tp, _Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x != __y; } | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<typename _Tp> | |
struct greater : public binary_function<_Tp, _Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x > __y; } | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<typename _Tp> | |
struct less : public binary_function<_Tp, _Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x < __y; } | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<typename _Tp> | |
struct greater_equal : public binary_function<_Tp, _Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x >= __y; } | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<typename _Tp> | |
struct less_equal : public binary_function<_Tp, _Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x <= __y; } | |
}; | |
#if __cplusplus > 201103L | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<> | |
struct equal_to<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) == std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) == std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) == std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<> | |
struct not_equal_to<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) != std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) != std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) != std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<> | |
struct greater<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) > std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) > std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) > std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<> | |
struct less<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) < std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) < std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) < std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<> | |
struct greater_equal<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) >= std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) >= std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) >= std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link comparison_functors comparison functors@endlink. | |
template<> | |
struct less_equal<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) <= std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) <= std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) <= std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
#endif | |
# 500 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
/** @} */ | |
// 20.3.4 logical operations | |
/** @defgroup logical_functors Boolean Operations Classes | |
* @ingroup functors | |
* | |
* Here are wrapper functors for Boolean operations: @c &&, @c ||, | |
* and @c !. | |
* | |
* @{ | |
*/ | |
#if __cplusplus > 201103L | |
template<typename _Tp = void> | |
struct logical_and; | |
template<typename _Tp = void> | |
struct logical_or; | |
template<typename _Tp = void> | |
struct logical_not; | |
#endif | |
# 521 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
/// One of the @link logical_functors Boolean operations functors@endlink. | |
template<typename _Tp> | |
struct logical_and : public binary_function<_Tp, _Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x && __y; } | |
}; | |
/// One of the @link logical_functors Boolean operations functors@endlink. | |
template<typename _Tp> | |
struct logical_or : public binary_function<_Tp, _Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x || __y; } | |
}; | |
/// One of the @link logical_functors Boolean operations functors@endlink. | |
template<typename _Tp> | |
struct logical_not : public unary_function<_Tp, bool> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const _Tp& __x) const | |
{ return !__x; } | |
}; | |
#if __cplusplus > 201103L | |
/// One of the @link logical_functors Boolean operations functors@endlink. | |
template<> | |
struct logical_and<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) && std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) && std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) && std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link logical_functors Boolean operations functors@endlink. | |
template<> | |
struct logical_or<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) || std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) || std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) || std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
/// One of the @link logical_functors Boolean operations functors@endlink. | |
template<> | |
struct logical_not<void> | |
{ | |
template <typename _Tp> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t) const | |
noexcept(noexcept(!std::forward<_Tp>(__t))) | |
-> decltype(!std::forward<_Tp>(__t)) | |
{ return !std::forward<_Tp>(__t); } | |
typedef __is_transparent is_transparent; | |
}; | |
#endif | |
# 598 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
/** @} */ | |
#if __cplusplus > 201103L | |
template<typename _Tp = void> | |
struct bit_and; | |
template<typename _Tp = void> | |
struct bit_or; | |
template<typename _Tp = void> | |
struct bit_xor; | |
template<typename _Tp = void> | |
struct bit_not; | |
#endif | |
# 613 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// DR 660. Missing Bitwise Operations. | |
template<typename _Tp> | |
struct bit_and : public binary_function<_Tp, _Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x & __y; } | |
}; | |
template<typename _Tp> | |
struct bit_or : public binary_function<_Tp, _Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x | __y; } | |
}; | |
template<typename _Tp> | |
struct bit_xor : public binary_function<_Tp, _Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x, const _Tp& __y) const | |
{ return __x ^ __y; } | |
}; | |
template<typename _Tp> | |
struct bit_not : public unary_function<_Tp, _Tp> | |
{ | |
_GLIBCXX14_CONSTEXPR | |
_Tp | |
operator()(const _Tp& __x) const | |
{ return ~__x; } | |
}; | |
#if __cplusplus > 201103L | |
template <> | |
struct bit_and<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) & std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) & std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) & std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
template <> | |
struct bit_or<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) | std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) | std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) | std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
template <> | |
struct bit_xor<void> | |
{ | |
template <typename _Tp, typename _Up> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t, _Up&& __u) const | |
noexcept(noexcept(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u))) | |
-> decltype(std::forward<_Tp>(__t) ^ std::forward<_Up>(__u)) | |
{ return std::forward<_Tp>(__t) ^ std::forward<_Up>(__u); } | |
typedef __is_transparent is_transparent; | |
}; | |
template <> | |
struct bit_not<void> | |
{ | |
template <typename _Tp> | |
_GLIBCXX14_CONSTEXPR | |
auto | |
operator()(_Tp&& __t) const | |
noexcept(noexcept(~std::forward<_Tp>(__t))) | |
-> decltype(~std::forward<_Tp>(__t)) | |
{ return ~std::forward<_Tp>(__t); } | |
typedef __is_transparent is_transparent; | |
}; | |
#endif | |
# 709 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
// 20.3.5 negators | |
/** @defgroup negators Negators | |
* @ingroup functors | |
* | |
* The functions @c not1 and @c not2 each take a predicate functor | |
* and return an instance of @c unary_negate or | |
* @c binary_negate, respectively. These classes are functors whose | |
* @c operator() performs the stored predicate function and then returns | |
* the negation of the result. | |
* | |
* For example, given a vector of integers and a trivial predicate, | |
* \code | |
* struct IntGreaterThanThree | |
* : public std::unary_function<int, bool> | |
* { | |
* bool operator() (int x) { return x > 3; } | |
* }; | |
* | |
* std::find_if (v.begin(), v.end(), not1(IntGreaterThanThree())); | |
* \endcode | |
* The call to @c find_if will locate the first index (i) of @c v for which | |
* <code>!(v[i] > 3)</code> is true. | |
* | |
* The not1/unary_negate combination works on predicates taking a single | |
* argument. The not2/binary_negate combination works on predicates which | |
* take two arguments. | |
* | |
* @{ | |
*/ | |
/// One of the @link negators negation functors@endlink. | |
template<typename _Predicate> | |
class unary_negate | |
: public unary_function<typename _Predicate::argument_type, bool> | |
{ | |
protected: | |
_Predicate _M_pred; | |
public: | |
_GLIBCXX14_CONSTEXPR | |
explicit | |
unary_negate(const _Predicate& __x) : _M_pred(__x) { } | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const typename _Predicate::argument_type& __x) const | |
{ return !_M_pred(__x); } | |
}; | |
/// One of the @link negators negation functors@endlink. | |
template<typename _Predicate> | |
_GLIBCXX14_CONSTEXPR | |
inline unary_negate<_Predicate> | |
not1(const _Predicate& __pred) | |
{ return unary_negate<_Predicate>(__pred); } | |
/// One of the @link negators negation functors@endlink. | |
template<typename _Predicate> | |
class binary_negate | |
: public binary_function<typename _Predicate::first_argument_type, | |
typename _Predicate::second_argument_type, bool> | |
{ | |
protected: | |
_Predicate _M_pred; | |
public: | |
_GLIBCXX14_CONSTEXPR | |
explicit | |
binary_negate(const _Predicate& __x) : _M_pred(__x) { } | |
_GLIBCXX14_CONSTEXPR | |
bool | |
operator()(const typename _Predicate::first_argument_type& __x, | |
const typename _Predicate::second_argument_type& __y) const | |
{ return !_M_pred(__x, __y); } | |
}; | |
/// One of the @link negators negation functors@endlink. | |
template<typename _Predicate> | |
_GLIBCXX14_CONSTEXPR | |
inline binary_negate<_Predicate> | |
not2(const _Predicate& __pred) | |
{ return binary_negate<_Predicate>(__pred); } | |
/** @} */ | |
// 20.3.7 adaptors pointers functions | |
/** @defgroup pointer_adaptors Adaptors for pointers to functions | |
* @ingroup functors | |
* | |
* The advantage of function objects over pointers to functions is that | |
* the objects in the standard library declare nested typedefs describing | |
* their argument and result types with uniform names (e.g., @c result_type | |
* from the base classes @c unary_function and @c binary_function). | |
* Sometimes those typedefs are required, not just optional. | |
* | |
* Adaptors are provided to turn pointers to unary (single-argument) and | |
* binary (double-argument) functions into function objects. The | |
* long-winded functor @c pointer_to_unary_function is constructed with a | |
* function pointer @c f, and its @c operator() called with argument @c x | |
* returns @c f(x). The functor @c pointer_to_binary_function does the same | |
* thing, but with a double-argument @c f and @c operator(). | |
* | |
* The function @c ptr_fun takes a pointer-to-function @c f and constructs | |
* an instance of the appropriate functor. | |
* | |
* @{ | |
*/ | |
/// One of the @link pointer_adaptors adaptors for function pointers@endlink. | |
template<typename _Arg, typename _Result> | |
class pointer_to_unary_function : public unary_function<_Arg, _Result> | |
{ | |
protected: | |
_Result (*_M_ptr)(_Arg); | |
public: | |
pointer_to_unary_function() { } | |
explicit | |
pointer_to_unary_function(_Result (*__x)(_Arg)) | |
: _M_ptr(__x) { } | |
_Result | |
operator()(_Arg __x) const | |
{ return _M_ptr(__x); } | |
}; | |
/// One of the @link pointer_adaptors adaptors for function pointers@endlink. | |
template<typename _Arg, typename _Result> | |
inline pointer_to_unary_function<_Arg, _Result> | |
ptr_fun(_Result (*__x)(_Arg)) | |
{ return pointer_to_unary_function<_Arg, _Result>(__x); } | |
/// One of the @link pointer_adaptors adaptors for function pointers@endlink. | |
template<typename _Arg1, typename _Arg2, typename _Result> | |
class pointer_to_binary_function | |
: public binary_function<_Arg1, _Arg2, _Result> | |
{ | |
protected: | |
_Result (*_M_ptr)(_Arg1, _Arg2); | |
public: | |
pointer_to_binary_function() { } | |
explicit | |
pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2)) | |
: _M_ptr(__x) { } | |
_Result | |
operator()(_Arg1 __x, _Arg2 __y) const | |
{ return _M_ptr(__x, __y); } | |
}; | |
/// One of the @link pointer_adaptors adaptors for function pointers@endlink. | |
template<typename _Arg1, typename _Arg2, typename _Result> | |
inline pointer_to_binary_function<_Arg1, _Arg2, _Result> | |
ptr_fun(_Result (*__x)(_Arg1, _Arg2)) | |
{ return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); } | |
/** @} */ | |
template<typename _Tp> | |
struct _Identity | |
: public unary_function<_Tp,_Tp> | |
{ | |
_Tp& | |
operator()(_Tp& __x) const | |
{ return __x; } | |
const _Tp& | |
operator()(const _Tp& __x) const | |
{ return __x; } | |
}; | |
template<typename _Pair> | |
struct _Select1st | |
: public unary_function<_Pair, typename _Pair::first_type> | |
{ | |
typename _Pair::first_type& | |
operator()(_Pair& __x) const | |
{ return __x.first; } | |
const typename _Pair::first_type& | |
operator()(const _Pair& __x) const | |
{ return __x.first; } | |
#if __cplusplus >= 201103L | |
template<typename _Pair2> | |
typename _Pair2::first_type& | |
operator()(_Pair2& __x) const | |
{ return __x.first; } | |
template<typename _Pair2> | |
const typename _Pair2::first_type& | |
operator()(const _Pair2& __x) const | |
{ return __x.first; } | |
#endif | |
# 904 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
}; | |
template<typename _Pair> | |
struct _Select2nd | |
: public unary_function<_Pair, typename _Pair::second_type> | |
{ | |
typename _Pair::second_type& | |
operator()(_Pair& __x) const | |
{ return __x.second; } | |
const typename _Pair::second_type& | |
operator()(const _Pair& __x) const | |
{ return __x.second; } | |
}; | |
// 20.3.8 adaptors pointers members | |
/** @defgroup memory_adaptors Adaptors for pointers to members | |
* @ingroup functors | |
* | |
* There are a total of 8 = 2^3 function objects in this family. | |
* (1) Member functions taking no arguments vs member functions taking | |
* one argument. | |
* (2) Call through pointer vs call through reference. | |
* (3) Const vs non-const member function. | |
* | |
* All of this complexity is in the function objects themselves. You can | |
* ignore it by using the helper function mem_fun and mem_fun_ref, | |
* which create whichever type of adaptor is appropriate. | |
* | |
* @{ | |
*/ | |
/// One of the @link memory_adaptors adaptors for member | |
/// pointers@endlink. | |
template<typename _Ret, typename _Tp> | |
class mem_fun_t : public unary_function<_Tp*, _Ret> | |
{ | |
public: | |
explicit | |
mem_fun_t(_Ret (_Tp::*__pf)()) | |
: _M_f(__pf) { } | |
_Ret | |
operator()(_Tp* __p) const | |
{ return (__p->*_M_f)(); } | |
private: | |
_Ret (_Tp::*_M_f)(); | |
}; | |
/// One of the @link memory_adaptors adaptors for member | |
/// pointers@endlink. | |
template<typename _Ret, typename _Tp> | |
class const_mem_fun_t : public unary_function<const _Tp*, _Ret> | |
{ | |
public: | |
explicit | |
const_mem_fun_t(_Ret (_Tp::*__pf)() const) | |
: _M_f(__pf) { } | |
_Ret | |
operator()(const _Tp* __p) const | |
{ return (__p->*_M_f)(); } | |
private: | |
_Ret (_Tp::*_M_f)() const; | |
}; | |
/// One of the @link memory_adaptors adaptors for member | |
/// pointers@endlink. | |
template<typename _Ret, typename _Tp> | |
class mem_fun_ref_t : public unary_function<_Tp, _Ret> | |
{ | |
public: | |
explicit | |
mem_fun_ref_t(_Ret (_Tp::*__pf)()) | |
: _M_f(__pf) { } | |
_Ret | |
operator()(_Tp& __r) const | |
{ return (__r.*_M_f)(); } | |
private: | |
_Ret (_Tp::*_M_f)(); | |
}; | |
/// One of the @link memory_adaptors adaptors for member | |
/// pointers@endlink. | |
template<typename _Ret, typename _Tp> | |
class const_mem_fun_ref_t : public unary_function<_Tp, _Ret> | |
{ | |
public: | |
explicit | |
const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const) | |
: _M_f(__pf) { } | |
_Ret | |
operator()(const _Tp& __r) const | |
{ return (__r.*_M_f)(); } | |
private: | |
_Ret (_Tp::*_M_f)() const; | |
}; | |
/// One of the @link memory_adaptors adaptors for member | |
/// pointers@endlink. | |
template<typename _Ret, typename _Tp, typename _Arg> | |
class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret> | |
{ | |
public: | |
explicit | |
mem_fun1_t(_Ret (_Tp::*__pf)(_Arg)) | |
: _M_f(__pf) { } | |
_Ret | |
operator()(_Tp* __p, _Arg __x) const | |
{ return (__p->*_M_f)(__x); } | |
private: | |
_Ret (_Tp::*_M_f)(_Arg); | |
}; | |
/// One of the @link memory_adaptors adaptors for member | |
/// pointers@endlink. | |
template<typename _Ret, typename _Tp, typename _Arg> | |
class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret> | |
{ | |
public: | |
explicit | |
const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const) | |
: _M_f(__pf) { } | |
_Ret | |
operator()(const _Tp* __p, _Arg __x) const | |
{ return (__p->*_M_f)(__x); } | |
private: | |
_Ret (_Tp::*_M_f)(_Arg) const; | |
}; | |
/// One of the @link memory_adaptors adaptors for member | |
/// pointers@endlink. | |
template<typename _Ret, typename _Tp, typename _Arg> | |
class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> | |
{ | |
public: | |
explicit | |
mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg)) | |
: _M_f(__pf) { } | |
_Ret | |
operator()(_Tp& __r, _Arg __x) const | |
{ return (__r.*_M_f)(__x); } | |
private: | |
_Ret (_Tp::*_M_f)(_Arg); | |
}; | |
/// One of the @link memory_adaptors adaptors for member | |
/// pointers@endlink. | |
template<typename _Ret, typename _Tp, typename _Arg> | |
class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret> | |
{ | |
public: | |
explicit | |
const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const) | |
: _M_f(__pf) { } | |
_Ret | |
operator()(const _Tp& __r, _Arg __x) const | |
{ return (__r.*_M_f)(__x); } | |
private: | |
_Ret (_Tp::*_M_f)(_Arg) const; | |
}; | |
// Mem_fun adaptor helper functions. There are only two: | |
// mem_fun and mem_fun_ref. | |
template<typename _Ret, typename _Tp> | |
inline mem_fun_t<_Ret, _Tp> | |
mem_fun(_Ret (_Tp::*__f)()) | |
{ return mem_fun_t<_Ret, _Tp>(__f); } | |
template<typename _Ret, typename _Tp> | |
inline const_mem_fun_t<_Ret, _Tp> | |
mem_fun(_Ret (_Tp::*__f)() const) | |
{ return const_mem_fun_t<_Ret, _Tp>(__f); } | |
template<typename _Ret, typename _Tp> | |
inline mem_fun_ref_t<_Ret, _Tp> | |
mem_fun_ref(_Ret (_Tp::*__f)()) | |
{ return mem_fun_ref_t<_Ret, _Tp>(__f); } | |
template<typename _Ret, typename _Tp> | |
inline const_mem_fun_ref_t<_Ret, _Tp> | |
mem_fun_ref(_Ret (_Tp::*__f)() const) | |
{ return const_mem_fun_ref_t<_Ret, _Tp>(__f); } | |
template<typename _Ret, typename _Tp, typename _Arg> | |
inline mem_fun1_t<_Ret, _Tp, _Arg> | |
mem_fun(_Ret (_Tp::*__f)(_Arg)) | |
{ return mem_fun1_t<_Ret, _Tp, _Arg>(__f); } | |
template<typename _Ret, typename _Tp, typename _Arg> | |
inline const_mem_fun1_t<_Ret, _Tp, _Arg> | |
mem_fun(_Ret (_Tp::*__f)(_Arg) const) | |
{ return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); } | |
template<typename _Ret, typename _Tp, typename _Arg> | |
inline mem_fun1_ref_t<_Ret, _Tp, _Arg> | |
mem_fun_ref(_Ret (_Tp::*__f)(_Arg)) | |
{ return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } | |
template<typename _Ret, typename _Tp, typename _Arg> | |
inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg> | |
mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const) | |
{ return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); } | |
/** @} */ | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#if (__cplusplus < 201103L) || _GLIBCXX_USE_DEPRECATED | |
#if 0 /* expanded by -frewrite-includes */ | |
# include <backward/binders.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 1127 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/backward/binders.h" 1 3 | |
// Functor implementations -*- C++ -*- | |
// Copyright (C) 2001-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/* | |
* | |
* Copyright (c) 1994 | |
* Hewlett-Packard Company | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Hewlett-Packard Company makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
* | |
* | |
* Copyright (c) 1996-1998 | |
* Silicon Graphics Computer Systems, Inc. | |
* | |
* Permission to use, copy, modify, distribute and sell this software | |
* and its documentation for any purpose is hereby granted without fee, | |
* provided that the above copyright notice appear in all copies and | |
* that both that copyright notice and this permission notice appear | |
* in supporting documentation. Silicon Graphics makes no | |
* representations about the suitability of this software for any | |
* purpose. It is provided "as is" without express or implied warranty. | |
*/ | |
/** @file backward/binders.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{functional} | |
*/ | |
#ifndef _BACKWARD_BINDERS_H | |
#define _BACKWARD_BINDERS_H 1 | |
// Suppress deprecated warning for this file. | |
#pragma GCC diagnostic push | |
#pragma GCC diagnostic ignored "-Wdeprecated-declarations" | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
// 20.3.6 binders | |
/** @defgroup binders Binder Classes | |
* @ingroup functors | |
* | |
* Binders turn functions/functors with two arguments into functors | |
* with a single argument, storing an argument to be applied later. | |
* For example, a variable @c B of type @c binder1st is constructed | |
* from a functor @c f and an argument @c x. Later, B's @c | |
* operator() is called with a single argument @c y. The return | |
* value is the value of @c f(x,y). @c B can be @a called with | |
* various arguments (y1, y2, ...) and will in turn call @c | |
* f(x,y1), @c f(x,y2), ... | |
* | |
* The function @c bind1st is provided to save some typing. It takes the | |
* function and an argument as parameters, and returns an instance of | |
* @c binder1st. | |
* | |
* The type @c binder2nd and its creator function @c bind2nd do the same | |
* thing, but the stored argument is passed as the second parameter instead | |
* of the first, e.g., @c bind2nd(std::minus<float>(),1.3) will create a | |
* functor whose @c operator() accepts a floating-point number, subtracts | |
* 1.3 from it, and returns the result. (If @c bind1st had been used, | |
* the functor would perform <em>1.3 - x</em> instead. | |
* | |
* Creator-wrapper functions like @c bind1st are intended to be used in | |
* calling algorithms. Their return values will be temporary objects. | |
* (The goal is to not require you to type names like | |
* @c std::binder1st<std::plus<int>> for declaring a variable to hold the | |
* return value from @c bind1st(std::plus<int>(),5). | |
* | |
* These become more useful when combined with the composition functions. | |
* | |
* These functions are deprecated in C++11 and can be replaced by | |
* @c std::bind (or @c std::tr1::bind) which is more powerful and flexible, | |
* supporting functions with any number of arguments. Uses of @c bind1st | |
* can be replaced by @c std::bind(f, x, std::placeholders::_1) and | |
* @c bind2nd by @c std::bind(f, std::placeholders::_1, x). | |
* @{ | |
*/ | |
/// One of the @link binders binder functors@endlink. | |
template<typename _Operation> | |
class binder1st | |
: 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) | |
: op(__x), value(__y) { } | |
typename _Operation::result_type | |
operator()(const typename _Operation::second_argument_type& __x) const | |
{ return op(value, __x); } | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 109. Missing binders for non-const sequence elements | |
typename _Operation::result_type | |
operator()(typename _Operation::second_argument_type& __x) const | |
{ return op(value, __x); } | |
} _GLIBCXX_DEPRECATED; | |
/// One of the @link binders binder functors@endlink. | |
template<typename _Operation, typename _Tp> | |
inline binder1st<_Operation> | |
bind1st(const _Operation& __fn, const _Tp& __x) | |
{ | |
typedef typename _Operation::first_argument_type _Arg1_type; | |
return binder1st<_Operation>(__fn, _Arg1_type(__x)); | |
} | |
/// One of the @link binders binder functors@endlink. | |
template<typename _Operation> | |
class binder2nd | |
: 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) | |
: op(__x), value(__y) { } | |
typename _Operation::result_type | |
operator()(const typename _Operation::first_argument_type& __x) const | |
{ return op(__x, value); } | |
// _GLIBCXX_RESOLVE_LIB_DEFECTS | |
// 109. Missing binders for non-const sequence elements | |
typename _Operation::result_type | |
operator()(typename _Operation::first_argument_type& __x) const | |
{ return op(__x, value); } | |
} _GLIBCXX_DEPRECATED; | |
/// One of the @link binders binder functors@endlink. | |
template<typename _Operation, typename _Tp> | |
inline binder2nd<_Operation> | |
bind2nd(const _Operation& __fn, const _Tp& __x) | |
{ | |
typedef typename _Operation::second_argument_type _Arg2_type; | |
return binder2nd<_Operation>(__fn, _Arg2_type(__x)); | |
} | |
/** @} */ | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#pragma GCC diagnostic pop | |
#endif /* _BACKWARD_BINDERS_H */ | |
# 183 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/backward/binders.h" 3 | |
# 1128 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 2 3 | |
#endif | |
# 1129 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
#endif /* _STL_FUNCTION_H */ | |
# 1131 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/stl_function.h" 3 | |
# 49 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <ext/numeric_traits.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 49 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 50 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/stl_algobase.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 50 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 51 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/range_access.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 51 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/range_access.h" 1 3 | |
// <range_access.h> -*- C++ -*- | |
// Copyright (C) 2010-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/range_access.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{iterator} | |
*/ | |
#ifndef _GLIBCXX_RANGE_ACCESS_H | |
#define _GLIBCXX_RANGE_ACCESS_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 34 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/range_access.h" 3 | |
#if __cplusplus >= 201103L | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <initializer_list> | |
#endif /* expanded by -frewrite-includes */ | |
# 36 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/range_access.h" 3 | |
# 37 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/range_access.h" 3 | |
namespace std _GLIBCXX_VISIBILITY(default) | |
{ | |
_GLIBCXX_BEGIN_NAMESPACE_VERSION | |
/** | |
* @brief Return an iterator pointing to the first element of | |
* the container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
begin(_Container& __cont) -> decltype(__cont.begin()) | |
{ return __cont.begin(); } | |
/** | |
* @brief Return an iterator pointing to the first element of | |
* the const container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
begin(const _Container& __cont) -> decltype(__cont.begin()) | |
{ return __cont.begin(); } | |
/** | |
* @brief Return an iterator pointing to one past the last element of | |
* the container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
end(_Container& __cont) -> decltype(__cont.end()) | |
{ return __cont.end(); } | |
/** | |
* @brief Return an iterator pointing to one past the last element of | |
* the const container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
end(const _Container& __cont) -> decltype(__cont.end()) | |
{ return __cont.end(); } | |
/** | |
* @brief Return an iterator pointing to the first element of the array. | |
* @param __arr Array. | |
*/ | |
template<typename _Tp, size_t _Nm> | |
inline _GLIBCXX14_CONSTEXPR _Tp* | |
begin(_Tp (&__arr)[_Nm]) | |
{ return __arr; } | |
/** | |
* @brief Return an iterator pointing to one past the last element | |
* of the array. | |
* @param __arr Array. | |
*/ | |
template<typename _Tp, size_t _Nm> | |
inline _GLIBCXX14_CONSTEXPR _Tp* | |
end(_Tp (&__arr)[_Nm]) | |
{ return __arr + _Nm; } | |
#if __cplusplus >= 201402L | |
template<typename _Tp> class valarray; | |
// These overloads must be declared for cbegin and cend to use them. | |
template<typename _Tp> _Tp* begin(valarray<_Tp>&); | |
template<typename _Tp> const _Tp* begin(const valarray<_Tp>&); | |
template<typename _Tp> _Tp* end(valarray<_Tp>&); | |
template<typename _Tp> const _Tp* end(const valarray<_Tp>&); | |
/** | |
* @brief Return an iterator pointing to the first element of | |
* the const container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline constexpr auto | |
cbegin(const _Container& __cont) noexcept(noexcept(std::begin(__cont))) | |
-> decltype(std::begin(__cont)) | |
{ return std::begin(__cont); } | |
/** | |
* @brief Return an iterator pointing to one past the last element of | |
* the const container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline constexpr auto | |
cend(const _Container& __cont) noexcept(noexcept(std::end(__cont))) | |
-> decltype(std::end(__cont)) | |
{ return std::end(__cont); } | |
/** | |
* @brief Return a reverse iterator pointing to the last element of | |
* the container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
rbegin(_Container& __cont) -> decltype(__cont.rbegin()) | |
{ return __cont.rbegin(); } | |
/** | |
* @brief Return a reverse iterator pointing to the last element of | |
* the const container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
rbegin(const _Container& __cont) -> decltype(__cont.rbegin()) | |
{ return __cont.rbegin(); } | |
/** | |
* @brief Return a reverse iterator pointing one past the first element of | |
* the container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
rend(_Container& __cont) -> decltype(__cont.rend()) | |
{ return __cont.rend(); } | |
/** | |
* @brief Return a reverse iterator pointing one past the first element of | |
* the const container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
rend(const _Container& __cont) -> decltype(__cont.rend()) | |
{ return __cont.rend(); } | |
/** | |
* @brief Return a reverse iterator pointing to the last element of | |
* the array. | |
* @param __arr Array. | |
*/ | |
template<typename _Tp, size_t _Nm> | |
inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Tp*> | |
rbegin(_Tp (&__arr)[_Nm]) | |
{ return reverse_iterator<_Tp*>(__arr + _Nm); } | |
/** | |
* @brief Return a reverse iterator pointing one past the first element of | |
* the array. | |
* @param __arr Array. | |
*/ | |
template<typename _Tp, size_t _Nm> | |
inline _GLIBCXX17_CONSTEXPR reverse_iterator<_Tp*> | |
rend(_Tp (&__arr)[_Nm]) | |
{ return reverse_iterator<_Tp*>(__arr); } | |
/** | |
* @brief Return a reverse iterator pointing to the last element of | |
* the initializer_list. | |
* @param __il initializer_list. | |
*/ | |
template<typename _Tp> | |
inline _GLIBCXX17_CONSTEXPR reverse_iterator<const _Tp*> | |
rbegin(initializer_list<_Tp> __il) | |
{ return reverse_iterator<const _Tp*>(__il.end()); } | |
/** | |
* @brief Return a reverse iterator pointing one past the first element of | |
* the initializer_list. | |
* @param __il initializer_list. | |
*/ | |
template<typename _Tp> | |
inline _GLIBCXX17_CONSTEXPR reverse_iterator<const _Tp*> | |
rend(initializer_list<_Tp> __il) | |
{ return reverse_iterator<const _Tp*>(__il.begin()); } | |
/** | |
* @brief Return a reverse iterator pointing to the last element of | |
* the const container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
crbegin(const _Container& __cont) -> decltype(std::rbegin(__cont)) | |
{ return std::rbegin(__cont); } | |
/** | |
* @brief Return a reverse iterator pointing one past the first element of | |
* the const container. | |
* @param __cont Container. | |
*/ | |
template<typename _Container> | |
inline _GLIBCXX17_CONSTEXPR auto | |
crend(const _Container& __cont) -> decltype(std::rend(__cont)) | |
{ return std::rend(__cont); } | |
#endif // C++14 | |
# 232 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/range_access.h" 3 | |
#if __cplusplus > 201402L | |
#define __cpp_lib_nonmember_container_access 201411 | |
/** | |
* @brief Return the size of a container. | |
* @param __cont Container. | |
*/ | |
template <typename _Container> | |
constexpr auto | |
size(const _Container& __cont) -> decltype(__cont.size()) | |
{ return __cont.size(); } | |
/** | |
* @brief Return the size of an array. | |
* @param __array Array. | |
*/ | |
template <typename _Tp, size_t _Nm> | |
constexpr size_t | |
size(const _Tp (&/*__array*/)[_Nm]) noexcept | |
{ return _Nm; } | |
/** | |
* @brief Return whether a container is empty. | |
* @param __cont Container. | |
*/ | |
template <typename _Container> | |
constexpr auto | |
empty(const _Container& __cont) -> decltype(__cont.empty()) | |
{ return __cont.empty(); } | |
/** | |
* @brief Return whether an array is empty (always false). | |
* @param __array Container. | |
*/ | |
template <typename _Tp, size_t _Nm> | |
constexpr bool | |
empty(const _Tp (&/*__array*/)[_Nm]) noexcept | |
{ return false; } | |
/** | |
* @brief Return whether an initializer_list is empty. | |
* @param __il Initializer list. | |
*/ | |
template <typename _Tp> | |
constexpr bool | |
empty(initializer_list<_Tp> __il) noexcept | |
{ return __il.size() == 0;} | |
/** | |
* @brief Return the data pointer of a container. | |
* @param __cont Container. | |
*/ | |
template <typename _Container> | |
constexpr auto | |
data(_Container& __cont) -> decltype(__cont.data()) | |
{ return __cont.data(); } | |
/** | |
* @brief Return the data pointer of a const container. | |
* @param __cont Container. | |
*/ | |
template <typename _Container> | |
constexpr auto | |
data(const _Container& __cont) -> decltype(__cont.data()) | |
{ return __cont.data(); } | |
/** | |
* @brief Return the data pointer of an array. | |
* @param __array Array. | |
*/ | |
template <typename _Tp, size_t _Nm> | |
constexpr _Tp* | |
data(_Tp (&__array)[_Nm]) noexcept | |
{ return __array; } | |
/** | |
* @brief Return the data pointer of an initializer list. | |
* @param __il Initializer list. | |
*/ | |
template <typename _Tp> | |
constexpr const _Tp* | |
data(initializer_list<_Tp> __il) noexcept | |
{ return __il.begin(); } | |
#endif // C++17 | |
# 318 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/range_access.h" 3 | |
_GLIBCXX_END_NAMESPACE_VERSION | |
} // namespace | |
#endif // C++11 | |
# 323 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/range_access.h" 3 | |
#endif // _GLIBCXX_RANGE_ACCESS_H | |
# 325 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/range_access.h" 3 | |
# 52 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 2 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <bits/basic_string.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 52 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/string" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/basic_string.h" 1 3 | |
// Components for manipulating sequences of characters -*- C++ -*- | |
// Copyright (C) 1997-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exception, version | |
// 3.1, as published by the Free Software Foundation. | |
// You should have received a copy of the GNU General Public License and | |
// a copy of the GCC Runtime Library Exception along with this program; | |
// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see | |
// <http://www.gnu.org/licenses/>. | |
/** @file bits/basic_string.h | |
* This is an internal header file, included by other library headers. | |
* Do not attempt to use it directly. @headername{string} | |
*/ | |
// | |
// ISO C++ 14882: 21 Strings library | |
// | |
#ifndef _BASIC_STRING_H | |
#define _BASIC_STRING_H 1 | |
#if 0 /* expanded by -frewrite-includes */ | |
#pragma GCC system_header | |
#endif /* expanded by -frewrite-includes */ | |
# 38 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/basic_string.h" 3 | |
#if 0 /* expanded by -frewrite-includes */ | |
#include <ext/atomicity.h> | |
#endif /* expanded by -frewrite-includes */ | |
# 39 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/bits/basic_string.h" 3 | |
# 1 "/usr/local/bin/../lib/gcc/x86_64-pc-linux-gnu/7.0.1/../../../../include/c++/7.0.1/ext/atomicity.h" 1 3 | |
// Support for atomic operations -*- C++ -*- | |
// Copyright (C) 2004-2017 Free Software Foundation, Inc. | |
// | |
// This file is part of the GNU ISO C++ Library. This library is free | |
// software; you can redistribute it and/or modify it under the | |
// terms of the GNU General Public License as published by the | |
// Free Software Foundation; either version 3, or (at your option) | |
// any later version. | |
// This 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 General Public License for more details. | |
// Under Section 7 of GPL version 3, you are granted additional | |
// permissions described in the GCC Runtime Library Exc |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment