Skip to content

Instantly share code, notes, and snippets.

@johnmcfarlane
Last active April 18, 2020 12:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save johnmcfarlane/bff998de7be6e6b8564e70adcf0fd9d2 to your computer and use it in GitHub Desktop.
Save johnmcfarlane/bff998de7be6e6b8564e70adcf0fd9d2 to your computer and use it in GitHub Desktop.
Preprocessed source, /tmp/integer-3770d0.cpp, associated with clang frontend crash
This file has been truncated, but you can view the full file.
# 1 "<built-in>"
# 1 "/home/john/ws/rounding-overflow/cnl/test/unit/scaled_integer/rounding/elastic/integer.cpp"
// Copyright John McFarlane 2015 - 2016.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* expanded by -frewrite-includes */
#include <cnl/elastic_integer.h>
#endif /* expanded by -frewrite-includes */
# 7 "/home/john/ws/rounding-overflow/cnl/test/unit/scaled_integer/rounding/elastic/integer.cpp"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/elastic_integer.h" 1
// Copyright John McFarlane 2016.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file
/// \brief essential definitions related to the `cnl::elastic_integer` type
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_ELASTIC_INTEGER_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/elastic_integer.h"
#define CNL_ELASTIC_INTEGER_H
#if 0 /* expanded by -frewrite-includes */
#include "_impl/elastic_integer/declaration.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/elastic_integer.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/declaration.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_INTEGER_DECLARATION_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/declaration.h"
#define CNL_IMPL_ELASTIC_INTEGER_DECLARATION_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/digits.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/declaration.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file cnl/num_traits.h
/// \brief definitions supporting \ref cnl::digits
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_DIGITS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
#define CNL_IMPL_NUM_TRAITS_DIGITS
#if 0 /* expanded by -frewrite-includes */
#include "../../constant.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h" 1
// Copyright John McFarlane 2015 - 2017.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file
/// \brief essential definitions related to `std::constant` type and its UDL, ""_c
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_CONSTANT_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
#define CNL_CONSTANT_H
#if 0 /* expanded by -frewrite-includes */
#include "_impl/assert.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h" 1
// Copyright John McFarlane 2015 - 2016.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// definitions that are directly required by more than one header of the API
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ASSERT_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
#define CNL_IMPL_ASSERT_H
#if 0 /* expanded by -frewrite-includes */
#include "common.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h" 1
// Copyright John McFarlane 2015 - 2016.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
// definitions that are directly required by more than one header of the API
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_COMMON_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
#define CNL_COMMON_H
#if 0 /* expanded by -frewrite-includes */
#include "config.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h" 1
// Copyright John McFarlane 2016.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file
/// \brief definitions which can be used to configure CNL library
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_CONFIG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_CONFIG_H
////////////////////////////////////////////////////////////////////////////////
// test for language version
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if (_MSC_VER<1916)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL requires Microsoft C++ version 19.16 or above.
#endif
# 20 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(__cplusplus) || (__cplusplus < 201103L)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 21 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL requires C++11 or above.
#endif
# 23 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_DEBUG and CNL_RELEASE macro definitions
// Customization point: define either CNL_DEBUG or CNL_RELEASE
// to affect how contract violations are handled
// in builds that don't support contract [[attributes]].
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_DEBUG) && defined(CNL_RELEASE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 31 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error Mutually exclusive macros, CNL_DEBUG are both defined CNL_RELEASE.
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif !defined(CNL_DEBUG) && !defined(CNL_RELEASE)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 33 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(NDEBUG)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 34 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_RELEASE
#else
# 36 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_DEBUG
#endif
# 38 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#endif
# 39 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_INT128_ENABLED macro definition
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 44 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_INT128_ENABLED already defined
#endif
# 46 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_CAN_USE_INT128)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 48 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_CAN_USE_INT128 already defined
#endif
# 50 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(__SIZEOF_INT128__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 52 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_CAN_USE_INT128 1 // NOLINT(cppcoreguidelines-macro-usage)
#else
# 54 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_CAN_USE_INT128 0 // NOLINT(cppcoreguidelines-macro-usage)
#endif
# 56 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_USE_INT128)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 58 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
/// \def CNL_USE_INT128
/// \brief user flag enables or disables support for `__int128` on 64-bit GCC/Clang platforms;
/// defaults to `1` on supported platforms.
/// \note GCC pedantic warnings must be disabled in order to use `__int128`.
/// \sa CNL_INT128_ENABLED, int128, uint128,
#define CNL_USE_INT128 CNL_CAN_USE_INT128
#endif
# 65 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if CNL_USE_INT128
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 67 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if !CNL_CAN_USE_INT128
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 68 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_USE_INT128 is defined but 128-bit integers is not enabled for this compiler
#endif
# 70 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
/// \def CNL_INT128_ENABLED
/// \brief non-zero iff CNL is configured to support 128-bit integers
/// \sa CNL_USE_INT128, int128, uint128,
#define CNL_INT128_ENABLED
#endif
# 75 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_EXCEPTIONS_ENABLED macro definition
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_EXCEPTIONS_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 80 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_EXCEPTIONS_ENABLED already defined
#endif
# 82 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 84 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(_CPPUNWIND)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 85 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_EXCEPTIONS_ENABLED
#endif
# 87 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__clang__) || defined(__GNUG__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 88 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(__EXCEPTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 89 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_EXCEPTIONS_ENABLED
#endif
# 91 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#else
# 92 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_EXCEPTIONS_ENABLED
#endif
# 94 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_RELAXED_CONSTEXPR macro definition
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_RELAXED_CONSTEXPR)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 99 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_RELAXED_CONSTEXPR already defined
#endif
# 101 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if (__cpp_constexpr >= 201304L)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 103 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_RELAXED_CONSTEXPR constexpr // NOLINT(cppcoreguidelines-macro-usage)
#else
# 105 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_RELAXED_CONSTEXPR // NOLINT(cppcoreguidelines-macro-usage)
#endif
# 107 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_TEMPLATE_AUTO feature test
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_TEMPLATE_AUTO)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 112 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_TEMPLATE_AUTO already defined
#endif
# 114 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
// not because MSVC defines __cpp_template_auto
// but because if it ever did,
// the workaround for this would probably have to change:
// https://godbolt.org/g/wbLMuN
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 120 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_TEMPLATE_AUTO_DISABLED
#endif
# 122 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(__cpp_nontype_template_parameter_auto) && !defined(CNL_TEMPLATE_AUTO_DISABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 124 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_TEMPLATE_AUTO
#endif
# 126 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_GCC_INTRINSICS_ENABLED macro definition
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_GCC_INTRINSICS_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 131 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_GCC_INTRINSICS_ENABLED already defined
#endif
# 133 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_USE_GCC_INTRINSICS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 135 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if CNL_USE_GCC_INTRINSICS
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 136 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_GCC_INTRINSICS_ENABLED
#endif
# 138 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__clang__) || defined(__GNUG__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 139 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_GCC_INTRINSICS_ENABLED
#endif
# 141 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_UNREACHABLE_UB_ENABLED macro definition
// When enabled, cnl::_impl::unreachable exhibits undefined behavior,
// i.e. the compiler has carte blanche to optimize based on the assumption
// that no call to cnl::_impl::unreachable will ever be made at run time.
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_UNREACHABLE_UB_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 150 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_UNREACHABLE_UB_ENABLED already defined
#endif
# 152 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_USE_UNREACHABLE_UB)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 154 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if CNL_USE_UNREACHABLE_UB
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 155 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_UNREACHABLE_UB_ENABLED
#endif
# 157 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(CNL_RELEASE)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 158 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_UNREACHABLE_UB_ENABLED
#endif
# 160 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_IOSTREAM_ENABLED macro definition
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_IOSTREAM_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 165 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_IOSTREAM_ENABLED already defined
#endif
# 167 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_USE_IOSTREAM)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 169 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if CNL_USE_IOSTREAM
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 170 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_IOSTREAM_ENABLED
#endif
# 172 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__STDC_HOSTED__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 173 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if __STDC_HOSTED__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 174 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_IOSTREAM_ENABLED
#else
# 176 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
// Either CNL_USE_IOSTREAM or __STDC_HOSTED__
// must be defined and set to either 0 or 1.
#error __STDC_HOSTED__ not defined
#endif
# 180 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#endif
# 181 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_BUILTIN_OVERFLOW_ENABLED
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_BUILTIN_OVERFLOW_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 186 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_BUILTIN_OVERFLOW_ENABLED already defined
#endif
# 188 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_BUILTIN_OVERFLOW_SUPPORTED_BY_TOOLCHAIN)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 190 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_BUILTIN_OVERFLOW_SUPPORTED_BY_TOOLCHAIN already defined
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GNUG__) && !defined(__clang__) && __GNUG__ >= 7
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 192 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_BUILTIN_OVERFLOW_SUPPORTED_BY_TOOLCHAIN
#endif
# 194 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_BUILTIN_OVERFLOW_SUPPORTED_BY_LANGUAGE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 196 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_BUILTIN_OVERFLOW_SUPPORTED_BY_LANGUAGE already defined
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif (__cpp_constexpr >= 201304L) && (__cpp_decltype_auto >= 201304L) && (__cpp_variable_templates >= 201304)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 198 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_BUILTIN_OVERFLOW_SUPPORTED_BY_LANGUAGE
#endif
# 200 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_BUILTIN_OVERFLOW_SUPPORTED_BY_TOOLCHAIN) && defined(CNL_BUILTIN_OVERFLOW_SUPPORTED_BY_LANGUAGE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 202 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_BUILTIN_OVERFLOW_ENABLED
#endif
# 204 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
// CNL_NODISCARD
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_NODISCARD)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 209 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#error CNL_NODISCARD already defined
#endif
# 211 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if (__cplusplus >= 201703L) && !defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 213 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_NODISCARD [[nodiscard]] // NOLINT(cppcoreguidelines-macro-usage)
#endif
# 215 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#if 0 /* disabled by -frewrite-includes */
#if ! defined(CNL_NODISCARD)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 217 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
#define CNL_NODISCARD
#endif
# 219 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
////////////////////////////////////////////////////////////////////////////////
#endif // CNL_CONFIG_H
# 223 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/config.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h" 2
#define CNL_STR_HELPER(x) #x // NOLINT(cppcoreguidelines-macro-usage)
#define CNL_STR(x) CNL_STR_HELPER(x) // NOLINT(cppcoreguidelines-macro-usage)
// CNL_LIKELY - hints that a condition is likely to be true
#if 0 /* disabled by -frewrite-includes */
#if defined(__clang__) || defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
#define CNL_LIKELY(CONDITION) __builtin_expect(!!(CONDITION), 1) // NOLINT(cppcoreguidelines-macro-usage)
#define CNL_UNLIKELY(CONDITION) __builtin_expect(!!(CONDITION), 0) // NOLINT(cppcoreguidelines-macro-usage)
#else
# 22 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
#define CNL_LIKELY(CONDITION) (!!(CONDITION))
#define CNL_UNLIKELY(CONDITION) (!!(CONDITION))
#endif
# 25 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
// CNL_ASSUME - hints that a condition *must* be true
#ifdef _MSC_VER
#define CNL_ASSUME(cond) __assume(cond)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 30 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
#define CNL_ASSUME(cond) ((cond) ? static_cast<void>(0) : __builtin_unreachable()) // NOLINT(cppcoreguidelines-macro-usage)
#else
# 32 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
#define CNL_ASSUME(cond) static_cast<void>((cond) ? 0 : 0)
#endif
# 34 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
namespace cnl {
namespace _impl {
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::max
template<class T>
CNL_NODISCARD constexpr T max(T a, T b)
{
return (a<b) ? b : a;
}
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::min
template<class T>
CNL_NODISCARD constexpr T min(T a, T b)
{
return (a<b) ? a : b;
}
}
}
#endif // CNL_COMMON_H
# 58 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/common.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "terminate.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_TERMINATE_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h"
#define CNL_TERMINATE_H
#if 0 /* expanded by -frewrite-includes */
#include "config.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h"
#if 0 /* expanded by -frewrite-includes */
#include <cstdio>
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h"
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 1 3
// -*- C++ -*- forwarding header.
// Copyright (C) 1997-2019 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/cstdio
* 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 stdio.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: 27.8.2 C Library files
//
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 1 3
// Predefined symbols and macros -*- C++ -*-
// Copyright (C) 1997-2019 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{version}
*/
#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 9
// The datestamp of the C++ library in compressed ISO date format.
#define __GLIBCXX__ 20191008
// 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX_CONST
# define _GLIBCXX_CONST __attribute__ ((__const__))
#endif
# 52 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX_NORETURN
# define _GLIBCXX_NORETURN __attribute__ ((__noreturn__))
#endif
# 56 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// See below for C++
#ifndef _GLIBCXX_NOTHROW
# ifndef __cplusplus
# define _GLIBCXX_NOTHROW __attribute__((__nothrow__))
# endif
# 62 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 63 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Macros for visibility attributes.
// _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
// _GLIBCXX_VISIBILITY
# define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY 1
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 70 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_VISIBILITY(V) __attribute__ ((__visibility__ (#V)))
#else
# 72 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Macros for deprecated attributes.
// _GLIBCXX_USE_DEPRECATED
// _GLIBCXX_DEPRECATED
// _GLIBCXX17_DEPRECATED
#ifndef _GLIBCXX_USE_DEPRECATED
# define _GLIBCXX_USE_DEPRECATED 1
#endif
# 84 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__DEPRECATED) && (__cplusplus >= 201103L)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 86 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_DEPRECATED __attribute__ ((__deprecated__))
#else
# 88 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_DEPRECATED
#endif
# 90 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__DEPRECATED) && (__cplusplus >= 201703L)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 92 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX17_DEPRECATED [[__deprecated__]]
#else
# 94 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX17_DEPRECATED
#endif
# 96 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 101 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Macro to warn about unused results.
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 104 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_NODISCARD [[__nodiscard__]]
#else
# 106 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_NODISCARD
#endif
# 108 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 112 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Macro for constexpr, to support in mixed 03/0x mode.
#ifndef _GLIBCXX_CONSTEXPR
#if 0 /* disabled by -frewrite-includes */
# if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 116 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_CONSTEXPR constexpr
# define _GLIBCXX_USE_CONSTEXPR constexpr
# else
# 119 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_CONSTEXPR
# define _GLIBCXX_USE_CONSTEXPR const
# endif
# 122 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 123 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX14_CONSTEXPR
#if 0 /* disabled by -frewrite-includes */
# if __cplusplus >= 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 126 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX14_CONSTEXPR constexpr
# else
# 128 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX14_CONSTEXPR
# endif
# 130 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 131 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX17_CONSTEXPR
#if 0 /* disabled by -frewrite-includes */
# if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 134 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX17_CONSTEXPR constexpr
# else
# 136 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX17_CONSTEXPR
# endif
# 138 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 139 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX20_CONSTEXPR
#if 0 /* disabled by -frewrite-includes */
# if __cplusplus > 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 142 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX20_CONSTEXPR constexpr
# else
# 144 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX20_CONSTEXPR
# endif
# 146 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 147 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX17_INLINE
#if 0 /* disabled by -frewrite-includes */
# if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 150 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX17_INLINE inline
# else
# 152 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX17_INLINE
# endif
# 154 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 155 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Macro for noexcept, to support in mixed 03/0x mode.
#ifndef _GLIBCXX_NOEXCEPT
#if 0 /* disabled by -frewrite-includes */
# if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 159 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_NOEXCEPT noexcept
# define _GLIBCXX_NOEXCEPT_IF(_COND) noexcept(_COND)
# define _GLIBCXX_USE_NOEXCEPT noexcept
# define _GLIBCXX_THROW(_EXC)
# else
# 164 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 169 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 170 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX_NOTHROW
# define _GLIBCXX_NOTHROW _GLIBCXX_USE_NOEXCEPT
#endif
# 174 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX_THROW_OR_ABORT
#if 0 /* disabled by -frewrite-includes */
# if __cpp_exceptions
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 177 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_THROW_OR_ABORT(_EXC) (throw (_EXC))
# else
# 179 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_THROW_OR_ABORT(_EXC) (__builtin_abort())
# endif
# 181 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 182 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if __cpp_noexcept_function_type
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 184 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#define _GLIBCXX_NOEXCEPT_PARM , bool _NE
#define _GLIBCXX_NOEXCEPT_QUAL noexcept (_NE)
#else
# 187 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#define _GLIBCXX_NOEXCEPT_PARM
#define _GLIBCXX_NOEXCEPT_QUAL
#endif
# 190 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 258 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
typedef decltype(nullptr) nullptr_t;
#endif
# 260 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
}
# define _GLIBCXX_USE_DUAL_ABI 1
#if 0 /* disabled by -frewrite-includes */
#if ! _GLIBCXX_USE_DUAL_ABI
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 265 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Ignore any pre-defined value of _GLIBCXX_USE_CXX11_ABI
# undef _GLIBCXX_USE_CXX11_ABI
#endif
# 268 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX_USE_CXX11_ABI
# define _GLIBCXX_USE_CXX11_ABI 1
#endif
# 272 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_USE_CXX11_ABI
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 274 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
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
# 287 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 292 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Defined if inline namespaces are used for versioning.
# define _GLIBCXX_INLINE_VERSION 0
// Inline namespace for symbol versioning.
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_INLINE_VERSION
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 298 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION namespace __8 {
# define _GLIBCXX_END_NAMESPACE_VERSION }
namespace std
{
inline _GLIBCXX_BEGIN_NAMESPACE_VERSION
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 305 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
inline namespace literals {
inline namespace chrono_literals { }
inline namespace complex_literals { }
inline namespace string_literals { }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 310 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
inline namespace string_view_literals { }
#endif // C++17
# 312 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
}
#endif // C++14
# 314 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
_GLIBCXX_END_NAMESPACE_VERSION
}
namespace __gnu_cxx
{
inline _GLIBCXX_BEGIN_NAMESPACE_VERSION
_GLIBCXX_END_NAMESPACE_VERSION
}
#else
# 324 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_BEGIN_NAMESPACE_VERSION
# define _GLIBCXX_END_NAMESPACE_VERSION
#endif
# 327 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Inline namespaces for special modes: debug, parallel, profile.
#if 0 /* disabled by -frewrite-includes */
#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PARALLEL) \
|| defined(_GLIBCXX_PROFILE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 331 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
namespace std
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
// Non-inline namespace for components replaced by alternates in active mode.
namespace __cxx1998
{
#if 0 /* disabled by -frewrite-includes */
# if _GLIBCXX_USE_CXX11_ABI
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 339 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
inline namespace __cxx11 __attribute__((__abi_tag__ ("cxx11"))) { }
# endif
# 341 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
}
_GLIBCXX_END_NAMESPACE_VERSION
// Inline namespace for debug mode.
# ifdef _GLIBCXX_DEBUG
inline namespace __debug { }
# endif
# 349 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Inline namespaces for parallel mode.
# ifdef _GLIBCXX_PARALLEL
inline namespace __parallel { }
# endif
# 354 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Inline namespaces for profile mode
# ifdef _GLIBCXX_PROFILE
inline namespace __profile { }
# endif
# 359 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
}
// Check for invalid usage and unsupported mixed-mode use.
#if 0 /* disabled by -frewrite-includes */
# if defined(_GLIBCXX_DEBUG) && defined(_GLIBCXX_PARALLEL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 363 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# error illegal use of multiple inlined namespaces
# endif
# 365 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_DEBUG)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 366 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# error illegal use of multiple inlined namespaces
# endif
# 368 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
# if defined(_GLIBCXX_PROFILE) && defined(_GLIBCXX_PARALLEL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 369 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# error illegal use of multiple inlined namespaces
# endif
# 371 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Check for invalid use due to lack for weak symbols.
#if 0 /* disabled by -frewrite-includes */
# if __NO_INLINE__ && !__GXX_WEAK__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 374 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# warning currently using inlined namespace mode which may fail \
without inlining due to lack of weak symbols
# endif
# 377 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 378 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 0 /* disabled by -frewrite-includes */
#if defined(_GLIBCXX_DEBUG) || defined(_GLIBCXX_PROFILE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 390 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_STD_C __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER \
namespace _GLIBCXX_STD_C {
# define _GLIBCXX_END_NAMESPACE_CONTAINER }
#else
# 395 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_STD_C std
# define _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
# define _GLIBCXX_END_NAMESPACE_CONTAINER
#endif
# 399 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifdef _GLIBCXX_PARALLEL
# define _GLIBCXX_STD_A __cxx1998
# define _GLIBCXX_BEGIN_NAMESPACE_ALGO \
namespace _GLIBCXX_STD_A {
# define _GLIBCXX_END_NAMESPACE_ALGO }
#else
# 406 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_STD_A std
# define _GLIBCXX_BEGIN_NAMESPACE_ALGO
# define _GLIBCXX_END_NAMESPACE_ALGO
#endif
# 410 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 0 /* disabled by -frewrite-includes */
#if defined _GLIBCXX_LONG_DOUBLE_COMPAT && defined __LONG_DOUBLE_128__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 417 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
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
# 425 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_NAMESPACE_LDBL
# define _GLIBCXX_BEGIN_NAMESPACE_LDBL
# define _GLIBCXX_END_NAMESPACE_LDBL
#endif
# 429 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_USE_CXX11_ABI
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 430 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# 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
# 434 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 438 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Debug Mode implies checking assertions.
#if 0 /* disabled by -frewrite-includes */
#if defined(_GLIBCXX_DEBUG) && !defined(_GLIBCXX_ASSERTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 441 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_ASSERTIONS 1
#endif
# 443 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 449 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Assert.
#if 0 /* disabled by -frewrite-includes */
#if defined(_GLIBCXX_ASSERTIONS) \
|| defined(_GLIBCXX_PARALLEL) || defined(_GLIBCXX_PARALLEL_ASSERTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 453 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
namespace std
{
// Avoid the use of assert, because we're trying to keep the <cassert>
// include out of the mix.
extern "C++" 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
# 474 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_GLIBCXX_ASSERTIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 476 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define __glibcxx_assert(_Condition) __glibcxx_assert_impl(_Condition)
#else
# 478 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define __glibcxx_assert(_Condition)
#endif
# 480 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 505 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifndef _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER
# define _GLIBCXX_SYNCHRONIZATION_HAPPENS_AFTER(A)
#endif
# 508 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 516 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_BEGIN_EXTERN_C
# define _GLIBCXX_END_EXTERN_C
#endif
# 519 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 */
# 524 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/os_defines.h" 1 3
// Specific definitions for GNU/Linux -*- C++ -*-
// Copyright (C) 2000-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/os_defines.h" 3
# 1 "/usr/include/features.h" 1 3 4
/* Copyright (C) 1991-2019 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.
__STDC_WANT_LIB_EXT2__
Extensions to ISO C99 from TR 27431-2:2010.
__STDC_WANT_IEC_60559_BFP_EXT__
Extensions to ISO C11 from TS 18661-1:2014.
__STDC_WANT_IEC_60559_FUNCS_EXT__
Extensions to ISO C11 from TS 18661-4:2015.
__STDC_WANT_IEC_60559_TYPES_EXT__
Extensions to ISO C11 from TS 18661-3:2015.
_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__).
_FORTIFY_SOURCE Add security hardening to many library functions.
Set to 1 or 2; 2 performs stricter checks than 1.
_REENTRANT, _THREAD_SAFE
Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
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:
__GLIBC_USE (F) Define things from feature set F. This is defined
to 1 or 0; the subsequent macros are either defined
or undefined, and those tests should be moved to
__GLIBC_USE.
__USE_ISOC11 Define ISO C11 things.
__USE_ISOC99 Define ISO C99 things.
__USE_ISOC95 Define ISO C90 AMD1 (C95) things.
__USE_ISOCXX11 Define ISO C++11 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_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.
ISO C feature test macros depend on the definition of the macro
when an affected header is included, not when the first system
header is included, and so they are handled in
<bits/libc-header-start.h>, which does not have a multiple include
guard. Feature test macros that can be handled from the first
system header included are handled here. */
/* 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_FORTIFY_LEVEL
#undef __KERNEL_STRICT_NAMES
#undef __GLIBC_USE_DEPRECATED_GETS
#undef __GLIBC_USE_DEPRECATED_SCANF
/* Suppress kernel-name space pollution unless user expressedly asks
for it. */
#ifndef _LOOSE_KERNEL_NAMES
# define __KERNEL_STRICT_NAMES
#endif
# 150 "/usr/include/features.h" 3 4
/* Convenience macro to test the version of gcc.
Use like this:
#if __GNUC_PREREQ (2,8)
... code requiring gcc 2.8 or later ...
#endif
Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
added in 2.0. */
#if 0 /* disabled by -frewrite-includes */
#if defined __GNUC__ && defined __GNUC_MINOR__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 159 "/usr/include/features.h" 3 4
# define __GNUC_PREREQ(maj, min) \
((__GNUC__ << 16) + __GNUC_MINOR__ >= ((maj) << 16) + (min))
#else
# 162 "/usr/include/features.h" 3 4
# define __GNUC_PREREQ(maj, min) 0
#endif
# 164 "/usr/include/features.h" 3 4
/* Similarly for clang. Features added to GCC after version 4.2 may
or may not also be available in clang, and clang's definitions of
__GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such
features can be queried via __has_extension/__has_feature. */
#if 0 /* disabled by -frewrite-includes */
#if defined __clang_major__ && defined __clang_minor__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 170 "/usr/include/features.h" 3 4
# define __glibc_clang_prereq(maj, min) \
((__clang_major__ << 16) + __clang_minor__ >= ((maj) << 16) + (min))
#else
# 173 "/usr/include/features.h" 3 4
# define __glibc_clang_prereq(maj, min) 0
#endif
# 175 "/usr/include/features.h" 3 4
/* Whether to use feature set F. */
#define __GLIBC_USE(F) __GLIBC_USE_ ## F
/* _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 0 /* disabled by -frewrite-includes */
#if (defined _BSD_SOURCE || defined _SVID_SOURCE) \
&& !defined _DEFAULT_SOURCE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 185 "/usr/include/features.h" 3 4
# warning "_BSD_SOURCE and _SVID_SOURCE are deprecated, use _DEFAULT_SOURCE"
# undef _DEFAULT_SOURCE
# define _DEFAULT_SOURCE 1
#endif
# 189 "/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
# 213 "/usr/include/features.h" 3 4
/* If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
define _DEFAULT_SOURCE. */
#if 0 /* disabled by -frewrite-includes */
#if (defined _DEFAULT_SOURCE \
|| (!defined __STRICT_ANSI__ \
&& !defined _ISOC99_SOURCE && !defined _ISOC11_SOURCE \
&& !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE \
&& !defined _XOPEN_SOURCE))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 221 "/usr/include/features.h" 3 4
# undef _DEFAULT_SOURCE
# define _DEFAULT_SOURCE 1
#endif
# 224 "/usr/include/features.h" 3 4
/* This is to enable the ISO C11 extension. */
#if 0 /* disabled by -frewrite-includes */
#if (defined _ISOC11_SOURCE \
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 201112L))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 228 "/usr/include/features.h" 3 4
# define __USE_ISOC11 1
#endif
# 230 "/usr/include/features.h" 3 4
/* This is to enable the ISO C99 extension. */
#if 0 /* disabled by -frewrite-includes */
#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 234 "/usr/include/features.h" 3 4
# define __USE_ISOC99 1
#endif
# 236 "/usr/include/features.h" 3 4
/* This is to enable the ISO C90 Amendment 1:1995 extension. */
#if 0 /* disabled by -frewrite-includes */
#if (defined _ISOC99_SOURCE || defined _ISOC11_SOURCE \
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 240 "/usr/include/features.h" 3 4
# define __USE_ISOC95 1
#endif
# 242 "/usr/include/features.h" 3 4
#ifdef __cplusplus
/* This is to enable compatibility for ISO C++17. */
#if 0 /* disabled by -frewrite-includes */
# if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 246 "/usr/include/features.h" 3 4
# define __USE_ISOC11 1
# endif
# 248 "/usr/include/features.h" 3 4
/* This is to enable compatibility for ISO C++11.
Check the temporary macro for now, too. */
#if 0 /* disabled by -frewrite-includes */
# if __cplusplus >= 201103L || defined __GXX_EXPERIMENTAL_CXX0X__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 251 "/usr/include/features.h" 3 4
# define __USE_ISOCXX11 1
# define __USE_ISOC99 1
# endif
# 254 "/usr/include/features.h" 3 4
#endif
# 255 "/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 0 /* disabled by -frewrite-includes */
# if !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 261 "/usr/include/features.h" 3 4
# define __USE_POSIX_IMPLICITLY 1
# endif
# 263 "/usr/include/features.h" 3 4
# undef _POSIX_SOURCE
# define _POSIX_SOURCE 1
# undef _POSIX_C_SOURCE
# define _POSIX_C_SOURCE 200809L
#endif
# 268 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if ((!defined __STRICT_ANSI__ \
|| (defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) >= 500)) \
&& !defined _POSIX_SOURCE && !defined _POSIX_C_SOURCE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 272 "/usr/include/features.h" 3 4
# define _POSIX_SOURCE 1
#if 0 /* disabled by -frewrite-includes */
# if defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 500
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 274 "/usr/include/features.h" 3 4
# define _POSIX_C_SOURCE 2
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 600
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 276 "/usr/include/features.h" 3 4
# define _POSIX_C_SOURCE 199506L
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif defined _XOPEN_SOURCE && (_XOPEN_SOURCE - 0) < 700
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 278 "/usr/include/features.h" 3 4
# define _POSIX_C_SOURCE 200112L
# else
# 280 "/usr/include/features.h" 3 4
# define _POSIX_C_SOURCE 200809L
# endif
# 282 "/usr/include/features.h" 3 4
# define __USE_POSIX_IMPLICITLY 1
#endif
# 284 "/usr/include/features.h" 3 4
/* Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
defined in all multithreaded code. GNU libc has not required this
for many years. We now treat them as compatibility synonyms for
_POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
comprehensive support for multithreaded code. Using them never
lowers the selected level of POSIX conformance, only raises it. */
#if 0 /* disabled by -frewrite-includes */
#if ((!defined _POSIX_C_SOURCE || (_POSIX_C_SOURCE - 0) < 199506L) \
&& (defined _REENTRANT || defined _THREAD_SAFE))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 293 "/usr/include/features.h" 3 4
# define _POSIX_SOURCE 1
# undef _POSIX_C_SOURCE
# define _POSIX_C_SOURCE 199506L
#endif
# 297 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if (defined _POSIX_SOURCE \
|| (defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 1) \
|| defined _XOPEN_SOURCE)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 301 "/usr/include/features.h" 3 4
# define __USE_POSIX 1
#endif
# 303 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _POSIX_C_SOURCE && _POSIX_C_SOURCE >= 2 || defined _XOPEN_SOURCE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 305 "/usr/include/features.h" 3 4
# define __USE_POSIX2 1
#endif
# 307 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199309L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 309 "/usr/include/features.h" 3 4
# define __USE_POSIX199309 1
#endif
# 311 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 199506L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 313 "/usr/include/features.h" 3 4
# define __USE_POSIX199506 1
#endif
# 315 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200112L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 317 "/usr/include/features.h" 3 4
# define __USE_XOPEN2K 1
# undef __USE_ISOC95
# define __USE_ISOC95 1
# undef __USE_ISOC99
# define __USE_ISOC99 1
#endif
# 323 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _POSIX_C_SOURCE && (_POSIX_C_SOURCE - 0) >= 200809L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 325 "/usr/include/features.h" 3 4
# define __USE_XOPEN2K8 1
# undef _ATFILE_SOURCE
# define _ATFILE_SOURCE 1
#endif
# 329 "/usr/include/features.h" 3 4
#ifdef _XOPEN_SOURCE
# define __USE_XOPEN 1
#if 0 /* disabled by -frewrite-includes */
# if (_XOPEN_SOURCE - 0) >= 500
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 333 "/usr/include/features.h" 3 4
# define __USE_XOPEN_EXTENDED 1
# define __USE_UNIX98 1
# undef _LARGEFILE_SOURCE
# define _LARGEFILE_SOURCE 1
#if 0 /* disabled by -frewrite-includes */
# if (_XOPEN_SOURCE - 0) >= 600
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 338 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if (_XOPEN_SOURCE - 0) >= 700
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 339 "/usr/include/features.h" 3 4
# define __USE_XOPEN2K8 1
# define __USE_XOPEN2K8XSI 1
# endif
# 342 "/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
# 349 "/usr/include/features.h" 3 4
# else
# 350 "/usr/include/features.h" 3 4
# ifdef _XOPEN_SOURCE_EXTENDED
# define __USE_XOPEN_EXTENDED 1
# endif
# 353 "/usr/include/features.h" 3 4
# endif
# 354 "/usr/include/features.h" 3 4
#endif
# 355 "/usr/include/features.h" 3 4
#ifdef _LARGEFILE_SOURCE
# define __USE_LARGEFILE 1
#endif
# 359 "/usr/include/features.h" 3 4
#ifdef _LARGEFILE64_SOURCE
# define __USE_LARGEFILE64 1
#endif
# 363 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _FILE_OFFSET_BITS && _FILE_OFFSET_BITS == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 365 "/usr/include/features.h" 3 4
# define __USE_FILE_OFFSET64 1
#endif
# 367 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _DEFAULT_SOURCE
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 369 "/usr/include/features.h" 3 4
# define __USE_MISC 1
#endif
# 371 "/usr/include/features.h" 3 4
#ifdef _ATFILE_SOURCE
# define __USE_ATFILE 1
#endif
# 375 "/usr/include/features.h" 3 4
#ifdef _GNU_SOURCE
# define __USE_GNU 1
#endif
# 379 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \
&& __GNUC_PREREQ (4, 1) && defined __OPTIMIZE__ && __OPTIMIZE__ > 0
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 382 "/usr/include/features.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if _FORTIFY_SOURCE > 1
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 383 "/usr/include/features.h" 3 4
# define __USE_FORTIFY_LEVEL 2
# else
# 385 "/usr/include/features.h" 3 4
# define __USE_FORTIFY_LEVEL 1
# endif
# 387 "/usr/include/features.h" 3 4
#else
# 388 "/usr/include/features.h" 3 4
# define __USE_FORTIFY_LEVEL 0
#endif
# 390 "/usr/include/features.h" 3 4
/* The function 'gets' existed in C89, but is impossible to use
safely. It has been removed from ISO C11 and ISO C++14. Note: for
compatibility with various implementations of <cstdio>, this test
must consider only the value of __cplusplus when compiling C++. */
#if 0 /* disabled by -frewrite-includes */
#if defined __cplusplus ? __cplusplus >= 201402L : defined __USE_ISOC11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 396 "/usr/include/features.h" 3 4
# define __GLIBC_USE_DEPRECATED_GETS 0
#else
# 398 "/usr/include/features.h" 3 4
# define __GLIBC_USE_DEPRECATED_GETS 1
#endif
# 400 "/usr/include/features.h" 3 4
/* GNU formerly extended the scanf functions with modified format
specifiers %as, %aS, and %a[...] that allocate a buffer for the
input using malloc. This extension conflicts with ISO C99, which
defines %a as a standalone format specifier that reads a floating-
point number; moreover, POSIX.1-2008 provides the same feature
using the modifier letter 'm' instead (%ms, %mS, %m[...]).
We now follow C99 unless GNU extensions are active and the compiler
is specifically in C89 or C++98 mode (strict or not). For
instance, with GCC, -std=gnu11 will have C99-compliant scanf with
or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
old extension. */
#if 0 /* disabled by -frewrite-includes */
#if (defined __USE_GNU \
&& (defined __cplusplus \
? (__cplusplus < 201103L && !defined __GXX_EXPERIMENTAL_CXX0X__) \
: (!defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L)))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 417 "/usr/include/features.h" 3 4
# define __GLIBC_USE_DEPRECATED_SCANF 1
#else
# 419 "/usr/include/features.h" 3 4
# define __GLIBC_USE_DEPRECATED_SCANF 0
#endif
# 421 "/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 */
# 424 "/usr/include/features.h" 3 4
# 1 "/usr/include/stdc-predef.h" 1 3 4
/* Copyright (C) 1991-2019 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 0 /* disabled by -frewrite-includes */
# if __GCC_IEC_559 > 0
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 38 "/usr/include/stdc-predef.h" 3 4
# 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 0 /* disabled by -frewrite-includes */
# if __GCC_IEC_559_COMPLEX > 0
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 46 "/usr/include/stdc-predef.h" 3 4
# 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 10.0.0. Version 10.0 of the Unicode Standard is
synchronized with ISO/IEC 10646:2017, fifth edition, plus
the following additions from Amendment 1 to the fifth edition:
- 56 emoji characters
- 285 hentaigana
- 3 additional Zanabazar Square characters */
#define __STDC_ISO_10646__ 201706L
#endif
# 61 "/usr/include/stdc-predef.h" 3 4
# 425 "/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__ 30
#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 */
# 446 "/usr/include/features.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 1 3 4
/* Copyright (C) 1992-2019 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 0 /* disabled by -frewrite-includes */
#if defined __GNUC__ && !defined __STDC__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 30 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 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 0 /* disabled by -frewrite-includes */
# if __GNUC_PREREQ (4, 6) && !defined _LIBC
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 42 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 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 0 /* disabled by -frewrite-includes */
# if !defined __cplusplus && __GNUC_PREREQ (3, 3)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 55 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __THROW __attribute__ ((__nothrow__ __LEAF))
# define __THROWNL __attribute__ ((__nothrow__))
# define __NTH(fct) __attribute__ ((__nothrow__ __LEAF)) fct
# define __NTHNL(fct) __attribute__ ((__nothrow__)) fct
# else
# 60 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if defined __cplusplus && __GNUC_PREREQ (2,8)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 61 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __THROW throw ()
# define __THROWNL throw ()
# define __NTH(fct) __LEAF_ATTR fct throw ()
# define __NTHNL(fct) fct throw ()
# else
# 66 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __THROW
# define __THROWNL
# define __NTH(fct) fct
# define __NTHNL(fct) fct
# endif
# 71 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# endif
# 72 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#else /* Not GCC. */
# 74 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if (defined __cplusplus \
|| (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 77 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __inline inline
# else
# 79 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __inline /* No inline functions. */
# endif
# 81 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __THROW
# define __THROWNL
# define __NTH(fct) fct
#endif /* GCC. */
# 87 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Compilers that are not clang may object to
#if defined __clang__ && __has_extension(...)
even though they do not need to evaluate the right-hand side of the &&. */
#if 0 /* disabled by -frewrite-includes */
#if defined __clang__ && defined __has_extension
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 92 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __glibc_clang_has_extension(ext) __has_extension (ext)
#else
# 94 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __glibc_clang_has_extension(ext) 0
#endif
# 96 "/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 *
/* C++ needs to know that types and declarations are C, not C++. */
#ifdef __cplusplus
# define __BEGIN_DECLS extern "C" {
# define __END_DECLS }
#else
# 117 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __BEGIN_DECLS
# define __END_DECLS
#endif
# 120 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (4,3)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 127 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 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
# 133 "/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
# 137 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Support for flexible arrays.
Headers that should use flexible arrays only if they're "real"
(e.g. only if they won't affect sizeof()) should test
#if __glibc_c99_flexarr_available. */
#if 0 /* disabled by -frewrite-includes */
#if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 143 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __flexarr []
# define __glibc_c99_flexarr_available 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __GNUC_PREREQ (2,97)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 146 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* GCC 2.97 supports C99 flexible array members as an extension,
even when in C89 mode or compiling C++ (any version). */
# define __flexarr []
# define __glibc_c99_flexarr_available 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __GNUC__
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 151 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Pre-2.97 GCC did not support C99 flexible arrays but did have
an equivalent extension with slightly different notation. */
# define __flexarr [0]
# define __glibc_c99_flexarr_available 1
#else
# 156 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Some other non-C99 compiler. Approximate with [1]. */
# define __flexarr [1]
# define __glibc_c99_flexarr_available 0
#endif
# 160 "/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 0 /* disabled by -frewrite-includes */
#if defined __GNUC__ && __GNUC__ >= 2
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 173 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 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
# 181 "/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
# 186 "/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
# 196 "/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 0 /* disabled by -frewrite-includes */
#if !defined __GNUC__ || __GNUC__ < 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 201 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute__(xyz) /* Ignore */
#endif
# 203 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (2,96)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 208 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_malloc__ __attribute__ ((__malloc__))
#else
# 210 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_malloc__ /* Ignore */
#endif
# 212 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (4, 3)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 216 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_alloc_size__(params) \
__attribute__ ((__alloc_size__ params))
#else
# 219 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_alloc_size__(params) /* Ignore. */
#endif
# 221 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (2,96)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 226 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_pure__ __attribute__ ((__pure__))
#else
# 228 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_pure__ /* Ignore */
#endif
# 230 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* This declaration tells the compiler that the value is constant. */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (2,5)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 233 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_const__ __attribute__ ((__const__))
#else
# 235 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_const__ /* Ignore */
#endif
# 237 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (3,1)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 242 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_used__ __attribute__ ((__used__))
# define __attribute_noinline__ __attribute__ ((__noinline__))
#else
# 245 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_used__ __attribute__ ((__unused__))
# define __attribute_noinline__ /* Ignore */
#endif
# 248 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Since version 3.2, gcc allows marking deprecated functions. */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (3,2)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 251 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_deprecated__ __attribute__ ((__deprecated__))
#else
# 253 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_deprecated__ /* Ignore */
#endif
# 255 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Since version 4.5, gcc also allows one to specify the message printed
when a deprecated function is used. clang claims to be gcc 4.2, but
may also support this feature. */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (4,5) \
|| __glibc_clang_has_extension (__attribute_deprecated_with_message__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 261 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_deprecated_msg__(msg) \
__attribute__ ((__deprecated__ (msg)))
#else
# 264 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_deprecated_msg__(msg) __attribute_deprecated__
#endif
# 266 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (2,8)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 274 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_format_arg__(x) __attribute__ ((__format_arg__ (x)))
#else
# 276 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_format_arg__(x) /* Ignore */
#endif
# 278 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (2,97)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 284 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_format_strfmon__(a,b) \
__attribute__ ((__format__ (__strfmon__, a, b)))
#else
# 287 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_format_strfmon__(a,b) /* Ignore */
#endif
# 289 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (3,3)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 293 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __nonnull(params) __attribute__ ((__nonnull__ params))
#else
# 295 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __nonnull(params)
#endif
# 297 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (3,4)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 301 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_warn_unused_result__ \
__attribute__ ((__warn_unused_result__))
#if 0 /* disabled by -frewrite-includes */
# if __USE_FORTIFY_LEVEL > 0
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 304 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __wur __attribute_warn_unused_result__
# endif
# 306 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#else
# 307 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_warn_unused_result__ /* empty */
#endif
# 309 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#ifndef __wur
# define __wur /* Ignore */
#endif
# 312 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Forces a function to be always inlined. */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (3,2)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 315 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* The Linux kernel defines __always_inline in stddef.h (283d7573), and
it conflicts with this definition. Therefore undefine it first to
allow either header to be included first. */
# undef __always_inline
# define __always_inline __inline __attribute__ ((__always_inline__))
#else
# 321 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# undef __always_inline
# define __always_inline __inline
#endif
# 324 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (4,3)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 328 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_artificial__ __attribute__ ((__artificial__))
#else
# 330 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_artificial__ /* Ignore */
#endif
# 332 "/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 for by using the __GNUC_STDC_INLINE_ and
__GNUC_GNU_INLINE__ macro definitions. */
#if 0 /* disabled by -frewrite-includes */
#if (!defined __cplusplus || __GNUC_PREREQ (4,3) \
|| (defined __clang__ && (defined __GNUC_STDC_INLINE__ \
|| defined __GNUC_GNU_INLINE__)))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 345 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if defined __GNUC_STDC_INLINE__ || defined __cplusplus
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 346 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __extern_inline extern __inline __attribute__ ((__gnu_inline__))
# define __extern_always_inline \
extern __always_inline __attribute__ ((__gnu_inline__))
# else
# 350 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __extern_inline extern __inline
# define __extern_always_inline extern __always_inline
# endif
# 353 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#endif
# 354 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#ifdef __extern_always_inline
# define __fortify_function __extern_always_inline __attribute_artificial__
#endif
# 358 "/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 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (4,3)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 362 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __va_arg_pack() __builtin_va_arg_pack ()
# define __va_arg_pack_len() __builtin_va_arg_pack_len ()
#endif
# 365 "/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 0 /* disabled by -frewrite-includes */
#if !__GNUC_PREREQ (2,8)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 371 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __extension__ /* Ignore */
#endif
# 373 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* __restrict is known in EGCS 1.2 and above. */
#if 0 /* disabled by -frewrite-includes */
#if !__GNUC_PREREQ (2,92)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 376 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 377 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __restrict restrict
# else
# 379 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __restrict /* Ignore */
# 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
/* ISO C99 also allows to declare arrays as non-overlapping. The syntax is
array_name[restrict]
GCC 3.1 supports this. */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (3,1) && !defined __GNUG__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 387 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __restrict_arr __restrict
#else
# 389 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# ifdef __GNUC__
# define __restrict_arr /* Not supported in old GCC. */
# else
# 392 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 393 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __restrict_arr restrict
# else
# 395 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Some other non-C99 compiler. */
# define __restrict_arr /* Not supported. */
# endif
# 398 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# endif
# 399 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#endif
# 400 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __GNUC__ >= 3
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 402 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __glibc_unlikely(cond) __builtin_expect ((cond), 0)
# define __glibc_likely(cond) __builtin_expect ((cond), 1)
#else
# 405 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __glibc_unlikely(cond) (cond)
# define __glibc_likely(cond) (cond)
#endif
# 408 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#ifdef __has_attribute
# define __glibc_has_attribute(attr) __has_attribute (attr)
#else
# 412 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __glibc_has_attribute(attr) 0
#endif
# 414 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#ifdef __has_include
/* Do not use a function-like macro, so that __has_include can inhibit
macro expansion. */
# define __glibc_has_include __has_include
#else
# 420 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __glibc_has_include(header) 0
#endif
# 422 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if (!defined _Noreturn \
&& (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
&& !__GNUC_PREREQ (4,7))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 426 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if __GNUC_PREREQ (2,8)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 427 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define _Noreturn __attribute__ ((__noreturn__))
# else
# 429 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define _Noreturn
# endif
# 431 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#endif
# 432 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (8, 0)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 434 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Describes a char array whose address can safely be passed as the first
argument to strncpy and strncat, as the char array is not necessarily
a NUL-terminated string. */
# define __attribute_nonstring__ __attribute__ ((__nonstring__))
#else
# 439 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_nonstring__
#endif
# 441 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Undefine (also defined in libc-symbols.h). */
#undef __attribute_copy__
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (9, 0)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 445 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Copies attributes from the declaration or type referenced by
the argument. */
# define __attribute_copy__(arg) __attribute__ ((__copy__ (arg)))
#else
# 449 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __attribute_copy__(arg)
#endif
# 451 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if (!defined _Static_assert && !defined __cplusplus \
&& (defined __STDC_VERSION__ ? __STDC_VERSION__ : 0) < 201112 \
&& (!__GNUC_PREREQ (4, 6) || defined __STRICT_ANSI__))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 455 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define _Static_assert(expr, diagnostic) \
extern int (*__Static_assert_function (void)) \
[!!sizeof (struct { int __error_if_negative: (expr) ? 2 : -1; })]
#endif
# 459 "/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 */
# 460 "/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 0 /* disabled by -frewrite-includes */
#if defined __x86_64__ && !defined __ILP32__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 4 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE 64
#else
# 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE 32
#define __WORDSIZE32_SIZE_ULONG 0
#define __WORDSIZE32_PTRDIFF_LONG 0
#endif
# 10 "/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
#else
# 16 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE_TIME64_COMPAT32 0
#endif
# 18 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# 461 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/long-double.h>
#endif /* expanded by -frewrite-includes */
# 461 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/long-double.h" 1 3 4
/* Properties of long double type. ldbl-96 version.
Copyright (C) 2016-2019 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 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/>. */
/* long double is distinct from double, so there is nothing to
define here. */
# 462 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 2 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 464 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 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
# 481 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#endif
# 482 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !defined __LDBL_COMPAT || !defined __REDIRECT
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 483 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 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
# 493 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#endif
# 494 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is
intended for use in preprocessor macros.
Note: MESSAGE must be a _single_ string; concatenation of string
literals is not supported. */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (4,8) || __glibc_clang_prereq (3,5)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 501 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __glibc_macro_warning1(message) _Pragma (#message)
# define __glibc_macro_warning(message) \
__glibc_macro_warning1 (GCC warning message)
#else
# 505 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __glibc_macro_warning(msg)
#endif
# 507 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
/* Generic selection (ISO C11) is a C-only feature, available in GCC
since version 4.9. Previous versions do not provide generic
selection, even though they might set __STDC_VERSION__ to 201112L,
when in -std=c11 mode. Thus, we must check for !defined __GNUC__
when testing __STDC_VERSION__ for generic selection support.
On the other hand, Clang also defines __GNUC__, so a clang-specific
check is required to enable the use of generic selection. */
#if 0 /* disabled by -frewrite-includes */
#if !defined __cplusplus \
&& (__GNUC_PREREQ (4, 9) \
|| __glibc_clang_has_extension (c_generic_selections) \
|| (!defined __GNUC__ && defined __STDC_VERSION__ \
&& __STDC_VERSION__ >= 201112L))
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 520 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __HAVE_GENERIC_SELECTION 1
#else
# 522 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# define __HAVE_GENERIC_SELECTION 0
#endif
# 524 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
#endif /* sys/cdefs.h */
# 526 "/usr/include/x86_64-linux-gnu/sys/cdefs.h" 3 4
# 447 "/usr/include/features.h" 2 3 4
# endif
# 448 "/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 0 /* disabled by -frewrite-includes */
# if defined __USE_FILE_OFFSET64 && !defined __REDIRECT
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 452 "/usr/include/features.h" 3 4
# define __USE_LARGEFILE 1
# define __USE_LARGEFILE64 1
# endif
# 455 "/usr/include/features.h" 3 4
#endif /* !ASSEMBLER */
# 457 "/usr/include/features.h" 3 4
/* Decide whether we can define 'extern inline' functions in headers. */
#if 0 /* disabled by -frewrite-includes */
#if __GNUC_PREREQ (2, 7) && defined __OPTIMIZE__ \
&& !defined __OPTIMIZE_SIZE__ && !defined __NO_INLINE__ \
&& defined __extern_inline
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 462 "/usr/include/features.h" 3 4
# define __USE_EXTERN_INLINES 1
#endif
# 464 "/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 */
# 470 "/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 0 /* disabled by -frewrite-includes */
#if !defined __x86_64__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 7 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4
#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 0 /* disabled by -frewrite-includes */
#if defined __x86_64__ && defined __LP64__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 10 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4
#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_fchflags
#define __stub_gtty
#define __stub_lchmod
#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 0 /* disabled by -frewrite-includes */
#if defined __x86_64__ && defined __ILP32__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 13 "/usr/include/x86_64-linux-gnu/gnu/stubs.h" 3 4
#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
# 471 "/usr/include/features.h" 2 3 4
#endif /* features.h */
# 474 "/usr/include/features.h" 3 4
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 0 /* disabled by -frewrite-includes */
#if __GLIBC_PREREQ(2,15) && defined(_GNU_SOURCE)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 45 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/os_defines.h" 3
# undef _GLIBCXX_HAVE_GETS
#endif
# 47 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/os_defines.h" 3
# 525 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 */
# 527 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/cpu_defines.h" 1 3
// Specific definitions for generic platforms -*- C++ -*-
// Copyright (C) 2005-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/cpu_defines.h" 3
# 528 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 534 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 541 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 549 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L && _GLIBCXX_USE_CXX11_ABI \
&& _GLIBCXX_USE_DUAL_ABI && __cpp_transactional_memory >= 201500L \
&& !_GLIBCXX_FULLY_DYNAMIC_STRING && _GLIBCXX_USE_WEAK_REF \
&& _GLIBCXX_USE_ALLOCATOR_NEW
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 557 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#define _GLIBCXX_TXN_SAFE transaction_safe
#define _GLIBCXX_TXN_SAFE_DYN transaction_safe_dynamic
#else
# 560 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#define _GLIBCXX_TXN_SAFE
#define _GLIBCXX_TXN_SAFE_DYN
#endif
# 563 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 565 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// In C++17 mathematical special functions are in namespace std.
# define _GLIBCXX_USE_STD_SPEC_FUNCS 1
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __cplusplus >= 201103L && __STDCPP_WANT_MATH_SPEC_FUNCS__ != 0
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 568 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 571 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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
# 579 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_FAST_MATH 0
#endif
# 581 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 595 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_MATH
# define _GLIBCXX_USE_C99_MATH _GLIBCXX11_USE_C99_MATH
# endif
# 598 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_COMPLEX
# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX11_USE_C99_COMPLEX
# endif
# 601 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_STDIO
# define _GLIBCXX_USE_C99_STDIO _GLIBCXX11_USE_C99_STDIO
# endif
# 604 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_STDLIB
# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX11_USE_C99_STDLIB
# endif
# 607 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_WCHAR
# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX11_USE_C99_WCHAR
# endif
# 610 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#else
# 611 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_MATH
# define _GLIBCXX_USE_C99_MATH _GLIBCXX98_USE_C99_MATH
# endif
# 614 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_COMPLEX
# define _GLIBCXX_USE_C99_COMPLEX _GLIBCXX98_USE_C99_COMPLEX
# endif
# 617 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_STDIO
# define _GLIBCXX_USE_C99_STDIO _GLIBCXX98_USE_C99_STDIO
# endif
# 620 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_STDLIB
# define _GLIBCXX_USE_C99_STDLIB _GLIBCXX98_USE_C99_STDLIB
# endif
# 623 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# ifndef _GLIBCXX_USE_C99_WCHAR
# define _GLIBCXX_USE_C99_WCHAR _GLIBCXX98_USE_C99_WCHAR
# endif
# 626 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 627 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Unless explicitly specified, enable char8_t extensions only if the core
// language char8_t feature macro is defined.
#ifndef _GLIBCXX_USE_CHAR8_T
# ifdef __cpp_char8_t
# define _GLIBCXX_USE_CHAR8_T 1
# endif
# 634 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 635 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#ifdef _GLIBCXX_USE_CHAR8_T
# define __cpp_lib_char8_t 201811L
#endif
# 638 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
/* Define if __float128 is supported on this host. */
#if 0 /* disabled by -frewrite-includes */
#if defined(__FLOAT128__) || defined(__SIZEOF_FLOAT128__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 641 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#define _GLIBCXX_USE_FLOAT128 1
#endif
# 643 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if __GNUC__ >= 7
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 645 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Assume these are available if the compiler claims to be a recent GCC:
# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1
# define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1
# define _GLIBCXX_HAVE_BUILTIN_LAUNDER 1
#if 0 /* disabled by -frewrite-includes */
# if __GNUC__ >= 9
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 650 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED 1
# endif
# 652 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__is_identifier) && defined(__has_builtin)
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 653 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// For non-GNU compilers:
#if 0 /* disabled by -frewrite-includes */
# if ! __is_identifier(__has_unique_object_representations)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 655 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_BUILTIN_HAS_UNIQ_OBJ_REP 1
# endif
# 657 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
# if ! __is_identifier(__is_aggregate)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 658 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1
# endif
# 660 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
# if __has_builtin(__builtin_launder)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 661 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_BUILTIN_LAUNDER 1
# endif
# 663 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
# if __has_builtin(__builtin_is_constant_evaluated)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 664 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED 1
# endif
# 666 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif // GCC
# 667 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// PSTL configuration
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 671 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// Preserved here so we have some idea which version of upstream we've pulled in
// #define PSTL_VERSION 104
// #define PSTL_VERSION_MAJOR (PSTL_VERSION/100)
// #define PSTL_VERSION_MINOR (PSTL_VERSION - PSTL_VERSION_MAJOR * 100)
// For now this defaults to being based on the presence of Thread Building Blocks
# ifndef _GLIBCXX_USE_TBB_PAR_BACKEND
# define _GLIBCXX_USE_TBB_PAR_BACKEND __has_include(<tbb/tbb.h>)
# endif
# 680 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
// This section will need some rework when a new (default) backend type is added
#if 0 /* disabled by -frewrite-includes */
# if _GLIBCXX_USE_TBB_PAR_BACKEND
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 682 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define __PSTL_USE_PAR_POLICIES 1
# endif
# 684 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define __PSTL_ASSERT(_Condition) __glibcxx_assert(_Condition)
# define __PSTL_ASSERT_MSG(_Condition, _Message) __glibcxx_assert(_Condition)
#if 0 /* expanded by -frewrite-includes */
#include <pstl/pstl_config.h>
#endif /* expanded by -frewrite-includes */
# 688 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# 689 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif
# 691 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/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 <arpa/inet.h> header file. */
#define _GLIBCXX_HAVE_ARPA_INET_H 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
/* Defined if shared_ptr reference counting should use atomic operations. */
#define _GLIBCXX_HAVE_ATOMIC_LOCK_POLICY 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 link is available in <unistd.h>. */
#define _GLIBCXX_HAVE_LINK 1
/* Define if futex syscall is available. */
#define _GLIBCXX_HAVE_LINUX_FUTEX 1
/* Define to 1 if you have the <linux/random.h> header file. */
#define _GLIBCXX_HAVE_LINUX_RANDOM_H 1
/* Define to 1 if you have the <linux/types.h> header file. */
#define _GLIBCXX_HAVE_LINUX_TYPES_H 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 to 1 if you have the <netdb.h> header file. */
#define _GLIBCXX_HAVE_NETDB_H 1
/* Define to 1 if you have the <netinet/in.h> header file. */
#define _GLIBCXX_HAVE_NETINET_IN_H 1
/* Define to 1 if you have the <netinet/tcp.h> header file. */
#define _GLIBCXX_HAVE_NETINET_TCP_H 1
/* 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 <poll.h> header file. */
#define _GLIBCXX_HAVE_POLL_H 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 if readlink is available in <unistd.h>. */
#define _GLIBCXX_HAVE_READLINK 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 `sockatmark' function. */
#define _GLIBCXX_HAVE_SOCKATMARK 1
/* 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 if symlink is available in <unistd.h>. */
#define _GLIBCXX_HAVE_SYMLINK 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 */
#define _GLIBCXX_HAVE_SYS_SDT_H 1
/* 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/socket.h> header file. */
#define _GLIBCXX_HAVE_SYS_SOCKET_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_ISREG 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 you have the `timespec_get' function. */
#define _GLIBCXX_HAVE_TIMESPEC_GET 1
/* Define to 1 if the target supports thread-local storage. */
#define _GLIBCXX_HAVE_TLS 1
/* Define if truncate is available in <unistd.h>. */
#define _GLIBCXX_HAVE_TRUNCATE 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 `_wfopen' function. */
/* #undef _GLIBCXX_HAVE__WFOPEN */
/* 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 /dev/random and /dev/urandom are available for
std::random_device. */
#define _GLIBCXX_USE_DEV_RANDOM 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
/* 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
/* Define if lstat is available in <sys/stat.h>. */
#define _GLIBCXX_USE_LSTAT 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 utime is available in <utime.h>. */
#define _GLIBCXX_USE_UTIME 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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1737 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_FP */
#endif
# 1739 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
/* Define if all C++11 integral type overloads are available in <math.h>. */
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1742 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
/* #undef __CORRECT_ISO_CPP11_MATH_H_PROTO_INT */
#endif
# 1744 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ACOSF) && ! defined (_GLIBCXX_HAVE_ACOSF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1746 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ACOSF 1
# define acosf _acosf
#endif
# 1749 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ACOSL) && ! defined (_GLIBCXX_HAVE_ACOSL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1751 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ACOSL 1
# define acosl _acosl
#endif
# 1754 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ASINF) && ! defined (_GLIBCXX_HAVE_ASINF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1756 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ASINF 1
# define asinf _asinf
#endif
# 1759 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ASINL) && ! defined (_GLIBCXX_HAVE_ASINL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1761 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ASINL 1
# define asinl _asinl
#endif
# 1764 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ATAN2F) && ! defined (_GLIBCXX_HAVE_ATAN2F)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1766 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ATAN2F 1
# define atan2f _atan2f
#endif
# 1769 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ATAN2L) && ! defined (_GLIBCXX_HAVE_ATAN2L)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1771 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ATAN2L 1
# define atan2l _atan2l
#endif
# 1774 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ATANF) && ! defined (_GLIBCXX_HAVE_ATANF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1776 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ATANF 1
# define atanf _atanf
#endif
# 1779 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ATANL) && ! defined (_GLIBCXX_HAVE_ATANL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1781 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ATANL 1
# define atanl _atanl
#endif
# 1784 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__CEILF) && ! defined (_GLIBCXX_HAVE_CEILF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1786 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_CEILF 1
# define ceilf _ceilf
#endif
# 1789 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__CEILL) && ! defined (_GLIBCXX_HAVE_CEILL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1791 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_CEILL 1
# define ceill _ceill
#endif
# 1794 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__COSF) && ! defined (_GLIBCXX_HAVE_COSF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1796 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_COSF 1
# define cosf _cosf
#endif
# 1799 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__COSHF) && ! defined (_GLIBCXX_HAVE_COSHF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1801 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_COSHF 1
# define coshf _coshf
#endif
# 1804 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__COSHL) && ! defined (_GLIBCXX_HAVE_COSHL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1806 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_COSHL 1
# define coshl _coshl
#endif
# 1809 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__COSL) && ! defined (_GLIBCXX_HAVE_COSL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1811 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_COSL 1
# define cosl _cosl
#endif
# 1814 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__EXPF) && ! defined (_GLIBCXX_HAVE_EXPF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1816 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_EXPF 1
# define expf _expf
#endif
# 1819 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__EXPL) && ! defined (_GLIBCXX_HAVE_EXPL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1821 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_EXPL 1
# define expl _expl
#endif
# 1824 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FABSF) && ! defined (_GLIBCXX_HAVE_FABSF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1826 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FABSF 1
# define fabsf _fabsf
#endif
# 1829 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FABSL) && ! defined (_GLIBCXX_HAVE_FABSL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1831 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FABSL 1
# define fabsl _fabsl
#endif
# 1834 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FINITE) && ! defined (_GLIBCXX_HAVE_FINITE)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1836 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FINITE 1
# define finite _finite
#endif
# 1839 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FINITEF) && ! defined (_GLIBCXX_HAVE_FINITEF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1841 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FINITEF 1
# define finitef _finitef
#endif
# 1844 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FINITEL) && ! defined (_GLIBCXX_HAVE_FINITEL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1846 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FINITEL 1
# define finitel _finitel
#endif
# 1849 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FLOORF) && ! defined (_GLIBCXX_HAVE_FLOORF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1851 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FLOORF 1
# define floorf _floorf
#endif
# 1854 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FLOORL) && ! defined (_GLIBCXX_HAVE_FLOORL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1856 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FLOORL 1
# define floorl _floorl
#endif
# 1859 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FMODF) && ! defined (_GLIBCXX_HAVE_FMODF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1861 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FMODF 1
# define fmodf _fmodf
#endif
# 1864 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FMODL) && ! defined (_GLIBCXX_HAVE_FMODL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1866 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FMODL 1
# define fmodl _fmodl
#endif
# 1869 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FPCLASS) && ! defined (_GLIBCXX_HAVE_FPCLASS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1871 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FPCLASS 1
# define fpclass _fpclass
#endif
# 1874 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FREXPF) && ! defined (_GLIBCXX_HAVE_FREXPF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1876 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FREXPF 1
# define frexpf _frexpf
#endif
# 1879 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__FREXPL) && ! defined (_GLIBCXX_HAVE_FREXPL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1881 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_FREXPL 1
# define frexpl _frexpl
#endif
# 1884 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__HYPOT) && ! defined (_GLIBCXX_HAVE_HYPOT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1886 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_HYPOT 1
# define hypot _hypot
#endif
# 1889 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__HYPOTF) && ! defined (_GLIBCXX_HAVE_HYPOTF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1891 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_HYPOTF 1
# define hypotf _hypotf
#endif
# 1894 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__HYPOTL) && ! defined (_GLIBCXX_HAVE_HYPOTL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1896 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_HYPOTL 1
# define hypotl _hypotl
#endif
# 1899 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ISINF) && ! defined (_GLIBCXX_HAVE_ISINF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1901 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ISINF 1
# define isinf _isinf
#endif
# 1904 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ISINFF) && ! defined (_GLIBCXX_HAVE_ISINFF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1906 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ISINFF 1
# define isinff _isinff
#endif
# 1909 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ISINFL) && ! defined (_GLIBCXX_HAVE_ISINFL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1911 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ISINFL 1
# define isinfl _isinfl
#endif
# 1914 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ISNAN) && ! defined (_GLIBCXX_HAVE_ISNAN)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1916 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ISNAN 1
# define isnan _isnan
#endif
# 1919 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ISNANF) && ! defined (_GLIBCXX_HAVE_ISNANF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1921 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ISNANF 1
# define isnanf _isnanf
#endif
# 1924 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__ISNANL) && ! defined (_GLIBCXX_HAVE_ISNANL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1926 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_ISNANL 1
# define isnanl _isnanl
#endif
# 1929 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__LDEXPF) && ! defined (_GLIBCXX_HAVE_LDEXPF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1931 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_LDEXPF 1
# define ldexpf _ldexpf
#endif
# 1934 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__LDEXPL) && ! defined (_GLIBCXX_HAVE_LDEXPL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1936 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_LDEXPL 1
# define ldexpl _ldexpl
#endif
# 1939 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__LOG10F) && ! defined (_GLIBCXX_HAVE_LOG10F)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1941 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_LOG10F 1
# define log10f _log10f
#endif
# 1944 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__LOG10L) && ! defined (_GLIBCXX_HAVE_LOG10L)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1946 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_LOG10L 1
# define log10l _log10l
#endif
# 1949 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__LOGF) && ! defined (_GLIBCXX_HAVE_LOGF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1951 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_LOGF 1
# define logf _logf
#endif
# 1954 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__LOGL) && ! defined (_GLIBCXX_HAVE_LOGL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1956 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_LOGL 1
# define logl _logl
#endif
# 1959 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__MODF) && ! defined (_GLIBCXX_HAVE_MODF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1961 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_MODF 1
# define modf _modf
#endif
# 1964 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__MODFF) && ! defined (_GLIBCXX_HAVE_MODFF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1966 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_MODFF 1
# define modff _modff
#endif
# 1969 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__MODFL) && ! defined (_GLIBCXX_HAVE_MODFL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1971 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_MODFL 1
# define modfl _modfl
#endif
# 1974 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__POWF) && ! defined (_GLIBCXX_HAVE_POWF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1976 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_POWF 1
# define powf _powf
#endif
# 1979 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__POWL) && ! defined (_GLIBCXX_HAVE_POWL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1981 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_POWL 1
# define powl _powl
#endif
# 1984 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__QFPCLASS) && ! defined (_GLIBCXX_HAVE_QFPCLASS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1986 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_QFPCLASS 1
# define qfpclass _qfpclass
#endif
# 1989 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SINCOS) && ! defined (_GLIBCXX_HAVE_SINCOS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1991 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SINCOS 1
# define sincos _sincos
#endif
# 1994 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SINCOSF) && ! defined (_GLIBCXX_HAVE_SINCOSF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1996 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SINCOSF 1
# define sincosf _sincosf
#endif
# 1999 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SINCOSL) && ! defined (_GLIBCXX_HAVE_SINCOSL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2001 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SINCOSL 1
# define sincosl _sincosl
#endif
# 2004 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SINF) && ! defined (_GLIBCXX_HAVE_SINF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2006 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SINF 1
# define sinf _sinf
#endif
# 2009 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SINHF) && ! defined (_GLIBCXX_HAVE_SINHF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2011 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SINHF 1
# define sinhf _sinhf
#endif
# 2014 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SINHL) && ! defined (_GLIBCXX_HAVE_SINHL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2016 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SINHL 1
# define sinhl _sinhl
#endif
# 2019 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SINL) && ! defined (_GLIBCXX_HAVE_SINL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2021 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SINL 1
# define sinl _sinl
#endif
# 2024 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SQRTF) && ! defined (_GLIBCXX_HAVE_SQRTF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2026 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SQRTF 1
# define sqrtf _sqrtf
#endif
# 2029 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__SQRTL) && ! defined (_GLIBCXX_HAVE_SQRTL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2031 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_SQRTL 1
# define sqrtl _sqrtl
#endif
# 2034 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__STRTOF) && ! defined (_GLIBCXX_HAVE_STRTOF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2036 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_STRTOF 1
# define strtof _strtof
#endif
# 2039 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__STRTOLD) && ! defined (_GLIBCXX_HAVE_STRTOLD)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2041 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_STRTOLD 1
# define strtold _strtold
#endif
# 2044 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__TANF) && ! defined (_GLIBCXX_HAVE_TANF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2046 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_TANF 1
# define tanf _tanf
#endif
# 2049 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__TANHF) && ! defined (_GLIBCXX_HAVE_TANHF)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2051 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_TANHF 1
# define tanhf _tanhf
#endif
# 2054 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__TANHL) && ! defined (_GLIBCXX_HAVE_TANHL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2056 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_TANHL 1
# define tanhl _tanhl
#endif
# 2059 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined (_GLIBCXX_HAVE__TANL) && ! defined (_GLIBCXX_HAVE_TANL)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2061 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# define _GLIBCXX_HAVE_TANL 1
# define tanl _tanl
#endif
# 2064 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
#endif // _GLIBCXX_CXX_CONFIG_H
# 2066 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/x86_64-linux-gnu/c++/9/bits/c++config.h" 3
# 42 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <stdio.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
# 1 "/usr/include/stdio.h" 1 3 4
/* Define ISO C stdio on top of C++ iostreams.
Copyright (C) 1991-2019 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
#define _STDIO_H 1
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
#if 0 /* expanded by -frewrite-includes */
#include <bits/libc-header-start.h>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 1 3 4
/* Handle feature test macros at the start of a header.
Copyright (C) 2016-2019 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/>. */
/* This header is internal to glibc and should not be included outside
of glibc headers. Headers including it must define
__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
cannot have multiple include guards because ISO C feature test
macros depend on the definition of the macro when an affected
header is included, not when the first system header is
included. */
#ifndef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
# error "Never include <bits/libc-header-start.h> directly."
#endif
# 30 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
#if 0 /* expanded by -frewrite-includes */
#include <features.h>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# 34 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
macro. */
#undef __GLIBC_USE_LIB_EXT2
#if 0 /* disabled by -frewrite-includes */
#if (defined __USE_GNU \
|| (defined __STDC_WANT_LIB_EXT2__ && __STDC_WANT_LIB_EXT2__ > 0))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 40 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_LIB_EXT2 1
#else
# 42 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_LIB_EXT2 0
#endif
# 44 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
macro. */
#undef __GLIBC_USE_IEC_60559_BFP_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 49 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_BFP_EXT 1
#else
# 51 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_BFP_EXT 0
#endif
# 53 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-4:2015 defines the
__STDC_WANT_IEC_60559_FUNCS_EXT__ macro. */
#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_FUNCS_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 58 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
#else
# 60 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_FUNCS_EXT 0
#endif
# 62 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-3:2015 defines the
__STDC_WANT_IEC_60559_TYPES_EXT__ macro. */
#undef __GLIBC_USE_IEC_60559_TYPES_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_TYPES_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 67 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_TYPES_EXT 1
#else
# 69 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_TYPES_EXT 0
#endif
# 71 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# 28 "/usr/include/stdio.h" 2 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
# 1 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 1 3 4
/*===---- stddef.h - Basic type definitions --------------------------------===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*===-----------------------------------------------------------------------===
*/
#if 0 /* disabled by -frewrite-includes */
#if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \
defined(__need_size_t) || defined(__need_wchar_t) || \
defined(__need_NULL) || defined(__need_wint_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 13 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \
!defined(__need_wchar_t) && !defined(__need_NULL) && \
!defined(__need_wint_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 17 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
/* Always define miscellaneous pieces when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 19 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#define __STDDEF_H
#endif
# 21 "/home/john/llvm/lib/clang/10.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
# 28 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_ptrdiff_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 30 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !defined(_PTRDIFF_T) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 31 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
/* Always define ptrdiff_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 33 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#define _PTRDIFF_T
#endif
# 35 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
typedef __PTRDIFF_TYPE__ ptrdiff_t;
#endif
# 37 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#undef __need_ptrdiff_t
#endif /* defined(__need_ptrdiff_t) */
# 39 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_size_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 41 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !defined(_SIZE_T) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 42 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
/* Always define size_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 44 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#define _SIZE_T
#endif
# 46 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
typedef __SIZE_TYPE__ size_t;
#endif
# 48 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#undef __need_size_t
#endif /*defined(__need_size_t) */
# 50 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_STDDEF_H_misc)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 52 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
/* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is
* enabled. */
#if 0 /* disabled by -frewrite-includes */
#if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \
!defined(_RSIZE_T)) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 56 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
/* Always define rsize_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 58 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#define _RSIZE_T
#endif
# 60 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
typedef __SIZE_TYPE__ rsize_t;
#endif
# 62 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#endif /* defined(__need_STDDEF_H_misc) */
# 63 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_wchar_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 65 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#ifndef __cplusplus
/* Always define wchar_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !defined(_WCHAR_T) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 68 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 69 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#define _WCHAR_T
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_EXTENSIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 71 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#define _WCHAR_T_DEFINED
#endif
# 73 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#endif
# 74 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
typedef __WCHAR_TYPE__ wchar_t;
#endif
# 76 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#endif
# 77 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#undef __need_wchar_t
#endif /* defined(__need_wchar_t) */
# 79 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_NULL)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 81 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#undef NULL
#ifdef __cplusplus
#if 0 /* disabled by -frewrite-includes */
# if !defined(__MINGW32__) && !defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 84 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
# define NULL __null
# else
# 86 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
# define NULL 0
# endif
# 88 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#else
# 89 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
# define NULL ((void*)0)
#endif
# 91 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#ifdef __cplusplus
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 93 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
namespace std { typedef decltype(nullptr) nullptr_t; }
using ::std::nullptr_t;
#endif
# 96 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#endif
# 97 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#undef __need_NULL
#endif /* defined(__need_NULL) */
# 99 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_STDDEF_H_misc)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 101 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 102 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include "__stddef_max_align_t.h"
#endif /* expanded by -frewrite-includes */
# 102 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
# 103 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#endif
# 104 "/home/john/llvm/lib/clang/10.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) */
# 107 "/home/john/llvm/lib/clang/10.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 0 /* disabled by -frewrite-includes */
#if defined(__need_wint_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 111 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
/* Always define wint_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !defined(_WINT_T) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 113 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 114 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#define _WINT_T
#endif
# 116 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
typedef __WINT_TYPE__ wint_t;
#endif
# 118 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#undef __need_wint_t
#endif /* __need_wint_t */
# 120 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
#endif
# 122 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3 4
# 34 "/usr/include/stdio.h" 2 3 4
#define __need___va_list
#if 0 /* expanded by -frewrite-includes */
#include <stdarg.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/include/stdio.h" 3 4
# 1 "/home/john/llvm/lib/clang/10.0.0/include/stdarg.h" 1 3 4
/*===---- stdarg.h - Variable argument handling ----------------------------===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*===-----------------------------------------------------------------------===
*/
#ifndef __STDARG_H
#define __STDARG_H
#ifndef _VA_LIST
typedef __builtin_va_list va_list;
#define _VA_LIST
#endif
# 17 "/home/john/llvm/lib/clang/10.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 0 /* disabled by -frewrite-includes */
#if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L || !defined(__STRICT_ANSI__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 27 "/home/john/llvm/lib/clang/10.0.0/include/stdarg.h" 3 4
#define va_copy(dest, src) __builtin_va_copy(dest, src)
#endif
# 29 "/home/john/llvm/lib/clang/10.0.0/include/stdarg.h" 3 4
#ifndef __GNUC_VA_LIST
#define __GNUC_VA_LIST 1
typedef __builtin_va_list __gnuc_va_list;
#endif
# 34 "/home/john/llvm/lib/clang/10.0.0/include/stdarg.h" 3 4
#endif /* __STDARG_H */
# 36 "/home/john/llvm/lib/clang/10.0.0/include/stdarg.h" 3 4
# 37 "/usr/include/stdio.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/include/stdio.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-2019 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 0 /* disabled by -frewrite-includes */
#if defined __x86_64__ && !defined __ILP32__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 4 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE 64
#else
# 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE 32
#define __WORDSIZE32_SIZE_ULONG 0
#define __WORDSIZE32_PTRDIFF_LONG 0
#endif
# 10 "/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
#else
# 16 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE_TIME64_COMPAT32 0
#endif
# 18 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/timesize.h>
#endif /* expanded by -frewrite-includes */
# 28 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/timesize.h" 1 3 4
/* Bit size of the time_t type at glibc build time, x86-64 and x32 case.
Copyright (C) 2018-2019 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 0 /* disabled by -frewrite-includes */
#if defined __x86_64__ && defined __ILP32__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 20 "/usr/include/x86_64-linux-gnu/bits/timesize.h" 3 4
/* For x32, time is 64-bit even though word size is 32-bit. */
# define __TIMESIZE 64
#else
# 23 "/usr/include/x86_64-linux-gnu/bits/timesize.h" 3 4
/* For others, time size is word size. */
# define __TIMESIZE __WORDSIZE
#endif
# 26 "/usr/include/x86_64-linux-gnu/bits/timesize.h" 3 4
# 29 "/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 0 /* disabled by -frewrite-includes */
#if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 44 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
typedef signed long int __int64_t;
typedef unsigned long int __uint64_t;
#else
# 47 "/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
# 50 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
/* Smallest types with at least a given width. */
typedef __int8_t __int_least8_t;
typedef __uint8_t __uint_least8_t;
typedef __int16_t __int_least16_t;
typedef __uint16_t __uint_least16_t;
typedef __int32_t __int_least32_t;
typedef __uint32_t __uint_least32_t;
typedef __int64_t __int_least64_t;
typedef __uint64_t __uint_least64_t;
/* quad_t is also 64 bits. */
#if 0 /* disabled by -frewrite-includes */
#if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 63 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
typedef long int __quad_t;
typedef unsigned long int __u_quad_t;
#else
# 66 "/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
# 69 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
/* Largest integral types. */
#if 0 /* disabled by -frewrite-includes */
#if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 72 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
typedef long int __intmax_t;
typedef unsigned long int __uintmax_t;
#else
# 75 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
__extension__ typedef long long int __intmax_t;
__extension__ typedef unsigned long long int __uintmax_t;
#endif
# 78 "/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, traditionally 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 0 /* disabled by -frewrite-includes */
#if __WORDSIZE == 32
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 116 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
# define __SQUAD_TYPE __int64_t
# define __UQUAD_TYPE __uint64_t
# define __SWORD_TYPE int
# define __UWORD_TYPE unsigned int
# define __SLONG32_TYPE long int
# define __ULONG32_TYPE unsigned long int
# define __S64_TYPE __int64_t
# define __U64_TYPE __uint64_t
/* We want __extension__ before typedef's that use nonstandard base types
such as `long long' in C89 mode. */
# define __STD_TYPE __extension__ typedef
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 128 "/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
# 139 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
# error
#endif
# 141 "/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 */
# 141 "/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-2019 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 0 /* disabled by -frewrite-includes */
#if defined __x86_64__ && defined __ILP32__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 31 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4
# 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
/* And for __rlim_t and __rlim64_t. */
# define __RLIM_T_MATCHES_RLIM64_T 1
#else
# 88 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4
# define __RLIM_T_MATCHES_RLIM64_T 0
#endif
# 90 "/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 */
# 96 "/usr/include/x86_64-linux-gnu/bits/typesizes.h" 3 4
# 142 "/usr/include/x86_64-linux-gnu/bits/types.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/time64.h> /* Defines __TIME*_T_TYPE macros. */
#endif /* expanded by -frewrite-includes */
# 142 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/time64.h" 1 3 4
/* bits/time64.h -- underlying types for __time64_t. Generic version.
Copyright (C) 2018-2019 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/time64.h> directly; use <sys/types.h> instead."
#endif
# 22 "/usr/include/x86_64-linux-gnu/bits/time64.h" 3 4
#ifndef _BITS_TIME64_H
#define _BITS_TIME64_H 1
/* Define __TIME64_T_TYPE so that it is always a 64-bit type. */
#if 0 /* disabled by -frewrite-includes */
#if __TIMESIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 29 "/usr/include/x86_64-linux-gnu/bits/time64.h" 3 4
/* If we already have 64-bit time type then use it. */
# define __TIME64_T_TYPE __TIME_T_TYPE
#else
# 32 "/usr/include/x86_64-linux-gnu/bits/time64.h" 3 4
/* Define a 64-bit time type alongsize the 32-bit one. */
# define __TIME64_T_TYPE __SQUAD_TYPE
#endif
# 35 "/usr/include/x86_64-linux-gnu/bits/time64.h" 3 4
#endif /* bits/time64.h */
# 37 "/usr/include/x86_64-linux-gnu/bits/time64.h" 3 4
# 143 "/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 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;
/* C99: An integer type that can be accessed as an atomic entity,
even in the presence of asynchronous interrupts.
It is not currently necessary for this to be machine-specific. */
typedef int __sig_atomic_t;
/* Seconds since the Epoch, visible to user code when time_t is too
narrow only for consistency with the old way of widening too-narrow
types. User code should never use __time64_t. */
#if 0 /* disabled by -frewrite-includes */
#if __TIMESIZE == 64 && defined __LIBC
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 220 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
# define __time64_t __time_t
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __TIMESIZE != 64
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 222 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
__STD_TYPE __TIME64_T_TYPE __time64_t;
#endif
# 224 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
#undef __STD_TYPE
#endif /* bits/types.h */
# 228 "/usr/include/x86_64-linux-gnu/bits/types.h" 3 4
# 39 "/usr/include/stdio.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types/__fpos_t.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h" 1 3 4
#ifndef _____fpos_t_defined
#define _____fpos_t_defined 1
#if 0 /* expanded by -frewrite-includes */
#include <bits/types.h>
#endif /* expanded by -frewrite-includes */
# 4 "/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h" 3 4
# 5 "/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types/__mbstate_t.h>
#endif /* expanded by -frewrite-includes */
# 5 "/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h" 1 3 4
#ifndef ____mbstate_t_defined
#define ____mbstate_t_defined 1
/* 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. */
#ifndef __WINT_TYPE__
# define __WINT_TYPE__ unsigned int
#endif
# 11 "/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h" 3 4
/* Conversion state information. */
typedef struct
{
int __count;
union
{
__WINT_TYPE__ __wch;
char __wchb[4];
} __value; /* Value so far. */
} __mbstate_t;
#endif
# 24 "/usr/include/x86_64-linux-gnu/bits/types/__mbstate_t.h" 3 4
# 6 "/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h" 2 3 4
/* The tag name of this struct is _G_fpos_t to preserve historic
C++ mangled names for functions taking fpos_t arguments.
That name should not be used in new code. */
typedef struct _G_fpos_t
{
__off_t __pos;
__mbstate_t __state;
} __fpos_t;
#endif
# 17 "/usr/include/x86_64-linux-gnu/bits/types/__fpos_t.h" 3 4
# 40 "/usr/include/stdio.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types/__fpos64_t.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h" 1 3 4
#ifndef _____fpos64_t_defined
#define _____fpos64_t_defined 1
#if 0 /* expanded by -frewrite-includes */
#include <bits/types.h>
#endif /* expanded by -frewrite-includes */
# 4 "/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h" 3 4
# 5 "/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types/__mbstate_t.h>
#endif /* expanded by -frewrite-includes */
# 5 "/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h" 3 4
# 6 "/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h" 3 4
/* The tag name of this struct is _G_fpos64_t to preserve historic
C++ mangled names for functions taking fpos_t and/or fpos64_t
arguments. That name should not be used in new code. */
typedef struct _G_fpos64_t
{
__off64_t __pos;
__mbstate_t __state;
} __fpos64_t;
#endif
# 17 "/usr/include/x86_64-linux-gnu/bits/types/__fpos64_t.h" 3 4
# 41 "/usr/include/stdio.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types/__FILE.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/types/__FILE.h" 1 3 4
#ifndef ____FILE_defined
#define ____FILE_defined 1
struct _IO_FILE;
typedef struct _IO_FILE __FILE;
#endif
# 8 "/usr/include/x86_64-linux-gnu/bits/types/__FILE.h" 3 4
# 42 "/usr/include/stdio.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types/FILE.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/types/FILE.h" 1 3 4
#ifndef __FILE_defined
#define __FILE_defined 1
struct _IO_FILE;
/* The opaque type of streams. This is the definition used elsewhere. */
typedef struct _IO_FILE FILE;
#endif
# 10 "/usr/include/x86_64-linux-gnu/bits/types/FILE.h" 3 4
# 43 "/usr/include/stdio.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types/struct_FILE.h>
#endif /* expanded by -frewrite-includes */
# 43 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 1 3 4
/* Copyright (C) 1991-2019 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 __struct_FILE_defined
#define __struct_FILE_defined 1
/* Caution: The contents of this file are not part of the official
stdio.h API. However, much of it is part of the official *binary*
interface, and therefore cannot be changed. */
#if 0 /* disabled by -frewrite-includes */
#if defined _IO_USE_OLD_IO_FILE && !defined _LIBC
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 26 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
# error "_IO_USE_OLD_IO_FILE should only be defined when building libc itself"
#endif
# 28 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined _IO_lock_t_defined && !defined _LIBC
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 30 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
# error "_IO_lock_t_defined should only be defined when building libc itself"
#endif
# 32 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types.h>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
# 34 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
struct _IO_FILE;
struct _IO_marker;
struct _IO_codecvt;
struct _IO_wide_data;
/* During the build of glibc itself, _IO_lock_t will already have been
defined by internal headers. */
#ifndef _IO_lock_t_defined
typedef void _IO_lock_t;
#endif
# 45 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
/* The tag name of this struct is _IO_FILE to preserve historic
C++ mangled names for functions taking FILE* arguments.
That name should not be used in new code. */
struct _IO_FILE
{
int _flags; /* High-order word is _IO_MAGIC; rest is flags. */
/* The following pointers correspond to the C++ streambuf protocol. */
char *_IO_read_ptr; /* Current read pointer */
char *_IO_read_end; /* End of get area. */
char *_IO_read_base; /* Start of putback+get area. */
char *_IO_write_base; /* Start of put area. */
char *_IO_write_ptr; /* Current put pointer. */
char *_IO_write_end; /* End of put area. */
char *_IO_buf_base; /* Start of reserve area. */
char *_IO_buf_end; /* End of reserve area. */
/* The following fields are used to support backing up and undo. */
char *_IO_save_base; /* Pointer to start of non-current get area. */
char *_IO_backup_base; /* Pointer to first valid character of backup area */
char *_IO_save_end; /* Pointer to end of non-current get area. */
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _flags2;
__off_t _old_offset; /* This used to be _offset but it's too small. */
/* 1+column number of pbase(); 0 is unknown. */
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
#ifdef _IO_USE_OLD_IO_FILE
};
struct _IO_FILE_complete
{
struct _IO_FILE _file;
#endif
# 89 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
__off64_t _offset;
/* Wide character stream stuff. */
struct _IO_codecvt *_codecvt;
struct _IO_wide_data *_wide_data;
struct _IO_FILE *_freeres_list;
void *_freeres_buf;
size_t __pad5;
int _mode;
/* Make sure we don't get into trouble again. */
char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];
};
/* These macros are used by bits/stdio.h and internal headers. */
#define __getc_unlocked_body(_fp) \
(__glibc_unlikely ((_fp)->_IO_read_ptr >= (_fp)->_IO_read_end) \
? __uflow (_fp) : *(unsigned char *) (_fp)->_IO_read_ptr++)
#define __putc_unlocked_body(_ch, _fp) \
(__glibc_unlikely ((_fp)->_IO_write_ptr >= (_fp)->_IO_write_end) \
? __overflow (_fp, (unsigned char) (_ch)) \
: (unsigned char) (*(_fp)->_IO_write_ptr++ = (_ch)))
#define _IO_EOF_SEEN 0x0010
#define __feof_unlocked_body(_fp) (((_fp)->_flags & _IO_EOF_SEEN) != 0)
#define _IO_ERR_SEEN 0x0020
#define __ferror_unlocked_body(_fp) (((_fp)->_flags & _IO_ERR_SEEN) != 0)
#define _IO_USER_LOCK 0x8000
/* Many more flag bits are defined internally. */
#endif
# 121 "/usr/include/x86_64-linux-gnu/bits/types/struct_FILE.h" 3 4
# 44 "/usr/include/stdio.h" 2 3 4
#ifdef __USE_GNU
#if 0 /* expanded by -frewrite-includes */
# include <bits/types/cookie_io_functions_t.h>
#endif /* expanded by -frewrite-includes */
# 46 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h" 1 3 4
/* Copyright (C) 1991-2019 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 __cookie_io_functions_t_defined
#define __cookie_io_functions_t_defined 1
#if 0 /* expanded by -frewrite-includes */
#include <bits/types.h>
#endif /* expanded by -frewrite-includes */
# 21 "/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4
# 22 "/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4
/* Functions to do I/O and file management for a stream. */
/* Read NBYTES bytes from COOKIE into a buffer pointed to by BUF.
Return number of bytes read. */
typedef __ssize_t cookie_read_function_t (void *__cookie, char *__buf,
size_t __nbytes);
/* Write NBYTES bytes pointed to by BUF to COOKIE. Write all NBYTES bytes
unless there is an error. Return number of bytes written. If
there is an error, return 0 and do not write anything. If the file
has been opened for append (__mode.__append set), then set the file
pointer to the end of the file and then do the write; if not, just
write at the current file pointer. */
typedef __ssize_t cookie_write_function_t (void *__cookie, const char *__buf,
size_t __nbytes);
/* Move COOKIE's file position to *POS bytes from the
beginning of the file (if W is SEEK_SET),
the current position (if W is SEEK_CUR),
or the end of the file (if W is SEEK_END).
Set *POS to the new file position.
Returns zero if successful, nonzero if not. */
typedef int cookie_seek_function_t (void *__cookie, __off64_t *__pos, int __w);
/* Close COOKIE. */
typedef int cookie_close_function_t (void *__cookie);
/* The structure with the cookie function pointers.
The tag name of this struct is _IO_cookie_io_functions_t to
preserve historic C++ mangled names for functions taking
cookie_io_functions_t arguments. That name should not be used in
new code. */
typedef struct _IO_cookie_io_functions_t
{
cookie_read_function_t *read; /* Read bytes. */
cookie_write_function_t *write; /* Write bytes. */
cookie_seek_function_t *seek; /* Seek/tell file position. */
cookie_close_function_t *close; /* Close file. */
} cookie_io_functions_t;
#endif
# 64 "/usr/include/x86_64-linux-gnu/bits/types/cookie_io_functions_t.h" 3 4
# 47 "/usr/include/stdio.h" 2 3 4
#endif
# 48 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_XOPEN || defined __USE_XOPEN2K8
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 50 "/usr/include/stdio.h" 3 4
# ifdef __GNUC__
# ifndef _VA_LIST_DEFINED
typedef __gnuc_va_list va_list;
# define _VA_LIST_DEFINED
# endif
# 55 "/usr/include/stdio.h" 3 4
# else
# 56 "/usr/include/stdio.h" 3 4
#if 0 /* expanded by -frewrite-includes */
# include <stdarg.h>
#endif /* expanded by -frewrite-includes */
# 56 "/usr/include/stdio.h" 3 4
# 57 "/usr/include/stdio.h" 3 4
# endif
# 58 "/usr/include/stdio.h" 3 4
#endif
# 59 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_UNIX98 || defined __USE_XOPEN2K
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 61 "/usr/include/stdio.h" 3 4
# ifndef __off_t_defined
# ifndef __USE_FILE_OFFSET64
typedef __off_t off_t;
# else
# 65 "/usr/include/stdio.h" 3 4
typedef __off64_t off_t;
# endif
# 67 "/usr/include/stdio.h" 3 4
# define __off_t_defined
# endif
# 69 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if defined __USE_LARGEFILE64 && !defined __off64_t_defined
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 70 "/usr/include/stdio.h" 3 4
typedef __off64_t off64_t;
# define __off64_t_defined
# endif
# 73 "/usr/include/stdio.h" 3 4
#endif
# 74 "/usr/include/stdio.h" 3 4
#ifdef __USE_XOPEN2K8
# ifndef __ssize_t_defined
typedef __ssize_t ssize_t;
# define __ssize_t_defined
# endif
# 80 "/usr/include/stdio.h" 3 4
#endif
# 81 "/usr/include/stdio.h" 3 4
/* The type of the second argument to `fgetpos' and `fsetpos'. */
#ifndef __USE_FILE_OFFSET64
typedef __fpos_t fpos_t;
#else
# 86 "/usr/include/stdio.h" 3 4
typedef __fpos64_t fpos_t;
#endif
# 88 "/usr/include/stdio.h" 3 4
#ifdef __USE_LARGEFILE64
typedef __fpos64_t fpos64_t;
#endif
# 91 "/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. */
#define BUFSIZ 8192
/* The value returned by fgetc and similar functions to indicate the
end of the file. */
#define EOF (-1)
/* 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
# 116 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_MISC || defined __USE_XOPEN
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 119 "/usr/include/stdio.h" 3 4
/* Default path prefix for `tempnam' and `tmpnam'. */
# define P_tmpdir "/tmp"
#endif
# 122 "/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 */
# 133 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 1 3 4
/* Copyright (C) 1994-2019 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_STDIO_LIM_H
#define _BITS_STDIO_LIM_H 1
#ifndef _STDIO_H
# error "Never include <bits/stdio_lim.h> directly; use <stdio.h> instead."
#endif
# 24 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 3 4
#define L_tmpnam 20
#define TMP_MAX 238328
#define FILENAME_MAX 4096
#ifdef __USE_POSIX
# define L_ctermid 9
#if 0 /* disabled by -frewrite-includes */
# if !defined __USE_XOPEN2K || defined __USE_GNU
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 32 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 3 4
# define L_cuserid 9
# endif
# 34 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 3 4
#endif
# 35 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 3 4
#undef FOPEN_MAX
#define FOPEN_MAX 16
#endif /* bits/stdio_lim.h */
# 40 "/usr/include/x86_64-linux-gnu/bits/stdio_lim.h" 3 4
# 134 "/usr/include/stdio.h" 2 3 4
/* Standard streams. */
extern FILE *stdin; /* Standard input stream. */
extern FILE *stdout; /* Standard output stream. */
extern FILE *stderr; /* Standard error output stream. */
/* C89/C99 say they're macros. Make them happy. */
#define stdin stdin
#define stdout stdout
#define stderr stderr
/* 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;
#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
# 155 "/usr/include/stdio.h" 3 4
#ifdef __USE_GNU
/* Flags for renameat2. */
# define RENAME_NOREPLACE (1 << 0)
# define RENAME_EXCHANGE (1 << 1)
# define RENAME_WHITEOUT (1 << 2)
/* Rename file OLD relative to OLDFD to NEW relative to NEWFD, with
additional flags. */
extern int renameat2 (int __oldfd, const char *__old, int __newfd,
const char *__new, unsigned int __flags) __THROW;
#endif
# 167 "/usr/include/stdio.h" 3 4
/* 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
# 175 "/usr/include/stdio.h" 3 4
# ifdef __REDIRECT
extern FILE *__REDIRECT (tmpfile, (void), tmpfile64) __wur;
# else
# 178 "/usr/include/stdio.h" 3 4
# define tmpfile tmpfile64
# endif
# 180 "/usr/include/stdio.h" 3 4
#endif
# 181 "/usr/include/stdio.h" 3 4
#ifdef __USE_LARGEFILE64
extern FILE *tmpfile64 (void) __wur;
#endif
# 185 "/usr/include/stdio.h" 3 4
/* Generate a temporary filename. */
extern char *tmpnam (char *__s) __THROW __wur;
#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
# 194 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_MISC || defined __USE_XOPEN
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 197 "/usr/include/stdio.h" 3 4
/* 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
# 207 "/usr/include/stdio.h" 3 4
/* 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);
#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
# 229 "/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
# 239 "/usr/include/stdio.h" 3 4
#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
# 256 "/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
# 265 "/usr/include/stdio.h" 3 4
# define fopen fopen64
# define freopen freopen64
# endif
# 268 "/usr/include/stdio.h" 3 4
#endif
# 269 "/usr/include/stdio.h" 3 4
#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
# 276 "/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
# 281 "/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,
cookie_io_functions_t __io_funcs) __THROW __wur;
#endif
# 289 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 291 "/usr/include/stdio.h" 3 4
/* 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
# 300 "/usr/include/stdio.h" 3 4
/* 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;
#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
# 320 "/usr/include/stdio.h" 3 4
/* 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,
__gnuc_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, __gnuc_va_list __arg);
/* Write formatted output to S from argument list ARG. */
extern int vsprintf (char *__restrict __s, const char *__restrict __format,
__gnuc_va_list __arg) __THROWNL;
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_ISOC99 || defined __USE_UNIX98
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 353 "/usr/include/stdio.h" 3 4
/* 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, __gnuc_va_list __arg)
__THROWNL __attribute__ ((__format__ (__printf__, 3, 0)));
#endif
# 362 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __GLIBC_USE (LIB_EXT2)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 364 "/usr/include/stdio.h" 3 4
/* 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,
__gnuc_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
# 376 "/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,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, const char *__restrict __fmt, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
#endif
# 385 "/usr/include/stdio.h" 3 4
/* 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;
/* For historical reasons, the C99-compliant versions of the scanf
functions are at alternative names. When __LDBL_COMPAT is in
effect, this is handled in bits/stdio-ldbl.h. */
#if 0 /* disabled by -frewrite-includes */
#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 406 "/usr/include/stdio.h" 3 4
# ifdef __REDIRECT
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
# 416 "/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
# 425 "/usr/include/stdio.h" 3 4
#endif
# 426 "/usr/include/stdio.h" 3 4
#ifdef __USE_ISOC99
/* 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,
__gnuc_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, __gnuc_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, __gnuc_va_list __arg)
__THROW __attribute__ ((__format__ (__scanf__, 2, 0)));
/* Same redirection as above for the v*scanf family. */
#if 0 /* disabled by -frewrite-includes */
# if !__GLIBC_USE (DEPRECATED_SCANF)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 450 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if defined __REDIRECT && !defined __LDBL_COMPAT
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 451 "/usr/include/stdio.h" 3 4
extern int __REDIRECT (vfscanf,
(FILE *__restrict __s,
const char *__restrict __format, __gnuc_va_list __arg),
__isoc99_vfscanf)
__attribute__ ((__format__ (__scanf__, 2, 0))) __wur;
extern int __REDIRECT (vscanf, (const char *__restrict __format,
__gnuc_va_list __arg), __isoc99_vscanf)
__attribute__ ((__format__ (__scanf__, 1, 0))) __wur;
extern int __REDIRECT_NTH (vsscanf,
(const char *__restrict __s,
const char *__restrict __format,
__gnuc_va_list __arg), __isoc99_vsscanf)
__attribute__ ((__format__ (__scanf__, 2, 0)));
#if 0 /* disabled by -frewrite-includes */
#if 0
# elif !defined __REDIRECT
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 465 "/usr/include/stdio.h" 3 4
extern int __isoc99_vfscanf (FILE *__restrict __s,
const char *__restrict __format,
__gnuc_va_list __arg) __wur;
extern int __isoc99_vscanf (const char *__restrict __format,
__gnuc_va_list __arg) __wur;
extern int __isoc99_vsscanf (const char *__restrict __s,
const char *__restrict __format,
__gnuc_va_list __arg) __THROW;
# define vfscanf __isoc99_vfscanf
# define vscanf __isoc99_vscanf
# define vsscanf __isoc99_vsscanf
# endif
# 477 "/usr/include/stdio.h" 3 4
# endif
# 478 "/usr/include/stdio.h" 3 4
#endif /* Use ISO C9x. */
# 479 "/usr/include/stdio.h" 3 4
/* 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);
#ifdef __USE_POSIX199506
/* 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. */
# 502 "/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. */
# 512 "/usr/include/stdio.h" 3 4
/* 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);
#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. */
# 539 "/usr/include/stdio.h" 3 4
#ifdef __USE_POSIX199506
/* 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. */
# 548 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_MISC \
|| (defined __USE_XOPEN && !defined __USE_XOPEN2K)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 552 "/usr/include/stdio.h" 3 4
/* 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
# 558 "/usr/include/stdio.h" 3 4
/* 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 0 /* disabled by -frewrite-includes */
#if __GLIBC_USE (DEPRECATED_GETS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 568 "/usr/include/stdio.h" 3 4
/* Get a newline-terminated string from stdin, removing the newline.
This function is impossible to use safely. It has been officially
removed from ISO C11 and ISO C++14, and we have also removed it
from the _GNU_SOURCE feature list. It remains available when
explicitly using an old ISO C, Unix, or POSIX standard.
This function is a possible cancellation point and therefore not
marked with __THROW. */
extern char *gets (char *__s) __wur __attribute_deprecated__;
#endif
# 579 "/usr/include/stdio.h" 3 4
#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
# 590 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 593 "/usr/include/stdio.h" 3 4
/* 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 __ssize_t __getdelim (char **__restrict __lineptr,
size_t *__restrict __n, int __delimiter,
FILE *__restrict __stream) __wur;
extern __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 __ssize_t getline (char **__restrict __lineptr,
size_t *__restrict __n,
FILE *__restrict __stream) __wur;
#endif
# 620 "/usr/include/stdio.h" 3 4
/* 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);
#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
# 665 "/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
# 678 "/usr/include/stdio.h" 3 4
/* 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);
/* 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 0 /* disabled by -frewrite-includes */
#if defined __USE_LARGEFILE || defined __USE_XOPEN2K
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 702 "/usr/include/stdio.h" 3 4
# 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
# 714 "/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
# 720 "/usr/include/stdio.h" 3 4
# define fseeko fseeko64
# define ftello ftello64
# endif
# 723 "/usr/include/stdio.h" 3 4
# endif
# 724 "/usr/include/stdio.h" 3 4
#endif
# 725 "/usr/include/stdio.h" 3 4
#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
# 738 "/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
# 744 "/usr/include/stdio.h" 3 4
# define fgetpos fgetpos64
# define fsetpos fsetpos64
# endif
# 747 "/usr/include/stdio.h" 3 4
#endif
# 748 "/usr/include/stdio.h" 3 4
#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
# 755 "/usr/include/stdio.h" 3 4
/* 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;
#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
# 769 "/usr/include/stdio.h" 3 4
/* 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);
/* 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 */
# 781 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" 1 3 4
/* Declare sys_errlist and sys_nerr, or don't. Compatibility (do) version.
Copyright (C) 2002-2019 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 _STDIO_H
# error "Never include <bits/sys_errlist.h> directly; use <stdio.h> instead."
#endif
# 22 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" 3 4
/* sys_errlist and sys_nerr are deprecated. Use strerror instead. */
#ifdef __USE_MISC
extern int sys_nerr;
extern const char *const sys_errlist[];
#endif
# 29 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" 3 4
#ifdef __USE_GNU
extern int _sys_nerr;
extern const char *const _sys_errlist[];
#endif
# 33 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" 3 4
# 782 "/usr/include/stdio.h" 2 3 4
#ifdef __USE_POSIX
/* Return the system file descriptor for STREAM. */
extern int fileno (FILE *__stream) __THROW __wur;
#endif /* Use POSIX. */
# 788 "/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
# 793 "/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
# 808 "/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. */
# 814 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if (defined __USE_XOPEN && !defined __USE_XOPEN2K) || defined __USE_GNU
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 817 "/usr/include/stdio.h" 3 4
/* Return the name of the current user. */
extern char *cuserid (char *__s);
#endif /* Use X/Open, but not issue 6. */
# 820 "/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,
__gnuc_va_list __args)
__THROWNL __attribute__ ((__format__ (__printf__, 2, 0)));
#endif /* Use GNU. */
# 834 "/usr/include/stdio.h" 3 4
#ifdef __USE_POSIX199506
/* 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 */
# 849 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_XOPEN && !defined __USE_XOPEN2K && !defined __USE_GNU
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 851 "/usr/include/stdio.h" 3 4
/* X/Open Issues 1-5 required getopt to be declared in this
header. It was removed in Issue 6. GNU follows Issue 6. */
#if 0 /* expanded by -frewrite-includes */
# include <bits/getopt_posix.h>
#endif /* expanded by -frewrite-includes */
# 853 "/usr/include/stdio.h" 3 4
# 854 "/usr/include/stdio.h" 3 4
#endif
# 855 "/usr/include/stdio.h" 3 4
/* Slow-path routines used by the optimized inline functions in
bits/stdio.h. */
extern int __uflow (FILE *);
extern int __overflow (FILE *, int);
/* 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 */
# 864 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 1 3 4
/* Optimizing macros and inline functions for stdio functions.
Copyright (C) 1998-2019 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_STDIO_H
#define _BITS_STDIO_H 1
#ifndef _STDIO_H
# error "Never include <bits/stdio.h> directly; use <stdio.h> instead."
#endif
# 25 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
#ifndef __extern_inline
# define __STDIO_INLINE inline
#else
# 29 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
# define __STDIO_INLINE __extern_inline
#endif
# 31 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
#ifdef __USE_EXTERN_INLINES
/* For -D_FORTIFY_SOURCE{,=2} bits/stdio2.h will define a different
inline. */
#if 0 /* disabled by -frewrite-includes */
# if !(__USE_FORTIFY_LEVEL > 0 && defined __fortify_function)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 37 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
/* Write formatted output to stdout from argument list ARG. */
__STDIO_INLINE int
vprintf (const char *__restrict __fmt, __gnuc_va_list __arg)
{
return vfprintf (stdout, __fmt, __arg);
}
# endif
# 44 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
/* Read a character from stdin. */
__STDIO_INLINE int
getchar (void)
{
return getc (stdin);
}
# ifdef __USE_MISC
/* Faster version when locking is not necessary. */
__STDIO_INLINE int
fgetc_unlocked (FILE *__fp)
{
return __getc_unlocked_body (__fp);
}
# endif /* misc */
# 61 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
# ifdef __USE_POSIX
/* This is defined in POSIX.1:1996. */
__STDIO_INLINE int
getc_unlocked (FILE *__fp)
{
return __getc_unlocked_body (__fp);
}
/* This is defined in POSIX.1:1996. */
__STDIO_INLINE int
getchar_unlocked (void)
{
return __getc_unlocked_body (stdin);
}
# endif /* POSIX */
# 78 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
/* Write a character to stdout. */
__STDIO_INLINE int
putchar (int __c)
{
return putc (__c, stdout);
}
# ifdef __USE_MISC
/* Faster version when locking is not necessary. */
__STDIO_INLINE int
fputc_unlocked (int __c, FILE *__stream)
{
return __putc_unlocked_body (__c, __stream);
}
# endif /* misc */
# 96 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
# ifdef __USE_POSIX
/* This is defined in POSIX.1:1996. */
__STDIO_INLINE int
putc_unlocked (int __c, FILE *__stream)
{
return __putc_unlocked_body (__c, __stream);
}
/* This is defined in POSIX.1:1996. */
__STDIO_INLINE int
putchar_unlocked (int __c)
{
return __putc_unlocked_body (__c, stdout);
}
# endif /* POSIX */
# 113 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
# ifdef __USE_GNU
/* Like `getdelim', but reads up to a newline. */
__STDIO_INLINE __ssize_t
getline (char **__lineptr, size_t *__n, FILE *__stream)
{
return __getdelim (__lineptr, __n, '\n', __stream);
}
# endif /* GNU */
# 123 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
# ifdef __USE_MISC
/* Faster versions when locking is not required. */
__STDIO_INLINE int
__NTH (feof_unlocked (FILE *__stream))
{
return __feof_unlocked_body (__stream);
}
/* Faster versions when locking is not required. */
__STDIO_INLINE int
__NTH (ferror_unlocked (FILE *__stream))
{
return __ferror_unlocked_body (__stream);
}
# endif /* misc */
# 140 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
#endif /* Use extern inlines. */
# 142 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_MISC && defined __GNUC__ && defined __OPTIMIZE__ \
&& !defined __cplusplus
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 146 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
/* Perform some simple optimizations. */
# define fread_unlocked(ptr, size, n, stream) \
(__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) \
&& (size_t) (size) * (size_t) (n) <= 8 \
&& (size_t) (size) != 0) \
? ({ char *__ptr = (char *) (ptr); \
FILE *__stream = (stream); \
size_t __cnt; \
for (__cnt = (size_t) (size) * (size_t) (n); \
__cnt > 0; --__cnt) \
{ \
int __c = getc_unlocked (__stream); \
if (__c == EOF) \
break; \
*__ptr++ = __c; \
} \
((size_t) (size) * (size_t) (n) - __cnt) \
/ (size_t) (size); }) \
: (((__builtin_constant_p (size) && (size_t) (size) == 0) \
|| (__builtin_constant_p (n) && (size_t) (n) == 0)) \
/* Evaluate all parameters once. */ \
? ((void) (ptr), (void) (stream), (void) (size), \
(void) (n), (size_t) 0) \
: fread_unlocked (ptr, size, n, stream))))
# define fwrite_unlocked(ptr, size, n, stream) \
(__extension__ ((__builtin_constant_p (size) && __builtin_constant_p (n) \
&& (size_t) (size) * (size_t) (n) <= 8 \
&& (size_t) (size) != 0) \
? ({ const char *__ptr = (const char *) (ptr); \
FILE *__stream = (stream); \
size_t __cnt; \
for (__cnt = (size_t) (size) * (size_t) (n); \
__cnt > 0; --__cnt) \
if (putc_unlocked (*__ptr++, __stream) == EOF) \
break; \
((size_t) (size) * (size_t) (n) - __cnt) \
/ (size_t) (size); }) \
: (((__builtin_constant_p (size) && (size_t) (size) == 0) \
|| (__builtin_constant_p (n) && (size_t) (n) == 0)) \
/* Evaluate all parameters once. */ \
? ((void) (ptr), (void) (stream), (void) (size), \
(void) (n), (size_t) 0) \
: fwrite_unlocked (ptr, size, n, stream))))
#endif
# 191 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
/* Define helper macro. */
#undef __STDIO_INLINE
#endif /* bits/stdio.h. */
# 196 "/usr/include/x86_64-linux-gnu/bits/stdio.h" 3 4
# 865 "/usr/include/stdio.h" 2 3 4
#endif
# 866 "/usr/include/stdio.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 867 "/usr/include/stdio.h" 3 4
#if 0 /* expanded by -frewrite-includes */
# include <bits/stdio2.h>
#endif /* expanded by -frewrite-includes */
# 867 "/usr/include/stdio.h" 3 4
# 868 "/usr/include/stdio.h" 3 4
#endif
# 869 "/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 */
# 870 "/usr/include/stdio.h" 3 4
# 871 "/usr/include/stdio.h" 3 4
#endif
# 872 "/usr/include/stdio.h" 3 4
__END_DECLS
#endif /* <stdio.h> included. */
# 876 "/usr/include/stdio.h" 3 4
# 43 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 2 3
#ifndef _GLIBCXX_CSTDIO
#define _GLIBCXX_CSTDIO 1
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus <= 201103L && !defined(_GLIBCXX_HAVE_GETS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 48 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
extern "C" char* gets (char* __s) __attribute__((__deprecated__));
#endif
# 50 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
// Get rid of those macros defined in <stdio.h> in lieu of real functions.
#undef clearerr
#undef fclose
#undef feof
#undef ferror
#undef fflush
#undef fgetc
#undef fgetpos
#undef fgets
#undef fopen
#undef fprintf
#undef fputc
#undef fputs
#undef fread
#undef freopen
#undef fscanf
#undef fseek
#undef fsetpos
#undef ftell
#undef fwrite
#undef getc
#undef getchar
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus <= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 74 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
# undef gets
#endif
# 76 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
#undef perror
#undef printf
#undef putc
#undef putchar
#undef puts
#undef remove
#undef rename
#undef rewind
#undef scanf
#undef setbuf
#undef setvbuf
#undef sprintf
#undef sscanf
#undef tmpfile
#undef tmpnam
#undef ungetc
#undef vfprintf
#undef vprintf
#undef vsprintf
namespace std
{
using ::FILE;
using ::fpos_t;
using ::clearerr;
using ::fclose;
using ::feof;
using ::ferror;
using ::fflush;
using ::fgetc;
using ::fgetpos;
using ::fgets;
using ::fopen;
using ::fprintf;
using ::fputc;
using ::fputs;
using ::fread;
using ::freopen;
using ::fscanf;
using ::fseek;
using ::fsetpos;
using ::ftell;
using ::fwrite;
using ::getc;
using ::getchar;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus <= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 123 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
// LWG 2249
using ::gets;
#endif
# 126 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
using ::perror;
using ::printf;
using ::putc;
using ::putchar;
using ::puts;
using ::remove;
using ::rename;
using ::rewind;
using ::scanf;
using ::setbuf;
using ::setvbuf;
using ::sprintf;
using ::sscanf;
using ::tmpfile;
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_USE_TMPNAM
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 141 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
using ::tmpnam;
#endif
# 143 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
using ::ungetc;
using ::vfprintf;
using ::vprintf;
using ::vsprintf;
} // namespace
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_USE_C99_STDIO
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 150 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
#undef snprintf
#undef vfscanf
#undef vscanf
#undef vsnprintf
#undef vsscanf
namespace __gnu_cxx
{
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_USE_C99_CHECK || _GLIBCXX_USE_C99_DYNAMIC
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 160 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
extern "C" int
(snprintf)(char * __restrict, std::size_t, const char * __restrict, ...)
throw ();
extern "C" int
(vfscanf)(FILE * __restrict, const char * __restrict, __gnuc_va_list);
extern "C" int (vscanf)(const char * __restrict, __gnuc_va_list);
extern "C" int
(vsnprintf)(char * __restrict, std::size_t, const char * __restrict,
__gnuc_va_list) throw ();
extern "C" int
(vsscanf)(const char * __restrict, const char * __restrict, __gnuc_va_list)
throw ();
#endif
# 173 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
#if 0 /* disabled by -frewrite-includes */
#if !_GLIBCXX_USE_C99_DYNAMIC
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 175 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
using ::snprintf;
using ::vfscanf;
using ::vscanf;
using ::vsnprintf;
using ::vsscanf;
#endif
# 181 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
} // namespace __gnu_cxx
namespace std
{
using ::__gnu_cxx::snprintf;
using ::__gnu_cxx::vfscanf;
using ::__gnu_cxx::vscanf;
using ::__gnu_cxx::vsnprintf;
using ::__gnu_cxx::vsscanf;
} // namespace std
#endif // _GLIBCXX_USE_C99_STDIO
# 193 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
#endif
# 195 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdio" 3
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h"
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 1 3
// Exception Handling support header for -*- C++ -*-
// Copyright (C) 1995-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/exception.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception.h" 1 3
// Exception Handling support header for -*- C++ -*-
// Copyright (C) 2016-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception.h" 3
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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_NOTHROW { }
virtual ~exception() _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 66 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception.h" 3
exception(const exception&) = default;
exception& operator=(const exception&) = default;
exception(exception&&) = default;
exception& operator=(exception&&) = default;
#endif
# 71 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception.h" 3
/** Returns a C-style character string describing the general cause
* of the current error. */
virtual const char*
what() const _GLIBCXX_TXN_SAFE_DYN _GLIBCXX_NOTHROW;
};
} // namespace std
}
#pragma GCC visibility pop
#endif
# 85 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception.h" 3
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 70 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
/// Return the current terminate handler.
terminate_handler get_terminate() noexcept;
#endif
# 73 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 82 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
/// Return the current unexpected handler.
unexpected_handler get_unexpected() noexcept;
#endif
# 85 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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).'
*/
_GLIBCXX17_DEPRECATED
bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++98
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 105 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#define __cpp_lib_uncaught_exceptions 201411L
/// The number of uncaught exceptions.
int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
#endif
# 109 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if (__cplusplus >= 201103L)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 143 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/exception_ptr.h>
#endif /* expanded by -frewrite-includes */
# 143 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 1 3
// Exception Handling support header (exception_ptr class) for -*- C++ -*-
// Copyright (C) 2008-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
# 37 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/exception_defines.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_defines.h" 1 3
// -fno-exceptions Support -*- C++ -*-
// Copyright (C) 2001-2019 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 0 /* disabled by -frewrite-includes */
#if ! __cpp_exceptions
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 34 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_defines.h" 3
// 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_defines.h" 3
// Else proceed normally.
# define __try try
# define __catch(X) catch(X)
# define __throw_exception_again throw
#endif
# 44 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_defines.h" 3
#endif
# 46 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_defines.h" 3
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/cxxabi_init_exception.h" 1 3
// ABI Support -*- C++ -*-
// Copyright (C) 2016-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/cxxabi_init_exception.h" 3
# 1 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 1 3
/*===---- stddef.h - Basic type definitions --------------------------------===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*===-----------------------------------------------------------------------===
*/
#if 0 /* disabled by -frewrite-includes */
#if !defined(__STDDEF_H) || defined(__need_ptrdiff_t) || \
defined(__need_size_t) || defined(__need_wchar_t) || \
defined(__need_NULL) || defined(__need_wint_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 13 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if !defined(__need_ptrdiff_t) && !defined(__need_size_t) && \
!defined(__need_wchar_t) && !defined(__need_NULL) && \
!defined(__need_wint_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 17 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
/* Always define miscellaneous pieces when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 19 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#define __STDDEF_H
#endif
# 21 "/home/john/llvm/lib/clang/10.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
# 28 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_ptrdiff_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 30 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if !defined(_PTRDIFF_T) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 31 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
/* Always define ptrdiff_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 33 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#define _PTRDIFF_T
#endif
# 35 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
typedef __PTRDIFF_TYPE__ ptrdiff_t;
#endif
# 37 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#undef __need_ptrdiff_t
#endif /* defined(__need_ptrdiff_t) */
# 39 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_size_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 41 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if !defined(_SIZE_T) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 42 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
/* Always define size_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 44 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#define _SIZE_T
#endif
# 46 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
typedef __SIZE_TYPE__ size_t;
#endif
# 48 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#undef __need_size_t
#endif /*defined(__need_size_t) */
# 50 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_STDDEF_H_misc)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 52 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
/* ISO9899:2011 7.20 (C11 Annex K): Define rsize_t if __STDC_WANT_LIB_EXT1__ is
* enabled. */
#if 0 /* disabled by -frewrite-includes */
#if (defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1 && \
!defined(_RSIZE_T)) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 56 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
/* Always define rsize_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 58 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#define _RSIZE_T
#endif
# 60 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
typedef __SIZE_TYPE__ rsize_t;
#endif
# 62 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#endif /* defined(__need_STDDEF_H_misc) */
# 63 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_wchar_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 65 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#ifndef __cplusplus
/* Always define wchar_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !defined(_WCHAR_T) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 68 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 69 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#define _WCHAR_T
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_EXTENSIONS)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 71 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#define _WCHAR_T_DEFINED
#endif
# 73 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#endif
# 74 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
typedef __WCHAR_TYPE__ wchar_t;
#endif
# 76 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#endif
# 77 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#undef __need_wchar_t
#endif /* defined(__need_wchar_t) */
# 79 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_NULL)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 81 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#undef NULL
#ifdef __cplusplus
#if 0 /* disabled by -frewrite-includes */
# if !defined(__MINGW32__) && !defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 84 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
# define NULL __null
# else
# 86 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
# define NULL 0
# endif
# 88 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#else
# 89 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
# define NULL ((void*)0)
#endif
# 91 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#ifdef __cplusplus
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_EXTENSIONS) && defined(_NATIVE_NULLPTR_SUPPORTED)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 93 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
namespace std { typedef decltype(nullptr) nullptr_t; }
using ::std::nullptr_t;
#endif
# 96 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#endif
# 97 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#undef __need_NULL
#endif /* defined(__need_NULL) */
# 99 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__need_STDDEF_H_misc)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 101 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if __STDC_VERSION__ >= 201112L || __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 102 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* expanded by -frewrite-includes */
#include "__stddef_max_align_t.h"
#endif /* expanded by -frewrite-includes */
# 102 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
# 1 "/home/john/llvm/lib/clang/10.0.0/include/__stddef_max_align_t.h" 1 3
/*===---- __stddef_max_align_t.h - Definition of max_align_t for modules ---===
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
*===-----------------------------------------------------------------------===
*/
#ifndef __CLANG_MAX_ALIGN_T_DEFINED
#define __CLANG_MAX_ALIGN_T_DEFINED
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 14 "/home/john/llvm/lib/clang/10.0.0/include/__stddef_max_align_t.h" 3
typedef double max_align_t;
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(__APPLE__)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 16 "/home/john/llvm/lib/clang/10.0.0/include/__stddef_max_align_t.h" 3
typedef long double max_align_t;
#else
# 18 "/home/john/llvm/lib/clang/10.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
# 26 "/home/john/llvm/lib/clang/10.0.0/include/__stddef_max_align_t.h" 3
#endif
# 28 "/home/john/llvm/lib/clang/10.0.0/include/__stddef_max_align_t.h" 3
# 103 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 2 3
#endif
# 104 "/home/john/llvm/lib/clang/10.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) */
# 107 "/home/john/llvm/lib/clang/10.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 0 /* disabled by -frewrite-includes */
#if defined(__need_wint_t)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 111 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
/* Always define wint_t when modules are available. */
#if 0 /* disabled by -frewrite-includes */
#if !defined(_WINT_T) || __has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 113 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#if 0 /* disabled by -frewrite-includes */
#if !__has_feature(modules)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 114 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#define _WINT_T
#endif
# 116 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
typedef __WINT_TYPE__ wint_t;
#endif
# 118 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#undef __need_wint_t
#endif /* __need_wint_t */
# 120 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
#endif
# 122 "/home/john/llvm/lib/clang/10.0.0/include/stddef.h" 3
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/cxxabi_init_exception.h" 3
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/cxxabi_init_exception.h" 3
#ifndef _GLIBCXX_CDTOR_CALLABI
#define _GLIBCXX_CDTOR_CALLABI
#define _GLIBCXX_HAVE_CDTOR_CALLABI 0
#else
# 45 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/cxxabi_init_exception.h" 3
#define _GLIBCXX_HAVE_CDTOR_CALLABI 1
#endif
# 47 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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;
void
__cxa_free_exception(void*) _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
# 77 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/cxxabi_init_exception.h" 3
#pragma GCC visibility pop
#endif // _CXXABI_INIT_EXCEPTION_H
# 81 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/cxxabi_init_exception.h" 3
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <typeinfo>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 1 3
// RTTI support for -*- C++ -*-
// Copyright (C) 1994-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/exception.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
# 35 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/hash_bytes.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/hash_bytes.h" 1 3
// Declarations for hash functions. -*- C++ -*-
// Copyright (C) 2010-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/hash_bytes.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/hash_bytes.h" 3
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/hash_bytes.h" 3
# 37 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 2 3
#endif
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
// By default follow the old inline rules to avoid ABI changes.
#ifndef __GXX_TYPEINFO_EQUALITY_INLINE
#if 0 /* disabled by -frewrite-includes */
#if !__GXX_WEAK__
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 74 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
#define __GXX_TYPEINFO_EQUALITY_INLINE 0
#else
# 76 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
#define __GXX_TYPEINFO_EQUALITY_INLINE 1
#endif
# 78 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
#endif
# 79 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if !__GXX_TYPEINFO_EQUALITY_INLINE
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 103 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
// 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
#if 0 /* disabled by -frewrite-includes */
#if !__GXX_MERGED_TYPEINFO_NAMES
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 110 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
/** 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
#endif
# 136 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
bool operator!=(const type_info& __arg) const _GLIBCXX_NOEXCEPT
{ return !operator==(__arg); }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 140 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
size_t hash_code() const noexcept
{
#if 0 /* disabled by -frewrite-includes */
# if !__GXX_MERGED_TYPEINFO_NAMES
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 143 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
return _Hash_bytes(name(), __builtin_strlen(name()),
static_cast<size_t>(0xc70f6907UL));
# else
# 146 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
return reinterpret_cast<size_t>(__name);
# endif
# 148 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
}
#endif // C++11
# 150 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/typeinfo" 3
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <new>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 1 3
// The -*- C++ -*- dynamic memory management header.
// Copyright (C) 1994-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 1 3
// Exception Handling support header for -*- C++ -*-
// Copyright (C) 1995-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/exception.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 70 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
/// Return the current terminate handler.
terminate_handler get_terminate() noexcept;
#endif
# 73 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 82 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
/// Return the current unexpected handler.
unexpected_handler get_unexpected() noexcept;
#endif
# 85 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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).'
*/
_GLIBCXX17_DEPRECATED
bool uncaught_exception() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++98
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 105 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#define __cpp_lib_uncaught_exceptions 201411L
/// The number of uncaught exceptions.
int uncaught_exceptions() _GLIBCXX_USE_NOEXCEPT __attribute__ ((__pure__));
#endif
# 109 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if (__cplusplus >= 201103L)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 143 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/exception_ptr.h>
#endif /* expanded by -frewrite-includes */
# 143 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 144 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/nested_exception.h>
#endif /* expanded by -frewrite-includes */
# 144 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 145 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#endif
# 146 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#endif
# 148 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 41 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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() { }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 60 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
bad_alloc(const bad_alloc&) = default;
bad_alloc& operator=(const bad_alloc&) = default;
#endif
# 63 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
// 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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 73 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
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
# 86 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#if 0 /* disabled by -frewrite-includes */
#if __cpp_aligned_new
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 88 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
enum class align_val_t: size_t {};
#endif
# 90 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
struct nothrow_t
{
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 94 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
explicit nothrow_t() = default;
#endif
# 96 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 109 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
/// Return the current new handler.
new_handler get_new_handler() noexcept;
#endif
# 112 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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.
*/
_GLIBCXX_NODISCARD void* operator new(std::size_t) _GLIBCXX_THROW (std::bad_alloc)
__attribute__((__externally_visible__));
_GLIBCXX_NODISCARD 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 0 /* disabled by -frewrite-includes */
#if __cpp_sized_deallocation
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 134 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
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
# 139 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
_GLIBCXX_NODISCARD void* operator new(std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
__attribute__((__externally_visible__, __malloc__));
_GLIBCXX_NODISCARD void* operator new[](std::size_t, const std::nothrow_t&) _GLIBCXX_USE_NOEXCEPT
__attribute__((__externally_visible__, __malloc__));
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 0 /* disabled by -frewrite-includes */
#if __cpp_aligned_new
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 148 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
_GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t)
__attribute__((__externally_visible__));
_GLIBCXX_NODISCARD void* operator new(std::size_t, std::align_val_t, const std::nothrow_t&)
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__, __malloc__));
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__));
_GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t)
__attribute__((__externally_visible__));
_GLIBCXX_NODISCARD void* operator new[](std::size_t, std::align_val_t, const std::nothrow_t&)
_GLIBCXX_USE_NOEXCEPT __attribute__((__externally_visible__, __malloc__));
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 0 /* disabled by -frewrite-includes */
#if __cpp_sized_deallocation
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 165 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
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
# 170 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#endif // __cpp_aligned_new
# 171 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
// Default placement versions of operator new.
_GLIBCXX_NODISCARD inline void* operator new(std::size_t, void* __p) _GLIBCXX_USE_NOEXCEPT
{ return __p; }
_GLIBCXX_NODISCARD 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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 185 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#ifdef _GLIBCXX_HAVE_BUILTIN_LAUNDER
namespace std
{
#define __cpp_lib_launder 201606
/// Pointer optimization barrier [ptr.launder]
template<typename _Tp>
[[nodiscard]] 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_HAVE_BUILTIN_LAUNDER
# 209 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#endif // C++17
# 210 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 212 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
namespace std
{
struct destroying_delete_t
{
explicit destroying_delete_t() = default;
};
inline constexpr destroying_delete_t destroying_delete{};
}
// Only define the feature test macro if the compiler supports the feature:
#if 0 /* disabled by -frewrite-includes */
#if __cpp_impl_destroying_delete
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 222 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
# define __cpp_lib_destroying_delete 201806L
#endif
# 224 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#endif // C++20
# 225 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
#pragma GCC visibility pop
#endif
# 229 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/new" 3
# 41 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 101 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
#if 0 /* disabled by -frewrite-includes */
#if (__cplusplus < 201103L) || defined (_GLIBCXX_EH_PTR_COMPAT)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 111 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
typedef void (exception_ptr::*__safe_bool)();
// For construction from nullptr or 0.
exception_ptr(__safe_bool) _GLIBCXX_USE_NOEXCEPT;
#endif
# 116 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
exception_ptr&
operator=(const exception_ptr&) _GLIBCXX_USE_NOEXCEPT;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 121 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
exception_ptr&
operator=(exception_ptr&& __o) noexcept
{
exception_ptr(static_cast<exception_ptr&&>(__o)).swap(*this);
return *this;
}
#endif
# 128 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 144 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
explicit operator bool() const
{ return _M_exception_object; }
#endif
# 147 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cpp_exceptions && __cpp_rtti && !_GLIBCXX_HAVE_CDTOR_CALLABI
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 182 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
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>);
try
{
::new (__e) _Ex(__ex);
return exception_ptr(__e);
}
catch(...)
{
__cxxabiv1::__cxa_free_exception(__e);
return current_exception();
}
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif __cpp_exceptions
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 197 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
try
{
throw __ex;
}
catch(...)
{
return current_exception();
}
#else // no RTTI and no exceptions
# 206 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
return exception_ptr();
#endif
# 208 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
}
// @} group exceptions
} // namespace std
} // extern "C++"
#pragma GCC visibility pop
#endif
# 218 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/exception_ptr.h" 3
# 144 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/nested_exception.h>
#endif /* expanded by -frewrite-includes */
# 144 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 1 3
// Nested Exception support header (nested_exception class) for -*- C++ -*-
// Copyright (C) 2009-2019 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 0 /* disabled by -frewrite-includes */
#if __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
#if 0 /* expanded by -frewrite-includes */
# include <bits/c++0x_warning.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
# 37 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
#else
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/move.h>
#endif /* expanded by -frewrite-includes */
# 40 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 1 3
// Move, forward and identity for C++11 + swap -*- C++ -*-
// Copyright (C) 2007-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
# 34 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/concept_check.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/concept_check.h" 1 3
// Concept-checking control -*- C++ -*-
// Copyright (C) 2001-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/concept_check.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/concept_check.h" 3
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if !defined(_GLIBCXX_CONCEPT_CHECKS) || !_GLIBCXX_HOSTED
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 47 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/concept_check.h" 3
#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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/concept_check.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/boost_concept_check.h>
#endif /* expanded by -frewrite-includes */
# 56 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/concept_check.h" 3
# 57 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/concept_check.h" 3
#endif // _GLIBCXX_CONCEPT_CHECK
# 82 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/concept_check.h" 3
# 35 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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); }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 51 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // Brings in std::declval too.
#endif /* expanded by -frewrite-includes */
# 55 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 1 3
// C++11 <type_traits> -*- C++ -*-
// Copyright (C) 2007-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 35 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* expanded by -frewrite-includes */
# include <bits/c++0x_warning.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#else
# 37 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 noexcept { return value; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 64 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#define __cpp_lib_integral_constant_callable 201304
constexpr value_type operator()() const noexcept { return value; }
#endif
# 69 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 84 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
# define __cpp_lib_bool_constant 201505
template<bool __v>
using bool_constant = integral_constant<bool, __v>;
#endif
# 88 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 __bool_constant<!bool(_Pp::value)>
{ };
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 146 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<typename... _Bn>
inline constexpr bool __or_v = __or_<_Bn...>::value;
template<typename... _Bn>
inline constexpr bool __and_v = __and_<_Bn...>::value;
#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>
inline constexpr bool conjunction_v = conjunction<_Bn...>::value;
template<typename... _Bn>
inline constexpr bool disjunction_v = disjunction<_Bn...>::value;
template<typename _Pp>
inline constexpr bool negation_v = negation<_Pp>::value;
#endif // C++17
# 179 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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
# 236 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#ifdef _GLIBCXX_USE_CHAR8_T
template<>
struct __is_integral_helper<char8_t>
: public true_type { };
#endif
# 242 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_0)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 286 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
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
# 294 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_1)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 295 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
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
# 303 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_2)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 304 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
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
# 312 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_3)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 313 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 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
# 321 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 345 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __is_floating_point_helper<__float128>
: public true_type { };
#endif
# 349 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 __not_<is_function<_Tp>>::type { };
/// 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 is_function<_Tp>::type { };
/// 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 __not_<is_fundamental<_Tp>>::type { };
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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 714 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#define __cpp_lib_is_final 201402L
/// is_final
template<typename _Tp>
struct is_final
: public integral_constant<bool, __is_final(_Tp)>
{ };
#endif
# 721 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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.
/**
* @brief Utility to simplify expressions used in unevaluated operands
* @ingroup utilities
*/
template<typename _Tp, typename _Up = _Tp&&>
_Up
__declval(int);
template<typename _Tp>
_Tp
__declval(long);
template<typename _Tp>
auto declval() noexcept -> decltype(__declval<_Tp>(0));
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 __bool_constant<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
{ };
/// is_constructible
template<typename _Tp, typename... _Args>
struct is_constructible
: public __bool_constant<__is_constructible(_Tp, _Args...)>
{ };
/// is_default_constructible
template<typename _Tp>
struct is_default_constructible
: public is_constructible<_Tp>::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>
{ };
/// is_assignable
template<typename _Tp, typename _Up>
struct is_assignable
: public __bool_constant<__is_assignable(_Tp, _Up)>
{ };
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 __bool_constant<__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, bool = __is_referenceable<_Tp>::value>
struct __is_trivially_copy_constructible_impl;
template<typename _Tp>
struct __is_trivially_copy_constructible_impl<_Tp, false>
: public false_type { };
template<typename _Tp>
struct __is_trivially_copy_constructible_impl<_Tp, true>
: public __and_<is_copy_constructible<_Tp>,
integral_constant<bool,
__is_trivially_constructible(_Tp, const _Tp&)>>
{ };
template<typename _Tp>
struct is_trivially_copy_constructible
: public __is_trivially_copy_constructible_impl<_Tp>
{ };
/// is_trivially_move_constructible
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
struct __is_trivially_move_constructible_impl;
template<typename _Tp>
struct __is_trivially_move_constructible_impl<_Tp, false>
: public false_type { };
template<typename _Tp>
struct __is_trivially_move_constructible_impl<_Tp, true>
: public __and_<is_move_constructible<_Tp>,
integral_constant<bool,
__is_trivially_constructible(_Tp, _Tp&&)>>
{ };
template<typename _Tp>
struct is_trivially_move_constructible
: public __is_trivially_move_constructible_impl<_Tp>
{ };
/// is_trivially_assignable
template<typename _Tp, typename _Up>
struct is_trivially_assignable
: public __bool_constant<__is_trivially_assignable(_Tp, _Up)>
{ };
/// is_trivially_copy_assignable
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
struct __is_trivially_copy_assignable_impl;
template<typename _Tp>
struct __is_trivially_copy_assignable_impl<_Tp, false>
: public false_type { };
template<typename _Tp>
struct __is_trivially_copy_assignable_impl<_Tp, true>
: public __bool_constant<__is_trivially_assignable(_Tp&, const _Tp&)>
{ };
template<typename _Tp>
struct is_trivially_copy_assignable
: public __is_trivially_copy_assignable_impl<_Tp>
{ };
/// is_trivially_move_assignable
template<typename _Tp, bool = __is_referenceable<_Tp>::value>
struct __is_trivially_move_assignable_impl;
template<typename _Tp>
struct __is_trivially_move_assignable_impl<_Tp, false>
: public false_type { };
template<typename _Tp>
struct __is_trivially_move_assignable_impl<_Tp, true>
: public __bool_constant<__is_trivially_assignable(_Tp&, _Tp&&)>
{ };
template<typename _Tp>
struct is_trivially_move_assignable
: public __is_trivially_move_assignable_impl<_Tp>
{ };
/// is_trivially_destructible
template<typename _Tp>
struct is_trivially_destructible
: public __and_<is_destructible<_Tp>,
__bool_constant<__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) noexcept;
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
{ };
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1340 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<typename _From, typename _To,
bool = __or_<is_void<_From>, is_function<_To>,
is_array<_To>>::value>
struct __is_nt_convertible_helper
: is_void<_To>
{ };
template<typename _From, typename _To>
class __is_nt_convertible_helper<_From, _To, false>
{
template<typename _To1>
static void __test_aux(_To1) noexcept;
template<typename _From1, typename _To1>
static bool_constant<noexcept(__test_aux<_To1>(std::declval<_From1>()))>
__test(int);
template<typename, typename>
static false_type
__test(...);
public:
using type = decltype(__test<_From, _To>(0));
};
/// is_nothrow_convertible
template<typename _From, typename _To>
struct is_nothrow_convertible
: public __is_nt_convertible_helper<_From, _To>::type
{ };
/// is_nothrow_convertible_v
template<typename _From, typename _To>
inline constexpr bool is_nothrow_convertible_v
= is_nothrow_convertible<_From, _To>::value;
#endif // C++2a
# 1376 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
// 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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1424 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#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
# 1451 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1496 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
/// 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
# 1508 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_0)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1572 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_unsigned<__GLIBCXX_TYPE_INT_N_0>
{ typedef unsigned __GLIBCXX_TYPE_INT_N_0 __type; };
#endif
# 1576 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_1)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1577 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_unsigned<__GLIBCXX_TYPE_INT_N_1>
{ typedef unsigned __GLIBCXX_TYPE_INT_N_1 __type; };
#endif
# 1581 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_2)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1582 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_unsigned<__GLIBCXX_TYPE_INT_N_2>
{ typedef unsigned __GLIBCXX_TYPE_INT_N_2 __type; };
#endif
# 1586 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_3)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1587 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_unsigned<__GLIBCXX_TYPE_INT_N_3>
{ typedef unsigned __GLIBCXX_TYPE_INT_N_3 __type; };
#endif
# 1591 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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>
{
using __unsigned_type
= typename __make_unsigned<typename remove_cv<_Tp>::type>::__type;
public:
using __type
= typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type;
};
class __make_unsigned_selector_base
{
protected:
template<typename...> struct _List { };
template<typename _Tp, typename... _Up>
struct _List<_Tp, _Up...> : _List<_Up...>
{ static constexpr size_t __size = sizeof(_Tp); };
template<size_t _Sz, typename _Tp, bool = (_Sz <= _Tp::__size)>
struct __select;
template<size_t _Sz, typename _Uint, typename... _UInts>
struct __select<_Sz, _List<_Uint, _UInts...>, true>
{ using __type = _Uint; };
template<size_t _Sz, typename _Uint, typename... _UInts>
struct __select<_Sz, _List<_Uint, _UInts...>, false>
: __select<_Sz, _List<_UInts...>>
{ };
};
// Choose unsigned integer type with the smallest rank and same size as _Tp
template<typename _Tp>
class __make_unsigned_selector<_Tp, false, true>
: __make_unsigned_selector_base
{
// With -fshort-enums, an enum may be as small as a char.
using _UInts = _List<unsigned char, unsigned short, unsigned int,
unsigned long, unsigned long long>;
using __unsigned_type = typename __select<sizeof(_Tp), _UInts>::__type;
public:
using __type
= typename __match_cv_qualifiers<_Tp, __unsigned_type>::__type;
};
// wchar_t, char8_t, char16_t and char32_t are integral types but are
// neither signed integer types nor unsigned integer types, so must be
// transformed to the unsigned integer type with the smallest rank.
// Use the partial specialization for enumeration types to do that.
#if 0 /* disabled by -frewrite-includes */
#if defined(_GLIBCXX_USE_WCHAR_T)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1652 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_unsigned<wchar_t>
{
using __type
= typename __make_unsigned_selector<wchar_t, false, true>::__type;
};
#endif
# 1659 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#ifdef _GLIBCXX_USE_CHAR8_T
template<>
struct __make_unsigned<char8_t>
{
using __type
= typename __make_unsigned_selector<char8_t, false, true>::__type;
};
#endif
# 1668 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_unsigned<char16_t>
{
using __type
= typename __make_unsigned_selector<char16_t, false, true>::__type;
};
template<>
struct __make_unsigned<char32_t>
{
using __type
= typename __make_unsigned_selector<char32_t, false, true>::__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 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_0)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1726 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_0>
{ typedef __GLIBCXX_TYPE_INT_N_0 __type; };
#endif
# 1730 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_1)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1731 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_1>
{ typedef __GLIBCXX_TYPE_INT_N_1 __type; };
#endif
# 1735 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_2)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1736 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_2>
{ typedef __GLIBCXX_TYPE_INT_N_2 __type; };
#endif
# 1740 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(__GLIBCXX_TYPE_INT_N_3)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1741 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_signed<unsigned __GLIBCXX_TYPE_INT_N_3>
{ typedef __GLIBCXX_TYPE_INT_N_3 __type; };
#endif
# 1745 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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>
{
using __signed_type
= typename __make_signed<typename remove_cv<_Tp>::type>::__type;
public:
using __type
= typename __match_cv_qualifiers<_Tp, __signed_type>::__type;
};
// Choose signed integer type with the smallest rank and same size as _Tp
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;
};
// wchar_t, char16_t and char32_t are integral types but are neither
// signed integer types nor unsigned integer types, so must be
// transformed to the signed integer type with the smallest rank.
// Use the partial specialization for enumeration types to do that.
#if 0 /* disabled by -frewrite-includes */
#if defined(_GLIBCXX_USE_WCHAR_T)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1778 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_signed<wchar_t>
{
using __type
= typename __make_signed_selector<wchar_t, false, true>::__type;
};
#endif
# 1785 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if defined(_GLIBCXX_USE_CHAR8_T)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 1787 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_signed<char8_t>
{
using __type
= typename __make_signed_selector<char8_t, false, true>::__type;
};
#endif
# 1794 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
template<>
struct __make_signed<char16_t>
{
using __type
= typename __make_signed_selector<char16_t, false, true>::__type;
};
template<>
struct __make_signed<char32_t>
{
using __type
= typename __make_signed_selector<char32_t, false, true>::__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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1822 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
/// 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
# 1830 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1860 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
/// 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
# 1868 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1901 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
/// 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
# 1909 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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<>
struct common_type<>
{ };
template<typename _Tp>
struct common_type<_Tp>
: common_type<_Tp, _Tp>
{ };
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
{ };
template<typename _Tp, bool = is_enum<_Tp>::value>
struct __underlying_type_impl
{
using type = __underlying_type(_Tp);
};
template<typename _Tp>
struct __underlying_type_impl<_Tp, false>
{ };
/// The underlying type of an enum.
template<typename _Tp>
struct underlying_type
: public __underlying_type_impl<_Tp>
{ };
template<typename _Tp>
struct __declval_protector
{
static const bool __stop = false;
};
template<typename _Tp>
auto declval() noexcept -> decltype(__declval<_Tp>(0))
{
static_assert(__declval_protector<_Tp>::__stop,
"declval() must not be used!");
return __declval<_Tp>(0);
}
// __remove_cvref_t (std::remove_cvref_t for C++11).
template<typename _Tp>
using __remove_cvref_t
= typename remove_cv<typename remove_reference<_Tp>::type>::type;
/// 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 __remove_cvref_t<_Arg> _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_reference<_Arg>::type _Argval;
typedef _Res _Class::* _MemPtr;
typedef typename conditional<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
// Used by result_of, invoke etc. to unwrap a reference_wrapper.
template<typename _Tp, typename _Up = __remove_cvref_t<_Tp>>
struct __inv_unwrap
{
using type = _Tp;
};
template<typename _Tp, typename _Up>
struct __inv_unwrap<_Tp, reference_wrapper<_Up>>
{
using type = _Up&;
};
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,
typename __inv_unwrap<_Arg>::type>
{ };
template<typename _MemPtr, typename _Arg, typename... _Args>
struct __result_of_impl<false, true, _MemPtr, _Arg, _Args...>
: public __result_of_memfun<typename decay<_MemPtr>::type,
typename __inv_unwrap<_Arg>::type, _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;
};
// __invoke_result (std::invoke_result for C++11)
template<typename _Functor, typename... _ArgTypes>
struct __invoke_result
: 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
{ };
template<typename _Functor, typename... _ArgTypes>
struct result_of<_Functor(_ArgTypes...)>
: public __invoke_result<_Functor, _ArgTypes...>
{ };
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2370 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
/// 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 // C++14
# 2402 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
// __enable_if_t (std::enable_if_t for C++11)
template<bool _Cond, typename _Tp = void>
using __enable_if_t = typename enable_if<_Cond, _Tp>::type;
// __void_t (std::void_t for C++11)
template<typename...> using __void_t = void;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L || !defined(__STRICT_ANSI__) // c++17 or gnu++11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2411 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#define __cpp_lib_void_t 201411
/// A metafunction that always yields void, used for detecting valid types.
template<typename...> using void_t = void;
#endif
# 2415 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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<__remove_cvref_t<_Tp>>::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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2550 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2566 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
/// is_swappable_v
template<typename _Tp>
_GLIBCXX17_INLINE constexpr bool is_swappable_v =
is_swappable<_Tp>::value;
/// is_nothrow_swappable_v
template<typename _Tp>
_GLIBCXX17_INLINE constexpr bool is_nothrow_swappable_v =
is_nothrow_swappable<_Tp>::value;
#endif // __cplusplus >= 201402L
# 2576 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 2650 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
/// is_swappable_with_v
template<typename _Tp, typename _Up>
_GLIBCXX17_INLINE constexpr bool is_swappable_with_v =
is_swappable_with<_Tp, _Up>::value;
/// is_nothrow_swappable_with_v
template<typename _Tp, typename _Up>
_GLIBCXX17_INLINE constexpr bool is_nothrow_swappable_with_v =
is_nothrow_swappable_with<_Tp, _Up>::value;
#endif // __cplusplus >= 201402L
# 2660 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#endif// c++1z or gnu++11
# 2662 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
// __is_invocable (std::is_invocable for C++11)
template<typename _Result, typename _Ret, typename = void>
struct __is_invocable_impl : false_type { };
template<typename _Result, typename _Ret>
struct __is_invocable_impl<_Result, _Ret, __void_t<typename _Result::type>>
: __or_<is_void<_Ret>, is_convertible<typename _Result::type, _Ret>>::type
{ };
template<typename _Fn, typename... _ArgTypes>
struct __is_invocable
: __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type
{ };
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 _Result, typename _Fn, typename... _Args>
struct __call_is_nothrow
: __bool_constant<
std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{})
>
{ };
template<typename _Fn, typename... _Args>
using __call_is_nothrow_
= __call_is_nothrow<__invoke_result<_Fn, _Args...>, _Fn, _Args...>;
// __is_nothrow_invocable (std::is_nothrow_invocable for C++11)
template<typename _Fn, typename... _Args>
struct __is_nothrow_invocable
: __and_<__is_invocable<_Fn, _Args...>,
__call_is_nothrow_<_Fn, _Args...>>::type
{ };
struct __nonesuch {
__nonesuch() = delete;
~__nonesuch() = delete;
__nonesuch(__nonesuch const&) = delete;
void operator=(__nonesuch const&) = delete;
};
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2738 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
# define __cpp_lib_is_invocable 201703
/// std::invoke_result
template<typename _Functor, typename... _ArgTypes>
struct invoke_result
: public __invoke_result<_Functor, _ArgTypes...>
{ };
/// std::invoke_result_t
template<typename _Fn, typename... _Args>
using invoke_result_t = typename invoke_result<_Fn, _Args...>::type;
/// std::is_invocable
template<typename _Fn, typename... _ArgTypes>
struct is_invocable
: __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>::type
{ };
/// std::is_invocable_r
template<typename _Ret, typename _Fn, typename... _ArgTypes>
struct is_invocable_r
: __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type
{ };
/// std::is_nothrow_invocable
template<typename _Fn, typename... _ArgTypes>
struct is_nothrow_invocable
: __and_<__is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, void>,
__call_is_nothrow_<_Fn, _ArgTypes...>>::type
{ };
template<typename _Result, typename _Ret, typename = void>
struct __is_nt_invocable_impl : false_type { };
template<typename _Result, typename _Ret>
struct __is_nt_invocable_impl<_Result, _Ret,
__void_t<typename _Result::type>>
: __or_<is_void<_Ret>,
__and_<is_convertible<typename _Result::type, _Ret>,
is_nothrow_constructible<_Ret, typename _Result::type>>>
{ };
/// std::is_nothrow_invocable_r
template<typename _Ret, typename _Fn, typename... _ArgTypes>
struct is_nothrow_invocable_r
: __and_<__is_nt_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>,
__call_is_nothrow_<_Fn, _ArgTypes...>>::type
{ };
/// std::is_invocable_v
template<typename _Fn, typename... _Args>
inline constexpr bool is_invocable_v = is_invocable<_Fn, _Args...>::value;
/// std::is_nothrow_invocable_v
template<typename _Fn, typename... _Args>
inline constexpr bool is_nothrow_invocable_v
= is_nothrow_invocable<_Fn, _Args...>::value;
/// std::is_invocable_r_v
template<typename _Fn, typename... _Args>
inline constexpr bool is_invocable_r_v
= is_invocable_r<_Fn, _Args...>::value;
/// std::is_nothrow_invocable_r_v
template<typename _Fn, typename... _Args>
inline constexpr bool is_nothrow_invocable_r_v
= is_nothrow_invocable_r<_Fn, _Args...>::value;
#endif // C++17
# 2806 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2808 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
# define __cpp_lib_type_trait_variable_templates 201510L
template <typename _Tp>
inline constexpr bool is_void_v = is_void<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_null_pointer_v = is_null_pointer<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_integral_v = is_integral<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_floating_point_v = is_floating_point<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_array_v = is_array<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_pointer_v = is_pointer<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_lvalue_reference_v =
is_lvalue_reference<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_rvalue_reference_v =
is_rvalue_reference<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_member_object_pointer_v =
is_member_object_pointer<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_member_function_pointer_v =
is_member_function_pointer<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_enum_v = is_enum<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_union_v = is_union<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_class_v = is_class<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_function_v = is_function<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_reference_v = is_reference<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_arithmetic_v = is_arithmetic<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_fundamental_v = is_fundamental<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_object_v = is_object<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_scalar_v = is_scalar<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_compound_v = is_compound<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_member_pointer_v = is_member_pointer<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_const_v = is_const<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_volatile_v = is_volatile<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_trivial_v = is_trivial<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_trivially_copyable_v =
is_trivially_copyable<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_standard_layout_v = is_standard_layout<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_pod_v = is_pod<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_literal_type_v = is_literal_type<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_empty_v = is_empty<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_polymorphic_v = is_polymorphic<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_abstract_v = is_abstract<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_final_v = is_final<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_signed_v = is_signed<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_unsigned_v = is_unsigned<_Tp>::value;
template <typename _Tp, typename... _Args>
inline constexpr bool is_constructible_v =
is_constructible<_Tp, _Args...>::value;
template <typename _Tp>
inline constexpr bool is_default_constructible_v =
is_default_constructible<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_copy_constructible_v =
is_copy_constructible<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_move_constructible_v =
is_move_constructible<_Tp>::value;
template <typename _Tp, typename _Up>
inline constexpr bool is_assignable_v = is_assignable<_Tp, _Up>::value;
template <typename _Tp>
inline constexpr bool is_copy_assignable_v = is_copy_assignable<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_move_assignable_v = is_move_assignable<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_destructible_v = is_destructible<_Tp>::value;
template <typename _Tp, typename... _Args>
inline constexpr bool is_trivially_constructible_v =
is_trivially_constructible<_Tp, _Args...>::value;
template <typename _Tp>
inline constexpr bool is_trivially_default_constructible_v =
is_trivially_default_constructible<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_trivially_copy_constructible_v =
is_trivially_copy_constructible<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_trivially_move_constructible_v =
is_trivially_move_constructible<_Tp>::value;
template <typename _Tp, typename _Up>
inline constexpr bool is_trivially_assignable_v =
is_trivially_assignable<_Tp, _Up>::value;
template <typename _Tp>
inline constexpr bool is_trivially_copy_assignable_v =
is_trivially_copy_assignable<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_trivially_move_assignable_v =
is_trivially_move_assignable<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_trivially_destructible_v =
is_trivially_destructible<_Tp>::value;
template <typename _Tp, typename... _Args>
inline constexpr bool is_nothrow_constructible_v =
is_nothrow_constructible<_Tp, _Args...>::value;
template <typename _Tp>
inline constexpr bool is_nothrow_default_constructible_v =
is_nothrow_default_constructible<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_nothrow_copy_constructible_v =
is_nothrow_copy_constructible<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_nothrow_move_constructible_v =
is_nothrow_move_constructible<_Tp>::value;
template <typename _Tp, typename _Up>
inline constexpr bool is_nothrow_assignable_v =
is_nothrow_assignable<_Tp, _Up>::value;
template <typename _Tp>
inline constexpr bool is_nothrow_copy_assignable_v =
is_nothrow_copy_assignable<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_nothrow_move_assignable_v =
is_nothrow_move_assignable<_Tp>::value;
template <typename _Tp>
inline constexpr bool is_nothrow_destructible_v =
is_nothrow_destructible<_Tp>::value;
template <typename _Tp>
inline constexpr bool has_virtual_destructor_v =
has_virtual_destructor<_Tp>::value;
template <typename _Tp>
inline constexpr size_t alignment_of_v = alignment_of<_Tp>::value;
template <typename _Tp>
inline constexpr size_t rank_v = rank<_Tp>::value;
template <typename _Tp, unsigned _Idx = 0>
inline constexpr size_t extent_v = extent<_Tp, _Idx>::value;
template <typename _Tp, typename _Up>
inline constexpr bool is_same_v = is_same<_Tp, _Up>::value;
template <typename _Base, typename _Derived>
inline constexpr bool is_base_of_v = is_base_of<_Base, _Derived>::value;
template <typename _From, typename _To>
inline constexpr bool is_convertible_v = is_convertible<_From, _To>::value;
#ifdef _GLIBCXX_HAVE_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>>
)>
{ };
template<typename _Tp>
inline constexpr bool has_unique_object_representations_v
= has_unique_object_representations<_Tp>::value;
#endif
# 2980 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#ifdef _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE
# define __cpp_lib_is_aggregate 201703
/// is_aggregate
template<typename _Tp>
struct is_aggregate
: bool_constant<__is_aggregate(remove_cv_t<_Tp>)> { };
/// is_aggregate_v
template<typename _Tp>
inline constexpr bool is_aggregate_v = is_aggregate<_Tp>::value;
#endif
# 2992 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#endif // C++17
# 2993 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201703L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 2995 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
/// Remove references and cv-qualifiers.
template<typename _Tp>
struct remove_cvref
{
using type = __remove_cvref_t<_Tp>;
};
template<typename _Tp>
using remove_cvref_t = __remove_cvref_t<_Tp>;
/// Identity metafunction.
template<typename _Tp>
struct type_identity { using type = _Tp; };
template<typename _Tp>
using type_identity_t = typename type_identity<_Tp>::type;
/// Unwrap a reference_wrapper
template<typename _Tp>
struct unwrap_reference { using type = _Tp; };
template<typename _Tp>
struct unwrap_reference<reference_wrapper<_Tp>> { using type = _Tp&; };
template<typename _Tp>
using unwrap_reference_t = typename unwrap_reference<_Tp>::type;
/// Decay type and if it's a reference_wrapper, unwrap it
template<typename _Tp>
struct unwrap_ref_decay { using type = unwrap_reference_t<decay_t<_Tp>>; };
template<typename _Tp>
using unwrap_ref_decay_t = typename unwrap_ref_decay<_Tp>::type;
#define __cpp_lib_bounded_array_traits 201902L
/// True for a type that is an array of known bound.
template<typename _Tp>
struct is_bounded_array
: public __is_array_known_bounds<_Tp>
{ };
/// True for a type that is an array of unknown bound.
template<typename _Tp>
struct is_unbounded_array
: public __is_array_unknown_bounds<_Tp>
{ };
template<typename _Tp>
inline constexpr bool is_bounded_array_v
= is_bounded_array<_Tp>::value;
template<typename _Tp>
inline constexpr bool is_unbounded_array_v
= is_unbounded_array<_Tp>::value;
#ifdef _GLIBCXX_HAVE_BUILTIN_IS_CONSTANT_EVALUATED
#define __cpp_lib_is_constant_evaluated 201811L
constexpr inline bool
is_constant_evaluated() noexcept
{ return __builtin_is_constant_evaluated(); }
#endif
# 3059 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#endif // C++2a
# 3061 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#endif // C++11
# 3066 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
#endif // _GLIBCXX_TYPE_TRAITS
# 3068 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/type_traits" 3
# 56 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 125 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 2296. std::addressof should be constexpr
# define __cpp_lib_addressof_constexpr 201603
#endif
# 129 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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
#define _GLIBCXX_MOVE(__val) std::move(__val)
#define _GLIBCXX_FORWARD(_Tp, __val) std::forward<_Tp>(__val)
#else
# 161 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
#define _GLIBCXX_MOVE(__val) (__val)
#define _GLIBCXX_FORWARD(_Tp, __val) (__val)
#endif
# 164 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
/**
* @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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 179 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
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
# 186 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
void
swap(_Tp& __a, _Tp& __b)
#endif
# 189 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 204 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
typename enable_if<__is_swappable<_Tp>::value>::type
swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
noexcept(__is_nothrow_swappable<_Tp>::value)
#else
# 208 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
void
swap(_Tp (&__a)[_Nm], _Tp (&__b)[_Nm])
#endif
# 211 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 */
# 221 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/move.h" 3
# 41 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 2 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>
[[noreturn]]
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>
[[noreturn]]
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
# 160 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
#pragma GCC visibility pop
#endif // _GLIBCXX_NESTED_EXCEPTION_H
# 164 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/nested_exception.h" 3
# 145 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 2 3
#endif
# 146 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
#endif
# 148 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/exception" 3
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h" 2
namespace cnl {
namespace _impl {
template<class Result>
[[noreturn]] CNL_RELAXED_CONSTEXPR Result terminate(char const* message) noexcept
{
std::fputs(message, stderr);
std::fputc('\n', stderr);
std::terminate();
}
}
}
#endif //CNL_TERMINATE_H
# 28 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/terminate.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h" 2
////////////////////////////////////////////////////////////////////////////////
// CNL_ASSERT - with passing resemblance to code from github.com/Microsoft/GSL
// CNL_ASSERT - enforces that a condition *must* be true
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_RELEASE)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
// in release builds,
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_ASSERT(CONDITION) CNL_ASSUME(CONDITION)
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(CNL_DEBUG)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 24 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
#if 0 /* expanded by -frewrite-includes */
#include <exception>
#endif /* expanded by -frewrite-includes */
# 24 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
# 25 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_ASSERT(CONDITION) \
(CNL_LIKELY(CONDITION) \
? static_cast<void>(0) \
: cnl::_impl::terminate<void>(#CONDITION))
#else
# 31 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
#error internal library error
#endif
# 33 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
#endif // CNL_IMPL_ASSERT_H
# 35 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/assert.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "cstdint.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h" 1
// Copyright John McFarlane 2017.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file
/// \brief file containing definitions equivalent to those in \verbatim<cstdint>\endverbatim
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_CSTDINT_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
#define CNL_CSTDINT_H
#if 0 /* expanded by -frewrite-includes */
#include "_impl/common.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
#if 0 /* expanded by -frewrite-includes */
#include "_impl/config.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
#if 0 /* expanded by -frewrite-includes */
#include <cstdint>
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 1 3
// <cstdint> -*- C++ -*-
// Copyright (C) 2007-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 35 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
#if 0 /* expanded by -frewrite-includes */
# include <bits/c++0x_warning.h>
#endif /* expanded by -frewrite-includes */
# 35 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
#else
# 37 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
# 39 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_HAVE_STDINT_H
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 41 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
#if 0 /* expanded by -frewrite-includes */
# include <stdint.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
# 1 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 1 3
/*===---- stdint.h - Standard header for sized integer types --------------===*\
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
\*===----------------------------------------------------------------------===*/
#ifndef __CLANG_STDINT_H
// AIX system headers need stdint.h to be re-enterable while _STD_TYPES_T
// is defined until an inclusion of it without _STD_TYPES_T occurs, in which
// case the header guard macro is defined.
#if 0 /* disabled by -frewrite-includes */
#if !defined(_AIX) || !defined(_STD_TYPES_T) || !defined(__STDC_HOSTED__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 14 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#define __CLANG_STDINT_H
#endif
# 16 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
/* If we're hosted, fall back to the system's stdint.h, which might have
* additional definitions.
*/
#if 0 /* disabled by -frewrite-includes */
#if __STDC_HOSTED__ && __has_include_next(<stdint.h>)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
// 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 0 /* disabled by -frewrite-includes */
# if !defined(__STDC_LIMIT_MACROS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 43 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define __STDC_LIMIT_MACROS
# define __STDC_LIMIT_MACROS_DEFINED_BY_CLANG
# endif
# 46 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#if 0 /* disabled by -frewrite-includes */
# if !defined(__STDC_CONSTANT_MACROS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 47 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define __STDC_CONSTANT_MACROS
# define __STDC_CONSTANT_MACROS_DEFINED_BY_CLANG
# endif
# 50 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# endif
# 51 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#if 0 /* expanded by -frewrite-includes */
# include_next <stdint.h>
#endif /* expanded by -frewrite-includes */
# 52 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# 1 "/usr/include/stdint.h" 1 3 4
/* Copyright (C) 1997-2019 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
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
#if 0 /* expanded by -frewrite-includes */
#include <bits/libc-header-start.h>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/include/stdint.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 1 3 4
/* Handle feature test macros at the start of a header.
Copyright (C) 2016-2019 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/>. */
/* This header is internal to glibc and should not be included outside
of glibc headers. Headers including it must define
__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
cannot have multiple include guards because ISO C feature test
macros depend on the definition of the macro when an affected
header is included, not when the first system header is
included. */
#ifndef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
# error "Never include <bits/libc-header-start.h> directly."
#endif
# 30 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
#if 0 /* expanded by -frewrite-includes */
#include <features.h>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# 34 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
macro. */
#undef __GLIBC_USE_LIB_EXT2
#if 0 /* disabled by -frewrite-includes */
#if (defined __USE_GNU \
|| (defined __STDC_WANT_LIB_EXT2__ && __STDC_WANT_LIB_EXT2__ > 0))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 40 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_LIB_EXT2 1
#else
# 42 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_LIB_EXT2 0
#endif
# 44 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
macro. */
#undef __GLIBC_USE_IEC_60559_BFP_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 49 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_BFP_EXT 1
#else
# 51 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_BFP_EXT 0
#endif
# 53 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-4:2015 defines the
__STDC_WANT_IEC_60559_FUNCS_EXT__ macro. */
#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_FUNCS_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 58 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
#else
# 60 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_FUNCS_EXT 0
#endif
# 62 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-3:2015 defines the
__STDC_WANT_IEC_60559_TYPES_EXT__ macro. */
#undef __GLIBC_USE_IEC_60559_TYPES_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_TYPES_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 67 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_TYPES_EXT 1
#else
# 69 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_TYPES_EXT 0
#endif
# 71 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# 27 "/usr/include/stdint.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/types.h>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/include/stdint.h" 3 4
# 28 "/usr/include/stdint.h" 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/wchar.h>
#endif /* expanded by -frewrite-includes */
# 28 "/usr/include/stdint.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/wchar.h" 1 3 4
/* wchar_t type related definitions.
Copyright (C) 2000-2019 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__
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif L'\0' - 1 > 0
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 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__
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif L'\0' - 1 > 0
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 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
# 29 "/usr/include/stdint.h" 2 3 4
#if 0 /* expanded by -frewrite-includes */
#include <bits/wordsize.h>
#endif /* expanded by -frewrite-includes */
# 29 "/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 0 /* disabled by -frewrite-includes */
#if defined __x86_64__ && !defined __ILP32__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 4 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE 64
#else
# 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE 32
#define __WORDSIZE32_SIZE_ULONG 0
#define __WORDSIZE32_PTRDIFF_LONG 0
#endif
# 10 "/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
#else
# 16 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE_TIME64_COMPAT32 0
#endif
# 18 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# 30 "/usr/include/stdint.h" 2 3 4
/* Exact integral types. */
/* Signed. */
#if 0 /* expanded by -frewrite-includes */
#include <bits/stdint-intn.h>
#endif /* expanded by -frewrite-includes */
# 34 "/usr/include/stdint.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h" 1 3 4
/* Define intN_t types.
Copyright (C) 2017-2019 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_STDINT_INTN_H
#define _BITS_STDINT_INTN_H 1
#if 0 /* expanded by -frewrite-includes */
#include <bits/types.h>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h" 3 4
# 23 "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h" 3 4
typedef __int8_t int8_t;
typedef __int16_t int16_t;
typedef __int32_t int32_t;
typedef __int64_t int64_t;
#endif /* bits/stdint-intn.h */
# 30 "/usr/include/x86_64-linux-gnu/bits/stdint-intn.h" 3 4
# 35 "/usr/include/stdint.h" 2 3 4
/* Unsigned. */
#if 0 /* expanded by -frewrite-includes */
#include <bits/stdint-uintn.h>
#endif /* expanded by -frewrite-includes */
# 37 "/usr/include/stdint.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h" 1 3 4
/* Define uintN_t types.
Copyright (C) 2017-2019 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_STDINT_UINTN_H
#define _BITS_STDINT_UINTN_H 1
#if 0 /* expanded by -frewrite-includes */
#include <bits/types.h>
#endif /* expanded by -frewrite-includes */
# 22 "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h" 3 4
# 23 "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h" 3 4
typedef __uint8_t uint8_t;
typedef __uint16_t uint16_t;
typedef __uint32_t uint32_t;
typedef __uint64_t uint64_t;
#endif /* bits/stdint-uintn.h */
# 30 "/usr/include/x86_64-linux-gnu/bits/stdint-uintn.h" 3 4
# 38 "/usr/include/stdint.h" 2 3 4
/* Small types. */
/* Signed. */
typedef __int_least8_t int_least8_t;
typedef __int_least16_t int_least16_t;
typedef __int_least32_t int_least32_t;
typedef __int_least64_t int_least64_t;
/* Unsigned. */
typedef __uint_least8_t uint_least8_t;
typedef __uint_least16_t uint_least16_t;
typedef __uint_least32_t uint_least32_t;
typedef __uint_least64_t uint_least64_t;
/* Fast types. */
/* Signed. */
typedef signed char int_fast8_t;
#if 0 /* disabled by -frewrite-includes */
#if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 60 "/usr/include/stdint.h" 3 4
typedef long int int_fast16_t;
typedef long int int_fast32_t;
typedef long int int_fast64_t;
#else
# 64 "/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
# 69 "/usr/include/stdint.h" 3 4
/* Unsigned. */
typedef unsigned char uint_fast8_t;
#if 0 /* disabled by -frewrite-includes */
#if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 73 "/usr/include/stdint.h" 3 4
typedef unsigned long int uint_fast16_t;
typedef unsigned long int uint_fast32_t;
typedef unsigned long int uint_fast64_t;
#else
# 77 "/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
# 82 "/usr/include/stdint.h" 3 4
/* Types for `void *' pointers. */
#if 0 /* disabled by -frewrite-includes */
#if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 86 "/usr/include/stdint.h" 3 4
# ifndef __intptr_t_defined
typedef long int intptr_t;
# define __intptr_t_defined
# endif
# 90 "/usr/include/stdint.h" 3 4
typedef unsigned long int uintptr_t;
#else
# 92 "/usr/include/stdint.h" 3 4
# ifndef __intptr_t_defined
typedef int intptr_t;
# define __intptr_t_defined
# endif
# 96 "/usr/include/stdint.h" 3 4
typedef unsigned int uintptr_t;
#endif
# 98 "/usr/include/stdint.h" 3 4
/* Largest integral types. */
typedef __intmax_t intmax_t;
typedef __uintmax_t uintmax_t;
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 106 "/usr/include/stdint.h" 3 4
# define __INT64_C(c) c ## L
# define __UINT64_C(c) c ## UL
# else
# 109 "/usr/include/stdint.h" 3 4
# define __INT64_C(c) c ## LL
# define __UINT64_C(c) c ## ULL
# endif
# 112 "/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 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 154 "/usr/include/stdint.h" 3 4
# define INT_FAST16_MIN (-9223372036854775807L-1)
# define INT_FAST32_MIN (-9223372036854775807L-1)
# else
# 157 "/usr/include/stdint.h" 3 4
# define INT_FAST16_MIN (-2147483647-1)
# define INT_FAST32_MIN (-2147483647-1)
# endif
# 160 "/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 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 164 "/usr/include/stdint.h" 3 4
# define INT_FAST16_MAX (9223372036854775807L)
# define INT_FAST32_MAX (9223372036854775807L)
# else
# 167 "/usr/include/stdint.h" 3 4
# define INT_FAST16_MAX (2147483647)
# define INT_FAST32_MAX (2147483647)
# endif
# 170 "/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 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 175 "/usr/include/stdint.h" 3 4
# define UINT_FAST16_MAX (18446744073709551615UL)
# define UINT_FAST32_MAX (18446744073709551615UL)
# else
# 178 "/usr/include/stdint.h" 3 4
# define UINT_FAST16_MAX (4294967295U)
# define UINT_FAST32_MAX (4294967295U)
# endif
# 181 "/usr/include/stdint.h" 3 4
# define UINT_FAST64_MAX (__UINT64_C(18446744073709551615))
/* Values to test for integral types holding `void *' pointer. */
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 186 "/usr/include/stdint.h" 3 4
# define INTPTR_MIN (-9223372036854775807L-1)
# define INTPTR_MAX (9223372036854775807L)
# define UINTPTR_MAX (18446744073709551615UL)
# else
# 190 "/usr/include/stdint.h" 3 4
# define INTPTR_MIN (-2147483647-1)
# define INTPTR_MAX (2147483647)
# define UINTPTR_MAX (4294967295U)
# endif
# 194 "/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 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 209 "/usr/include/stdint.h" 3 4
# define PTRDIFF_MIN (-9223372036854775807L-1)
# define PTRDIFF_MAX (9223372036854775807L)
# else
# 212 "/usr/include/stdint.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE32_PTRDIFF_LONG
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 213 "/usr/include/stdint.h" 3 4
# define PTRDIFF_MIN (-2147483647L-1)
# define PTRDIFF_MAX (2147483647L)
# else
# 216 "/usr/include/stdint.h" 3 4
# define PTRDIFF_MIN (-2147483647-1)
# define PTRDIFF_MAX (2147483647)
# endif
# 219 "/usr/include/stdint.h" 3 4
# endif
# 220 "/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 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 227 "/usr/include/stdint.h" 3 4
# define SIZE_MAX (18446744073709551615UL)
# else
# 229 "/usr/include/stdint.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE32_SIZE_ULONG
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 230 "/usr/include/stdint.h" 3 4
# define SIZE_MAX (4294967295UL)
# else
# 232 "/usr/include/stdint.h" 3 4
# define SIZE_MAX (4294967295U)
# endif
# 234 "/usr/include/stdint.h" 3 4
# endif
# 235 "/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
# 242 "/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 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 252 "/usr/include/stdint.h" 3 4
# define INT64_C(c) c ## L
# else
# 254 "/usr/include/stdint.h" 3 4
# define INT64_C(c) c ## LL
# endif
# 256 "/usr/include/stdint.h" 3 4
/* Unsigned. */
# define UINT8_C(c) c
# define UINT16_C(c) c
# define UINT32_C(c) c ## U
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 262 "/usr/include/stdint.h" 3 4
# define UINT64_C(c) c ## UL
# else
# 264 "/usr/include/stdint.h" 3 4
# define UINT64_C(c) c ## ULL
# endif
# 266 "/usr/include/stdint.h" 3 4
/* Maximal type. */
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 269 "/usr/include/stdint.h" 3 4
# define INTMAX_C(c) c ## L
# define UINTMAX_C(c) c ## UL
# else
# 272 "/usr/include/stdint.h" 3 4
# define INTMAX_C(c) c ## LL
# define UINTMAX_C(c) c ## ULL
# endif
# 275 "/usr/include/stdint.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if __GLIBC_USE (IEC_60559_BFP_EXT)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 277 "/usr/include/stdint.h" 3 4
# define INT8_WIDTH 8
# define UINT8_WIDTH 8
# define INT16_WIDTH 16
# define UINT16_WIDTH 16
# define INT32_WIDTH 32
# define UINT32_WIDTH 32
# define INT64_WIDTH 64
# define UINT64_WIDTH 64
# define INT_LEAST8_WIDTH 8
# define UINT_LEAST8_WIDTH 8
# define INT_LEAST16_WIDTH 16
# define UINT_LEAST16_WIDTH 16
# define INT_LEAST32_WIDTH 32
# define UINT_LEAST32_WIDTH 32
# define INT_LEAST64_WIDTH 64
# define UINT_LEAST64_WIDTH 64
# define INT_FAST8_WIDTH 8
# define UINT_FAST8_WIDTH 8
# define INT_FAST16_WIDTH __WORDSIZE
# define UINT_FAST16_WIDTH __WORDSIZE
# define INT_FAST32_WIDTH __WORDSIZE
# define UINT_FAST32_WIDTH __WORDSIZE
# define INT_FAST64_WIDTH 64
# define UINT_FAST64_WIDTH 64
# define INTPTR_WIDTH __WORDSIZE
# define UINTPTR_WIDTH __WORDSIZE
# define INTMAX_WIDTH 64
# define UINTMAX_WIDTH 64
# define PTRDIFF_WIDTH __WORDSIZE
# define SIG_ATOMIC_WIDTH 32
# define SIZE_WIDTH __WORDSIZE
# define WCHAR_WIDTH 32
# define WINT_WIDTH 32
#endif
# 318 "/usr/include/stdint.h" 3 4
#endif /* stdint.h */
# 320 "/usr/include/stdint.h" 3 4
# 53 "/home/john/llvm/lib/clang/10.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
# 58 "/home/john/llvm/lib/clang/10.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
# 62 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#else
# 64 "/home/john/llvm/lib/clang/10.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
* redefinitions, 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 */
# 98 "/home/john/llvm/lib/clang/10.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__ */
# 108 "/home/john/llvm/lib/clang/10.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 */
# 115 "/home/john/llvm/lib/clang/10.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__ */
# 130 "/home/john/llvm/lib/clang/10.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__ */
# 146 "/home/john/llvm/lib/clang/10.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__ */
# 162 "/home/john/llvm/lib/clang/10.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 */
# 169 "/home/john/llvm/lib/clang/10.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 */
# 174 "/home/john/llvm/lib/clang/10.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__ */
# 182 "/home/john/llvm/lib/clang/10.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 */
# 189 "/home/john/llvm/lib/clang/10.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__ */
# 202 "/home/john/llvm/lib/clang/10.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 */
# 207 "/home/john/llvm/lib/clang/10.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__ */
# 213 "/home/john/llvm/lib/clang/10.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 */
# 220 "/home/john/llvm/lib/clang/10.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 */
# 226 "/home/john/llvm/lib/clang/10.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__ */
# 230 "/home/john/llvm/lib/clang/10.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 */
# 237 "/home/john/llvm/lib/clang/10.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 */
# 242 "/home/john/llvm/lib/clang/10.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
# 253 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif
# 254 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#ifndef _UINTPTR_T
typedef __UINTPTR_TYPE__ uintptr_t;
#define _UINTPTR_T
#endif
# 259 "/home/john/llvm/lib/clang/10.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
# 294 "/home/john/llvm/lib/clang/10.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__ */
# 299 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __INT64_TYPE__ */
# 300 "/home/john/llvm/lib/clang/10.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
# 306 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define INT64_C(v) v
# define UINT64_C(v) v ## U
# endif /* __int64_c_suffix */
# 309 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __int_least64_t */
# 310 "/home/john/llvm/lib/clang/10.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
# 320 "/home/john/llvm/lib/clang/10.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__ */
# 326 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __INT56_TYPE__ */
# 327 "/home/john/llvm/lib/clang/10.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
# 337 "/home/john/llvm/lib/clang/10.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__ */
# 343 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __INT48_TYPE__ */
# 344 "/home/john/llvm/lib/clang/10.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
# 354 "/home/john/llvm/lib/clang/10.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__ */
# 360 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __INT40_TYPE__ */
# 361 "/home/john/llvm/lib/clang/10.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
# 369 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# undef __int32_c_suffix
# undef __int16_c_suffix
# undef __int8_c_suffix
# endif /* __INT32_C_SUFFIX__ */
# 373 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __INT32_TYPE__ */
# 374 "/home/john/llvm/lib/clang/10.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
# 380 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define INT32_C(v) v
# define UINT32_C(v) v ## U
# endif /* __int32_c_suffix */
# 383 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __int_least32_t */
# 384 "/home/john/llvm/lib/clang/10.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
# 393 "/home/john/llvm/lib/clang/10.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__ */
# 398 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __INT24_TYPE__ */
# 399 "/home/john/llvm/lib/clang/10.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
# 406 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# undef __int16_c_suffix
# undef __int8_c_suffix
# endif /* __INT16_C_SUFFIX__ */
# 409 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __INT16_TYPE__ */
# 410 "/home/john/llvm/lib/clang/10.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
# 416 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define INT16_C(v) v
# define UINT16_C(v) v ## U
# endif /* __int16_c_suffix */
# 419 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __int_least16_t */
# 420 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#ifdef __INT8_TYPE__
# ifdef __INT8_C_SUFFIX__
# define __int8_c_suffix __INT8_C_SUFFIX__
#else
# 426 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# undef __int8_c_suffix
# endif /* __INT8_C_SUFFIX__ */
# 428 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __INT8_TYPE__ */
# 429 "/home/john/llvm/lib/clang/10.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
# 435 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define INT8_C(v) v
# define UINT8_C(v) v ## U
# endif /* __int8_c_suffix */
# 438 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __int_least8_t */
# 439 "/home/john/llvm/lib/clang/10.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 definitions 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__ */
# 477 "/home/john/llvm/lib/clang/10.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 */
# 486 "/home/john/llvm/lib/clang/10.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__ */
# 508 "/home/john/llvm/lib/clang/10.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__ */
# 530 "/home/john/llvm/lib/clang/10.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__ */
# 552 "/home/john/llvm/lib/clang/10.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__ */
# 568 "/home/john/llvm/lib/clang/10.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 */
# 577 "/home/john/llvm/lib/clang/10.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__ */
# 596 "/home/john/llvm/lib/clang/10.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__ */
# 609 "/home/john/llvm/lib/clang/10.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 */
# 618 "/home/john/llvm/lib/clang/10.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__ */
# 628 "/home/john/llvm/lib/clang/10.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 */
# 637 "/home/john/llvm/lib/clang/10.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 0 /* disabled by -frewrite-includes */
#if defined(__STDC_WANT_LIB_EXT1__) && __STDC_WANT_LIB_EXT1__ >= 1
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 658 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#define RSIZE_MAX (SIZE_MAX >> 1)
#endif
# 660 "/home/john/llvm/lib/clang/10.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
# 673 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define WINT_MIN __INTN_MIN(__WINT_WIDTH__)
# define WINT_MAX __INTN_MAX(__WINT_WIDTH__)
#endif
# 676 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#ifndef WCHAR_MAX
# define WCHAR_MAX __WCHAR_MAX__
#endif
# 680 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#ifndef WCHAR_MIN
#if 0 /* disabled by -frewrite-includes */
# if __WCHAR_MAX__ == __INTN_MAX(__WCHAR_WIDTH__)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 682 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define WCHAR_MIN __INTN_MIN(__WCHAR_WIDTH__)
# else
# 684 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# define WCHAR_MIN __UINTN_C(__WCHAR_WIDTH__, 0)
# endif
# 686 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif
# 687 "/home/john/llvm/lib/clang/10.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__ */
# 693 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
#endif /* __CLANG_STDINT_H */
# 694 "/home/john/llvm/lib/clang/10.0.0/include/stdint.h" 3
# 42 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 2 3
#endif
# 43 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
namespace std
{
#ifdef _GLIBCXX_USE_C99_STDINT_TR1
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;
#else // !_GLIBCXX_USE_C99_STDINT_TR1
# 83 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
// Define the minimum needed for <ratio>, <chrono> etc.
using intmax_t = __INTMAX_TYPE__;
using uintmax_t = __UINTMAX_TYPE__;
#endif // _GLIBCXX_USE_C99_STDINT_TR1
# 87 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
} // namespace std
#endif // C++11
# 90 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
#endif // _GLIBCXX_CSTDINT
# 92 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/cstdint" 3
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h" 2
////////////////////////////////////////////////////////////////////////////////
// CNL_INTMAX_C and CNL_UINTMAX_C
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 22 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_INTMAX_C(N) (::cnl::_cnlint_impl::parse(CNL_STR(N)))
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_UINTMAX_C(N) (static_cast<::cnl::uint128>(::cnl::_cnlint_impl::parse(CNL_STR(N))))
#else
# 30 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_INTMAX_C INTMAX_C
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_UINTMAX_C UINTMAX_C
#endif
# 38 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
/// compositional numeric library
namespace cnl {
using int8 = std::int8_t;
using uint8 = std::uint8_t;
using int16 = std::int16_t;
using uint16 = std::uint16_t;
using int32 = std::int32_t;
using uint32 = std::uint32_t;
using int64 = std::int64_t;
using uint64 = std::uint64_t;
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 52 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
// to disable 128-bit integer support, #define CNL_USE_INT128=0
using int128 = __int128;
using uint128 = unsigned __int128;
using intmax = int128;
using uintmax = uint128;
#else
# 59 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
using intmax = std::intmax_t;
using uintmax = std::uintmax_t;
#endif // defined(CNL_INT128_ENABLED)
# 62 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
namespace _cnlint_impl {
template<typename ParseDigit>
CNL_NODISCARD constexpr intmax parse(char const* s, int base, ParseDigit parse_digit, intmax value = 0)
{
return (*s) ? parse(s+1, base, parse_digit, parse_digit(*s)+value*base) : value;
}
////////////////////////////////////////////////////////////////////////////////
// digit parsers
CNL_NODISCARD constexpr int parse_bin_char(char c) {
return (c == '0') ? 0 : (c == '1') ? 1 : int{};
}
CNL_NODISCARD constexpr int parse_dec_char(char c) {
return (c >= '0' && c <= '9') ? c - '0' : int{};
}
CNL_NODISCARD constexpr int parse_oct_char(char c) {
return (c >= '0' && c <= '7') ? c - '0' : int{};
}
CNL_NODISCARD constexpr int parse_hex_char(char c) {
return (c >= '0' && c <= '9')
? c - '0'
: (c >= 'a' && c <= 'z')
? c + 10 - 'a'
: (c >= 'A' && c <= 'Z')
? c + 10 - 'A'
: int{};
}
CNL_NODISCARD constexpr intmax parse_positive(char const* s)
{
return (s[0]!='0')
? parse(s, 10, parse_dec_char)
: (s[1]=='x' || s[1]=='X')
? parse(s+2, 16, parse_hex_char)
: (s[1]=='b' || s[1]=='B')
? parse(s+2, 2, parse_bin_char)
: parse(s+1, 8, parse_oct_char);
}
template<int NumChars>
CNL_NODISCARD constexpr intmax parse(const char (& s)[NumChars]) // NOLINT(cppcoreguidelines-avoid-c-arrays)
{
return (s[0]=='-')
? -parse_positive(s+1)
: s[0]=='+'
? parse_positive(s+1)
: parse_positive(s);
}
template<char... Chars>
CNL_NODISCARD constexpr intmax parse() {
return parse<sizeof...(Chars) + 1>({Chars...,'\0'});
}
}
}
#endif //CNL_CSTDINT_H
# 124 "/home/john/ws/rounding-overflow/cnl/include/cnl/cstdint.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "limits.h" // NOLINT(modernize-deprecated-headers, hicpp-deprecated-headers)
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h" 1
// Copyright John McFarlane 2015 - 2017.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file
/// \brief CNL alternative to \verbatim<limits>\endverbatim with 128-bit support
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_LIMITS_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h"
#define CNL_LIMITS_H
#if 0 /* expanded by -frewrite-includes */
#include "cstdint.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h"
#if 0 /* expanded by -frewrite-includes */
#include <climits>
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h"
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 1 3
// -*- C++ -*- forwarding header.
// Copyright (C) 1997-2019 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/climits
* 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 limits.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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 41 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 3
# 42 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 3
#if 0 /* expanded by -frewrite-includes */
#include <limits.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 3
# 1 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 1 3
/*===---- limits.h - Standard header for integer sizes --------------------===*\
*
* Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
* See https://llvm.org/LICENSE.txt for license information.
* SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
*
\*===----------------------------------------------------------------------===*/
#ifndef __CLANG_LIMITS_H
#define __CLANG_LIMITS_H
/* The system's limits.h may, in turn, try to #include_next GCC's limits.h.
Avert this #include_next madness. */
#if 0 /* disabled by -frewrite-includes */
#if defined __GNUC__ && !defined _GCC_LIMITS_H_
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 15 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
#define _GCC_LIMITS_H_
#endif
# 17 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
/* System headers include a number of constants from POSIX in <limits.h>.
Include it if we're hosted. */
#if 0 /* disabled by -frewrite-includes */
#if __STDC_HOSTED__ && __has_include_next(<limits.h>)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 21 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
#if 0 /* expanded by -frewrite-includes */
#include_next <limits.h>
#endif /* expanded by -frewrite-includes */
# 21 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
# 1 "/usr/include/limits.h" 1 3 4
/* Copyright (C) 1991-2019 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.10/5.2.4.2.1 Sizes of integer types <limits.h>
*/
#ifndef _LIBC_LIMITS_H_
#define _LIBC_LIMITS_H_ 1
#define __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
#if 0 /* expanded by -frewrite-includes */
#include <bits/libc-header-start.h>
#endif /* expanded by -frewrite-includes */
# 26 "/usr/include/limits.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 1 3 4
/* Handle feature test macros at the start of a header.
Copyright (C) 2016-2019 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/>. */
/* This header is internal to glibc and should not be included outside
of glibc headers. Headers including it must define
__GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
cannot have multiple include guards because ISO C feature test
macros depend on the definition of the macro when an affected
header is included, not when the first system header is
included. */
#ifndef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
# error "Never include <bits/libc-header-start.h> directly."
#endif
# 30 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
#if 0 /* expanded by -frewrite-includes */
#include <features.h>
#endif /* expanded by -frewrite-includes */
# 33 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# 34 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
macro. */
#undef __GLIBC_USE_LIB_EXT2
#if 0 /* disabled by -frewrite-includes */
#if (defined __USE_GNU \
|| (defined __STDC_WANT_LIB_EXT2__ && __STDC_WANT_LIB_EXT2__ > 0))
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 40 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_LIB_EXT2 1
#else
# 42 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_LIB_EXT2 0
#endif
# 44 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
macro. */
#undef __GLIBC_USE_IEC_60559_BFP_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 49 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_BFP_EXT 1
#else
# 51 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_BFP_EXT 0
#endif
# 53 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-4:2015 defines the
__STDC_WANT_IEC_60559_FUNCS_EXT__ macro. */
#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_FUNCS_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 58 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
#else
# 60 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_FUNCS_EXT 0
#endif
# 62 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
/* ISO/IEC TS 18661-3:2015 defines the
__STDC_WANT_IEC_60559_TYPES_EXT__ macro. */
#undef __GLIBC_USE_IEC_60559_TYPES_EXT
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_TYPES_EXT__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 67 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_TYPES_EXT 1
#else
# 69 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# define __GLIBC_USE_IEC_60559_TYPES_EXT 0
#endif
# 71 "/usr/include/x86_64-linux-gnu/bits/libc-header-start.h" 3 4
# 27 "/usr/include/limits.h" 2 3 4
/* Maximum length of any multibyte character in any locale.
We define this value here since the gcc header does not define
the correct value. */
#define MB_LEN_MAX 16
/* If we are not using GNU CC we have to define all the symbols ourself.
Otherwise use gcc's definitions (see below). */
#if 0 /* disabled by -frewrite-includes */
#if !defined __GNUC__ || __GNUC__ < 2
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 38 "/usr/include/limits.h" 3 4
/* We only protect from multiple inclusion here, because all the other
#include's protect themselves, and in GCC 2 we may #include_next through
multiple copies of this file before we get to GCC's. */
# ifndef _LIMITS_H
# define _LIMITS_H 1
#if 0 /* expanded by -frewrite-includes */
#include <bits/wordsize.h>
#endif /* expanded by -frewrite-includes */
# 45 "/usr/include/limits.h" 3 4
# 46 "/usr/include/limits.h" 3 4
/* We don't have #include_next.
Define ANSI <limits.h> for standard 32-bit words. */
/* These assume 8-bit `char's, 16-bit `short int's,
and 32-bit `int's and `long int's. */
/* Number of bits in a `char'. */
# define CHAR_BIT 8
/* Minimum and maximum values a `signed char' can hold. */
# define SCHAR_MIN (-128)
# define SCHAR_MAX 127
/* Maximum value an `unsigned char' can hold. (Minimum is 0.) */
# define UCHAR_MAX 255
/* Minimum and maximum values a `char' can hold. */
# ifdef __CHAR_UNSIGNED__
# define CHAR_MIN 0
# define CHAR_MAX UCHAR_MAX
# else
# 68 "/usr/include/limits.h" 3 4
# define CHAR_MIN SCHAR_MIN
# define CHAR_MAX SCHAR_MAX
# endif
# 71 "/usr/include/limits.h" 3 4
/* Minimum and maximum values a `signed short int' can hold. */
# define SHRT_MIN (-32768)
# define SHRT_MAX 32767
/* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */
# define USHRT_MAX 65535
/* Minimum and maximum values a `signed int' can hold. */
# define INT_MIN (-INT_MAX - 1)
# define INT_MAX 2147483647
/* Maximum value an `unsigned int' can hold. (Minimum is 0.) */
# define UINT_MAX 4294967295U
/* Minimum and maximum values a `signed long int' can hold. */
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 88 "/usr/include/limits.h" 3 4
# define LONG_MAX 9223372036854775807L
# else
# 90 "/usr/include/limits.h" 3 4
# define LONG_MAX 2147483647L
# endif
# 92 "/usr/include/limits.h" 3 4
# define LONG_MIN (-LONG_MAX - 1L)
/* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 96 "/usr/include/limits.h" 3 4
# define ULONG_MAX 18446744073709551615UL
# else
# 98 "/usr/include/limits.h" 3 4
# define ULONG_MAX 4294967295UL
# endif
# 100 "/usr/include/limits.h" 3 4
# ifdef __USE_ISOC99
/* Minimum and maximum values a `signed long long int' can hold. */
# define LLONG_MAX 9223372036854775807LL
# define LLONG_MIN (-LLONG_MAX - 1LL)
/* Maximum value an `unsigned long long int' can hold. (Minimum is 0.) */
# define ULLONG_MAX 18446744073709551615ULL
# endif /* ISO C99 */
# 111 "/usr/include/limits.h" 3 4
# endif /* limits.h */
# 113 "/usr/include/limits.h" 3 4
#endif /* GCC 2. */
# 114 "/usr/include/limits.h" 3 4
#endif /* !_LIBC_LIMITS_H_ */
# 116 "/usr/include/limits.h" 3 4
/* Get the compiler's limits.h, which defines almost all the ISO constants.
We put this #include_next outside the double inclusion check because
it should be possible to include this file more than once and still get
the definitions from gcc's header. */
#if 0 /* disabled by -frewrite-includes */
#if defined __GNUC__ && !defined _GCC_LIMITS_H_
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 123 "/usr/include/limits.h" 3 4
/* `_GCC_LIMITS_H_' is what GCC's file defines. */
#if 0 /* expanded by -frewrite-includes */
# include_next <limits.h>
#endif /* expanded by -frewrite-includes */
# 124 "/usr/include/limits.h" 3 4
# 125 "/usr/include/limits.h" 3 4
#endif
# 126 "/usr/include/limits.h" 3 4
/* The <limits.h> files in some gcc versions don't define LLONG_MIN,
LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for
ages are available. */
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_ISOC99 && defined __GNUC__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 131 "/usr/include/limits.h" 3 4
# ifndef LLONG_MIN
# define LLONG_MIN (-LLONG_MAX-1)
# endif
# 134 "/usr/include/limits.h" 3 4
# ifndef LLONG_MAX
# define LLONG_MAX __LONG_LONG_MAX__
# endif
# 137 "/usr/include/limits.h" 3 4
# ifndef ULLONG_MAX
# define ULLONG_MAX (LLONG_MAX * 2ULL + 1)
# endif
# 140 "/usr/include/limits.h" 3 4
#endif
# 141 "/usr/include/limits.h" 3 4
/* The integer width macros are not defined by GCC's <limits.h> before
GCC 7, or if _GNU_SOURCE rather than
__STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. */
#if 0 /* disabled by -frewrite-includes */
#if __GLIBC_USE (IEC_60559_BFP_EXT)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 146 "/usr/include/limits.h" 3 4
# ifndef CHAR_WIDTH
# define CHAR_WIDTH 8
# endif
# 149 "/usr/include/limits.h" 3 4
# ifndef SCHAR_WIDTH
# define SCHAR_WIDTH 8
# endif
# 152 "/usr/include/limits.h" 3 4
# ifndef UCHAR_WIDTH
# define UCHAR_WIDTH 8
# endif
# 155 "/usr/include/limits.h" 3 4
# ifndef SHRT_WIDTH
# define SHRT_WIDTH 16
# endif
# 158 "/usr/include/limits.h" 3 4
# ifndef USHRT_WIDTH
# define USHRT_WIDTH 16
# endif
# 161 "/usr/include/limits.h" 3 4
# ifndef INT_WIDTH
# define INT_WIDTH 32
# endif
# 164 "/usr/include/limits.h" 3 4
# ifndef UINT_WIDTH
# define UINT_WIDTH 32
# endif
# 167 "/usr/include/limits.h" 3 4
# ifndef LONG_WIDTH
# define LONG_WIDTH __WORDSIZE
# endif
# 170 "/usr/include/limits.h" 3 4
# ifndef ULONG_WIDTH
# define ULONG_WIDTH __WORDSIZE
# endif
# 173 "/usr/include/limits.h" 3 4
# ifndef LLONG_WIDTH
# define LLONG_WIDTH 64
# endif
# 176 "/usr/include/limits.h" 3 4
# ifndef ULLONG_WIDTH
# define ULLONG_WIDTH 64
# endif
# 179 "/usr/include/limits.h" 3 4
#endif /* Use IEC_60559_BFP_EXT. */
# 180 "/usr/include/limits.h" 3 4
#ifdef __USE_POSIX
/* POSIX adds things to <limits.h>. */
#if 0 /* expanded by -frewrite-includes */
# include <bits/posix1_lim.h>
#endif /* expanded by -frewrite-includes */
# 183 "/usr/include/limits.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 1 3 4
/* Copyright (C) 1991-2019 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with the GNU C Library; if not, see
<http://www.gnu.org/licenses/>. */
/*
* POSIX Standard: 2.9.2 Minimum Values Added to <limits.h>
*
* Never include this file directly; use <limits.h> instead.
*/
#ifndef _BITS_POSIX1_LIM_H
#define _BITS_POSIX1_LIM_H 1
#if 0 /* expanded by -frewrite-includes */
#include <bits/wordsize.h>
#endif /* expanded by -frewrite-includes */
# 27 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 1 3 4
/* Determine the wordsize from the preprocessor defines. */
#if 0 /* disabled by -frewrite-includes */
#if defined __x86_64__ && !defined __ILP32__
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 4 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE 64
#else
# 6 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE 32
#define __WORDSIZE32_SIZE_ULONG 0
#define __WORDSIZE32_PTRDIFF_LONG 0
#endif
# 10 "/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
#else
# 16 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# define __WORDSIZE_TIME64_COMPAT32 0
#endif
# 18 "/usr/include/x86_64-linux-gnu/bits/wordsize.h" 3 4
# 28 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 2 3 4
/* These are the standard-mandated minimum values. */
/* Minimum number of operations in one list I/O call. */
#define _POSIX_AIO_LISTIO_MAX 2
/* Minimal number of outstanding asynchronous I/O operations. */
#define _POSIX_AIO_MAX 1
/* Maximum length of arguments to `execve', including environment. */
#define _POSIX_ARG_MAX 4096
/* Maximum simultaneous processes per real user ID. */
#ifdef __USE_XOPEN2K
# define _POSIX_CHILD_MAX 25
#else
# 44 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# define _POSIX_CHILD_MAX 6
#endif
# 46 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
/* Minimal number of timer expiration overruns. */
#define _POSIX_DELAYTIMER_MAX 32
/* Maximum length of a host name (not including the terminating null)
as returned from the GETHOSTNAME function. */
#define _POSIX_HOST_NAME_MAX 255
/* Maximum link count of a file. */
#define _POSIX_LINK_MAX 8
/* Maximum length of login name. */
#define _POSIX_LOGIN_NAME_MAX 9
/* Number of bytes in a terminal canonical input queue. */
#define _POSIX_MAX_CANON 255
/* Number of bytes for which space will be
available in a terminal input queue. */
#define _POSIX_MAX_INPUT 255
/* Maximum number of message queues open for a process. */
#define _POSIX_MQ_OPEN_MAX 8
/* Maximum number of supported message priorities. */
#define _POSIX_MQ_PRIO_MAX 32
/* Number of bytes in a filename. */
#define _POSIX_NAME_MAX 14
/* Number of simultaneous supplementary group IDs per process. */
#ifdef __USE_XOPEN2K
# define _POSIX_NGROUPS_MAX 8
#else
# 80 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# define _POSIX_NGROUPS_MAX 0
#endif
# 82 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
/* Number of files one process can have open at once. */
#ifdef __USE_XOPEN2K
# define _POSIX_OPEN_MAX 20
#else
# 87 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# define _POSIX_OPEN_MAX 16
#endif
# 89 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !defined __USE_XOPEN2K || defined __USE_GNU
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 91 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
/* Number of descriptors that a process may examine with `pselect' or
`select'. */
# define _POSIX_FD_SETSIZE _POSIX_OPEN_MAX
#endif
# 95 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
/* Number of bytes in a pathname. */
#define _POSIX_PATH_MAX 256
/* Number of bytes than can be written atomically to a pipe. */
#define _POSIX_PIPE_BUF 512
/* The number of repeated occurrences of a BRE permitted by the
REGEXEC and REGCOMP functions when using the interval notation. */
#define _POSIX_RE_DUP_MAX 255
/* Minimal number of realtime signals reserved for the application. */
#define _POSIX_RTSIG_MAX 8
/* Number of semaphores a process can have. */
#define _POSIX_SEM_NSEMS_MAX 256
/* Maximal value of a semaphore. */
#define _POSIX_SEM_VALUE_MAX 32767
/* Number of pending realtime signals. */
#define _POSIX_SIGQUEUE_MAX 32
/* Largest value of a `ssize_t'. */
#define _POSIX_SSIZE_MAX 32767
/* Number of streams a process can have open at once. */
#define _POSIX_STREAM_MAX 8
/* The number of bytes in a symbolic link. */
#define _POSIX_SYMLINK_MAX 255
/* The number of symbolic links that can be traversed in the
resolution of a pathname in the absence of a loop. */
#define _POSIX_SYMLOOP_MAX 8
/* Number of timer for a process. */
#define _POSIX_TIMER_MAX 32
/* Maximum number of characters in a tty name. */
#define _POSIX_TTY_NAME_MAX 9
/* Maximum length of a timezone name (element of `tzname'). */
#ifdef __USE_XOPEN2K
# define _POSIX_TZNAME_MAX 6
#else
# 141 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# define _POSIX_TZNAME_MAX 3
#endif
# 143 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if !defined __USE_XOPEN2K || defined __USE_GNU
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 145 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
/* Maximum number of connections that can be queued on a socket. */
# define _POSIX_QLIMIT 1
/* Maximum number of bytes that can be buffered on a socket for send
or receive. */
# define _POSIX_HIWAT _POSIX_PIPE_BUF
/* Maximum number of elements in an `iovec' array. */
# define _POSIX_UIO_MAXIOV 16
#endif
# 155 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
/* Maximum clock resolution in nanoseconds. */
#define _POSIX_CLOCKRES_MIN 20000000
/* Get the implementation-specific values for the above. */
#if 0 /* expanded by -frewrite-includes */
#include <bits/local_lim.h>
#endif /* expanded by -frewrite-includes */
# 161 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 1 3 4
/* Minimum guaranteed maximum values for system limits. Linux version.
Copyright (C) 1993-2019 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; see the file COPYING.LIB. If
not, see <http://www.gnu.org/licenses/>. */
/* The kernel header pollutes the namespace with the NR_OPEN symbol
and defines LINK_MAX although filesystems have different maxima. A
similar thing is true for OPEN_MAX: the limit can be changed at
runtime and therefore the macro must not be defined. Remove this
after including the header if necessary. */
#ifndef NR_OPEN
# define __undef_NR_OPEN
#endif
# 27 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
#ifndef LINK_MAX
# define __undef_LINK_MAX
#endif
# 30 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
#ifndef OPEN_MAX
# define __undef_OPEN_MAX
#endif
# 33 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
#ifndef ARG_MAX
# define __undef_ARG_MAX
#endif
# 36 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
/* The kernel sources contain a file with all the needed information. */
#if 0 /* expanded by -frewrite-includes */
#include <linux/limits.h>
#endif /* expanded by -frewrite-includes */
# 38 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
# 1 "/usr/include/linux/limits.h" 1 3 4
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef _LINUX_LIMITS_H
#define _LINUX_LIMITS_H
#define NR_OPEN 1024
#define NGROUPS_MAX 65536 /* supplemental group IDs are available */
#define ARG_MAX 131072 /* # bytes of args + environ for exec() */
#define LINK_MAX 127 /* # links a file may have */
#define MAX_CANON 255 /* size of the canonical input queue */
#define MAX_INPUT 255 /* size of the type-ahead buffer */
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
#define PIPE_BUF 4096 /* # bytes in atomic write to a pipe */
#define XATTR_NAME_MAX 255 /* # chars in an extended attribute name */
#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */
#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */
#define RTSIG_MAX 32
#endif
# 22 "/usr/include/linux/limits.h" 3 4
# 39 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 2 3 4
/* Have to remove NR_OPEN? */
#ifdef __undef_NR_OPEN
# undef NR_OPEN
# undef __undef_NR_OPEN
#endif
# 45 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
/* Have to remove LINK_MAX? */
#ifdef __undef_LINK_MAX
# undef LINK_MAX
# undef __undef_LINK_MAX
#endif
# 50 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
/* Have to remove OPEN_MAX? */
#ifdef __undef_OPEN_MAX
# undef OPEN_MAX
# undef __undef_OPEN_MAX
#endif
# 55 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
/* Have to remove ARG_MAX? */
#ifdef __undef_ARG_MAX
# undef ARG_MAX
# undef __undef_ARG_MAX
#endif
# 60 "/usr/include/x86_64-linux-gnu/bits/local_lim.h" 3 4
/* The number of data keys per process. */
#define _POSIX_THREAD_KEYS_MAX 128
/* This is the value this implementation supports. */
#define PTHREAD_KEYS_MAX 1024
/* Controlling the iterations of destructors for thread-specific data. */
#define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
/* Number of iterations this implementation does. */
#define PTHREAD_DESTRUCTOR_ITERATIONS _POSIX_THREAD_DESTRUCTOR_ITERATIONS
/* The number of threads per process. */
#define _POSIX_THREAD_THREADS_MAX 64
/* We have no predefined limit on the number of threads. */
#undef PTHREAD_THREADS_MAX
/* Maximum amount by which a process can descrease its asynchronous I/O
priority level. */
#define AIO_PRIO_DELTA_MAX 20
/* Minimum size for a thread. We are free to choose a reasonable value. */
#define PTHREAD_STACK_MIN 16384
/* Maximum number of timer expiration overruns. */
#define DELAYTIMER_MAX 2147483647
/* Maximum tty name length. */
#define TTY_NAME_MAX 32
/* Maximum login name length. This is arbitrary. */
#define LOGIN_NAME_MAX 256
/* Maximum host name length. */
#define HOST_NAME_MAX 64
/* Maximum message queue priority level. */
#define MQ_PRIO_MAX 32768
/* Maximum value the semaphore can have. */
#define SEM_VALUE_MAX (2147483647)
# 162 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 2 3 4
#ifndef SSIZE_MAX
/* ssize_t is not formally required to be the signed type
corresponding to size_t, but it is for all configurations supported
by glibc. */
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64 || __WORDSIZE32_SIZE_ULONG
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 169 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# define SSIZE_MAX LONG_MAX
# else
# 171 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# define SSIZE_MAX INT_MAX
# endif
# 173 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
#endif
# 174 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
/* This value is a guaranteed minimum maximum.
The current maximum can be got from `sysconf'. */
#ifndef NGROUPS_MAX
# define NGROUPS_MAX 8
#endif
# 182 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
#endif /* bits/posix1_lim.h */
# 184 "/usr/include/x86_64-linux-gnu/bits/posix1_lim.h" 3 4
# 184 "/usr/include/limits.h" 2 3 4
#endif
# 185 "/usr/include/limits.h" 3 4
#ifdef __USE_POSIX2
#if 0 /* expanded by -frewrite-includes */
# include <bits/posix2_lim.h>
#endif /* expanded by -frewrite-includes */
# 187 "/usr/include/limits.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 1 3 4
/* Copyright (C) 1991-2019 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; include <limits.h> instead.
*/
#ifndef _BITS_POSIX2_LIM_H
#define _BITS_POSIX2_LIM_H 1
/* The maximum `ibase' and `obase' values allowed by the `bc' utility. */
#define _POSIX2_BC_BASE_MAX 99
/* The maximum number of elements allowed in an array by the `bc' utility. */
#define _POSIX2_BC_DIM_MAX 2048
/* The maximum `scale' value allowed by the `bc' utility. */
#define _POSIX2_BC_SCALE_MAX 99
/* The maximum length of a string constant accepted by the `bc' utility. */
#define _POSIX2_BC_STRING_MAX 1000
/* The maximum number of weights that can be assigned to an entry of
the LC_COLLATE `order' keyword in the locale definition file. */
#define _POSIX2_COLL_WEIGHTS_MAX 2
/* The maximum number of expressions that can be nested
within parentheses by the `expr' utility. */
#define _POSIX2_EXPR_NEST_MAX 32
/* The maximum length, in bytes, of an input line. */
#define _POSIX2_LINE_MAX 2048
/* The maximum number of repeated occurrences of a regular expression
permitted when using the interval notation `\{M,N\}'. */
#define _POSIX2_RE_DUP_MAX 255
/* The maximum number of bytes in a character class name. We have no
fixed limit, 2048 is a high number. */
#define _POSIX2_CHARCLASS_NAME_MAX 14
/* These values are implementation-specific,
and may vary within the implementation.
Their precise values can be obtained from sysconf. */
#ifndef BC_BASE_MAX
#define BC_BASE_MAX _POSIX2_BC_BASE_MAX
#endif
# 65 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
#ifndef BC_DIM_MAX
#define BC_DIM_MAX _POSIX2_BC_DIM_MAX
#endif
# 68 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
#ifndef BC_SCALE_MAX
#define BC_SCALE_MAX _POSIX2_BC_SCALE_MAX
#endif
# 71 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
#ifndef BC_STRING_MAX
#define BC_STRING_MAX _POSIX2_BC_STRING_MAX
#endif
# 74 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
#ifndef COLL_WEIGHTS_MAX
#define COLL_WEIGHTS_MAX 255
#endif
# 77 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
#ifndef EXPR_NEST_MAX
#define EXPR_NEST_MAX _POSIX2_EXPR_NEST_MAX
#endif
# 80 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
#ifndef LINE_MAX
#define LINE_MAX _POSIX2_LINE_MAX
#endif
# 83 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
#ifndef CHARCLASS_NAME_MAX
#define CHARCLASS_NAME_MAX 2048
#endif
# 86 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
/* This value is defined like this in regex.h. */
#define RE_DUP_MAX (0x7fff)
#endif /* bits/posix2_lim.h */
# 91 "/usr/include/x86_64-linux-gnu/bits/posix2_lim.h" 3 4
# 188 "/usr/include/limits.h" 2 3 4
#endif
# 189 "/usr/include/limits.h" 3 4
#ifdef __USE_XOPEN
#if 0 /* expanded by -frewrite-includes */
# include <bits/xopen_lim.h>
#endif /* expanded by -frewrite-includes */
# 191 "/usr/include/limits.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 1 3 4
/* Copyright (C) 1996-2019 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 <limits.h> instead.
*/
/* Additional definitions from X/Open Portability Guide, Issue 4, Version 2
System Interfaces and Headers, 4.16 <limits.h>
Please note only the values which are not greater than the minimum
stated in the standard document are listed. The `sysconf' functions
should be used to obtain the actual value. */
#ifndef _XOPEN_LIM_H
#define _XOPEN_LIM_H 1
/* We do not provide fixed values for
ARG_MAX Maximum length of argument to the `exec' function
including environment data.
ATEXIT_MAX Maximum number of functions that may be registered
with `atexit'.
CHILD_MAX Maximum number of simultaneous processes per real
user ID.
OPEN_MAX Maximum number of files that one process can have open
at anyone time.
PAGESIZE
PAGE_SIZE Size of bytes of a page.
PASS_MAX Maximum number of significant bytes in a password.
We only provide a fixed limit for
IOV_MAX Maximum number of `iovec' structures that one process has
available for use with `readv' or writev'.
if this is indeed fixed by the underlying system.
*/
/* Maximum number of `iovec' structures that may be used in a single call
to `readv', `writev', etc. */
#define _XOPEN_IOV_MAX _POSIX_UIO_MAXIOV
#if 0 /* expanded by -frewrite-includes */
#include <bits/uio_lim.h>
#endif /* expanded by -frewrite-includes */
# 64 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# 1 "/usr/include/x86_64-linux-gnu/bits/uio_lim.h" 1 3 4
/* Implementation limits related to sys/uio.h - Linux version.
Copyright (C) 2017-2019 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_UIO_LIM_H
#define _BITS_UIO_LIM_H 1
/* Maximum length of the 'struct iovec' array in a single call to
readv or writev.
This macro has different values in different kernel versions. The
latest versions of the kernel use 1024 and this is good choice. Since
the C library implementation of readv/writev is able to emulate the
functionality even if the currently running kernel does not support
this large value the readv/writev call will not fail because of this. */
#define __IOV_MAX 1024
#endif
# 33 "/usr/include/x86_64-linux-gnu/bits/uio_lim.h" 3 4
# 65 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 2 3 4
#ifdef __IOV_MAX
# define IOV_MAX __IOV_MAX
#else
# 68 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# undef IOV_MAX
#endif
# 70 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
/* Maximum value of `digit' in calls to the `printf' and `scanf'
functions. We have no limit, so return a reasonable value. */
#define NL_ARGMAX _POSIX_ARG_MAX
/* Maximum number of bytes in a `LANG' name. We have no limit. */
#define NL_LANGMAX _POSIX2_LINE_MAX
/* Maximum message number. We have no limit. */
#define NL_MSGMAX INT_MAX
/* Maximum number of bytes in N-to-1 collation mapping. We have no
limit. */
#if 0 /* disabled by -frewrite-includes */
#if defined __USE_GNU || !defined __USE_XOPEN2K8
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 84 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define NL_NMAX INT_MAX
#endif
# 86 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
/* Maximum set number. We have no limit. */
#define NL_SETMAX INT_MAX
/* Maximum number of bytes in a message. We have no limit. */
#define NL_TEXTMAX INT_MAX
/* Default process priority. */
#define NZERO 20
/* Number of bits in a word of type `int'. */
#ifdef INT_MAX
#if 0 /* disabled by -frewrite-includes */
# if INT_MAX == 32767
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 100 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define WORD_BIT 16
# else
# 102 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if INT_MAX == 2147483647
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 103 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define WORD_BIT 32
# else
# 105 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
/* Safe assumption. */
# define WORD_BIT 64
# endif
# 108 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# endif
# 109 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __INT_MAX__
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 110 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if __INT_MAX__ == 32767
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 111 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define WORD_BIT 16
# else
# 113 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if __INT_MAX__ == 2147483647
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 114 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define WORD_BIT 32
# else
# 116 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
/* Safe assumption. */
# define WORD_BIT 64
# endif
# 119 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# endif
# 120 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#else
# 121 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define WORD_BIT 32
#endif
# 123 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
/* Number of bits in a word of type `long int'. */
#ifdef LONG_MAX
#if 0 /* disabled by -frewrite-includes */
# if LONG_MAX == 2147483647
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 127 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define LONG_BIT 32
# else
# 129 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
/* Safe assumption. */
# define LONG_BIT 64
# endif
# 132 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined __LONG_MAX__
#endif
#endif /* disabled by -frewrite-includes */
#elif 1 /* evaluated by -frewrite-includes */
# 133 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if __LONG_MAX__ == 2147483647
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 134 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define LONG_BIT 32
# else
# 136 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
/* Safe assumption. */
# define LONG_BIT 64
# endif
# 139 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#else
# 140 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#if 0 /* expanded by -frewrite-includes */
# include <bits/wordsize.h>
#endif /* expanded by -frewrite-includes */
# 140 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# 141 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#if 0 /* disabled by -frewrite-includes */
# if __WORDSIZE == 64
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 142 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define LONG_BIT 64
# else
# 144 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# define LONG_BIT 32
# endif
# 146 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#endif
# 147 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
#endif /* bits/xopen_lim.h */
# 149 "/usr/include/x86_64-linux-gnu/bits/xopen_lim.h" 3 4
# 192 "/usr/include/limits.h" 2 3 4
#endif
# 193 "/usr/include/limits.h" 3 4
# 22 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 2 3
#endif
# 23 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
/* Many system headers try to "help us out" by defining these. No really, we
know how big each datatype is. */
#undef SCHAR_MIN
#undef SCHAR_MAX
#undef UCHAR_MAX
#undef SHRT_MIN
#undef SHRT_MAX
#undef USHRT_MAX
#undef INT_MIN
#undef INT_MAX
#undef UINT_MAX
#undef LONG_MIN
#undef LONG_MAX
#undef ULONG_MAX
#undef CHAR_BIT
#undef CHAR_MIN
#undef CHAR_MAX
/* C90/99 5.2.4.2.1 */
#define SCHAR_MAX __SCHAR_MAX__
#define SHRT_MAX __SHRT_MAX__
#define INT_MAX __INT_MAX__
#define LONG_MAX __LONG_MAX__
#define SCHAR_MIN (-__SCHAR_MAX__-1)
#define SHRT_MIN (-__SHRT_MAX__ -1)
#define INT_MIN (-__INT_MAX__ -1)
#define LONG_MIN (-__LONG_MAX__ -1L)
#define UCHAR_MAX (__SCHAR_MAX__*2 +1)
#define USHRT_MAX (__SHRT_MAX__ *2 +1)
#define UINT_MAX (__INT_MAX__ *2U +1U)
#define ULONG_MAX (__LONG_MAX__ *2UL+1UL)
#ifndef MB_LEN_MAX
#define MB_LEN_MAX 1
#endif
# 62 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
#define CHAR_BIT __CHAR_BIT__
#ifdef __CHAR_UNSIGNED__ /* -funsigned-char */
#define CHAR_MIN 0
#define CHAR_MAX UCHAR_MAX
#else
# 69 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
#define CHAR_MIN SCHAR_MIN
#define CHAR_MAX __SCHAR_MAX__
#endif
# 72 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
/* C99 5.2.4.2.1: Added long long.
C++11 18.3.3.2: same contents as the Standard C Library header <limits.h>.
*/
#if 0 /* disabled by -frewrite-includes */
#if __STDC_VERSION__ >= 199901L || __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 77 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
#undef LLONG_MIN
#undef LLONG_MAX
#undef ULLONG_MAX
#define LLONG_MAX __LONG_LONG_MAX__
#define LLONG_MIN (-__LONG_LONG_MAX__-1LL)
#define ULLONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
#endif
# 86 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
/* LONG_LONG_MIN/LONG_LONG_MAX/ULONG_LONG_MAX are a GNU extension. It's too bad
that we don't have something like #pragma poison that could be used to
deprecate a macro - the code should just use LLONG_MAX and friends.
*/
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNU_LIBRARY__) ? defined(__USE_GNU) : !defined(__STRICT_ANSI__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 92 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
#undef LONG_LONG_MIN
#undef LONG_LONG_MAX
#undef ULONG_LONG_MAX
#define LONG_LONG_MAX __LONG_LONG_MAX__
#define LONG_LONG_MIN (-__LONG_LONG_MAX__-1LL)
#define ULONG_LONG_MAX (__LONG_LONG_MAX__*2ULL+1ULL)
#endif
# 101 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
#endif /* __CLANG_LIMITS_H */
# 103 "/home/john/llvm/lib/clang/10.0.0/include/limits.h" 3
# 43 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 2 3
#ifndef _GLIBCXX_CLIMITS
#define _GLIBCXX_CLIMITS 1
#ifndef LLONG_MIN
#define LLONG_MIN (-__LONG_LONG_MAX__ - 1)
#endif
# 50 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 3
#ifndef LLONG_MAX
#define LLONG_MAX __LONG_LONG_MAX__
#endif
# 54 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 3
#ifndef ULLONG_MAX
#define ULLONG_MAX (__LONG_LONG_MAX__ * 2ULL + 1)
#endif
# 58 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 3
#endif
# 60 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/climits" 3
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <limits>
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h"
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 1 3
// The template and inlines for the numeric_limits classes. -*- C++ -*-
// Copyright (C) 1999-2019 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/limits
* This is a Standard C++ Library header.
*/
// Note: this is not a conforming implementation.
// Written by Gabriel Dos Reis <gdr@codesourcery.com>
//
// ISO 14882:1998
// 18.2.1
//
#ifndef _GLIBCXX_NUMERIC_LIMITS
#define _GLIBCXX_NUMERIC_LIMITS 1
#if 0 /* expanded by -frewrite-includes */
#pragma GCC system_header
#endif /* expanded by -frewrite-includes */
# 41 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/c++config.h>
#endif /* expanded by -frewrite-includes */
# 42 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
# 43 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
//
// The numeric_limits<> traits document implementation-defined aspects
// of fundamental arithmetic data types (integers and floating points).
// From Standard C++ point of view, there are 14 such types:
// * integers
// bool (1)
// char, signed char, unsigned char, wchar_t (4)
// short, unsigned short (2)
// int, unsigned (2)
// long, unsigned long (2)
//
// * floating points
// float (1)
// double (1)
// long double (1)
//
// GNU C++ understands (where supported by the host C-library)
// * integer
// long long, unsigned long long (2)
//
// which brings us to 16 fundamental arithmetic data types in GNU C++.
//
//
// Since a numeric_limits<> is a bit tricky to get right, we rely on
// an interface composed of macros which should be defined in config/os
// or config/cpu when they differ from the generic (read arbitrary)
// definitions given here.
//
// These values can be overridden in the target configuration file.
// The default values are appropriate for many 32-bit targets.
// GCC only intrinsically supports modulo integral types. The only remaining
// integral exceptional values is division by zero. Only targets that do not
// signal division by zero in some "hard to ignore" way should use false.
#ifndef __glibcxx_integral_traps
# define __glibcxx_integral_traps true
#endif
# 82 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
// float
//
// Default values. Should be overridden in configuration files if necessary.
#ifndef __glibcxx_float_has_denorm_loss
# define __glibcxx_float_has_denorm_loss false
#endif
# 91 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifndef __glibcxx_float_traps
# define __glibcxx_float_traps false
#endif
# 94 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifndef __glibcxx_float_tinyness_before
# define __glibcxx_float_tinyness_before false
#endif
# 97 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
// double
// Default values. Should be overridden in configuration files if necessary.
#ifndef __glibcxx_double_has_denorm_loss
# define __glibcxx_double_has_denorm_loss false
#endif
# 105 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifndef __glibcxx_double_traps
# define __glibcxx_double_traps false
#endif
# 108 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifndef __glibcxx_double_tinyness_before
# define __glibcxx_double_tinyness_before false
#endif
# 111 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
// long double
// Default values. Should be overridden in configuration files if necessary.
#ifndef __glibcxx_long_double_has_denorm_loss
# define __glibcxx_long_double_has_denorm_loss false
#endif
# 119 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifndef __glibcxx_long_double_traps
# define __glibcxx_long_double_traps false
#endif
# 122 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifndef __glibcxx_long_double_tinyness_before
# define __glibcxx_long_double_tinyness_before false
#endif
# 125 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
// You should not need to define any macros below this point.
#define __glibcxx_signed_b(T,B) ((T)(-1) < 0)
#define __glibcxx_min_b(T,B) \
(__glibcxx_signed_b (T,B) ? -__glibcxx_max_b (T,B) - 1 : (T)0)
#define __glibcxx_max_b(T,B) \
(__glibcxx_signed_b (T,B) ? \
(((((T)1 << (__glibcxx_digits_b (T,B) - 1)) - 1) << 1) + 1) : ~(T)0)
#define __glibcxx_digits_b(T,B) \
(B - __glibcxx_signed_b (T,B))
// The fraction 643/2136 approximates log10(2) to 7 significant digits.
#define __glibcxx_digits10_b(T,B) \
(__glibcxx_digits_b (T,B) * 643L / 2136)
#define __glibcxx_signed(T) \
__glibcxx_signed_b (T, sizeof(T) * __CHAR_BIT__)
#define __glibcxx_min(T) \
__glibcxx_min_b (T, sizeof(T) * __CHAR_BIT__)
#define __glibcxx_max(T) \
__glibcxx_max_b (T, sizeof(T) * __CHAR_BIT__)
#define __glibcxx_digits(T) \
__glibcxx_digits_b (T, sizeof(T) * __CHAR_BIT__)
#define __glibcxx_digits10(T) \
__glibcxx_digits10_b (T, sizeof(T) * __CHAR_BIT__)
#define __glibcxx_max_digits10(T) \
(2 + (T) * 643L / 2136)
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
/**
* @brief Describes the rounding style for floating-point types.
*
* This is used in the std::numeric_limits class.
*/
enum float_round_style
{
round_indeterminate = -1, /// Intermediate.
round_toward_zero = 0, /// To zero.
round_to_nearest = 1, /// To the nearest representable value.
round_toward_infinity = 2, /// To infinity.
round_toward_neg_infinity = 3 /// To negative infinity.
};
/**
* @brief Describes the denormalization for floating-point types.
*
* These values represent the presence or absence of a variable number
* of exponent bits. This type is used in the std::numeric_limits class.
*/
enum float_denorm_style
{
/// Indeterminate at compile time whether denormalized values are allowed.
denorm_indeterminate = -1,
/// The type does not allow denormalized values.
denorm_absent = 0,
/// The type allows denormalized values.
denorm_present = 1
};
/**
* @brief Part of std::numeric_limits.
*
* The @c static @c const members are usable as integral constant
* expressions.
*
* @note This is a separate class for purposes of efficiency; you
* should only access these members as part of an instantiation
* of the std::numeric_limits class.
*/
struct __numeric_limits_base
{
/** This will be true for all fundamental types (which have
specializations), and false for everything else. */
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = false;
/** The number of @c radix digits that be represented without change: for
integer types, the number of non-sign bits in the mantissa; for
floating types, the number of @c radix digits in the mantissa. */
static _GLIBCXX_USE_CONSTEXPR int digits = 0;
/** The number of base 10 digits that can be represented without change. */
static _GLIBCXX_USE_CONSTEXPR int digits10 = 0;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 217 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
/** The number of base 10 digits required to ensure that values which
differ are always differentiated. */
static constexpr int max_digits10 = 0;
#endif
# 221 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
/** True if the type is signed. */
static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
/** True if the type is integer. */
static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
/** True if the type uses an exact representation. All integer types are
exact, but not all exact types are integer. For example, rational and
fixed-exponent representations are exact but not integer. */
static _GLIBCXX_USE_CONSTEXPR bool is_exact = false;
/** For integer types, specifies the base of the representation. For
floating types, specifies the base of the exponent representation. */
static _GLIBCXX_USE_CONSTEXPR int radix = 0;
/** The minimum negative integer such that @c radix raised to the power of
(one less than that integer) is a normalized floating point number. */
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
/** The minimum negative integer such that 10 raised to that power is in
the range of normalized floating point numbers. */
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
/** The maximum positive integer such that @c radix raised to the power of
(one less than that integer) is a representable finite floating point
number. */
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
/** The maximum positive integer such that 10 raised to that power is in
the range of representable finite floating point numbers. */
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
/** True if the type has a representation for positive infinity. */
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
/** True if the type has a representation for a quiet (non-signaling)
Not a Number. */
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
/** True if the type has a representation for a signaling
Not a Number. */
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
/** See std::float_denorm_style for more information. */
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm = denorm_absent;
/** True if loss of accuracy is detected as a denormalization loss,
rather than as an inexact result. */
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
/** True if-and-only-if the type adheres to the IEC 559 standard, also
known as IEEE 754. (Only makes sense for floating point types.) */
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
/** True if the set of values representable by the type is
finite. All built-in types are bounded, this member would be
false for arbitrary precision types. */
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = false;
/** True if the type is @e modulo. A type is modulo if, for any
operation involving +, -, or * on values of that type whose
result would fall outside the range [min(),max()], the value
returned differs from the true value by an integer multiple of
max() - min() + 1. On most machines, this is false for floating
types, true for unsigned integers, and true for signed integers.
See PR22200 about signed integers. */
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
/** True if trapping is implemented for this type. */
static _GLIBCXX_USE_CONSTEXPR bool traps = false;
/** True if tininess is detected before rounding. (see IEC 559) */
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
/** See std::float_round_style for more information. This is only
meaningful for floating types; integer types will all be
round_toward_zero. */
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style =
round_toward_zero;
};
/**
* @brief Properties of fundamental types.
*
* This class allows a program to obtain information about the
* representation of a fundamental type on a given platform. For
* non-fundamental types, the functions will return 0 and the data
* members will all be @c false.
*/
template<typename _Tp>
struct numeric_limits : public __numeric_limits_base
{
/** The minimum finite value, or for floating types with
denormalization, the minimum positive normalized value. */
static _GLIBCXX_CONSTEXPR _Tp
min() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
/** The maximum finite value. */
static _GLIBCXX_CONSTEXPR _Tp
max() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 324 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
/** A finite value x such that there is no other finite value y
* where y < x. */
static constexpr _Tp
lowest() noexcept { return _Tp(); }
#endif
# 329 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
/** The @e machine @e epsilon: the difference between 1 and the least
value greater than 1 that is representable. */
static _GLIBCXX_CONSTEXPR _Tp
epsilon() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
/** The maximum rounding error measurement (see LIA-1). */
static _GLIBCXX_CONSTEXPR _Tp
round_error() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
/** The representation of positive infinity, if @c has_infinity. */
static _GLIBCXX_CONSTEXPR _Tp
infinity() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
/** The representation of a quiet Not a Number,
if @c has_quiet_NaN. */
static _GLIBCXX_CONSTEXPR _Tp
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
/** The representation of a signaling Not a Number, if
@c has_signaling_NaN. */
static _GLIBCXX_CONSTEXPR _Tp
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
/** The minimum positive denormalized value. For types where
@c has_denorm is false, this is the minimum positive normalized
value. */
static _GLIBCXX_CONSTEXPR _Tp
denorm_min() _GLIBCXX_USE_NOEXCEPT { return _Tp(); }
};
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 559. numeric_limits<const T>
template<typename _Tp>
struct numeric_limits<const _Tp>
: public numeric_limits<_Tp> { };
template<typename _Tp>
struct numeric_limits<volatile _Tp>
: public numeric_limits<_Tp> { };
template<typename _Tp>
struct numeric_limits<const volatile _Tp>
: public numeric_limits<_Tp> { };
// Now there follow 16 explicit specializations. Yes, 16. Make sure
// you get the count right. (18 in C++11 mode, with char16_t and char32_t.)
// (+1 if char8_t is enabled.)
// _GLIBCXX_RESOLVE_LIB_DEFECTS
// 184. numeric_limits<bool> wording problems
/// numeric_limits<bool> specialization.
template<>
struct numeric_limits<bool>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR bool
min() _GLIBCXX_USE_NOEXCEPT { return false; }
static _GLIBCXX_CONSTEXPR bool
max() _GLIBCXX_USE_NOEXCEPT { return true; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 395 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr bool
lowest() noexcept { return min(); }
#endif
# 398 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = 1;
static _GLIBCXX_USE_CONSTEXPR int digits10 = 0;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 401 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 403 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR bool
epsilon() _GLIBCXX_USE_NOEXCEPT { return false; }
static _GLIBCXX_CONSTEXPR bool
round_error() _GLIBCXX_USE_NOEXCEPT { return false; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR bool
infinity() _GLIBCXX_USE_NOEXCEPT { return false; }
static _GLIBCXX_CONSTEXPR bool
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return false; }
static _GLIBCXX_CONSTEXPR bool
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return false; }
static _GLIBCXX_CONSTEXPR bool
denorm_min() _GLIBCXX_USE_NOEXCEPT { return false; }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
// It is not clear what it means for a boolean type to trap.
// This is a DR on the LWG issue list. Here, I use integer
// promotion semantics.
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<char> specialization.
template<>
struct numeric_limits<char>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR char
min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min(char); }
static _GLIBCXX_CONSTEXPR char
max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max(char); }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 464 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr char
lowest() noexcept { return min(); }
#endif
# 467 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (char);
static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (char);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 471 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 473 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = __glibcxx_signed (char);
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR char
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR char
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR
char infinity() _GLIBCXX_USE_NOEXCEPT { return char(); }
static _GLIBCXX_CONSTEXPR char
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return char(); }
static _GLIBCXX_CONSTEXPR char
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return char(); }
static _GLIBCXX_CONSTEXPR char
denorm_min() _GLIBCXX_USE_NOEXCEPT { return static_cast<char>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = !is_signed;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<signed char> specialization.
template<>
struct numeric_limits<signed char>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR signed char
min() _GLIBCXX_USE_NOEXCEPT { return -__SCHAR_MAX__ - 1; }
static _GLIBCXX_CONSTEXPR signed char
max() _GLIBCXX_USE_NOEXCEPT { return __SCHAR_MAX__; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 531 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr signed char
lowest() noexcept { return min(); }
#endif
# 534 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (signed char);
static _GLIBCXX_USE_CONSTEXPR int digits10
= __glibcxx_digits10 (signed char);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 539 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 541 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR signed char
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR signed char
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR signed char
infinity() _GLIBCXX_USE_NOEXCEPT { return static_cast<signed char>(0); }
static _GLIBCXX_CONSTEXPR signed char
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<signed char>(0); }
static _GLIBCXX_CONSTEXPR signed char
signaling_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<signed char>(0); }
static _GLIBCXX_CONSTEXPR signed char
denorm_min() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<signed char>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<unsigned char> specialization.
template<>
struct numeric_limits<unsigned char>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR unsigned char
min() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned char
max() _GLIBCXX_USE_NOEXCEPT { return __SCHAR_MAX__ * 2U + 1; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 601 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr unsigned char
lowest() noexcept { return min(); }
#endif
# 604 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits
= __glibcxx_digits (unsigned char);
static _GLIBCXX_USE_CONSTEXPR int digits10
= __glibcxx_digits10 (unsigned char);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 610 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 612 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR unsigned char
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned char
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR unsigned char
infinity() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned char>(0); }
static _GLIBCXX_CONSTEXPR unsigned char
quiet_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned char>(0); }
static _GLIBCXX_CONSTEXPR unsigned char
signaling_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned char>(0); }
static _GLIBCXX_CONSTEXPR unsigned char
denorm_min() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned char>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<wchar_t> specialization.
template<>
struct numeric_limits<wchar_t>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR wchar_t
min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min (wchar_t); }
static _GLIBCXX_CONSTEXPR wchar_t
max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max (wchar_t); }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 674 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr wchar_t
lowest() noexcept { return min(); }
#endif
# 677 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (wchar_t);
static _GLIBCXX_USE_CONSTEXPR int digits10
= __glibcxx_digits10 (wchar_t);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 682 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 684 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = __glibcxx_signed (wchar_t);
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR wchar_t
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR wchar_t
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR wchar_t
infinity() _GLIBCXX_USE_NOEXCEPT { return wchar_t(); }
static _GLIBCXX_CONSTEXPR wchar_t
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return wchar_t(); }
static _GLIBCXX_CONSTEXPR wchar_t
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return wchar_t(); }
static _GLIBCXX_CONSTEXPR wchar_t
denorm_min() _GLIBCXX_USE_NOEXCEPT { return wchar_t(); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = !is_signed;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_USE_CHAR8_T
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 730 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
/// numeric_limits<char8_t> specialization.
template<>
struct numeric_limits<char8_t>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR char8_t
min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min (char8_t); }
static _GLIBCXX_CONSTEXPR char8_t
max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max (char8_t); }
static _GLIBCXX_CONSTEXPR char8_t
lowest() _GLIBCXX_USE_NOEXCEPT { return min(); }
static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (char8_t);
static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (char8_t);
static _GLIBCXX_USE_CONSTEXPR int max_digits10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool is_signed = __glibcxx_signed (char8_t);
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR char8_t
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR char8_t
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR char8_t
infinity() _GLIBCXX_USE_NOEXCEPT { return char8_t(); }
static _GLIBCXX_CONSTEXPR char8_t
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return char8_t(); }
static _GLIBCXX_CONSTEXPR char8_t
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return char8_t(); }
static _GLIBCXX_CONSTEXPR char8_t
denorm_min() _GLIBCXX_USE_NOEXCEPT { return char8_t(); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = !is_signed;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
#endif
# 793 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 795 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
/// numeric_limits<char16_t> specialization.
template<>
struct numeric_limits<char16_t>
{
static constexpr bool is_specialized = true;
static constexpr char16_t
min() noexcept { return __glibcxx_min (char16_t); }
static constexpr char16_t
max() noexcept { return __glibcxx_max (char16_t); }
static constexpr char16_t
lowest() noexcept { return min(); }
static constexpr int digits = __glibcxx_digits (char16_t);
static constexpr int digits10 = __glibcxx_digits10 (char16_t);
static constexpr int max_digits10 = 0;
static constexpr bool is_signed = __glibcxx_signed (char16_t);
static constexpr bool is_integer = true;
static constexpr bool is_exact = true;
static constexpr int radix = 2;
static constexpr char16_t
epsilon() noexcept { return 0; }
static constexpr char16_t
round_error() noexcept { return 0; }
static constexpr int min_exponent = 0;
static constexpr int min_exponent10 = 0;
static constexpr int max_exponent = 0;
static constexpr int max_exponent10 = 0;
static constexpr bool has_infinity = false;
static constexpr bool has_quiet_NaN = false;
static constexpr bool has_signaling_NaN = false;
static constexpr float_denorm_style has_denorm = denorm_absent;
static constexpr bool has_denorm_loss = false;
static constexpr char16_t
infinity() noexcept { return char16_t(); }
static constexpr char16_t
quiet_NaN() noexcept { return char16_t(); }
static constexpr char16_t
signaling_NaN() noexcept { return char16_t(); }
static constexpr char16_t
denorm_min() noexcept { return char16_t(); }
static constexpr bool is_iec559 = false;
static constexpr bool is_bounded = true;
static constexpr bool is_modulo = !is_signed;
static constexpr bool traps = __glibcxx_integral_traps;
static constexpr bool tinyness_before = false;
static constexpr float_round_style round_style = round_toward_zero;
};
/// numeric_limits<char32_t> specialization.
template<>
struct numeric_limits<char32_t>
{
static constexpr bool is_specialized = true;
static constexpr char32_t
min() noexcept { return __glibcxx_min (char32_t); }
static constexpr char32_t
max() noexcept { return __glibcxx_max (char32_t); }
static constexpr char32_t
lowest() noexcept { return min(); }
static constexpr int digits = __glibcxx_digits (char32_t);
static constexpr int digits10 = __glibcxx_digits10 (char32_t);
static constexpr int max_digits10 = 0;
static constexpr bool is_signed = __glibcxx_signed (char32_t);
static constexpr bool is_integer = true;
static constexpr bool is_exact = true;
static constexpr int radix = 2;
static constexpr char32_t
epsilon() noexcept { return 0; }
static constexpr char32_t
round_error() noexcept { return 0; }
static constexpr int min_exponent = 0;
static constexpr int min_exponent10 = 0;
static constexpr int max_exponent = 0;
static constexpr int max_exponent10 = 0;
static constexpr bool has_infinity = false;
static constexpr bool has_quiet_NaN = false;
static constexpr bool has_signaling_NaN = false;
static constexpr float_denorm_style has_denorm = denorm_absent;
static constexpr bool has_denorm_loss = false;
static constexpr char32_t
infinity() noexcept { return char32_t(); }
static constexpr char32_t
quiet_NaN() noexcept { return char32_t(); }
static constexpr char32_t
signaling_NaN() noexcept { return char32_t(); }
static constexpr char32_t
denorm_min() noexcept { return char32_t(); }
static constexpr bool is_iec559 = false;
static constexpr bool is_bounded = true;
static constexpr bool is_modulo = !is_signed;
static constexpr bool traps = __glibcxx_integral_traps;
static constexpr bool tinyness_before = false;
static constexpr float_round_style round_style = round_toward_zero;
};
#endif
# 917 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
/// numeric_limits<short> specialization.
template<>
struct numeric_limits<short>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR short
min() _GLIBCXX_USE_NOEXCEPT { return -__SHRT_MAX__ - 1; }
static _GLIBCXX_CONSTEXPR short
max() _GLIBCXX_USE_NOEXCEPT { return __SHRT_MAX__; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 931 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr short
lowest() noexcept { return min(); }
#endif
# 934 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (short);
static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (short);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 938 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 940 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR short
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR short
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR short
infinity() _GLIBCXX_USE_NOEXCEPT { return short(); }
static _GLIBCXX_CONSTEXPR short
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return short(); }
static _GLIBCXX_CONSTEXPR short
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return short(); }
static _GLIBCXX_CONSTEXPR short
denorm_min() _GLIBCXX_USE_NOEXCEPT { return short(); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<unsigned short> specialization.
template<>
struct numeric_limits<unsigned short>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR unsigned short
min() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned short
max() _GLIBCXX_USE_NOEXCEPT { return __SHRT_MAX__ * 2U + 1; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 998 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr unsigned short
lowest() noexcept { return min(); }
#endif
# 1001 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits
= __glibcxx_digits (unsigned short);
static _GLIBCXX_USE_CONSTEXPR int digits10
= __glibcxx_digits10 (unsigned short);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1007 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 1009 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR unsigned short
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned short
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR unsigned short
infinity() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned short>(0); }
static _GLIBCXX_CONSTEXPR unsigned short
quiet_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned short>(0); }
static _GLIBCXX_CONSTEXPR unsigned short
signaling_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned short>(0); }
static _GLIBCXX_CONSTEXPR unsigned short
denorm_min() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned short>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<int> specialization.
template<>
struct numeric_limits<int>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR int
min() _GLIBCXX_USE_NOEXCEPT { return -__INT_MAX__ - 1; }
static _GLIBCXX_CONSTEXPR int
max() _GLIBCXX_USE_NOEXCEPT { return __INT_MAX__; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1071 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int
lowest() noexcept { return min(); }
#endif
# 1074 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (int);
static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (int);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1078 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 1080 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR int
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR int
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR int
infinity() _GLIBCXX_USE_NOEXCEPT { return static_cast<int>(0); }
static _GLIBCXX_CONSTEXPR int
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<int>(0); }
static _GLIBCXX_CONSTEXPR int
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<int>(0); }
static _GLIBCXX_CONSTEXPR int
denorm_min() _GLIBCXX_USE_NOEXCEPT { return static_cast<int>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<unsigned int> specialization.
template<>
struct numeric_limits<unsigned int>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR unsigned int
min() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned int
max() _GLIBCXX_USE_NOEXCEPT { return __INT_MAX__ * 2U + 1; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1138 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr unsigned int
lowest() noexcept { return min(); }
#endif
# 1141 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits
= __glibcxx_digits (unsigned int);
static _GLIBCXX_USE_CONSTEXPR int digits10
= __glibcxx_digits10 (unsigned int);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1147 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 1149 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR unsigned int
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned int
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR unsigned int
infinity() _GLIBCXX_USE_NOEXCEPT { return static_cast<unsigned int>(0); }
static _GLIBCXX_CONSTEXPR unsigned int
quiet_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned int>(0); }
static _GLIBCXX_CONSTEXPR unsigned int
signaling_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned int>(0); }
static _GLIBCXX_CONSTEXPR unsigned int
denorm_min() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned int>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<long> specialization.
template<>
struct numeric_limits<long>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR long
min() _GLIBCXX_USE_NOEXCEPT { return -__LONG_MAX__ - 1; }
static _GLIBCXX_CONSTEXPR long
max() _GLIBCXX_USE_NOEXCEPT { return __LONG_MAX__; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1210 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr long
lowest() noexcept { return min(); }
#endif
# 1213 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __glibcxx_digits (long);
static _GLIBCXX_USE_CONSTEXPR int digits10 = __glibcxx_digits10 (long);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1217 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 1219 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR long
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR long
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR long
infinity() _GLIBCXX_USE_NOEXCEPT { return static_cast<long>(0); }
static _GLIBCXX_CONSTEXPR long
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<long>(0); }
static _GLIBCXX_CONSTEXPR long
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<long>(0); }
static _GLIBCXX_CONSTEXPR long
denorm_min() _GLIBCXX_USE_NOEXCEPT { return static_cast<long>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<unsigned long> specialization.
template<>
struct numeric_limits<unsigned long>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR unsigned long
min() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned long
max() _GLIBCXX_USE_NOEXCEPT { return __LONG_MAX__ * 2UL + 1; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1277 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr unsigned long
lowest() noexcept { return min(); }
#endif
# 1280 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits
= __glibcxx_digits (unsigned long);
static _GLIBCXX_USE_CONSTEXPR int digits10
= __glibcxx_digits10 (unsigned long);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1286 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 1288 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR unsigned long
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned long
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR unsigned long
infinity() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned long>(0); }
static _GLIBCXX_CONSTEXPR unsigned long
quiet_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned long>(0); }
static _GLIBCXX_CONSTEXPR unsigned long
signaling_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned long>(0); }
static _GLIBCXX_CONSTEXPR unsigned long
denorm_min() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned long>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<long long> specialization.
template<>
struct numeric_limits<long long>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR long long
min() _GLIBCXX_USE_NOEXCEPT { return -__LONG_LONG_MAX__ - 1; }
static _GLIBCXX_CONSTEXPR long long
max() _GLIBCXX_USE_NOEXCEPT { return __LONG_LONG_MAX__; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1350 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr long long
lowest() noexcept { return min(); }
#endif
# 1353 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits
= __glibcxx_digits (long long);
static _GLIBCXX_USE_CONSTEXPR int digits10
= __glibcxx_digits10 (long long);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1359 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 1361 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR long long
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR long long
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR long long
infinity() _GLIBCXX_USE_NOEXCEPT { return static_cast<long long>(0); }
static _GLIBCXX_CONSTEXPR long long
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return static_cast<long long>(0); }
static _GLIBCXX_CONSTEXPR long long
signaling_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<long long>(0); }
static _GLIBCXX_CONSTEXPR long long
denorm_min() _GLIBCXX_USE_NOEXCEPT { return static_cast<long long>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
/// numeric_limits<unsigned long long> specialization.
template<>
struct numeric_limits<unsigned long long>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR unsigned long long
min() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned long long
max() _GLIBCXX_USE_NOEXCEPT { return __LONG_LONG_MAX__ * 2ULL + 1; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1420 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr unsigned long long
lowest() noexcept { return min(); }
#endif
# 1423 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits
= __glibcxx_digits (unsigned long long);
static _GLIBCXX_USE_CONSTEXPR int digits10
= __glibcxx_digits10 (unsigned long long);
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1429 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10 = 0;
#endif
# 1431 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = false;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true;
static _GLIBCXX_USE_CONSTEXPR int radix = 2;
static _GLIBCXX_CONSTEXPR unsigned long long
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_CONSTEXPR unsigned long long
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false;
static _GLIBCXX_CONSTEXPR unsigned long long
infinity() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned long long>(0); }
static _GLIBCXX_CONSTEXPR unsigned long long
quiet_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned long long>(0); }
static _GLIBCXX_CONSTEXPR unsigned long long
signaling_NaN() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned long long>(0); }
static _GLIBCXX_CONSTEXPR unsigned long long
denorm_min() _GLIBCXX_USE_NOEXCEPT
{ return static_cast<unsigned long long>(0); }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_toward_zero;
};
#if 0 /* disabled by -frewrite-includes */
#if !defined(__STRICT_ANSI__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1481 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#define __INT_N(TYPE, BITSIZE, EXT, UEXT) \
template<> \
struct numeric_limits<TYPE> \
{ \
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true; \
\
static _GLIBCXX_CONSTEXPR TYPE \
min() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_min_b (TYPE, BITSIZE); } \
\
static _GLIBCXX_CONSTEXPR TYPE \
max() _GLIBCXX_USE_NOEXCEPT { return __glibcxx_max_b (TYPE, BITSIZE); } \
\
static _GLIBCXX_USE_CONSTEXPR int digits \
= BITSIZE - 1; \
static _GLIBCXX_USE_CONSTEXPR int digits10 \
= (BITSIZE - 1) * 643L / 2136; \
\
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true; \
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true; \
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true; \
static _GLIBCXX_USE_CONSTEXPR int radix = 2; \
\
static _GLIBCXX_CONSTEXPR TYPE \
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; } \
\
static _GLIBCXX_CONSTEXPR TYPE \
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; } \
\
EXT \
\
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0; \
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0; \
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0; \
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0; \
\
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false; \
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false; \
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false; \
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm \
= denorm_absent; \
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false; \
\
static _GLIBCXX_CONSTEXPR TYPE \
infinity() _GLIBCXX_USE_NOEXCEPT \
{ return static_cast<TYPE>(0); } \
\
static _GLIBCXX_CONSTEXPR TYPE \
quiet_NaN() _GLIBCXX_USE_NOEXCEPT \
{ return static_cast<TYPE>(0); } \
\
static _GLIBCXX_CONSTEXPR TYPE \
signaling_NaN() _GLIBCXX_USE_NOEXCEPT \
{ return static_cast<TYPE>(0); } \
\
static _GLIBCXX_CONSTEXPR TYPE \
denorm_min() _GLIBCXX_USE_NOEXCEPT \
{ return static_cast<TYPE>(0); } \
\
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false; \
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true; \
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false; \
\
static _GLIBCXX_USE_CONSTEXPR bool traps \
= __glibcxx_integral_traps; \
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false; \
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style \
= round_toward_zero; \
}; \
\
template<> \
struct numeric_limits<unsigned TYPE> \
{ \
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true; \
\
static _GLIBCXX_CONSTEXPR unsigned TYPE \
min() _GLIBCXX_USE_NOEXCEPT { return 0; } \
\
static _GLIBCXX_CONSTEXPR unsigned TYPE \
max() _GLIBCXX_USE_NOEXCEPT \
{ return __glibcxx_max_b (unsigned TYPE, BITSIZE); } \
\
UEXT \
\
static _GLIBCXX_USE_CONSTEXPR int digits \
= BITSIZE; \
static _GLIBCXX_USE_CONSTEXPR int digits10 \
= BITSIZE * 643L / 2136; \
static _GLIBCXX_USE_CONSTEXPR bool is_signed = false; \
static _GLIBCXX_USE_CONSTEXPR bool is_integer = true; \
static _GLIBCXX_USE_CONSTEXPR bool is_exact = true; \
static _GLIBCXX_USE_CONSTEXPR int radix = 2; \
\
static _GLIBCXX_CONSTEXPR unsigned TYPE \
epsilon() _GLIBCXX_USE_NOEXCEPT { return 0; } \
\
static _GLIBCXX_CONSTEXPR unsigned TYPE \
round_error() _GLIBCXX_USE_NOEXCEPT { return 0; } \
\
static _GLIBCXX_USE_CONSTEXPR int min_exponent = 0; \
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = 0; \
static _GLIBCXX_USE_CONSTEXPR int max_exponent = 0; \
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = 0; \
\
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = false; \
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = false; \
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = false; \
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm \
= denorm_absent; \
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss = false; \
\
static _GLIBCXX_CONSTEXPR unsigned TYPE \
infinity() _GLIBCXX_USE_NOEXCEPT \
{ return static_cast<unsigned TYPE>(0); } \
\
static _GLIBCXX_CONSTEXPR unsigned TYPE \
quiet_NaN() _GLIBCXX_USE_NOEXCEPT \
{ return static_cast<unsigned TYPE>(0); } \
\
static _GLIBCXX_CONSTEXPR unsigned TYPE \
signaling_NaN() _GLIBCXX_USE_NOEXCEPT \
{ return static_cast<unsigned TYPE>(0); } \
\
static _GLIBCXX_CONSTEXPR unsigned TYPE \
denorm_min() _GLIBCXX_USE_NOEXCEPT \
{ return static_cast<unsigned TYPE>(0); } \
\
static _GLIBCXX_USE_CONSTEXPR bool is_iec559 = false; \
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true; \
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = true; \
\
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_integral_traps; \
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before = false; \
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style \
= round_toward_zero; \
};
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1619 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#define __INT_N_201103(TYPE) \
static constexpr TYPE \
lowest() noexcept { return min(); } \
static constexpr int max_digits10 = 0;
#define __INT_N_U201103(TYPE) \
static constexpr unsigned TYPE \
lowest() noexcept { return min(); } \
static constexpr int max_digits10 = 0;
#else
# 1631 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#define __INT_N_201103(TYPE)
#define __INT_N_U201103(TYPE)
#endif
# 1634 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifdef __GLIBCXX_TYPE_INT_N_0
__INT_N(__GLIBCXX_TYPE_INT_N_0, __GLIBCXX_BITSIZE_INT_N_0,
__INT_N_201103 (__GLIBCXX_TYPE_INT_N_0), __INT_N_U201103 (__GLIBCXX_TYPE_INT_N_0))
#endif
# 1639 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifdef __GLIBCXX_TYPE_INT_N_1
__INT_N (__GLIBCXX_TYPE_INT_N_1, __GLIBCXX_BITSIZE_INT_N_1,
__INT_N_201103 (__GLIBCXX_TYPE_INT_N_1), __INT_N_U201103 (__GLIBCXX_TYPE_INT_N_1))
#endif
# 1643 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifdef __GLIBCXX_TYPE_INT_N_2
__INT_N (__GLIBCXX_TYPE_INT_N_2, __GLIBCXX_BITSIZE_INT_N_2,
__INT_N_201103 (__GLIBCXX_TYPE_INT_N_2), __INT_N_U201103 (__GLIBCXX_TYPE_INT_N_2))
#endif
# 1647 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#ifdef __GLIBCXX_TYPE_INT_N_3
__INT_N (__GLIBCXX_TYPE_INT_N_3, __GLIBCXX_BITSIZE_INT_N_3,
__INT_N_201103 (__GLIBCXX_TYPE_INT_N_3), __INT_N_U201103 (__GLIBCXX_TYPE_INT_N_3))
#endif
# 1651 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
#undef __INT_N
#undef __INT_N_201103
#undef __INT_N_U201103
#endif
# 1657 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
/// numeric_limits<float> specialization.
template<>
struct numeric_limits<float>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR float
min() _GLIBCXX_USE_NOEXCEPT { return __FLT_MIN__; }
static _GLIBCXX_CONSTEXPR float
max() _GLIBCXX_USE_NOEXCEPT { return __FLT_MAX__; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1671 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr float
lowest() noexcept { return -__FLT_MAX__; }
#endif
# 1674 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __FLT_MANT_DIG__;
static _GLIBCXX_USE_CONSTEXPR int digits10 = __FLT_DIG__;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1678 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10
= __glibcxx_max_digits10 (__FLT_MANT_DIG__);
#endif
# 1681 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = false;
static _GLIBCXX_USE_CONSTEXPR int radix = __FLT_RADIX__;
static _GLIBCXX_CONSTEXPR float
epsilon() _GLIBCXX_USE_NOEXCEPT { return __FLT_EPSILON__; }
static _GLIBCXX_CONSTEXPR float
round_error() _GLIBCXX_USE_NOEXCEPT { return 0.5F; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = __FLT_MIN_EXP__;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = __FLT_MIN_10_EXP__;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = __FLT_MAX_EXP__;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = __FLT_MAX_10_EXP__;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __FLT_HAS_INFINITY__;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __FLT_HAS_QUIET_NAN__;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= bool(__FLT_HAS_DENORM__) ? denorm_present : denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
= __glibcxx_float_has_denorm_loss;
static _GLIBCXX_CONSTEXPR float
infinity() _GLIBCXX_USE_NOEXCEPT { return __builtin_huge_valf(); }
static _GLIBCXX_CONSTEXPR float
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return __builtin_nanf(""); }
static _GLIBCXX_CONSTEXPR float
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return __builtin_nansf(""); }
static _GLIBCXX_CONSTEXPR float
denorm_min() _GLIBCXX_USE_NOEXCEPT { return __FLT_DENORM_MIN__; }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559
= has_infinity && has_quiet_NaN && has_denorm == denorm_present;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_float_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before
= __glibcxx_float_tinyness_before;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_to_nearest;
};
#undef __glibcxx_float_has_denorm_loss
#undef __glibcxx_float_traps
#undef __glibcxx_float_tinyness_before
/// numeric_limits<double> specialization.
template<>
struct numeric_limits<double>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR double
min() _GLIBCXX_USE_NOEXCEPT { return __DBL_MIN__; }
static _GLIBCXX_CONSTEXPR double
max() _GLIBCXX_USE_NOEXCEPT { return __DBL_MAX__; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1746 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr double
lowest() noexcept { return -__DBL_MAX__; }
#endif
# 1749 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __DBL_MANT_DIG__;
static _GLIBCXX_USE_CONSTEXPR int digits10 = __DBL_DIG__;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1753 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr int max_digits10
= __glibcxx_max_digits10 (__DBL_MANT_DIG__);
#endif
# 1756 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = false;
static _GLIBCXX_USE_CONSTEXPR int radix = __FLT_RADIX__;
static _GLIBCXX_CONSTEXPR double
epsilon() _GLIBCXX_USE_NOEXCEPT { return __DBL_EPSILON__; }
static _GLIBCXX_CONSTEXPR double
round_error() _GLIBCXX_USE_NOEXCEPT { return 0.5; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = __DBL_MIN_EXP__;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = __DBL_MIN_10_EXP__;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = __DBL_MAX_EXP__;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = __DBL_MAX_10_EXP__;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __DBL_HAS_INFINITY__;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __DBL_HAS_QUIET_NAN__;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= bool(__DBL_HAS_DENORM__) ? denorm_present : denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
= __glibcxx_double_has_denorm_loss;
static _GLIBCXX_CONSTEXPR double
infinity() _GLIBCXX_USE_NOEXCEPT { return __builtin_huge_val(); }
static _GLIBCXX_CONSTEXPR double
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return __builtin_nan(""); }
static _GLIBCXX_CONSTEXPR double
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return __builtin_nans(""); }
static _GLIBCXX_CONSTEXPR double
denorm_min() _GLIBCXX_USE_NOEXCEPT { return __DBL_DENORM_MIN__; }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559
= has_infinity && has_quiet_NaN && has_denorm == denorm_present;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_double_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before
= __glibcxx_double_tinyness_before;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style
= round_to_nearest;
};
#undef __glibcxx_double_has_denorm_loss
#undef __glibcxx_double_traps
#undef __glibcxx_double_tinyness_before
/// numeric_limits<long double> specialization.
template<>
struct numeric_limits<long double>
{
static _GLIBCXX_USE_CONSTEXPR bool is_specialized = true;
static _GLIBCXX_CONSTEXPR long double
min() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MIN__; }
static _GLIBCXX_CONSTEXPR long double
max() _GLIBCXX_USE_NOEXCEPT { return __LDBL_MAX__; }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1821 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static constexpr long double
lowest() noexcept { return -__LDBL_MAX__; }
#endif
# 1824 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int digits = __LDBL_MANT_DIG__;
static _GLIBCXX_USE_CONSTEXPR int digits10 = __LDBL_DIG__;
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 1828 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR int max_digits10
= __glibcxx_max_digits10 (__LDBL_MANT_DIG__);
#endif
# 1831 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
static _GLIBCXX_USE_CONSTEXPR bool is_signed = true;
static _GLIBCXX_USE_CONSTEXPR bool is_integer = false;
static _GLIBCXX_USE_CONSTEXPR bool is_exact = false;
static _GLIBCXX_USE_CONSTEXPR int radix = __FLT_RADIX__;
static _GLIBCXX_CONSTEXPR long double
epsilon() _GLIBCXX_USE_NOEXCEPT { return __LDBL_EPSILON__; }
static _GLIBCXX_CONSTEXPR long double
round_error() _GLIBCXX_USE_NOEXCEPT { return 0.5L; }
static _GLIBCXX_USE_CONSTEXPR int min_exponent = __LDBL_MIN_EXP__;
static _GLIBCXX_USE_CONSTEXPR int min_exponent10 = __LDBL_MIN_10_EXP__;
static _GLIBCXX_USE_CONSTEXPR int max_exponent = __LDBL_MAX_EXP__;
static _GLIBCXX_USE_CONSTEXPR int max_exponent10 = __LDBL_MAX_10_EXP__;
static _GLIBCXX_USE_CONSTEXPR bool has_infinity = __LDBL_HAS_INFINITY__;
static _GLIBCXX_USE_CONSTEXPR bool has_quiet_NaN = __LDBL_HAS_QUIET_NAN__;
static _GLIBCXX_USE_CONSTEXPR bool has_signaling_NaN = has_quiet_NaN;
static _GLIBCXX_USE_CONSTEXPR float_denorm_style has_denorm
= bool(__LDBL_HAS_DENORM__) ? denorm_present : denorm_absent;
static _GLIBCXX_USE_CONSTEXPR bool has_denorm_loss
= __glibcxx_long_double_has_denorm_loss;
static _GLIBCXX_CONSTEXPR long double
infinity() _GLIBCXX_USE_NOEXCEPT { return __builtin_huge_vall(); }
static _GLIBCXX_CONSTEXPR long double
quiet_NaN() _GLIBCXX_USE_NOEXCEPT { return __builtin_nanl(""); }
static _GLIBCXX_CONSTEXPR long double
signaling_NaN() _GLIBCXX_USE_NOEXCEPT { return __builtin_nansl(""); }
static _GLIBCXX_CONSTEXPR long double
denorm_min() _GLIBCXX_USE_NOEXCEPT { return __LDBL_DENORM_MIN__; }
static _GLIBCXX_USE_CONSTEXPR bool is_iec559
= has_infinity && has_quiet_NaN && has_denorm == denorm_present;
static _GLIBCXX_USE_CONSTEXPR bool is_bounded = true;
static _GLIBCXX_USE_CONSTEXPR bool is_modulo = false;
static _GLIBCXX_USE_CONSTEXPR bool traps = __glibcxx_long_double_traps;
static _GLIBCXX_USE_CONSTEXPR bool tinyness_before =
__glibcxx_long_double_tinyness_before;
static _GLIBCXX_USE_CONSTEXPR float_round_style round_style =
round_to_nearest;
};
#undef __glibcxx_long_double_has_denorm_loss
#undef __glibcxx_long_double_traps
#undef __glibcxx_long_double_tinyness_before
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#undef __glibcxx_signed
#undef __glibcxx_min
#undef __glibcxx_max
#undef __glibcxx_digits
#undef __glibcxx_digits10
#undef __glibcxx_max_digits10
#endif // _GLIBCXX_NUMERIC_LIMITS
# 1894 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/limits" 3
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h" 2
namespace cnl {
template<class T>
struct numeric_limits : std::numeric_limits<T> {};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 24 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h"
template<>
struct numeric_limits<int128> : numeric_limits<long long> {
static int const digits = CHAR_BIT*sizeof(int128)-1;
static int const digits10 = 38;
class _s {
public:
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-member-init, hicpp-member-init)
constexpr _s(uint64 upper, uint64 lower)
:_value(lower+(int128{upper} << 64)) { }
CNL_NODISCARD explicit constexpr operator int128() const
{
return _value;
}
private:
int128 _value;
};
CNL_NODISCARD static constexpr int128 min()
{
return int128(_s(0x8000000000000000, 0x0000000000000000));
}
CNL_NODISCARD static constexpr int128 max()
{
return int128(_s(0x7fffffffffffffff, 0xffffffffffffffff));
}
CNL_NODISCARD static constexpr int128 lowest()
{
return min();
}
};
template<>
struct numeric_limits<uint128> : numeric_limits<unsigned long long> {
static int const digits = CHAR_BIT*sizeof(int128);
static int const digits10 = 38;
class _s {
public:
// NOLINTNEXTLINE(cppcoreguidelines-pro-type-member-init, hicpp-member-init)
constexpr _s(uint64 upper, uint64 lower)
:_value(lower+(uint128{upper} << 64)) { }
CNL_NODISCARD explicit constexpr operator uint128() const
{
return _value;
}
private:
uint128 _value;
};
CNL_NODISCARD static constexpr int128 min()
{
return 0;
}
CNL_NODISCARD static constexpr uint128 max()
{
return uint128(_s(0xffffffffffffffff, 0xffffffffffffffff));
}
CNL_NODISCARD static constexpr int128 lowest()
{
return min();
}
};
#endif // CNL_INT128_ENABLED
# 96 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h"
}
#endif // CNL_LIMITS_H
# 99 "/home/john/ws/rounding-overflow/cnl/include/cnl/limits.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
// CNL_IMPL_CONSTANT_VALUE_TYPE - determines cnl::constant<>::value_type
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_TEMPLATE_AUTO)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 21 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
// If template<auto> feature is available, cnl::constant's value can be any type.
#define CNL_IMPL_CONSTANT_VALUE_TYPE auto // NOLINT(cppcoreguidelines-macro-usage)
#else
# 24 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
// Otherwise it is defaulted to the widest quantity type that can be used as a template argument.
#define CNL_IMPL_CONSTANT_VALUE_TYPE ::cnl::intmax // NOLINT(cppcoreguidelines-macro-usage)
#endif
# 27 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
/// compositional numeric library
namespace cnl {
////////////////////////////////////////////////////////////////////////////////
// cnl::constant - expresses a value as a type
/// \brief type whose value is also its non-type template parameter
/// \headerfile cnl/constant.h
///
/// \tparam Value the value of the object
template<CNL_IMPL_CONSTANT_VALUE_TYPE Value>
struct constant {
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_TEMPLATE_AUTO)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 42 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
using value_type = decltype(Value);
#else
# 44 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
using value_type = CNL_IMPL_CONSTANT_VALUE_TYPE;
#endif
# 46 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
static constexpr value_type value = Value;
constexpr constant() = default;
template<typename S>
#if 0 /* disabled by -frewrite-includes */
#if (__cpp_constexpr >= 201304L)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 53 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
constexpr explicit constant(S const& init)
#else
# 55 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
constexpr explicit constant(S const&)
#endif
# 57 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
{
static_assert(
value<=cnl::numeric_limits<S>::max()&&value>=cnl::numeric_limits<S>::lowest(),
"initial value couldn't possibly represent value");
#if 0 /* disabled by -frewrite-includes */
#if (__cpp_constexpr >= 201304L)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 62 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
CNL_ASSERT(value==init);
#endif
# 64 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
}
#if 0 /* disabled by -frewrite-includes */
#if defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 67 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
// NOLINTNEXTLINE(hicpp-explicit-conversions, google-explicit-constructor)
CNL_NODISCARD constexpr operator auto() const -> value_type
{
return value;
}
#else
# 73 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
// NOLINTNEXTLINE(hicpp-explicit-conversions, google-explicit-constructor)
CNL_NODISCARD constexpr operator value_type() const
{
return value;
}
#endif
# 79 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
};
////////////////////////////////////////////////////////////////////////////////
// cnl::constant operator overloads
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_IMPL_CONSTANT_UNARY(OPERATOR) \
template<CNL_IMPL_CONSTANT_VALUE_TYPE Value> \
CNL_NODISCARD constexpr auto operator OPERATOR(constant<Value>) noexcept \
-> constant<OPERATOR Value> { \
return constant<OPERATOR Value>{}; \
}
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_IMPL_CONSTANT_BINARY(OPERATOR) \
template<CNL_IMPL_CONSTANT_VALUE_TYPE LhsValue, CNL_IMPL_CONSTANT_VALUE_TYPE RhsValue> \
CNL_NODISCARD constexpr auto operator OPERATOR(constant<LhsValue>, constant<RhsValue>) noexcept \
-> constant<(LhsValue OPERATOR RhsValue)> { \
return constant<(LhsValue OPERATOR RhsValue)>{};\
}
// arithmetic
CNL_IMPL_CONSTANT_UNARY(+)
CNL_IMPL_CONSTANT_UNARY(-)
CNL_IMPL_CONSTANT_BINARY(+)
CNL_IMPL_CONSTANT_BINARY(-)
CNL_IMPL_CONSTANT_BINARY(*)
CNL_IMPL_CONSTANT_BINARY(/)
CNL_IMPL_CONSTANT_BINARY(%)
CNL_IMPL_CONSTANT_UNARY(~)
CNL_IMPL_CONSTANT_BINARY(&)
CNL_IMPL_CONSTANT_BINARY(|)
CNL_IMPL_CONSTANT_BINARY(^)
CNL_IMPL_CONSTANT_BINARY(<<)
CNL_IMPL_CONSTANT_BINARY(>>)
// logical
CNL_IMPL_CONSTANT_UNARY(!)
CNL_IMPL_CONSTANT_BINARY(&&)
CNL_IMPL_CONSTANT_BINARY(||)
// comparison
CNL_IMPL_CONSTANT_BINARY(==)
CNL_IMPL_CONSTANT_BINARY(!=)
CNL_IMPL_CONSTANT_BINARY(<)
CNL_IMPL_CONSTANT_BINARY(>)
CNL_IMPL_CONSTANT_BINARY(<=)
CNL_IMPL_CONSTANT_BINARY(>=)
namespace _impl {
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::is_constant type traits
template<class T>
struct is_constant : std::false_type {
};
template<CNL_IMPL_CONSTANT_VALUE_TYPE Value>
struct is_constant<::cnl::constant<Value>> : std::true_type {
};
}
////////////////////////////////////////////////////////////////////////////////
// cnl::literals - literal wrapper for constant
//
// http://codereview.stackexchange.com/a/51576/26421
namespace literals {
template<char... Chars>
CNL_NODISCARD constexpr auto operator "" _c()
-> constant<_cnlint_impl::parse<Chars...,'\0'>()>
{
return {};
}
}
////////////////////////////////////////////////////////////////////////////////
// cnl::numeric_limits<cnl::constant>
template<CNL_IMPL_CONSTANT_VALUE_TYPE Value>
struct numeric_limits<constant<Value>> : cnl::numeric_limits<typename constant<Value>::value_type> {
using _value_type = typename constant<Value>::value_type;
CNL_NODISCARD static constexpr _value_type min()
{
return {};
}
CNL_NODISCARD static constexpr _value_type max()
{
return {};
}
CNL_NODISCARD static constexpr _value_type lowest()
{
return {};
}
};
}
#endif // CNL_CONSTANT_H
# 180 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../../constant.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../../cstdint.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/enable_if.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_ENABLE_IF)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/enable_if.h"
#define CNL_IMPL_TYPE_TRAITS_ENABLE_IF
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/enable_if.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/enable_if.h"
namespace cnl {
namespace _impl {
// pre-C++14 enable_if_t
template<bool C, class ... T>
using enable_if_t = typename std::enable_if<C, T ...>::type;
}
}
#endif // CNL_IMPL_TYPE_TRAITS_ENABLE_IF
# 21 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/enable_if.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/is_signed.h"
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_IS_SIGNED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
#define CNL_IMPL_TYPE_TRAITS_IS_SIGNED
#if 0 /* expanded by -frewrite-includes */
#include "../../constant.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
#if 0 /* expanded by -frewrite-includes */
#include "../../cstdint.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/is_composite.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/is_composite.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_IS_COMPOSITE)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/is_composite.h"
#define CNL_IMPL_NUM_TRAITS_IS_COMPOSITE
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/is_composite.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/is_composite.h"
namespace cnl {
template<class T, class Enable = void>
struct is_composite : std::false_type {
static_assert(!std::is_const<T>::value, "T is const");
static_assert(!std::is_volatile<T>::value, "T is volatile");
};
#if 0 /* disabled by -frewrite-includes */
#if defined(__cpp_variable_templates) && (__cpp_variable_templates >= 201304)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 20 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/is_composite.h"
template<class T>
constexpr auto is_composite_v = is_composite<T>::value;
#endif
# 23 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/is_composite.h"
namespace _impl {
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::are_composite
template<class ... Args>
struct are_composite;
template<>
struct are_composite<> : std::false_type {
};
template<class ArgHead, class ... ArgTail>
struct are_composite<ArgHead, ArgTail...>
: std::integral_constant<bool, is_composite<typename std::decay<ArgHead>::type>::value || are_composite<ArgTail...>::value> {
};
}
}
#endif // CNL_IMPL_NUM_TRAITS_IS_COMPOSITE
# 43 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/is_composite.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/rep.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/rep.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_REP_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/rep.h"
#define CNL_IMPL_NUM_TRAITS_REP_H
/// compositional numeric library
namespace cnl {
/// \brief meta-function object that returns the Rep type of a component
///
/// \tparam T component whose representational type to return
///
/// \note The representational or 'Rep' type of a numeric component is central to CNL's method of encapsulation and
/// abstraction. Typically, this is the type of the member variable in many of the numeric types. Many of the
/// properties of a component -- such as precision, range and signedness -- will be established by the Rep type.
///
/// \sa to_rep, from_value, tag, set_rep
template<typename T, class Enable = void>
struct rep;
namespace _impl {
template<typename T>
using rep_t = typename rep<T>::type;
}
}
#endif // CNL_IMPL_NUM_TRAITS_REP_H
# 31 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/rep.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "enable_if.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
namespace cnl {
template<typename T, class Enable = void>
struct is_signed;
template<>
struct is_signed<char> : std::is_signed<char> {
};
template<>
struct is_signed<signed char> : std::true_type {
};
template<>
struct is_signed<unsigned char> : std::false_type {
};
template<>
struct is_signed<wchar_t> : std::is_signed<char> {
};
template<>
struct is_signed<char16_t> : std::is_signed<char16_t> {
};
template<>
struct is_signed<char32_t> : std::is_signed<char32_t> {
};
template<>
struct is_signed<signed short> : std::true_type {
};
template<>
struct is_signed<unsigned short> : std::false_type {
};
template<>
struct is_signed<signed int> : std::true_type {
};
template<>
struct is_signed<unsigned int> : std::false_type {
};
template<>
struct is_signed<signed long> : std::true_type {
};
template<>
struct is_signed<unsigned long> : std::false_type {
};
template<>
struct is_signed<signed long long> : std::true_type {
};
template<>
struct is_signed<unsigned long long> : std::false_type {
};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 71 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
template<>
struct is_signed<int128> : std::true_type {
};
template<>
struct is_signed<uint128> : std::false_type {
};
#endif
# 78 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
template<>
struct is_signed<float> : std::true_type {
};
template<>
struct is_signed<double> : std::true_type {
};
template<>
struct is_signed<long double> : std::true_type {
};
template<CNL_IMPL_CONSTANT_VALUE_TYPE Value>
struct is_signed<constant<Value>> : is_signed<decltype(Value)> {
};
template<typename T>
struct is_signed<T, _impl::enable_if_t<is_composite<T>::value>>
: is_signed<_impl::rep_t<T>> {
};
}
#endif // CNL_IMPL_TYPE_TRAITS_IS_SIGNED
# 100 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_signed.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../used_digits.h"
#endif /* expanded by -frewrite-includes */
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../used_digits.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_USED_DIGITS_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../used_digits.h"
#define CNL_IMPL_USED_DIGITS_H
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../used_digits.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../used_digits.h"
namespace cnl {
namespace _impl {
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::used_digits
template<bool IsSigned>
struct used_digits_signed;
template<>
struct used_digits_signed<false> {
template<class Integer>
CNL_NODISCARD constexpr int operator()(Integer const& value, int radix) const
{
static_assert(cnl::numeric_limits<Integer>::is_integer,
"Integer parameter of used_digits_positive() must be a fundamental integer.");
return (value>0) ? 1+used_digits_signed<false>{}(value/radix, radix) : 0;
}
};
template<>
struct used_digits_signed<true> {
template<class Integer>
CNL_NODISCARD constexpr int operator()(Integer const& value, int radix) const
{
static_assert(cnl::numeric_limits<Integer>::is_integer,
"Integer parameter of used_digits_signed()() must be a fundamental integer.");
// Most negative number is not exploited;
// thus negating the result or subtracting it from something else
// will less likely result in overflow.
return (value<0)
? used_digits_signed<false>{}(Integer(-1)-value, radix)
: used_digits_signed<false>{}(value, radix);
}
};
template<typename Integer>
CNL_NODISCARD constexpr int used_digits(Integer const& value, int radix = numeric_limits<Integer>::radix)
{
static_assert(std::is_integral<Integer>::value
|| std::is_same<Integer, intmax>::value
|| std::is_same<Integer, uintmax>::value, "Integer must be a fundamental integral");
return used_digits_signed<std::is_signed<Integer>::value>{}(value, radix);
}
}
}
#endif // CNL_IMPL_USED_DIGITS_H
# 63 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../used_digits.h"
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "is_composite.h"
#endif /* expanded by -frewrite-includes */
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 20 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
# 21 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
namespace cnl {
/// \brief provide number of binary digits of the given type
///
/// \tparam T the source type
/// \tparam Digits the desired number of digits
///
/// \note does not include a sign bit
///
/// \sa cnl::set_digits
template<typename T, class Enable = void>
struct digits;
namespace _impl {
template<typename Integer>
struct fundamental_digits
: std::integral_constant<int, CHAR_BIT*sizeof(Integer)-is_signed<Integer>::value> {
};
}
template<>
struct digits<char> : _impl::fundamental_digits<char> {
};
template<>
struct digits<signed char> : _impl::fundamental_digits<signed char> {
};
template<>
struct digits<unsigned char> : _impl::fundamental_digits<unsigned char> {
};
template<>
struct digits<wchar_t> : _impl::fundamental_digits<char> {
};
template<>
struct digits<char16_t> : _impl::fundamental_digits<char16_t> {
};
template<>
struct digits<char32_t> : _impl::fundamental_digits<char32_t> {
};
template<>
struct digits<signed short> : _impl::fundamental_digits<signed short> {
};
template<>
struct digits<unsigned short> : _impl::fundamental_digits<unsigned short> {
};
template<>
struct digits<signed int> : _impl::fundamental_digits<signed int> {
};
template<>
struct digits<unsigned int> : _impl::fundamental_digits<unsigned int> {
};
template<>
struct digits<signed long> : _impl::fundamental_digits<signed long> {
};
template<>
struct digits<unsigned long> : _impl::fundamental_digits<unsigned long> {
};
template<>
struct digits<signed long long> : _impl::fundamental_digits<signed long long> {
};
template<>
struct digits<unsigned long long> : _impl::fundamental_digits<unsigned long long> {
};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 91 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
template<>
struct digits<int128> : _impl::fundamental_digits<int128> {
};
template<>
struct digits<uint128> : _impl::fundamental_digits<uint128> {
};
#endif
# 98 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
template<CNL_IMPL_CONSTANT_VALUE_TYPE Value>
struct digits<constant<Value>> : std::integral_constant<
int,
_impl::used_digits((Value<0) ? -Value : Value)> {
};
#if 0 /* disabled by -frewrite-includes */
#if defined(__cpp_variable_templates) && (__cpp_variable_templates >= 201304)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 106 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
template<class T>
constexpr int digits_v = digits<T>::value;
#endif
# 109 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
namespace _impl {
// cnl::_impl::fractional_digits
template <class T>
struct fractional_digits : std::integral_constant<int, 0> {
};
// cnl::_impl::integer_digits
template <class T>
struct integer_digits : std::integral_constant<int, digits<T>::value - fractional_digits<T>::value> {
};
}
}
#endif // CNL_IMPL_NUM_TRAITS_DIGITS
# 124 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/digits.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/declaration.h" 2
/// compositional numeric library
namespace cnl {
/// \brief An integer type with auto-widening operators
///
/// \tparam Digits a count of the number of digits needed to express the number
/// \tparam Narrowest the most narrow integer type to use for storage
///
/// \note The value is stored in an object of \c Narrowest or
/// \ref cnl::set_digits_t<Narrowest, Digits>.
/// \note Arithmetic operations result in types with an adjusted Digits parameter accordingly.
/// For instance, when two \ref elastic_integer values are multiplied together,
/// the resultant type has Digits set to the sum of the operands.
///
/// \sa cnl::elastic_scaled_integer
template<int Digits = digits<int>::value, class Narrowest = int>
class elastic_integer;
}
#endif // CNL_IMPL_ELASTIC_INTEGER_DECLARATION_H
# 32 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/declaration.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/elastic_integer.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "_impl/elastic_integer/definition.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/elastic_integer.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/definition.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_INTEGER_DEFINITION_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/definition.h"
#define CNL_IMPL_ELASTIC_INTEGER_DEFINITION_H
#if 0 /* expanded by -frewrite-includes */
#include "../elastic_tag.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/definition.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
#define CNL_IMPL_ELASTIC_TAG_H
#if 0 /* expanded by -frewrite-includes */
#include "elastic_tag/declaration.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/declaration.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_DECLARATION_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/declaration.h"
#define CNL_IMPL_ELASTIC_TAG_DECLARATION_H
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/declaration.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/declaration.h"
/// compositional numeric library
namespace cnl {
template<int Digits, typename Narrowest=int>
struct elastic_tag;
}
#endif // CNL_IMPL_ELASTIC_TAG_DECLARATION_H
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/declaration.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "elastic_tag/deduction.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_INTEGER_DEDUCTION_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
#define CNL_IMPL_ELASTIC_INTEGER_DEDUCTION_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/digits.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_width.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/set_width.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file cnl/num_traits.h
/// \brief definitions supporting \ref cnl::set_digits
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_SET_WIDTH)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/set_width.h"
#define CNL_IMPL_NUM_TRAITS_SET_WIDTH
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/is_signed.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/set_width.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/set_width.h"
#if 0 /* expanded by -frewrite-includes */
#include "set_digits.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/set_width.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file cnl/num_traits.h
/// \brief definitions supporting \ref cnl::set_digits
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_SET_DIGITS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
#define CNL_IMPL_NUM_TRAITS_SET_DIGITS
#if 0 /* expanded by -frewrite-includes */
#include "../../limits.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/is_integral.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_IS_INTEGRAL)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
#define CNL_IMPL_TYPE_TRAITS_IS_INTEGRAL
#if 0 /* expanded by -frewrite-includes */
#include "../../cstdint.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
#if 0 /* expanded by -frewrite-includes */
#include "../config.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
namespace cnl {
namespace _impl {
template<class T>
struct is_integral : std::is_integral<T> {
};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 23 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
template<>
struct is_integral<int128> : std::integral_constant<bool, true> {
};
template<>
struct is_integral<uint128> : std::integral_constant<bool, true> {
};
#endif
# 31 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
#if 0 /* disabled by -frewrite-includes */
#if defined(__cpp_variable_templates) && (__cpp_variable_templates >= 201304)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 33 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
template<class T>
constexpr int is_integral_v = is_integral<T>::value;
#endif
# 36 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
}
}
#endif // CNL_IMPL_TYPE_TRAITS_IS_INTEGRAL
# 40 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/is_integral.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h" 2
namespace cnl {
////////////////////////////////////////////////////////////////////////////////
// error: [un]signed_integer_cannot_have<Digits>
// These types are declared for error reporting purposes only. They arise in
// error message when an attempt it made to use set_digits or set_digits_t
// to produce an integer that is wider than the widest fundamental integer
// types, cnl::intmax and cnl::uintmax.
template<int NumDigits>
struct signed_integer_cannot_have {
template<int MaxNumDigits>
struct digits_because_maximum_is;
};
template<int NumDigits>
struct unsigned_integer_cannot_have {
template<int MaxNumDigits>
struct digits_because_maximum_is;
};
namespace _impl {
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::enable_for_range
template<typename T, int Digits>
struct narrower_than
: std::integral_constant<
bool,
std::is_same<T, void>::value ? true : numeric_limits<T>::digits<Digits> {
};
template<typename T, int Digits>
struct no_narrower_than
: std::integral_constant<
bool,
std::is_same<T, void>::value ? true : numeric_limits<T>::digits>=Digits> {
};
template<int MinNumDigits, class Smaller, class T>
using enable_for_range_t = typename std::enable_if<
no_narrower_than<T, MinNumDigits>::value && narrower_than<Smaller, MinNumDigits>::value>::type;
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::set_digits_signed
template<int MinNumDigits, class Enable = void>
struct set_digits_signed;
template<int MinNumDigits>
struct set_digits_signed<MinNumDigits, enable_for_range_t<MinNumDigits, void, int8>> {
using type = int8;
};
template<int MinNumDigits>
struct set_digits_signed<MinNumDigits, enable_for_range_t<MinNumDigits, int8, int16>> {
using type = int16;
};
template<int MinNumDigits>
struct set_digits_signed<MinNumDigits, enable_for_range_t<MinNumDigits, int16, int32>> {
using type = int32;
};
template<int MinNumDigits>
struct set_digits_signed<MinNumDigits, enable_for_range_t<MinNumDigits, int32, int64>> {
using type = int64;
};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 87 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
template<int MinNumDigits>
struct set_digits_signed<MinNumDigits, enable_for_range_t<MinNumDigits, int64, int128>> {
using type = int128;
};
#endif
# 92 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
template<int MinNumDigits>
struct set_digits_signed<MinNumDigits, enable_for_range_t<MinNumDigits, intmax, void>>
: signed_integer_cannot_have<MinNumDigits>::template digits_because_maximum_is<numeric_limits<intmax>::digits> {
};
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::set_digits_unsigned
template<int MinNumDigits, class Enable = void>
struct set_digits_unsigned;
template<int MinNumDigits>
struct set_digits_unsigned<MinNumDigits, enable_for_range_t<MinNumDigits, void, uint8>> {
using type = uint8;
};
template<int MinNumDigits>
struct set_digits_unsigned<MinNumDigits, enable_for_range_t<MinNumDigits, uint8, uint16>> {
using type = uint16;
};
template<int MinNumDigits>
struct set_digits_unsigned<MinNumDigits, enable_for_range_t<MinNumDigits, uint16, uint32>> {
using type = uint32;
};
template<int MinNumDigits>
struct set_digits_unsigned<MinNumDigits, enable_for_range_t<MinNumDigits, uint32, uint64>> {
using type = uint64;
};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 125 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
template<int MinNumDigits>
struct set_digits_unsigned<MinNumDigits, enable_for_range_t<MinNumDigits, uint64, uint128>> {
using type = uint128;
};
#endif
# 130 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
template<int MinNumDigits>
struct set_digits_unsigned<MinNumDigits, enable_for_range_t<MinNumDigits, uintmax, void>>
: unsigned_integer_cannot_have<MinNumDigits>::template digits_because_maximum_is<numeric_limits<uintmax>::digits> {
};
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::set_digits_integer
template<class Integer, int MinNumDigits>
using set_digits_integer = typename std::conditional<
numeric_limits<Integer>::is_signed,
set_digits_signed<MinNumDigits>,
set_digits_unsigned<MinNumDigits>>::type;
}
/// \brief convert a type to a similar type with the given number of digits
///
/// \tparam T the source type
/// \tparam Digits the desired number of digits
template<class T, int Digits, class Enable = void>
struct set_digits;
template<class T, int Digits>
struct set_digits<T, Digits, _impl::enable_if_t<_impl::is_integral<T>::value>>
: _impl::set_digits_integer<T, Digits> {
};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 159 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
template<int Digits>
struct set_digits<int128, Digits>
: _impl::set_digits_integer<signed, Digits> {
};
template<int Digits>
struct set_digits<uint128, Digits>
: _impl::set_digits_integer<unsigned, Digits> {
};
#endif
# 169 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
/// \brief Alias to \ref cnl::set_digits.
template<class T, int Digits>
using set_digits_t = typename set_digits<T, Digits>::type;
}
#endif // CNL_IMPL_NUM_TRAITS_SET_DIGITS
# 176 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/set_digits.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/set_width.h" 2
namespace cnl {
namespace _impl {
template<class T, int Width>
struct set_width : set_digits<T, Width - is_signed<T>::value> {
};
template<class T, int Width>
using set_width_t = typename set_width<T, Width>::type;
}
}
#endif // CNL_IMPL_NUM_TRAITS_SET_WIDTH
# 28 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/set_width.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/width.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_WIDTH)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h"
#define CNL_IMPL_TYPE_TRAITS_WIDTH
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/is_signed.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h"
#if 0 /* expanded by -frewrite-includes */
#include "digits.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h"
namespace cnl {
namespace _impl {
template<typename T>
struct width : std::integral_constant<int, digits<T>::value+is_signed<T>::value> {
};
}
}
#endif // CNL_IMPL_TYPE_TRAITS_WIDTH
# 23 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../num_traits/width.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../operators/homogeneous_deduction_tag_base.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_OPERATORS_IS_HOMOGENEOUS_DEDUCTION_TAG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h"
#define CNL_IMPL_OPERATORS_IS_HOMOGENEOUS_DEDUCTION_TAG_H
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h"
#if 0 /* expanded by -frewrite-includes */
#include "generic.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file
/// \brief a place to centralize most duplicate arithmetic operator boilerplate
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_OPERATORS_GENERIC_OPERATORS_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h"
#define CNL_IMPL_OPERATORS_GENERIC_OPERATORS_H
#if 0 /* expanded by -frewrite-includes */
#include "../config.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h"
#if 0 /* expanded by -frewrite-includes */
#include "operators.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file
/// \brief operators represented as types
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_OPERATORS_OPERATORS_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
#define CNL_IMPL_OPERATORS_OPERATORS_H
#if 0 /* expanded by -frewrite-includes */
#include "../config.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/type_identity.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/../type_traits/type_identity.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_TYPE_IDENTITY_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/../type_traits/type_identity.h"
#define CNL_IMPL_TYPE_TRAITS_TYPE_IDENTITY_H
/// compositional numeric library
namespace cnl {
namespace _impl {
// cnl::_impl::type_identity (wg21.link/p0887r1)
template<typename T>
struct type_identity {
using type = T;
};
template<typename T>
using type_identity_t = typename type_identity<T>::type;
}
}
#endif // CNL_IMPL_TYPE_TRAITS_TYPE_IDENTITY_H
# 26 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/../type_traits/type_identity.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
////////////////////////////////////////////////////////////////////////////////
// operation tags
struct convert_op {
template<class Destination, class Source>
CNL_NODISCARD constexpr auto operator()(Source const& source) const -> decltype(static_cast<Destination>(source))
{
return static_cast<Destination>(source);
}
};
struct minus_op {
template<class Rhs>
CNL_NODISCARD constexpr auto operator()(Rhs const& rhs) const -> decltype(-rhs)
{
return -rhs;
}
};
struct plus_op {
template<class Rhs>
CNL_NODISCARD constexpr auto operator()(Rhs const& rhs) const -> decltype(+rhs)
{
return +rhs;
}
};
struct bitwise_not_op {
template<class Rhs>
CNL_NODISCARD constexpr auto operator()(Rhs const& rhs) const -> decltype(~std::declval<Rhs>())
{
return ~rhs;
}
};
struct add_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs+rhs)
{
return lhs+rhs;
}
};
struct subtract_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs-rhs)
{
return lhs-rhs;
}
};
struct multiply_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs*rhs)
{
return lhs*rhs;
}
};
struct divide_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs/rhs)
{
return lhs/rhs;
}
};
struct modulo_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs%rhs)
{
return lhs%rhs;
}
};
struct bitwise_or_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs | rhs)
{
return lhs | rhs;
}
};
struct bitwise_and_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs & rhs)
{
return lhs & rhs;
}
};
struct bitwise_xor_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs ^ rhs)
{
return lhs ^ rhs;
}
};
struct shift_left_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs << rhs)
{
// TODO: Not reproduced locally. Investigate.
// NOLINTNEXTLINE(clang-analyzer-core.UndefinedBinaryOperatorResult)
return lhs << rhs;
}
};
struct shift_right_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs >> rhs)
{
return lhs >> rhs;
}
};
struct equal_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs==rhs)
{
return lhs==rhs;
}
};
struct not_equal_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs!=rhs)
{
return lhs!=rhs;
}
};
struct less_than_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs<rhs)
{
return lhs<rhs;
}
};
struct greater_than_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs>rhs)
{
return lhs>rhs;
}
};
struct less_than_or_equal_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs<=rhs)
{
return lhs<=rhs;
}
};
struct greater_than_or_equal_op {
template<class Lhs, class Rhs>
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const -> decltype(lhs>=rhs)
{
return lhs>=rhs;
}
};
struct pre_increment_op {
template<class Rhs>
constexpr auto operator()(Rhs& rhs) const -> decltype(++rhs)
{
return ++rhs;
}
};
struct pre_decrement_op {
template<class Rhs>
constexpr auto operator()(Rhs& rhs) const -> decltype(--rhs)
{
return --rhs;
}
};
struct post_increment_op {
template<class Lhs>
constexpr auto operator()(Lhs& lhs) const -> decltype(lhs++)
{
return lhs++;
}
};
struct post_decrement_op {
template<class Lhs>
constexpr auto operator()(Lhs& lhs) const -> decltype(lhs--)
{
return lhs--;
}
};
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 219 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
// GCC warns against short+=short and short-=short
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wconversion"
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 223 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
#pragma warning(push)
#pragma warning(disable: 4244)
#endif
# 226 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
struct assign_add_op {
using binary = add_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs += rhs)
{
return lhs += rhs;
}
};
struct assign_subtract_op {
using binary = subtract_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs -= rhs)
{
return lhs -= rhs;
}
};
#if 0 /* disabled by -frewrite-includes */
#if defined(__GNUC__)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 246 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
#pragma GCC diagnostic pop
#if 0 /* disabled by -frewrite-includes */
#if 0
#elif defined(_MSC_VER)
#endif
#endif /* disabled by -frewrite-includes */
#elif 0 /* evaluated by -frewrite-includes */
# 248 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
#pragma warning(pop)
#endif
# 250 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
struct assign_multiply_op {
using binary = multiply_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs *= rhs)
{
return lhs *= rhs;
}
};
struct assign_divide_op {
using binary = divide_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs /= rhs)
{
return lhs /= rhs;
}
};
struct assign_modulo_op {
using binary = modulo_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs %= rhs)
{
return lhs %= rhs;
}
};
struct assign_bitwise_or_op {
using binary = bitwise_or_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs |= rhs)
{
return lhs |= rhs;
}
};
struct assign_bitwise_and_op {
using binary = bitwise_and_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs &= rhs)
{
return lhs &= rhs;
}
};
struct assign_bitwise_xor_op {
using binary = bitwise_xor_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs ^= rhs)
{
return lhs ^= rhs;
}
};
struct assign_shift_left_op {
using binary = shift_left_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs <<= rhs)
{
return lhs <<= rhs;
}
};
struct assign_shift_right_op {
using binary = shift_right_op;
template<class Lhs, class Rhs>
constexpr auto operator()(Lhs& lhs, Rhs const& rhs) const -> decltype(lhs >>= rhs)
{
return lhs >>= rhs;
}
};
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::op_result
template<class Operator, class ... Operands>
using op_result = decltype(Operator()(std::declval<Operands>() ...));
////////////////////////////////////////////////////////////////////////////////
// type transformations from increment/decrement to compound add/subtract
template<class Operator>
struct pre_to_assign;
template<>
struct pre_to_assign<pre_increment_op> : type_identity<assign_add_op> {
};
template<>
struct pre_to_assign<pre_decrement_op> : type_identity<assign_subtract_op> {
};
template<class Operator>
struct post_to_assign;
template<>
struct post_to_assign<post_increment_op> : type_identity<assign_add_op> {
};
template<>
struct post_to_assign<post_decrement_op> : type_identity<assign_subtract_op> {
};
}
}
#endif //CNL_IMPL_OPERATORS_OPERATORS_H
# 365 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/operators.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
struct native_tag;
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::wants_generic_ops
// true iff T wants generic operator overloads
template<class T, class Enable = void>
struct wants_generic_ops : std::false_type {
};
////////////////////////////////////////////////////////////////////////////////
// generic operators
}
template<class ArchetypeTag, typename Initializer, typename Enabled=void>
struct deduction;
template<class DestTag, class SrcTag, typename Destination, typename Source, typename Enabled=void>
struct convert_operator;
template<class Operator, class RhsTag, typename Rhs, class Enabled=void>
struct unary_operator;
template<class Operator, class LhsTag, class RhsTag, typename Lhs, typename Rhs, class Enabled=void>
struct binary_operator;
template<class Operator, class LhsTag, class RhsTag, class LhsOperand, class RhsOperand, class Enable = void>
struct shift_operator;
template<class Operator, class LhsOperand, class RhsOperand, class Enable = void>
struct comparison_operator;
template<class Operator, class Tag, class RhsOperand, class Enable = void>
struct pre_operator;
template<class Operator, class Tag, class LhsOperand, class Enable = void>
struct post_operator;
template<class Operator, class LhsTag, class RhsTag, class LhsOperand, class RhsOperand, class Enable = void>
struct compound_assignment_operator {
constexpr LhsOperand& operator()(LhsOperand& lhs, RhsOperand const& rhs) const
{
using binary_operator = cnl::binary_operator<
typename Operator::binary,
LhsTag, RhsTag,
LhsOperand, RhsOperand>;
using binary_operator_result = decltype(binary_operator{}(lhs, rhs));
using convert_operator = cnl::convert_operator<LhsTag, RhsTag, LhsOperand, binary_operator_result>;
return lhs = convert_operator{}(binary_operator{}(lhs, rhs));
}
};
template<class Operator, class LhsTag, class RhsTag, class LhsOperand, class RhsOperand, class Enable = void>
struct compound_assignment_shift_operator {
constexpr LhsOperand& operator()(LhsOperand& lhs, RhsOperand const& rhs) const
{
using shift_operator = cnl::shift_operator<
typename Operator::binary,
LhsTag, RhsTag,
LhsOperand, RhsOperand>;
using shift_operator_result = decltype(shift_operator{}(lhs, rhs));
using convert_operator = cnl::convert_operator<LhsTag, RhsTag, LhsOperand, shift_operator_result>;
return lhs = convert_operator{}(shift_operator{}(lhs, rhs));
}
};
}
#endif // CNL_IMPL_OPERATORS_GENERIC_OPERATORS_H
# 89 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/generic.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
// a tag with unremarkable properties WRT deduction,
// i.e. deduction from numbers with this tag
// produce more numbers with the same tag
struct homogeneous_deduction_tag_base {
};
template<class Tag>
struct is_homogeneous_deduction_tag
: std::is_base_of<homogeneous_deduction_tag_base, Tag> {
};
}
template<class ArchetypeTag, typename Initializer>
struct deduction<
ArchetypeTag, Initializer,
_impl::enable_if_t<_impl::is_homogeneous_deduction_tag<ArchetypeTag>::value>> {
// tag associated with deduced type
using tag = ArchetypeTag;
// deduced type; equivalent to rep type of a component
using type = Initializer;
};
}
#endif // CNL_IMPL_OPERATORS_IS_HOMOGENEOUS_DEDUCTION_TAG_H
# 43 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_deduction_tag_base.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "declaration.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
/// compositional numeric library
namespace cnl {
template<int ArchetypeDigits, typename ArchetypeNarrowest, typename Initializer>
struct deduction<
elastic_tag<ArchetypeDigits, ArchetypeNarrowest>,
Initializer> {
// tag associated with deduced type
using tag = elastic_tag<
digits<Initializer>::value,
_impl::set_width_t<Initializer, _impl::width<ArchetypeNarrowest>::value>>;
// deduced type
using type = Initializer;
};
}
#endif // CNL_IMPL_ELASTIC_INTEGER_DEDUCTION_H
# 33 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/deduction.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "elastic_tag/definition.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_DEFINITION_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
#define CNL_IMPL_ELASTIC_TAG_DEFINITION_H
#if 0 /* expanded by -frewrite-includes */
#include "../common.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/digits.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_digits.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
#if 0 /* expanded by -frewrite-includes */
#include "declaration.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
/// compositional numeric library
namespace cnl {
template<int Digits, typename Narrowest>
struct elastic_tag {
// A remarkable property of the elastic_tag is that it's rep type is dependent upon it.
using _rep = set_digits_t<
Narrowest,
_impl::max(cnl::digits<Narrowest>::value, Digits)>;
};
}
#endif // CNL_IMPL_ELASTIC_TAG_DEFINITION_H
# 27 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/definition.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "elastic_tag/generic.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_GENERIC_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
#define CNL_IMPL_ELASTIC_TAG_GENERIC_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_digits.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/width.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
#if 0 /* expanded by -frewrite-includes */
#include "../operators/overloads.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
/// \file
/// \brief a place to centralize most duplicate arithmetic operator boilerplate
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_OPERATORS_OVERLOADS_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
#define CNL_IMPL_OPERATORS_OVERLOADS_H
#if 0 /* expanded by -frewrite-includes */
#include "../../limits.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
#if 0 /* expanded by -frewrite-includes */
#include "generic.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
struct native_tag;
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::enable_unary_t
template<class Operand, class T>
using enable_unary_t = enable_if_t<_impl::wants_generic_ops<Operand>::value, T>;
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::enable_binary_t
template<class LhsOperand, class RhsOperand, class Enable = void>
struct enable_binary;
template<class LhsOperand, int LhsSize, class RhsOperand>
struct enable_binary<LhsOperand[LhsSize], RhsOperand> // NOLINT(cppcoreguidelines-avoid-c-arrays)
: std::false_type {
};
template<class LhsOperand, class RhsOperand, int RhsSize>
struct enable_binary<LhsOperand, RhsOperand[RhsSize]> // NOLINT(cppcoreguidelines-avoid-c-arrays)
: std::false_type {
};
template<class LhsOperand, class RhsOperand>
struct enable_binary<LhsOperand, RhsOperand>
: std::integral_constant<
bool,
((numeric_limits<LhsOperand>::is_specialized && numeric_limits<RhsOperand>::is_specialized)
|| (_impl::wants_generic_ops<LhsOperand>::value
&& _impl::wants_generic_ops<RhsOperand>::value))
&& (_impl::wants_generic_ops<LhsOperand>::value
|| _impl::wants_generic_ops<RhsOperand>::value)> {
};
template<class LhsOperand, class RhsOperand, class T>
using enable_binary_t = _impl::enable_if_t<enable_binary<LhsOperand, RhsOperand>::value, T>;
////////////////////////////////////////////////////////////////////////////////
// operator overloads
// unary operators
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_DEFINE_UNARY_OPERATOR(OP, NAME) \
template<class Operand> \
CNL_NODISCARD constexpr auto operator OP (Operand const& operand) \
-> decltype(cnl::unary_operator<enable_unary_t<Operand, NAME>, native_tag, Operand>()(operand)) \
{ \
return cnl::unary_operator<NAME, native_tag, Operand>()(operand); \
}
CNL_DEFINE_UNARY_OPERATOR(+, plus_op)
CNL_DEFINE_UNARY_OPERATOR(-, minus_op)
CNL_DEFINE_UNARY_OPERATOR(~, bitwise_not_op)
// binary operators
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_DEFINE_BINARY_OPERATOR(OP, NAME) \
template<class LhsOperand, class RhsOperand> \
CNL_NODISCARD constexpr auto operator OP (LhsOperand const& lhs, RhsOperand const& rhs) \
-> decltype(cnl::binary_operator< \
enable_binary_t<LhsOperand, RhsOperand, NAME>, native_tag, native_tag, \
LhsOperand, RhsOperand>()(lhs, rhs)) \
{ \
return cnl::binary_operator<NAME, native_tag, native_tag, LhsOperand, RhsOperand>{}(lhs, rhs); \
}
CNL_DEFINE_BINARY_OPERATOR(+, add_op)
CNL_DEFINE_BINARY_OPERATOR(-, subtract_op)
CNL_DEFINE_BINARY_OPERATOR(*, multiply_op)
CNL_DEFINE_BINARY_OPERATOR(/, divide_op)
CNL_DEFINE_BINARY_OPERATOR(%, modulo_op)
CNL_DEFINE_BINARY_OPERATOR(|, bitwise_or_op)
CNL_DEFINE_BINARY_OPERATOR(&, bitwise_and_op)
CNL_DEFINE_BINARY_OPERATOR(^, bitwise_xor_op)
// binary operators
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_DEFINE_SHIFT_OPERATOR(OP, NAME) \
template<class LhsOperand, class RhsOperand> \
CNL_NODISCARD constexpr auto operator OP (LhsOperand const& lhs, RhsOperand const& rhs) \
-> decltype(cnl::shift_operator< \
enable_binary_t<LhsOperand, RhsOperand, NAME>, native_tag, native_tag, \
LhsOperand, RhsOperand>()(lhs, rhs)) \
{ \
return cnl::shift_operator<NAME, native_tag, native_tag, LhsOperand, RhsOperand>()(lhs, rhs); \
}
CNL_DEFINE_SHIFT_OPERATOR(<<, shift_left_op)
CNL_DEFINE_SHIFT_OPERATOR(>>, shift_right_op)
// comparison operators
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_DEFINE_COMPARISON_OPERATOR(OP, NAME) \
template<class LhsOperand, class RhsOperand> \
CNL_NODISCARD constexpr auto operator OP (LhsOperand const& lhs, RhsOperand const& rhs) \
-> decltype(cnl::comparison_operator< \
enable_binary_t<LhsOperand, RhsOperand, NAME>, LhsOperand, \
RhsOperand>()(lhs, rhs)) \
{ \
return cnl::comparison_operator<NAME, LhsOperand, RhsOperand>()(lhs, rhs); \
}
CNL_DEFINE_COMPARISON_OPERATOR(==, equal_op)
CNL_DEFINE_COMPARISON_OPERATOR(!=, not_equal_op)
CNL_DEFINE_COMPARISON_OPERATOR(<, less_than_op)
CNL_DEFINE_COMPARISON_OPERATOR(>, greater_than_op)
CNL_DEFINE_COMPARISON_OPERATOR(<=, less_than_or_equal_op)
CNL_DEFINE_COMPARISON_OPERATOR(>=, greater_than_or_equal_op)
// pre increment/decrement
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_DEFINE_PRE_OPERATOR(OP, NAME) \
template<class RhsOperand> \
constexpr auto operator OP (RhsOperand& rhs) \
-> decltype(cnl::pre_operator<NAME, native_tag, RhsOperand>()(rhs)) \
{ \
return cnl::pre_operator<NAME, native_tag, RhsOperand>()(rhs); \
}
CNL_DEFINE_PRE_OPERATOR(++, pre_increment_op)
CNL_DEFINE_PRE_OPERATOR(--, pre_decrement_op)
// post increment/decrement
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_DEFINE_POST_OPERATOR(OP, NAME) \
template<class LhsOperand> \
constexpr auto operator OP (LhsOperand& lhs, int) \
-> decltype(cnl::post_operator<NAME, native_tag, LhsOperand>()(lhs)) \
{ \
return cnl::post_operator<NAME, native_tag, LhsOperand>()(lhs); \
}
CNL_DEFINE_POST_OPERATOR(++, post_increment_op)
CNL_DEFINE_POST_OPERATOR(--, post_decrement_op)
// compound assignment operators
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(OP, NAME) \
template<class LhsOperand, class RhsOperand> \
constexpr auto operator OP (LhsOperand& lhs, RhsOperand const& rhs) \
-> enable_binary_t<LhsOperand, RhsOperand, decltype( cnl::compound_assignment_operator< \
NAME, native_tag, native_tag, LhsOperand, RhsOperand>()(lhs, rhs))> \
{ \
return cnl::compound_assignment_operator< \
NAME, native_tag, native_tag, LhsOperand, RhsOperand>()(lhs, rhs); \
}
CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(+=, assign_add_op)
CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(-=, assign_subtract_op)
CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(*=, assign_multiply_op)
CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(/=, assign_divide_op)
CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(%=, assign_modulo_op)
CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(|=, assign_bitwise_or_op)
CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(&=, assign_bitwise_and_op)
CNL_DEFINE_COMPOUND_ASSIGNMENT_OPERATOR(^=, assign_bitwise_xor_op)
// compound assignment shift operators
// NOLINTNEXTLINE(cppcoreguidelines-macro-usage)
#define CNL_DEFINE_COMPOUND_ASSIGNMENT_SHIFT_OPERATOR(OP, NAME) \
template<class LhsOperand, class RhsOperand> \
constexpr auto operator OP (LhsOperand& lhs, RhsOperand const& rhs) \
-> enable_binary_t<LhsOperand, RhsOperand, decltype(cnl::compound_assignment_shift_operator< \
NAME, native_tag, native_tag, LhsOperand, RhsOperand>()(lhs, rhs))> \
{ \
return cnl::compound_assignment_shift_operator< \
NAME, native_tag, native_tag, LhsOperand, RhsOperand>()(lhs, rhs); \
}
CNL_DEFINE_COMPOUND_ASSIGNMENT_SHIFT_OPERATOR(<<=, assign_shift_left_op)
CNL_DEFINE_COMPOUND_ASSIGNMENT_SHIFT_OPERATOR(>>=, assign_shift_right_op)
}
}
#endif // CNL_IMPL_OPERATORS_OVERLOADS_H
# 230 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/overloads.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/set_signedness.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../type_traits/set_signedness.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_SET_SIGNEDNESS)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../type_traits/set_signedness.h"
#define CNL_IMPL_TYPE_TRAITS_SET_SIGNEDNESS
#if 0 /* expanded by -frewrite-includes */
#include "add_signedness.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../type_traits/set_signedness.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_ADD_SIGNEDNESS_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
#define CNL_IMPL_TYPE_TRAITS_ADD_SIGNEDNESS_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/is_composite.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/rep.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_rep.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/set_rep.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_SET_REP_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/set_rep.h"
#define CNL_IMPL_NUM_TRAITS_SET_REP_H
/// compositional numeric library
namespace cnl {
/// \brief meta-function object that transforms a component from one Rep type to another
///
/// \tparam T component to transform
/// \tparam OutRep new representational type being wrapped by the resultant type
///
/// \sa to_rep, from_value, set_tag, rep
template<typename T, typename OutRep, class Enable = void>
struct set_rep;
namespace _impl {
template<typename T, class OutRep>
using set_rep_t = typename set_rep<T, OutRep>::type;
}
}
#endif // CNL_IMPL_NUM_TRAITS_SET_REP_H
# 28 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/../num_traits/set_rep.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/type_identity.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
namespace cnl {
/// \brief given a numeric type, defines member `type` as the equivalent signed type
/// \tparam T type to transform into a signed type
/// \headerfile cnl/num_traits.h
/// \note User-specializations of this type are permitted.
/// \sa cnl::remove_signedness, cnl::add_signedness_t, std::make_signed
template<class T, class = void>
struct add_signedness;
template<class T>
struct add_signedness<T, _impl::enable_if_t<std::is_integral<T>::value>> : std::make_signed<T> {
};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 32 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
template<>
struct add_signedness<int128> {
using type = int128;
};
template<>
struct add_signedness<uint128> {
using type = int128;
};
#endif
# 41 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
/// \brief helper alias of \ref cnl::add_signedness
/// \headerfile cnl/num_traits.h
/// \sa cnl::remove_signedness_t, cnl::add_signedness, std::make_signed_t
template<class T>
using add_signedness_t = typename add_signedness<T>::type;
template<typename T>
struct add_signedness<T, _impl::enable_if_t<is_composite<T>::value>>
: _impl::type_identity<_impl::set_rep_t<T, add_signedness_t<_impl::rep_t<T>>>> {
};
}
#endif // CNL_IMPL_TYPE_TRAITS_ADD_SIGNEDNESS_H
# 55 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/add_signedness.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../type_traits/set_signedness.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "remove_signedness.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../type_traits/set_signedness.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_REMOVE_SIGNEDNESS_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
#define CNL_IMPL_TYPE_TRAITS_REMOVE_SIGNEDNESS_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/is_composite.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/rep.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_rep.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/type_identity.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include "enable_if.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
namespace cnl {
/// \brief given a numeric type, defines member `type` as the equivalent unsigned type
/// \tparam T type to transform into an unsigned type
/// \headerfile cnl/num_traits.h
/// \note User-specializations of this type are permitted.
/// \sa cnl::add_signedness, cnl::remove_signedness_t, std::make_unsigned
template<class T, class = void>
struct remove_signedness;
template<class T>
struct remove_signedness<T, _impl::enable_if_t<std::is_integral<T>::value>> : std::make_unsigned<T> {
};
#if 0 /* disabled by -frewrite-includes */
#if defined(CNL_INT128_ENABLED)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 32 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
template<>
struct remove_signedness<int128> {
using type = uint128;
};
template<>
struct remove_signedness<uint128> {
using type = uint128;
};
#endif
# 41 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
/// \brief helper alias of \ref cnl::remove_signedness
/// \headerfile cnl/num_traits.h
/// \sa cnl::add_signedness_t, cnl::remove_signedness, std::make_unsigned_t
template<class T>
using remove_signedness_t = typename remove_signedness<T>::type;
template<typename T>
struct remove_signedness<T, _impl::enable_if_t<is_composite<T>::value>>
: _impl::type_identity<_impl::set_rep_t<T, remove_signedness_t<_impl::rep_t<T>>>> {
};
}
#endif // CNL_IMPL_TYPE_TRAITS_REMOVE_SIGNEDNESS_H
# 55 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_signedness.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../type_traits/set_signedness.h" 2
namespace cnl {
namespace _impl {
////////////////////////////////////////////////////////////////////////////////
// cnl::_impl::set_signedness - std::add_signedness with IsSigned parameter
template<class T, bool IsSigned>
struct set_signedness;
template<class T>
struct set_signedness<T, true> : add_signedness<T> {
};
template<class T>
struct set_signedness<T, false> : remove_signedness<T> {
};
template<class T, bool IsSigned>
using set_signedness_t = typename set_signedness<T, IsSigned>::type;
}
}
#endif // CNL_IMPL_TYPE_TRAITS_SET_SIGNEDNESS
# 35 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../type_traits/set_signedness.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "definition.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
#if 0 /* expanded by -frewrite-includes */
#include "is_elastic_tag.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_elastic_tag.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_IS_ELASTIC_TAG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_elastic_tag.h"
#define CNL_IMPL_ELASTIC_TAG_IS_ELASTIC_TAG_H
#if 0 /* expanded by -frewrite-includes */
#include "declaration.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_elastic_tag.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_elastic_tag.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_elastic_tag.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_elastic_tag.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
template<typename T>
struct is_elastic_tag : std::false_type {
};
template<int Digits, typename Narrowest>
struct is_elastic_tag<elastic_tag<Digits, Narrowest>> : std::true_type {
};
}
}
#endif //CNL_IMPL_ELASTIC_TAG_IS_ELASTIC_TAG_H
# 28 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_elastic_tag.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "policy.h"
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/policy.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_POLICY_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/policy.h"
#define CNL_IMPL_ELASTIC_TAG_POLICY_H
#if 0 /* expanded by -frewrite-includes */
#include "../common.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/policy.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/policy.h"
#if 0 /* expanded by -frewrite-includes */
#include "../operators/operators.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/policy.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/policy.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
template<class Operation, int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy;
template<int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy<_impl::add_op, LhsDigits, LhsIsSigned, RhsDigits, RhsIsSigned> {
static constexpr int digits = _impl::max(LhsDigits, RhsDigits)+1;
static constexpr bool is_signed = LhsIsSigned || RhsIsSigned;
};
template<int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy<_impl::subtract_op, LhsDigits, LhsIsSigned, RhsDigits, RhsIsSigned> {
static constexpr int digits = _impl::max(LhsDigits, RhsDigits)+(LhsIsSigned | RhsIsSigned);
static constexpr bool is_signed = true;
};
template<int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy<_impl::multiply_op, LhsDigits, LhsIsSigned, RhsDigits, RhsIsSigned> {
static constexpr int contribution(int operand_digits) { return operand_digits==1 ? 0 : operand_digits; }
static constexpr int digits = max(1, contribution(LhsDigits)+contribution(RhsDigits));
static constexpr bool is_signed = LhsIsSigned || RhsIsSigned;
};
template<int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy<_impl::divide_op, LhsDigits, LhsIsSigned, RhsDigits, RhsIsSigned> {
static constexpr int digits = LhsDigits;
static constexpr bool is_signed = LhsIsSigned || RhsIsSigned;
};
template<int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy<_impl::modulo_op, LhsDigits, LhsIsSigned, RhsDigits, RhsIsSigned> {
static constexpr int digits = LhsDigits;
static constexpr bool is_signed = LhsIsSigned || RhsIsSigned;
};
template<int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy<_impl::bitwise_or_op, LhsDigits, LhsIsSigned, RhsDigits, RhsIsSigned> {
static constexpr int digits = _impl::max(LhsDigits, RhsDigits);
static constexpr bool is_signed = LhsIsSigned || RhsIsSigned;
};
template<int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy<_impl::bitwise_and_op, LhsDigits, LhsIsSigned, RhsDigits, RhsIsSigned> {
static constexpr int digits = _impl::min(LhsDigits, RhsDigits);
static constexpr bool is_signed = LhsIsSigned || RhsIsSigned;
};
template<int LhsDigits, bool LhsIsSigned, int RhsDigits, bool RhsIsSigned>
struct policy<_impl::bitwise_xor_op, LhsDigits, LhsIsSigned, RhsDigits, RhsIsSigned> {
static constexpr int digits = _impl::max(LhsDigits, RhsDigits);
static constexpr bool is_signed = LhsIsSigned || RhsIsSigned;
};
}
}
#endif // CNL_IMPL_ELASTIC_TAG_POLICY_H
# 71 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/policy.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
/// compositional numeric library
namespace cnl {
template<int DestDigits, class DestNarrowest, int SrcDigits, class SrcNarrowest, typename Destination, typename Source>
struct convert_operator<
cnl::elastic_tag<DestDigits, DestNarrowest>, cnl::elastic_tag<SrcDigits, SrcNarrowest>,
Destination, Source>
: convert_operator<_impl::native_tag, _impl::native_tag, Destination, Source> {
};
template<int DestDigits, class DestNarrowest, typename Destination, typename Source>
struct convert_operator<
cnl::elastic_tag<DestDigits, DestNarrowest>, cnl::_impl::native_tag,
Destination, Source>
: convert_operator<_impl::native_tag, _impl::native_tag, Destination, Source> {
};
template<int Digits, class Narrowest, typename Destination, typename Source>
struct convert_operator<cnl::_impl::native_tag, cnl::elastic_tag<Digits, Narrowest>, Destination, Source>
: convert_operator<_impl::native_tag, _impl::native_tag, Destination, Source> {
};
namespace _impl {
////////////////////////////////////////////////////////////////////////////////
// operate_params
template<class Operator, int LhsDigits, class LhsNarrowest, int RhsDigits, class RhsNarrowest>
struct operate_params {
using policy = typename _impl::policy<
Operator,
LhsDigits, numeric_limits<LhsNarrowest>::is_signed,
LhsDigits, numeric_limits<RhsNarrowest>::is_signed>;
using lhs_rep = typename elastic_tag<LhsDigits, LhsNarrowest>::_rep;
using rhs_rep = typename elastic_tag<RhsDigits, RhsNarrowest>::_rep;
using rep_result = typename _impl::op_result<Operator, lhs_rep, rhs_rep>;
static constexpr int narrowest_width = _impl::max(
width<LhsNarrowest>::value,
width<RhsNarrowest>::value);
using narrowest = set_digits_t<
_impl::set_signedness_t<rep_result, policy::is_signed>,
narrowest_width-policy::is_signed>;
};
}
template<
class Operator,
int LhsDigits, class LhsNarrowest,
int RhsDigits, class RhsNarrowest,
typename Lhs, typename Rhs>
struct binary_operator<
Operator,
elastic_tag<LhsDigits, LhsNarrowest>, elastic_tag<RhsDigits, RhsNarrowest>,
Lhs, Rhs> {
static_assert(digits<Lhs>::value >= LhsDigits, "LHS number is not wide enough");
static_assert(digits<Rhs>::value >= RhsDigits, "RHS number is not wide enough");
using result_tag = decltype(Operator{}(
std::declval<elastic_tag<LhsDigits, LhsNarrowest>>(),
std::declval<elastic_tag<RhsDigits, RhsNarrowest>>()));
using result_rep = typename result_tag::_rep;
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const
-> decltype(Operator()(
static_cast<result_rep>(lhs),
static_cast<result_rep>(rhs)))
{
return Operator()(
static_cast<result_rep>(lhs),
static_cast<result_rep>(rhs));
}
};
// shift_operator of scaled_integer and scaled_integer
template<class Operator, class LhsTag, typename Lhs, typename Rhs>
struct shift_operator<
Operator,
LhsTag, _impl::native_tag,
Lhs, Rhs,
_impl::enable_if_t<_impl::is_elastic_tag<LhsTag>::value && !_impl::is_constant<Rhs>::value>> {
CNL_NODISCARD constexpr auto operator()(Lhs const& lhs, Rhs const& rhs) const
-> decltype(Operator{}(lhs, rhs))
{
return Operator{}(lhs, rhs);
}
};
// shift_operator of scaled_integer and something else
template<
class Operator,
int LhsDigits, typename LhsNarrowest,
int RhsDigits, typename RhsNarrowest,
typename Lhs, typename Rhs>
struct shift_operator<
Operator,
elastic_tag<LhsDigits, LhsNarrowest>, elastic_tag<RhsDigits, RhsNarrowest>,
Lhs, Rhs>
: shift_operator<Operator, elastic_tag<LhsDigits, LhsNarrowest>, _impl::native_tag, Lhs, Rhs> {
};
template<int Digits, class Narrowest, class Operator, typename Rhs>
struct pre_operator<elastic_tag<Digits, Narrowest>, Operator, Rhs>
: Operator {
};
template<int Digits, class Narrowest, class Operator, typename Rhs>
struct post_operator<elastic_tag<Digits, Narrowest>, Operator, Rhs>
: Operator {
};
}
#endif // CNL_IMPL_ELASTIC_TAG_GENERIC_H
# 132 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/generic.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "elastic_tag/inc_dec_operator.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/inc_dec_operator.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_INC_DEC_OPERATOR_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/inc_dec_operator.h"
#define CNL_IMPL_ELASTIC_TAG_INC_DEC_OPERATOR_H
#if 0 /* expanded by -frewrite-includes */
#include "../operators/generic.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/inc_dec_operator.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/inc_dec_operator.h"
#if 0 /* expanded by -frewrite-includes */
#include "declaration.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/inc_dec_operator.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/inc_dec_operator.h"
/// compositional numeric library
namespace cnl {
template<class Operator, int Digits, typename Narrowest, typename Rhs>
struct pre_operator<Operator, elastic_tag<Digits, Narrowest>, Rhs> : Operator {
};
template<typename Operator, int Digits, typename Narrowest, typename Lhs>
struct post_operator<Operator, elastic_tag<Digits, Narrowest>, Lhs> : Operator {
};
}
#endif // CNL_IMPL_ELASTIC_TAG_INC_DEC_OPERATOR_H
# 25 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/inc_dec_operator.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "elastic_tag/is_elastic_tag.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
#if 0 /* expanded by -frewrite-includes */
#include "elastic_tag/is_same_tag_family.h"
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_IS_SAME_TAG_FAMILY_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h"
#define CNL_IMPL_ELASTIC_TAG_IS_SAME_TAG_FAMILY_H
#if 0 /* expanded by -frewrite-includes */
#include "../operators/is_same_tag_family.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/is_same_tag_family.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_OPERATORS_IS_SAME_TAG_FAMILY_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/is_same_tag_family.h"
#define CNL_IMPL_OPERATORS_IS_SAME_TAG_FAMILY_H
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/is_same_tag_family.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/is_same_tag_family.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/is_same_tag_family.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/is_same_tag_family.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
template<class Tag1, class Tag2, class Enabled=void>
struct is_same_tag_family : std::is_same<Tag1, Tag2> {
};
}
}
#endif // CNL_IMPL_OPERATORS_IS_SAME_TAG_FAMILY_H
# 24 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/is_same_tag_family.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "definition.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
template<int Digits1, typename Narrowest1, int Digits2, typename Narrowest2>
struct is_same_tag_family<
elastic_tag<Digits1, Narrowest1>, elastic_tag<Digits2, Narrowest2>>
: std::true_type {
};
}
}
#endif // CNL_IMPL_ELASTIC_TAG_IS_SAME_TAG_FAMILY_H
# 27 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/is_same_tag_family.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "elastic_tag/overloads.h"
#endif /* expanded by -frewrite-includes */
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_ELASTIC_TAG_OVERLOADS_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
#define CNL_IMPL_ELASTIC_TAG_OVERLOADS_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_width.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/width.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/is_signed.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/set_signedness.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
#if 0 /* expanded by -frewrite-includes */
#include "definition.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
#if 0 /* expanded by -frewrite-includes */
#include "policy.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
template<
class Operator,
int LhsDigits, typename LhsNarrowest,
int RhsDigits, typename RhsNarrowest>
struct elastic_tag_overload_params {
using policy = typename _impl::policy<
Operator,
LhsDigits, numeric_limits<LhsNarrowest>::is_signed,
RhsDigits, numeric_limits<RhsNarrowest>::is_signed>;
using narrowest = _impl::set_width_t<
_impl::set_signedness_t<
_impl::op_result<Operator, LhsNarrowest, RhsNarrowest>,
policy::is_signed>,
_impl::max(
_impl::width<LhsNarrowest>::value,
_impl::width<RhsNarrowest>::value)>;
using type = elastic_tag<policy::digits, narrowest>;
};
}
template<
int LhsDigits, typename LhsNarrowest,
int RhsDigits, typename RhsNarrowest>
CNL_NODISCARD constexpr auto operator+(elastic_tag<LhsDigits, LhsNarrowest>, elastic_tag<RhsDigits, RhsNarrowest>)
-> typename _impl::elastic_tag_overload_params<
_impl::add_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type
{
return typename _impl::elastic_tag_overload_params<
_impl::add_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type{};
}
template<
int LhsDigits, typename LhsNarrowest,
int RhsDigits, typename RhsNarrowest>
CNL_NODISCARD constexpr auto operator-(elastic_tag<LhsDigits, LhsNarrowest>, elastic_tag<RhsDigits, RhsNarrowest>)
-> typename _impl::elastic_tag_overload_params<
_impl::subtract_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type
{
return typename _impl::elastic_tag_overload_params<
_impl::subtract_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type{};
}
template<
int LhsDigits, typename LhsNarrowest,
int RhsDigits, typename RhsNarrowest>
CNL_NODISCARD constexpr auto operator*(elastic_tag<LhsDigits, LhsNarrowest>, elastic_tag<RhsDigits, RhsNarrowest>)
-> typename _impl::elastic_tag_overload_params<
_impl::multiply_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type
{
return typename _impl::elastic_tag_overload_params<
_impl::multiply_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type{};
}
template<
int LhsDigits, typename LhsNarrowest,
int RhsDigits, typename RhsNarrowest>
CNL_NODISCARD constexpr auto operator/(elastic_tag<LhsDigits, LhsNarrowest>, elastic_tag<RhsDigits, RhsNarrowest>)
-> typename _impl::elastic_tag_overload_params<
_impl::divide_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type
{
return typename _impl::elastic_tag_overload_params<
_impl::divide_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type{};
}
template<
int LhsDigits, typename LhsNarrowest,
int RhsDigits, typename RhsNarrowest>
CNL_NODISCARD constexpr auto operator%(elastic_tag<LhsDigits, LhsNarrowest>, elastic_tag<RhsDigits, RhsNarrowest>)
-> typename _impl::elastic_tag_overload_params<
_impl::modulo_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type
{
return typename _impl::elastic_tag_overload_params<
_impl::modulo_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type{};
}
template<
int LhsDigits, typename LhsNarrowest,
int RhsDigits, typename RhsNarrowest>
CNL_NODISCARD constexpr auto operator&(elastic_tag<LhsDigits, LhsNarrowest>, elastic_tag<RhsDigits, RhsNarrowest>)
-> typename _impl::elastic_tag_overload_params<
_impl::bitwise_and_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type
{
return typename _impl::elastic_tag_overload_params<
_impl::bitwise_and_op, LhsDigits, LhsNarrowest, RhsDigits, RhsNarrowest>::type{};
}
}
#endif // CNL_IMPL_ELASTIC_TAG_OVERLOADS_H
# 109 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/overloads.h"
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h" 2
#endif // CNL_IMPL_ELASTIC_TAG_H
# 20 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../elastic_tag.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/definition.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_digits.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/definition.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/definition.h"
#if 0 /* expanded by -frewrite-includes */
#include "../number.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/definition.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../number.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../number.h"
#define CNL_IMPL_NUMBER_H
#if 0 /* expanded by -frewrite-includes */
#include "number/binary_operator.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../number.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_BINARY_OPERATOR_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
#define CNL_IMPL_NUMBER_BINARY_OPERATOR_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_rep.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/set_tag.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/set_tag.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_SET_TAG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/set_tag.h"
#define CNL_IMPL_NUM_TRAITS_SET_TAG_H
/// compositional numeric library
namespace cnl {
/// \brief meta-function object that transforms a component from one Tag type to another
///
/// \tparam T component to transform
/// \tparam OutRep new behavior type being wrapped by the resultant type
///
/// \sa to_rep, from_rep, set_rep, tag
template<typename T, class OutTag, class Enable = void>
struct set_tag;
namespace _impl {
template<typename T, class OutTag>
using set_tag_t = typename set_tag<T, OutTag>::type;
}
}
#endif // CNL_IMPL_NUM_TRAITS_SET_TAG_H
# 28 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/set_tag.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../operators/generic.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
#if 0 /* expanded by -frewrite-includes */
#include "../operators/is_same_tag_family.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
#if 0 /* expanded by -frewrite-includes */
#include "../operators/native_tag.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_OPERATORS_NATIVE_TAG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
#define CNL_IMPL_OPERATORS_NATIVE_TAG_H
#if 0 /* expanded by -frewrite-includes */
#include "../../constant.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/is_integral.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/remove_signedness.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
#if 0 /* expanded by -frewrite-includes */
#include "generic.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
#if 0 /* expanded by -frewrite-includes */
#include "homogeneous_deduction_tag_base.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
#if 0 /* expanded by -frewrite-includes */
#include "homogeneous_operator_tag_base.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_OPERATORS_IS_HOMOGENEOUS_OPERATOR_TAG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
#define CNL_IMPL_OPERATORS_IS_HOMOGENEOUS_OPERATOR_TAG_H
#if 0 /* expanded by -frewrite-includes */
#include "../config.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
#if 0 /* expanded by -frewrite-includes */
#include "generic.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
#if 0 /* expanded by -frewrite-includes */
#include "overloads.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
// a tag with unremarkable properties WRT operators,
// i.e. operations on numbers with this tag
// produce more numbers with the same tag
struct homogeneous_operator_tag_base {
};
template<class Tag>
struct is_homogeneous_operator_tag
: std::is_base_of<homogeneous_operator_tag_base, Tag> {
};
// 'Boring' tags make use of the generic operator system.
// For example, when you add two `rounding_nearest_tag` numbers together,
// the result's tag is also `rounding_nearest_tag`.
// But when you add two `elastic_integer_tag<N>` numbers together,
// the result's tag is NOT also `elastic_integer_tag<N>`, <gosh>.
template<class Tag>
struct wants_generic_ops<
Tag,
enable_if_t<is_homogeneous_operator_tag<Tag>::value>> : std::true_type {
};
}
template<class Operator, class Tag>
struct binary_operator<
Operator,
_impl::native_tag, _impl::native_tag,
Tag, Tag,
_impl::enable_if_t<_impl::is_homogeneous_operator_tag<Tag>::value>> {
CNL_NODISCARD constexpr Tag operator()(Tag, Tag) const
{
return Tag{};
}
};
template<class Operator, class Tag>
struct comparison_operator<
Operator,
Tag, Tag,
_impl::enable_if_t<_impl::is_homogeneous_operator_tag<Tag>::value>> {
CNL_NODISCARD constexpr bool operator()(Tag, Tag) const
{
return true;
}
};
}
#endif // CNL_IMPL_OPERATORS_IS_HOMOGENEOUS_OPERATOR_TAG_H
# 68 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_tag/../operators/homogeneous_operator_tag_base.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "operators.h"
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
// match the behavior of fundamental arithmetic types
struct native_tag : homogeneous_deduction_tag_base, homogeneous_operator_tag_base {
using identity = native_tag;
};
// true iff given type, T, provides its own operators
template<typename T>
struct has_native_operators
: std::integral_constant<
bool,
is_constant<T>::value
|| is_integral<T>::value
|| std::is_floating_point<T>::value> {
};
}
template<typename Destination, typename Source>
struct convert_operator<_impl::native_tag, _impl::native_tag, Destination, Source> {
CNL_NODISCARD constexpr auto operator()(Source const& from) const -> Destination
{
return _impl::convert_op{}.template operator()<Destination>(from);
}
};
template<class Operator, typename Rhs>
struct unary_operator<
Operator,
_impl::native_tag, Rhs,
_impl::enable_if_t<_impl::has_native_operators<Rhs>::value>> : Operator {
};
template<class Operator, typename Lhs, typename Rhs>
struct binary_operator<
Operator,
_impl::native_tag, _impl::native_tag, Lhs, Rhs,
_impl::enable_if_t<_impl::has_native_operators<Lhs>::value && _impl::has_native_operators<Rhs>::value>>
: Operator {
};
template<class Operator, typename Lhs, typename Rhs>
struct shift_operator<
Operator,
_impl::native_tag, _impl::native_tag, Lhs, Rhs,
_impl::enable_if_t<
_impl::has_native_operators<Lhs>::value
&& _impl::has_native_operators<Rhs>::value>>
: Operator {
};
}
#endif // CNL_IMPL_OPERATORS_NATIVE_TAG_H
# 74 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/native_tag.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../operators/operators.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
#if 0 /* expanded by -frewrite-includes */
#include "../operators/overloads.h"
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
#if 0 /* expanded by -frewrite-includes */
#include "is_number.h"
#endif /* expanded by -frewrite-includes */
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/is_number.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_IS_NUMBER_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/is_number.h"
#define CNL_IMPL_NUMBER_IS_NUMBER_H
#if 0 /* expanded by -frewrite-includes */
#include "declaration.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/is_number.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/declaration.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_DECLARATION_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/declaration.h"
#define CNL_IMPL_NUMBER_DECLARATION_H
#if 0 /* expanded by -frewrite-includes */
#include "../operators/native_tag.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/declaration.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/declaration.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
template<typename Rep=int, class Tag=native_tag>
class number;
}
}
#endif // CNL_IMPL_NUMBER_DECLARATION_H
# 21 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/declaration.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/is_number.h" 2
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/is_number.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/is_number.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
template<typename T>
struct is_number : std::false_type {
};
template<typename Rep, class Tag>
struct is_number<_impl::number<Rep, Tag>>
: std::true_type {
};
}
}
#endif // CNL_IMPL_NUMBER_IS_NUMBER_H
# 29 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/is_number.h"
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "make_number.h"
#endif /* expanded by -frewrite-includes */
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/binary_operator.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/make_number.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_MAKE_NUMBER_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/make_number.h"
#define CNL_IMPL_NUMBER_MAKE_NUMBER_H
#if 0 /* expanded by -frewrite-includes */
#include "../operators/native_tag.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/make_number.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/make_number.h"
#if 0 /* expanded by -frewrite-includes */
#include "definition.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/make_number.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_TYPE_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
#define CNL_IMPL_NUMBER_TYPE_H
#if 0 /* expanded by -frewrite-includes */
#include <utility>
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 1 3
// <utility> -*- C++ -*-
// Copyright (C) 2001-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
# 69 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/stl_relops.h>
#endif /* expanded by -frewrite-includes */
# 69 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_relops.h" 1 3
// std::rel_ops implementation -*- C++ -*-
// Copyright (C) 2001-2019 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)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
namespace rel_ops
{
/** @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); }
} // namespace rel_ops
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#endif /* _STL_RELOPS_H */
# 134 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_relops.h" 3
# 70 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 2 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/stl_pair.h>
#endif /* expanded by -frewrite-includes */
# 70 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 1 3
// Pair implementation -*- C++ -*-
// Copyright (C) 2001-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
# 60 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 62 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits> // for std::__decay_and_strip too
#endif /* expanded by -frewrite-includes */
# 62 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
# 63 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
#endif
# 64 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
namespace std _GLIBCXX_VISIBILITY(default)
{
_GLIBCXX_BEGIN_NAMESPACE_VERSION
/**
* @addtogroup utilities
* @{
*/
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 75 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
/// piecewise_construct_t
struct piecewise_construct_t { explicit piecewise_construct_t() = default; };
/// piecewise_construct
_GLIBCXX17_INLINE 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;
}
};
// PR libstdc++/79141, a utility type for preventing
// initialization of an argument of a disabled assignment
// operator from a pair of empty braces.
struct __nonesuch_no_braces : std::__nonesuch {
explicit __nonesuch_no_braces(const __nonesuch&) = delete;
};
#endif // C++11
# 189 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
template<typename _U1, typename _U2> class __pair_base
{
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 193 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
template<typename _T1, typename _T2> friend struct pair;
__pair_base() = default;
~__pair_base() = default;
__pair_base(const __pair_base&) = default;
__pair_base& operator=(const __pair_base&) = delete;
#endif // C++11
# 199 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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
: private __pair_base<_T1, _T2>
{
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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 222 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
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
# 229 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
_GLIBCXX_CONSTEXPR pair()
: first(), second() { }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 233 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
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
# 245 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
/** Two objects may be passed to a @c pair constructor to be copied. */
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 248 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
pair(const _T1& __a, const _T2& __b)
: first(__a), second(__b) { }
#else
# 251 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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
# 272 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
/** There is also a templated copy ctor for the @c pair class itself. */
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 275 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
template<typename _U1, typename _U2>
pair(const pair<_U1, _U2>& __p)
: first(__p.first), second(__p.second) { }
#else
# 279 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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_no_braces&>::type __p)
{
first = __p.first;
second = __p.second;
return *this;
}
pair&
operator=(typename conditional<
__and_<is_move_assignable<_T1>,
is_move_assignable<_T2>>::value,
pair&&, __nonesuch_no_braces&&>::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
# 439 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
};
#if 0 /* disabled by -frewrite-includes */
#if __cpp_deduction_guides >= 201606
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 442 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
template<typename _T1, typename _T2> pair(_T1, _T2) -> pair<_T1, _T2>;
#endif
# 444 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 483 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
/// 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 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 489 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
// Constrained free swap overload, see p0185r1
typename enable_if<__and_<__is_swappable<_T1>,
__is_swappable<_T2>>::value>::type
#else
# 493 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
void
#endif
# 495 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
swap(pair<_T1, _T2>& __x, pair<_T1, _T2>& __y)
noexcept(noexcept(__x.swap(__y)))
{ __x.swap(__y); }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L || !defined(__STRICT_ANSI__) // c++1z or gnu++11
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 500 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
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
# 505 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
#endif // __cplusplus >= 201103L
# 506 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 520 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
// 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
# 532 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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
# 537 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
/// @}
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace std
#endif /* _STL_PAIR_H */
# 544 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/bits/stl_pair.h" 3
# 71 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 2 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 73 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 74 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
# 75 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <bits/move.h>
#endif /* expanded by -frewrite-includes */
# 75 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
# 76 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#if 0 /* expanded by -frewrite-includes */
#include <initializer_list>
#endif /* expanded by -frewrite-includes */
# 76 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
# 1 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/initializer_list" 1 3
// std::initializer_list support -*- C++ -*-
// Copyright (C) 2008-2019 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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/initializer_list" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus < 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/initializer_list" 3
#if 0 /* expanded by -frewrite-includes */
# include <bits/c++0x_warning.h>
#endif /* expanded by -frewrite-includes */
# 36 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/initializer_list" 3
# 37 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/initializer_list" 3
#else // C++0x
# 38 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/initializer_list" 3
# 42 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/initializer_list" 3
#endif // _INITIALIZER_LIST
# 108 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/initializer_list" 3
# 77 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 2 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
// 2313. tuple_size should always derive from integral_constant<size_t, N>
// 2770. tuple_size<const T> specialization is not SFINAE compatible
template<typename _Tp,
typename _Up = typename remove_cv<_Tp>::type,
typename = typename enable_if<is_same<_Tp, _Up>::value>::type,
size_t = tuple_size<_Tp>::value>
using __enable_if_has_tuple_size = _Tp;
template<typename _Tp>
struct tuple_size<const __enable_if_has_tuple_size<_Tp>>
: public tuple_size<_Tp> { };
template<typename _Tp>
struct tuple_size<volatile __enable_if_has_tuple_size<_Tp>>
: public tuple_size<_Tp> { };
template<typename _Tp>
struct tuple_size<const volatile __enable_if_has_tuple_size<_Tp>>
: public tuple_size<_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 0 /* disabled by -frewrite-includes */
#if __cplusplus >= 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 135 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
// The standard says this macro and alias template should be in <tuple>
// but we define them here, to be available when the partial specializations
// of tuple_element<pair<T,U>> and tuple_element<array<T,N>> are defined.
#define __cpp_lib_tuple_element_t 201402L
template<std::size_t __i, typename _Tp>
using tuple_element_t = typename tuple_element<__i, _Tp>::type;
#endif
# 143 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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<typename _Tp1, typename _Tp2>
static constexpr const _Tp1&&
__const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept
{ return std::forward<const _Tp1>(__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<typename _Tp1, typename _Tp2>
static constexpr const _Tp2&&
__const_move_get(const std::pair<_Tp1, _Tp2>&& __pair) noexcept
{ return std::forward<const _Tp2>(__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); }
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_move_get(std::move(__in)); }
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 238 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#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 const _Tp&&
get(const 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); }
template <typename _Tp, typename _Up>
constexpr const _Tp&&
get(const 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
# 289 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/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 { };
#ifdef __has_builtin
#if 0 /* disabled by -frewrite-includes */
# if __has_builtin(__make_integer_seq)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 296 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
# define _GLIBCXX_USE_MAKE_INTEGER_SEQ 1
# endif
# 298 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#endif
# 299 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
// Builds an _Index_tuple<0, 1, 2, ..., _Num-1>.
template<size_t _Num>
struct _Build_index_tuple
{
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_USE_MAKE_INTEGER_SEQ
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 305 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
template<typename, size_t... _Indices>
using _IdxTuple = _Index_tuple<_Indices...>;
using __type = __make_integer_seq<_IdxTuple, size_t, _Num>;
#else
# 310 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
using __type = _Index_tuple<__integer_pack(_Num)...>;
#endif
# 312 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
};
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201103L
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 315 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#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() noexcept { return sizeof...(_Idx); }
};
/// Alias template make_integer_sequence
template<typename _Tp, _Tp _Num>
using make_integer_sequence
#if 0 /* disabled by -frewrite-includes */
#if _GLIBCXX_USE_MAKE_INTEGER_SEQ
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 330 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
= __make_integer_seq<integer_sequence, _Tp, _Num>;
#else
# 332 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
= integer_sequence<_Tp, __integer_pack(_Num)...>;
#endif
# 334 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#undef _GLIBCXX_USE_MAKE_INTEGER_SEQ
/// 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
# 349 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#if 0 /* disabled by -frewrite-includes */
#if __cplusplus > 201402L
#endif
#endif /* disabled by -frewrite-includes */
#if 0 /* evaluated by -frewrite-includes */
# 351 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
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
# 395 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
#endif
# 400 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
#endif /* _GLIBCXX_UTILITY */
# 402 "/usr/bin/../lib/gcc/x86_64-linux-gnu/9/../../../../include/c++/9/utility" 3
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/from_value.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_FROM_VALUE)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
#define CNL_IMPL_NUM_TRAITS_FROM_VALUE
#if 0 /* expanded by -frewrite-includes */
#include "../../constant.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/add_signedness.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/is_integral.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/remove_cvref.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_cvref.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_TYPE_TRAITS_REMOVE_CVREF_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_cvref.h"
#define CNL_IMPL_TYPE_TRAITS_REMOVE_CVREF_H
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_cvref.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_cvref.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
// cnl::_impl::remove_cvref_t
template<typename T>
using remove_cvref_t = typename std::remove_cv<typename std::remove_reference<T>::type>::type;
}
}
#endif // CNL_IMPL_TYPE_TRAITS_REMOVE_CVREF_H
# 23 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/elastic_integer/../num_traits/../type_traits/remove_cvref.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../used_digits.h"
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
#if 0 /* expanded by -frewrite-includes */
#include "digits.h"
#endif /* expanded by -frewrite-includes */
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
#if 0 /* expanded by -frewrite-includes */
#include "set_digits.h"
#endif /* expanded by -frewrite-includes */
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
namespace cnl {
namespace _impl {
template<typename Result, typename Value>
struct from_value_simple {
CNL_NODISCARD constexpr Result operator()(Value const& value) const {
return value;
}
};
}
template<typename Number, typename Value, class Enable = void>
struct from_value {
void operator()(Value const &) const;
};
template<class Number, class Value>
struct from_value<
Number, Value, _impl::enable_if_t<_impl::is_integral<Number>::value>>
: _impl::from_value_simple<Value, Value> {
};
template<class Number, CNL_IMPL_CONSTANT_VALUE_TYPE Value>
struct from_value<Number, constant<Value>, _impl::enable_if_t<_impl::is_integral<Number>::value>> {
private:
using _result_type = set_digits_t<
add_signedness_t<Number>,
_impl::max(digits<int>::value, _impl::used_digits(Value))>;
public:
CNL_NODISCARD constexpr _result_type operator()(constant<Value> const &value) const {
return _result_type(value);
}
};
namespace _impl {
template<typename Number, typename Value>
CNL_NODISCARD constexpr auto from_value(Value const& value)
-> decltype(cnl::from_value<Number, remove_cvref_t<Value>>{}(value))
{
return cnl::from_value<Number, remove_cvref_t<Value>>{}(value);
}
}
template<typename Number, typename Value>
using from_value_t = decltype(_impl::from_value<Number>(std::declval<Value>()));
}
#endif // CNL_IMPL_NUM_TRAITS_FROM_VALUE
# 67 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/from_value.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../operators/generic.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
#if 0 /* expanded by -frewrite-includes */
#include "../operators/tagged.h"
#endif /* expanded by -frewrite-includes */
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_OPERATORS_TAGGED_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
#define CNL_IMPL_OPERATORS_TAGGED_H
#if 0 /* expanded by -frewrite-includes */
#include "../../constant.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
#if 0 /* expanded by -frewrite-includes */
#include "../config.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
#if 0 /* expanded by -frewrite-includes */
#include "generic.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
#if 0 /* expanded by -frewrite-includes */
#include "operators.h"
#endif /* expanded by -frewrite-includes */
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
# 14 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
/// compositional numeric library
namespace cnl {
/// \brief converts a value to a type
/// \headerfile cnl/all.h
///
/// \tparam DestTag specifies the destination behavior tag, e.g. \ref cnl::native_overflow_tag
/// \tparam SrcTag specifies the source behavior tag, e.g. \ref cnl::native_overflow_tag
/// \param src value to convert from
/// \return value converted to
///
/// \sa cnl::add, cnl::divide, cnl::shift_right, cnl::multiply, cnl::subtract,
/// cnl::native_overflow_tag, cnl::saturated_overflow_tag, cnl::throwing_overflow_tag, cnl::trapping_overflow_tag,
/// cnl::undefined_overflow_tag, cnl::nearest_rounding_tag
template<class DestTag, typename SrcTag, typename Dest, typename Src>
CNL_NODISCARD constexpr auto convert(Src const& src)
-> decltype(convert_operator<DestTag, SrcTag, Dest, Src>{}(src))
{
return convert_operator<DestTag, SrcTag, Dest, Src>{}(src);
}
template<class DestTag, class SrcTag, typename Dest, CNL_IMPL_CONSTANT_VALUE_TYPE Value>
CNL_NODISCARD constexpr auto convert(constant<Value> const& src)
-> decltype(convert_operator<DestTag, SrcTag, Dest, decltype(Value)>{}(src))
{
return convert_operator<DestTag, SrcTag, Dest, decltype(Value)>{}(src);
}
namespace _impl {
template<class Operator, class Tag, typename Lhs, typename Rhs>
CNL_NODISCARD constexpr auto binary_operate(Lhs const& lhs, Rhs const& rhs)
-> decltype(binary_operator<Operator, Tag, Tag, Lhs, Rhs>{}(lhs, rhs))
{
return binary_operator<Operator, Tag, Tag, Lhs, Rhs>{}(lhs, rhs);
}
}
/// \brief adds two values together
/// \headerfile cnl/all.h
///
/// \tparam Tag specifies the conversion mode, e.g. \ref cnl::native_overflow_tag
/// \return the result of `lhs + rhs`
///
/// \sa cnl::convert, cnl::divide, cnl::shift_right, cnl::multiply, cnl::subtract,
/// cnl::native_overflow_tag, cnl::saturated_overflow_tag, cnl::throwing_overflow_tag, cnl::trapping_overflow_tag,
/// cnl::undefined_overflow_tag, cnl::nearest_rounding_tag
template<class Tag, typename Lhs, typename Rhs>
CNL_NODISCARD constexpr auto add(Lhs const& lhs, Rhs const& rhs)
-> decltype(binary_operator<_impl::add_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs))
{
return binary_operator<_impl::add_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs);
}
/// \brief subtracts one value from another
/// \headerfile cnl/all.h
///
/// \tparam Tag specifies the conversion mode, e.g. \ref cnl::native_overflow_tag
/// \return the result of `lhs - rhs`
///
/// \sa cnl::add, cnl::convert, cnl::divide, cnl::shift_right, cnl::multiply,
/// cnl::native_overflow_tag, cnl::saturated_overflow_tag, cnl::throwing_overflow_tag, cnl::trapping_overflow_tag,
/// cnl::undefined_overflow_tag, cnl::nearest_rounding_tag
template<class Tag, typename Lhs, typename Rhs>
CNL_NODISCARD constexpr auto subtract(Lhs const& lhs, Rhs const& rhs)
-> decltype(binary_operator<_impl::subtract_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs))
{
return binary_operator<_impl::subtract_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs);
}
/// \brief multiplies one value by another
/// \headerfile cnl/all.h
///
/// \tparam Tag specifies the conversion mode, e.g. \ref cnl::native_overflow_tag
/// \return the result of `lhs + rhs`
///
/// \sa cnl::add, cnl::convert, cnl::divide, cnl::subtract, cnl::shift_right,
/// cnl::native_overflow_tag, cnl::saturated_overflow_tag, cnl::throwing_overflow_tag, cnl::trapping_overflow_tag,
/// cnl::undefined_overflow_tag, cnl::nearest_rounding_tag
template<class Tag, typename Lhs, typename Rhs>
CNL_NODISCARD constexpr auto multiply(Lhs const& lhs, Rhs const& rhs)
-> decltype(binary_operator<_impl::multiply_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs))
{
return binary_operator<_impl::multiply_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs);
}
/// \brief divides one value by another
/// \headerfile cnl/all.h
///
/// \tparam Tag specifies the conversion mode, e.g. \ref cnl::native_rounding_tag
/// \return the result of `lhs / rhs`
///
/// \sa cnl::add, cnl::convert, cnl::shift_right, cnl::multiply, cnl::subtract,
/// cnl::native_overflow_tag, cnl::saturated_overflow_tag, cnl::throwing_overflow_tag, cnl::trapping_overflow_tag,
/// cnl::undefined_overflow_tag, cnl::nearest_rounding_tag
template<class Tag, typename Lhs, typename Rhs>
CNL_NODISCARD constexpr auto divide(Lhs const& lhs, Rhs const& rhs)
-> decltype(binary_operator<_impl::divide_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs))
{
return binary_operator<_impl::divide_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs);
}
template<class Tag, typename Lhs, typename Rhs>
CNL_NODISCARD constexpr auto shift_left(Lhs const& lhs, Rhs const& rhs)
-> decltype(binary_operator<_impl::shift_left_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs))
{
return binary_operator<_impl::shift_left_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs);
}
/// \brief bitwise left-shifts one value by another
/// \headerfile cnl/all.h
///
/// \tparam Tag specifies the conversion mode, e.g. \ref cnl::native_overflow_tag
/// \return the result of `lhs + rhs`
///
/// \sa cnl::add, cnl::convert, cnl::divide, cnl::multiply, cnl::subtract,
/// cnl::native_overflow_tag, cnl::saturated_overflow_tag, cnl::throwing_overflow_tag, cnl::trapping_overflow_tag,
/// cnl::undefined_overflow_tag, cnl::nearest_rounding_tag
template<class Tag, typename Lhs, typename Rhs>
CNL_NODISCARD constexpr auto shift_right(Lhs const& lhs, Rhs const& rhs)
-> decltype(binary_operator<_impl::shift_right_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs))
{
return binary_operator<_impl::shift_right_op, Tag, Tag, Lhs, Rhs>{}(lhs, rhs);
}
}
#endif // CNL_IMPL_OPERATORS_TAGGED_H
# 140 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../operators/tagged.h"
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/enable_if.h"
#endif /* expanded by -frewrite-includes */
# 15 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
#if 0 /* expanded by -frewrite-includes */
#include "can_convert_tag_family.h"
#endif /* expanded by -frewrite-includes */
# 16 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/can_convert_tag_family.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_CAN_CONVERT_TAG_FAMILY_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/can_convert_tag_family.h"
#define CNL_IMPL_NUMBER_CAN_CONVERT_TAG_FAMILY_H
#if 0 /* expanded by -frewrite-includes */
#include "../operators/is_same_tag_family.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/can_convert_tag_family.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/can_convert_tag_family.h"
#if 0 /* expanded by -frewrite-includes */
#include <type_traits>
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/can_convert_tag_family.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/can_convert_tag_family.h"
/// compositional numeric library
namespace cnl {
namespace _impl {
template<class ToTag, class FromTag>
struct can_convert_tag_family
: std::integral_constant<
bool,
is_same_tag_family<ToTag, FromTag>::value
|| std::is_base_of<ToTag, FromTag>::value
|| std::is_base_of<FromTag, ToTag>::value> {
};
}
}
#endif // CNL_IMPL_NUMBER_CAN_CONVERT_TAG_FAMILY_H
# 29 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/can_convert_tag_family.h"
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "declaration.h"
#endif /* expanded by -frewrite-includes */
# 17 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
#if 0 /* expanded by -frewrite-includes */
#include "is_number.h"
#endif /* expanded by -frewrite-includes */
# 18 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
#if 0 /* expanded by -frewrite-includes */
#include "tag.h"
#endif /* expanded by -frewrite-includes */
# 19 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_TAG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h"
#define CNL_IMPL_NUMBER_TAG_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/tag.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/tag.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUM_TRAITS_TAG_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/tag.h"
#define CNL_IMPL_NUM_TRAITS_TAG_H
/// compositional numeric library
namespace cnl {
/// \brief meta-function object that returns the Tag type of a component
///
/// \tparam T component whose behavioral tag type to return
///
/// \note The behavioral tag or 'Tag' type of a numeric component is central to CNL's method of delivering an
/// arithmetic API.
///
/// \sa set_tag, rep
template<typename T>
struct tag;
namespace _impl {
template<typename T>
using tag_t = typename tag<T>::type;
}
}
#endif // CNL_IMPL_NUM_TRAITS_TAG_H
# 30 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/tag.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "../type_traits/type_identity.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h"
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h"
#if 0 /* expanded by -frewrite-includes */
#include "declaration.h"
#endif /* expanded by -frewrite-includes */
# 12 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h"
# 13 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h"
/// compositional numeric library
namespace cnl {
template<typename Rep, class Tag>
struct tag<_impl::number<Rep, Tag>> : _impl::type_identity<Tag> {
};
}
#endif // CNL_IMPL_NUMBER_TAG_H
# 22 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/tag.h"
# 20 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h" 2
#if 0 /* expanded by -frewrite-includes */
#include "to_rep.h"
#endif /* expanded by -frewrite-includes */
# 20 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/definition.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/to_rep.h" 1
// Copyright John McFarlane 2019.
// Distributed under the Boost Software License, Version 1.0.
// (See accompanying file ../LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#if 0 /* disabled by -frewrite-includes */
#if !defined(CNL_IMPL_NUMBER_TO_REP_H)
#endif
#endif /* disabled by -frewrite-includes */
#if 1 /* evaluated by -frewrite-includes */
# 8 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/to_rep.h"
#define CNL_IMPL_NUMBER_TO_REP_H
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/rep.h"
#endif /* expanded by -frewrite-includes */
# 10 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/to_rep.h"
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/to_rep.h"
#if 0 /* expanded by -frewrite-includes */
#include "../num_traits/to_rep.h"
#endif /* expanded by -frewrite-includes */
# 11 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/to_rep.h"
# 1 "/home/john/ws/rounding-overflow/cnl/include/cnl/_impl/number/../num_traits/to_rep.h" 1
// Copyright John McFarlane 2018.
// Distributed under the Boost Software License, Version 1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment